<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:MagicDrawProfile="http://UML_Standard_Profile/MagicDraw_Profile/_be00301_1073394351331_445580_2" xmlns:Standard="http://www.eclipse.org/uml2/schemas/Standard/1" xmlns:UMLProfileforJava="http://UML_Profile_for_Java/rimvydas_1048688023274_104450_1422" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/2.0.0/UML" xsi:schemaLocation="http://UML_Standard_Profile/MagicDraw_Profile/_be00301_1073394351331_445580_2 UML_Standard_Profile.MagicDraw_Profile.profile.uml#_DlOUSfrcEe6m_YnRIJtNqg http://www.eclipse.org/uml2/schemas/Standard/1 pathmap://UML_PROFILES/Standard.profile.uml#_yzU58YinEdqtvbnfB2L_5w http://UML_Profile_for_Java/rimvydas_1048688023274_104450_1422 UML_Profile_for_Java.profile.uml#_DlOTNfrcEe6m_YnRIJtNqg">
  <uml:Model xmi:id="6a194078-f661-433a-a6cc-6fbcb742d26f" name="Model" viewpoint="">
    <packageImport xmi:id="_0primitiveTypesModel">
      <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
    </packageImport>
    <packageImport xmi:id="_0javaPrimitiveTypesModel">
      <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#_0"/>
    </packageImport>
    <packagedElement xmi:type="uml:Package" xmi:id="fa980396-cf42-4140-bcea-5eb8d44764f9" name="JDK 5.0 Classes">
      <packagedElement xmi:type="uml:Package" xmi:id="ebc59570-c11a-4b7b-8d3f-7e7e219711df" name="java">
        <packagedElement xmi:type="uml:Package" xmi:id="3b5e0906-a13a-44c4-9fde-2e2cc453ee35" name="math">
          <packagedElement xmi:type="uml:Class" xmi:id="b70a0bde-4163-4741-81f4-7993449fba8b" name="RoundingMode">
            <ownedComment xmi:id="fad7a142-27ed-49a6-bbc1-8fb72bc70c92" body="Specifies a &lt;i>rounding behavior&lt;/i> for numerical operations&#xA;capable of discarding precision. Each rounding mode indicates how&#xA;the least significant returned digit of a rounded result is to be&#xA;calculated.  If fewer digits are returned than the digits needed to&#xA;represent the exact numerical result, the discarded digits will be&#xA;referred to as the &lt;i>discarded fraction&lt;/i> regardless the digits'&#xA;contribution to the value of the number.  In other words,&#xA;considered as a numerical value, the discarded fraction could have&#xA;an absolute value greater than one.&#xA;&#xA;&lt;p>Each rounding mode description includes a table listing how&#xA;different two-digit decimal values would round to a one digit&#xA;decimal value under the rounding mode in question.  The result&#xA;column in the tables could be gotten by creating a&#xA;&lt;tt>BigDecimal&lt;/tt> number with the specified value, forming a&#xA;{@link MathContext} object with the proper settings&#xA;(&lt;tt>precision&lt;/tt> set to &lt;tt>1&lt;/tt>, and the&#xA;&lt;tt>roundingMode&lt;/tt> set to the rounding mode in question), and&#xA;calling {@link BigDecimal#round round} on this number with the&#xA;proper &lt;tt>MathContext&lt;/tt>.  A summary table showing the results&#xA;of these rounding operations for all rounding modes appears below.&#xA;&#xA;&lt;p>&#xA;&lt;table border>&#xA;&lt;caption top>&lt;h3>Summary of Rounding Operations Under Different Rounding Modes&lt;/h3>&lt;/caption>&#xA;&lt;tr>&lt;th>&lt;/th>&lt;th colspan=8>Result of rounding input to one digit with the given&#xA;rounding mode&lt;/th>&#xA;&lt;tr valign=top>&#xA;&lt;th>Input Number&lt;/th>&#x9; &lt;th>&lt;tt>UP&lt;/tt>&lt;/th>&#xA;&lt;th>&lt;tt>DOWN&lt;/tt>&lt;/th>&#xA;&lt;th>&lt;tt>CEILING&lt;/tt>&lt;/th>&#xA;&lt;th>&lt;tt>FLOOR&lt;/tt>&lt;/th>&#xA;&lt;th>&lt;tt>HALF_UP&lt;/tt>&lt;/th>&#xA;&lt;th>&lt;tt>HALF_DOWN&lt;/tt>&lt;/th>&#xA;&lt;th>&lt;tt>HALF_EVEN&lt;/tt>&lt;/th>&#xA;&lt;th>&lt;tt>UNNECESSARY&lt;/tt>&lt;/th>&#xA;&#xA;&lt;tr align=right>&lt;td>5.5&lt;/td>&#x9; &lt;td>6&lt;/td>  &lt;td>5&lt;/td>    &lt;td>6&lt;/td>    &lt;td>5&lt;/td>  &lt;td>6&lt;/td>      &lt;td>5&lt;/td>       &lt;td>6&lt;/td>       &lt;td>throw &lt;tt>ArithmeticException&lt;/tt>&lt;/td>&#xA;&lt;tr align=right>&lt;td>2.5&lt;/td>&#x9; &lt;td>3&lt;/td>  &lt;td>2&lt;/td>    &lt;td>3&lt;/td>    &lt;td>2&lt;/td>  &lt;td>3&lt;/td>      &lt;td>2&lt;/td>       &lt;td>2&lt;/td>       &lt;td>throw &lt;tt>ArithmeticException&lt;/tt>&lt;/td>&#xA;&lt;tr align=right>&lt;td>1.6&lt;/td>&#x9; &lt;td>2&lt;/td>  &lt;td>1&lt;/td>    &lt;td>2&lt;/td> &#x9; &lt;td>1&lt;/td>  &lt;td>2&lt;/td>      &lt;td>2&lt;/td>       &lt;td>2&lt;/td>       &lt;td>throw &lt;tt>ArithmeticException&lt;/tt>&lt;/td>&#xA;&lt;tr align=right>&lt;td>1.1&lt;/td>&#x9; &lt;td>2&lt;/td>  &lt;td>1&lt;/td>    &lt;td>2&lt;/td> &#x9; &lt;td>1&lt;/td>  &lt;td>1&lt;/td>      &lt;td>1&lt;/td>       &lt;td>1&lt;/td>       &lt;td>throw &lt;tt>ArithmeticException&lt;/tt>&lt;/td>&#xA;&lt;tr align=right>&lt;td>1.0&lt;/td>&#x9; &lt;td>1&lt;/td>  &lt;td>1&lt;/td>    &lt;td>1&lt;/td> &#x9; &lt;td>1&lt;/td>  &lt;td>1&lt;/td>      &lt;td>1&lt;/td>       &lt;td>1&lt;/td>       &lt;td>1&lt;/td>&#xA;&lt;tr align=right>&lt;td>-1.0&lt;/td> &lt;td>-1&lt;/td> &lt;td>-1&lt;/td>   &lt;td>-1&lt;/td>&#x9; &lt;td>-1&lt;/td> &lt;td>-1&lt;/td>     &lt;td>-1&lt;/td>      &lt;td>-1&lt;/td>      &lt;td>-1&lt;/td>&#xA;&lt;tr align=right>&lt;td>-1.1&lt;/td> &lt;td>-2&lt;/td> &lt;td>-1&lt;/td>   &lt;td>-1&lt;/td>&#x9; &lt;td>-2&lt;/td> &lt;td>-1&lt;/td>     &lt;td>-1&lt;/td>      &lt;td>-1&lt;/td>      &lt;td>throw &lt;tt>ArithmeticException&lt;/tt>&lt;/td>&#xA;&lt;tr align=right>&lt;td>-1.6&lt;/td> &lt;td>-2&lt;/td> &lt;td>-1&lt;/td>   &lt;td>-1&lt;/td>&#x9; &lt;td>-2&lt;/td> &lt;td>-2&lt;/td>     &lt;td>-2&lt;/td>      &lt;td>-2&lt;/td>      &lt;td>throw &lt;tt>ArithmeticException&lt;/tt>&lt;/td>&#xA;&lt;tr align=right>&lt;td>-2.5&lt;/td> &lt;td>-3&lt;/td> &lt;td>-2&lt;/td>   &lt;td>-2&lt;/td>&#x9; &lt;td>-3&lt;/td> &lt;td>-3&lt;/td>     &lt;td>-2&lt;/td>      &lt;td>-2&lt;/td>      &lt;td>throw &lt;tt>ArithmeticException&lt;/tt>&lt;/td>&#xA;&lt;tr align=right>&lt;td>-5.5&lt;/td> &lt;td>-6&lt;/td> &lt;td>-5&lt;/td>   &lt;td>-5&lt;/td>&#x9; &lt;td>-6&lt;/td> &lt;td>-6&lt;/td>     &lt;td>-5&lt;/td>      &lt;td>-6&lt;/td>      &lt;td>throw &lt;tt>ArithmeticException&lt;/tt>&lt;/td>&#xA;&lt;/table>&#xA;&#xA;&#xA;&lt;p>This &lt;tt>enum&lt;/tt> is intended to replace the integer-based&#xA;enumeration of rounding mode constants in {@link BigDecimal}&#xA;({@link BigDecimal#ROUND_UP}, {@link BigDecimal#ROUND_DOWN},&#xA;etc. ).&#xA;&#xA;@see     BigDecimal&#xA;@see     MathContext&#xA;@version 1.x 01/xx/xx&#xA;@author  Josh Bloch&#xA;@author  Mike Cowlishaw&#xA;@author  Joseph D. Darcy&#xA;" annotatedElement="b70a0bde-4163-4741-81f4-7993449fba8b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="afcdd00e-1051-44ac-a2fa-0f586195d9da" name="BitSieve" visibility="package">
            <ownedComment xmi:id="3df70b68-857c-49f9-a489-3c6beae7f44e" body="A simple bit sieve used for finding prime number candidates. Allows setting&#xA;and clearing of bits in a storage array. The size of the sieve is assumed to&#xA;be constant to reduce overhead. All the bits of a new bitSieve are zero, and&#xA;bits are removed from it by setting them.&#xA;&#xA;To reduce storage space and increase efficiency, no even numbers are&#xA;represented in the sieve (each bit in the sieve represents an odd number).&#xA;The relationship between the index of a bit and the number it represents is&#xA;given by&#xA;N = offset + (2*index + 1);&#xA;Where N is the integer represented by a bit in the sieve, offset is some&#xA;even integer offset indicating where the sieve begins, and index is the&#xA;index of a bit in the sieve array.&#xA;&#xA;@see     BigInteger&#xA;@version 1.10, 12/19/03&#xA;@author  Michael McCloskey&#xA;@since   1.3&#xA;" annotatedElement="afcdd00e-1051-44ac-a2fa-0f586195d9da"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9341c632-be37-4d9d-94e2-898bfd4bc5fd" name="BigDecimal" clientDependency="b9ef4c34-c11e-44f6-b721-5862bdfca10b">
            <ownedComment xmi:id="9ae58e62-daf0-441f-b97f-65ff469547f6" body="Immutable, arbitrary-precision signed decimal numbers.  A&#xA;&lt;tt>BigDecimal&lt;/tt> consists of an arbitrary precision integer&#xA;&lt;i>unscaled value&lt;/i> and a 32-bit integer &lt;i>scale&lt;/i>.  If zero&#xA;or positive, the scale is the number of digits to the right of the&#xA;decimal point.  If negative, the unscaled value of the number is&#xA;multiplied by ten to the power of the negation of the scale.  The&#xA;value of the number represented by the &lt;tt>BigDecimal&lt;/tt> is&#xA;therefore &lt;tt>(unscaledValue &amp;times; 10&lt;sup>-scale&lt;/sup>)&lt;/tt>.&#xA;&#xA;&lt;p>The &lt;tt>BigDecimal&lt;/tt> class provides operations for&#xA;arithmetic, scale manipulation, rounding, comparison, hashing, and&#xA;format conversion.  The {@link #toString} method provides a&#xA;canonical representation of a &lt;tt>BigDecimal&lt;/tt>.&#xA;&#xA;&lt;p>The &lt;tt>BigDecimal&lt;/tt> class gives its user complete control&#xA;over rounding behavior.  If no rounding mode is specified and the&#xA;exact result cannot be represented, an exception is thrown;&#xA;otherwise, calculations can be carried out to a chosen precision&#xA;and rounding mode by supplying an appropriate {@link MathContext}&#xA;object to the operation.  In either case, eight &lt;em>rounding&#xA;modes&lt;/em> are provided for the control of rounding.  Using the&#xA;integer fields in this class (such as {@link #ROUND_HALF_UP}) to&#xA;represent rounding mode is largely obsolete; the enumeration values&#xA;of the &lt;tt>RoundingMode&lt;/tt> &lt;tt>enum&lt;/tt>, (such as {@link&#xA;RoundingMode#HALF_UP}) should be used instead.&#xA;&#xA;&lt;p>When a &lt;tt>MathContext&lt;/tt> object is supplied with a precision&#xA;setting of 0 (for example, {@link MathContext#UNLIMITED}),&#xA;arithmetic operations are exact, as are the arithmetic methods&#xA;which take no &lt;tt>MathContext&lt;/tt> object.  (This is the only&#xA;behavior that was supported in releases prior to 5.)  As a&#xA;corollary of computing the exact result, the rounding mode setting&#xA;of a &lt;tt>MathContext&lt;/tt> object with a precision setting of 0 is&#xA;not used and thus irrelevant.  In the case of divide, the exact&#xA;quotient could have an infinitely long decimal expansion; for&#xA;example, 1 divided by 3.  If the quotient has a nonterminating&#xA;decimal expansion and the operation is specified to return an exact&#xA;result, an &lt;tt>ArithmeticException&lt;/tt> is thrown.  Otherwise, the&#xA;exact result of the division is returned, as done for other&#xA;operations.&#xA;&#xA;&lt;p>When the precision setting is not 0, the rules of&#xA;&lt;tt>BigDecimal&lt;/tt> arithmetic are broadly compatible with selected&#xA;modes of operation of the arithmetic defined in ANSI X3.274-1996&#xA;and ANSI X3.274-1996/AM 1-2000 (section 7.4).  Unlike those&#xA;standards, &lt;tt>BigDecimal&lt;/tt> includes many rounding modes, which&#xA;were mandatory for division in &lt;tt>BigDecimal&lt;/tt> releases prior&#xA;to 5.  Any conflicts between these ANSI standards and the&#xA;&lt;tt>BigDecimal&lt;/tt> specification are resolved in favor of&#xA;&lt;tt>BigDecimal&lt;/tt>.&#xA;&#xA;&lt;p>Since the same numerical value can have different&#xA;representations (with different scales), the rules of arithmetic&#xA;and rounding must specify both the numerical result and the scale&#xA;used in the result's representation.&#xA;&#xA;&#xA;&lt;p>In general the rounding modes and precision setting determine&#xA;how operations return results with a limited number of digits when&#xA;the exact result has more digits (perhaps infinitely many in the&#xA;case of division) than the number of digits returned.&#xA;&#xA;First, the&#xA;total number of digits to return is specified by the&#xA;&lt;tt>MathContext&lt;/tt>'s &lt;tt>precision&lt;/tt> setting; this determines&#xA;the result's &lt;i>precision&lt;/i>.  The digit count starts from the&#xA;leftmost nonzero digit of the exact result.  The rounding mode&#xA;determines how any discarded trailing digits affect the returned&#xA;result.&#xA;&#xA;&lt;p>For all arithmetic operators , the operation is carried out as&#xA;though an exact intermediate result were first calculated and then&#xA;rounded to the number of digits specified by the precision setting&#xA;(if necessary), using the selected rounding mode.  If the exact&#xA;result is not returned, some digit positions of the exact result&#xA;are discarded.  When rounding increases the magnitude of the&#xA;returned result, it is possible for a new digit position to be&#xA;created by a carry propagating to a leading &quot;9&quot; digit.&#xA;For example, rounding the value 999.9 to three digits rounding up&#xA;would be numerically equal to one thousand, represented as&#xA;100&amp;times;10&lt;sup>1&lt;/sup>.  In such cases, the new &quot;1&quot; is&#xA;the leading digit position of the returned result.&#xA;&#xA;&lt;p>Besides a logical exact result, each arithmetic operation has a&#xA;preferred scale for representing a result.  The preferred&#xA;scale for each operation is listed in the table below.&#xA;&#xA;&lt;table border>&#xA;&lt;caption top>&lt;h3>Preferred Scales for Results of Arithmetic Operations&#xA;&lt;/h3>&lt;/caption>&#xA;&lt;tr>&lt;th>Operation&lt;/th>&lt;th>Preferred Scale of Result&lt;/th>&lt;/tr>&#xA;&lt;tr>&lt;td>Add&lt;/td>&lt;td>max(addend.scale(), augend.scale())&lt;/td>&#xA;&lt;tr>&lt;td>Subtract&lt;/td>&lt;td>max(minuend.scale(), subtrahend.scale())&lt;/td>&#xA;&lt;tr>&lt;td>Multiply&lt;/td>&lt;td>multiplier.scale() + multiplicand.scale()&lt;/td>&#xA;&lt;tr>&lt;td>Divide&lt;/td>&lt;td>dividend.scale() - divisor.scale()&lt;/td>&#xA;&lt;/table>&#xA;&#xA;These scales are the ones used by the methods which return exact&#xA;arithmetic results; except that an exact divide may have to use a&#xA;larger scale since the exact result may have more digits.  For&#xA;example, &lt;tt>1/32&lt;/tt> is &lt;tt>0.03125&lt;/tt>.&#xA;&#xA;&lt;p>Before rounding, the scale of the logical exact intermediate&#xA;result is the preferred scale for that operation.  If the exact&#xA;numerical result cannot be represented in &lt;code>precision&lt;/code>&#xA;digits, rounding selects the set of digits to return and the scale&#xA;of the result is reduced from the scale of the intermediate result&#xA;to the least scale which can represent the &lt;code>precision&lt;/code>&#xA;digits actually returned.  If the exact result can be represented&#xA;with at most &lt;code>precision&lt;/code> digits, the representation&#xA;of the result with the scale closest to the preferred scale is&#xA;returned.  In particular, an exactly representable quotient may be&#xA;represented in fewer than &lt;code>precision&lt;/code> digits by removing&#xA;trailing zeros and decreasing the scale.  For example, rounding to&#xA;three digits using the {@linkplain RoundingMode#FLOOR floor}&#xA;rounding mode, &lt;br>&#xA;&#xA;&lt;code>19/100 = 0.19   // integer=19,  scale=2&lt;/code> &lt;br>&#xA;&#xA;but&lt;br>&#xA;&#xA;&lt;code>21/110 = 0.190  // integer=190, scale=3&lt;/code> &lt;br>&#xA;&#xA;&lt;p>Note that for add, subtract, and multiply, the reduction in&#xA;scale will equal the number of digit positions of the exact result&#xA;which are discarded. If the rounding causes a carry propagation to&#xA;create a new high-order digit position, an additional digit of the&#xA;result is discarded than when no new digit position is created.&#xA;&#xA;&lt;p>Other methods may have slightly different rounding semantics.&#xA;For example, the result of the &lt;tt>pow&lt;/tt> method using the&#xA;{@linkplain #pow(int, MathContext) specified algorithm} can&#xA;occasionally differ from the rounded mathematical result by more&#xA;than one unit in the last place, one &lt;i>{@linkplain #ulp() ulp}&lt;/i>.&#xA;&#xA;&lt;p>Two types of operations are provided for manipulating the scale&#xA;of a &lt;tt>BigDecimal&lt;/tt>: scaling/rounding operations and decimal&#xA;point motion operations.  Scaling/rounding operations ({@link&#xA;#setScale setScale} and {@link #round round}) return a&#xA;&lt;tt>BigDecimal&lt;/tt> whose value is approximately (or exactly) equal&#xA;to that of the operand, but whose scale or precision is the&#xA;specified value; that is, they increase or decrease the precision&#xA;of the stored number with minimal effect on its value.  Decimal&#xA;point motion operations ({@link #movePointLeft movePointLeft} and&#xA;{@link #movePointRight movePointRight}) return a&#xA;&lt;tt>BigDecimal&lt;/tt> created from the operand by moving the decimal&#xA;point a specified distance in the specified direction.&#xA;&#xA;&lt;p>For the sake of brevity and clarity, pseudo-code is used&#xA;throughout the descriptions of &lt;tt>BigDecimal&lt;/tt> methods.  The&#xA;pseudo-code expression &lt;tt>(i + j)&lt;/tt> is shorthand for &quot;a&#xA;&lt;tt>BigDecimal&lt;/tt> whose value is that of the &lt;tt>BigDecimal&lt;/tt>&#xA;&lt;tt>i&lt;/tt> added to that of the &lt;tt>BigDecimal&lt;/tt>&#xA;&lt;tt>j&lt;/tt>.&quot; The pseudo-code expression &lt;tt>(i == j)&lt;/tt> is&#xA;shorthand for &quot;&lt;tt>true&lt;/tt> if and only if the&#xA;&lt;tt>BigDecimal&lt;/tt> &lt;tt>i&lt;/tt> represents the same value as the&#xA;&lt;tt>BigDecimal&lt;/tt> &lt;tt>j&lt;/tt>.&quot; Other pseudo-code expressions&#xA;are interpreted similarly.  Square brackets are used to represent&#xA;the particular &lt;tt>BigInteger&lt;/tt> and scale pair defining a&#xA;&lt;tt>BigDecimal&lt;/tt> value; for example [19, 2] is the&#xA;&lt;tt>BigDecimal&lt;/tt> numerically equal to 0.19 having a scale of 2.&#xA;&#xA;&lt;p>Note: care should be exercised if &lt;tt>BigDecimal&lt;/tt> objects&#xA;are used as keys in a {@link java.util.SortedMap SortedMap} or&#xA;elements in a {@link java.util.SortedSet SortedSet} since&#xA;&lt;tt>BigDecimal&lt;/tt>'s &lt;i>natural ordering&lt;/i> is &lt;i>inconsistent&#xA;with equals&lt;/i>.  See {@link Comparable}, {@link&#xA;java.util.SortedMap} or {@link java.util.SortedSet} for more&#xA;information.&#xA;&#xA;&lt;p>All methods and constructors for this class throw&#xA;&lt;tt>NullPointerException&lt;/tt> when passed a &lt;tt>null&lt;/tt> object&#xA;reference for any input parameter.&#xA;&#xA;@see     BigInteger&#xA;@see     MathContext&#xA;@see     RoundingMode&#xA;@see     java.util.SortedMap&#xA;@see     java.util.SortedSet&#xA;@author  Josh Bloch&#xA;@author  Mike Cowlishaw&#xA;@author  Joseph D. Darcy&#xA;" annotatedElement="9341c632-be37-4d9d-94e2-898bfd4bc5fd"/>
            <generalization xmi:id="26383c4b-6518-400f-8a1d-7224e4468c6b" isSubstitutable="true" general="86595613-8e64-4702-a472-32dc7405cc46"/>
            <interfaceRealization xmi:id="b9ef4c34-c11e-44f6-b721-5862bdfca10b" name="" supplier="372f570b-ed26-4a7b-8874-853a8457ea5e" client="9341c632-be37-4d9d-94e2-898bfd4bc5fd" contract="372f570b-ed26-4a7b-8874-853a8457ea5e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="882fefad-3d3b-40ee-b71d-b691a0633bdd" name="MathContext" clientDependency="41548152-d378-4213-828a-8d116b2db580" isLeaf="true">
            <ownedComment xmi:id="318d9ef4-390d-4f6d-951b-ae054b017080" body="Immutable objects which encapsulate the context settings which&#xA;describe certain rules for numerical operators, such as those&#xA;implemented by the {@link BigDecimal} class.&#xA;&#xA;&lt;p>The base-independent settings are:&#xA;&lt;ol>&#xA;&lt;li>&lt;tt>precision&lt;/tt>:&#xA;the number of digits to be used for an operation; results are&#xA;rounded to this precision&#xA;&#xA;&lt;li>&lt;tt>roundingMode&lt;/tt>:&#xA;a {@link RoundingMode} object which specifies the algorithm to be&#xA;used for rounding.&#xA;&lt;/ol>&#xA;&#xA;@see     BigDecimal&#xA;@see     RoundingMode&#xA;@author  Mike Cowlishaw&#xA;@author  Joseph D. Darcy&#xA;" annotatedElement="882fefad-3d3b-40ee-b71d-b691a0633bdd"/>
            <interfaceRealization xmi:id="41548152-d378-4213-828a-8d116b2db580" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="882fefad-3d3b-40ee-b71d-b691a0633bdd" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="dd13ccd8-d5df-4487-9cd2-1ace07f3c74f" name="SignedMutableBigInteger" visibility="package">
            <ownedComment xmi:id="3068743b-b5c4-4066-b860-9807868c817c" body="A class used to represent multiprecision integers that makes efficient&#xA;use of allocated space by allowing a number to occupy only part of&#xA;an array so that the arrays do not have to be reallocated as often.&#xA;When performing an operation with many iterations the array used to&#xA;hold a number is only increased when necessary and does not have to&#xA;be the same size as the number it represents. A mutable number allows&#xA;calculations to occur on the same number without having to create&#xA;a new number for every step of the calculation as occurs with&#xA;BigIntegers.&#xA;&#xA;Note that SignedMutableBigIntegers only support signed addition and&#xA;subtraction. All other operations occur as with MutableBigIntegers.&#xA;&#xA;@see     BigInteger&#xA;@version 1.9, 12/19/03&#xA;@author  Michael McCloskey&#xA;@since   1.3&#xA;" annotatedElement="dd13ccd8-d5df-4487-9cd2-1ace07f3c74f"/>
            <generalization xmi:id="1d02d446-693f-4b89-960c-0e8fa579664f" isSubstitutable="true" general="6db36c00-dcf5-4c74-9c50-07359064f6de"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="d801c4d4-7d34-427a-9676-4e888c337c35" name="Comparable&lt;BigInteger>">
            <templateBinding xmi:id="087aa543-635a-4ba6-b533-a09f5ac7d08d" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="d67d64b3-8f9a-4b2d-9b6d-b802d5538a3a" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="2704870e-2063-423c-bb4b-aea7606f5a91"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6db36c00-dcf5-4c74-9c50-07359064f6de" name="MutableBigInteger" visibility="package">
            <ownedComment xmi:id="d709362c-76dd-4dd6-b747-6eeb65f11b47" body="A class used to represent multiprecision integers that makes efficient&#xA;use of allocated space by allowing a number to occupy only part of&#xA;an array so that the arrays do not have to be reallocated as often.&#xA;When performing an operation with many iterations the array used to&#xA;hold a number is only reallocated when necessary and does not have to&#xA;be the same size as the number it represents. A mutable number allows&#xA;calculations to occur on the same number without having to create&#xA;a new number for every step of the calculation as occurs with&#xA;BigIntegers.&#xA;&#xA;@see     BigInteger&#xA;@version 1.12, 12/19/03&#xA;@author  Michael McCloskey&#xA;@since   1.3&#xA;" annotatedElement="6db36c00-dcf5-4c74-9c50-07359064f6de"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="372f570b-ed26-4a7b-8874-853a8457ea5e" name="Comparable&lt;BigDecimal>">
            <templateBinding xmi:id="0ede9981-15a4-4d3c-947a-1df1f61c17b7" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="699e1f40-4ef8-4cc4-bb66-930651c75190" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="9341c632-be37-4d9d-94e2-898bfd4bc5fd"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2704870e-2063-423c-bb4b-aea7606f5a91" name="BigInteger" clientDependency="c870d276-97fa-4437-9410-fa2c68c49027">
            <ownedComment xmi:id="7a034e03-31c6-45ff-9fd3-061104ab5312" body="Immutable arbitrary-precision integers.  All operations behave as if&#xA;BigIntegers were represented in two's-complement notation (like Java's&#xA;primitive integer types).  BigInteger provides analogues to all of Java's&#xA;primitive integer operators, and all relevant methods from java.lang.Math.&#xA;Additionally, BigInteger provides operations for modular arithmetic, GCD&#xA;calculation, primality testing, prime generation, bit manipulation,&#xA;and a few other miscellaneous operations.&#xA;&lt;p>&#xA;Semantics of arithmetic operations exactly mimic those of Java's integer&#xA;arithmetic operators, as defined in &lt;i>The Java Language Specification&lt;/i>.&#xA;For example, division by zero throws an &lt;tt>ArithmeticException&lt;/tt>, and&#xA;division of a negative by a positive yields a negative (or zero) remainder.&#xA;All of the details in the Spec concerning overflow are ignored, as&#xA;BigIntegers are made as large as necessary to accommodate the results of an&#xA;operation.&#xA;&lt;p>&#xA;Semantics of shift operations extend those of Java's shift operators&#xA;to allow for negative shift distances.  A right-shift with a negative&#xA;shift distance results in a left shift, and vice-versa.  The unsigned&#xA;right shift operator (>>>) is omitted, as this operation makes&#xA;little sense in combination with the &quot;infinite word size&quot; abstraction&#xA;provided by this class.&#xA;&lt;p>&#xA;Semantics of bitwise logical operations exactly mimic those of Java's&#xA;bitwise integer operators.  The binary operators (&lt;tt>and&lt;/tt>,&#xA;&lt;tt>or&lt;/tt>, &lt;tt>xor&lt;/tt>) implicitly perform sign extension on the shorter&#xA;of the two operands prior to performing the operation.&#xA;&lt;p>&#xA;Comparison operations perform signed integer comparisons, analogous to&#xA;those performed by Java's relational and equality operators.&#xA;&lt;p>&#xA;Modular arithmetic operations are provided to compute residues, perform&#xA;exponentiation, and compute multiplicative inverses.  These methods always&#xA;return a non-negative result, between &lt;tt>0&lt;/tt> and &lt;tt>(modulus - 1)&lt;/tt>,&#xA;inclusive.&#xA;&lt;p>&#xA;Bit operations operate on a single bit of the two's-complement&#xA;representation of their operand.  If necessary, the operand is sign-&#xA;extended so that it contains the designated bit.  None of the single-bit&#xA;operations can produce a BigInteger with a different sign from the&#xA;BigInteger being operated on, as they affect only a single bit, and the&#xA;&quot;infinite word size&quot; abstraction provided by this class ensures that there&#xA;are infinitely many &quot;virtual sign bits&quot; preceding each BigInteger.&#xA;&lt;p>&#xA;For the sake of brevity and clarity, pseudo-code is used throughout the&#xA;descriptions of BigInteger methods.  The pseudo-code expression&#xA;&lt;tt>(i + j)&lt;/tt> is shorthand for &quot;a BigInteger whose value is&#xA;that of the BigInteger &lt;tt>i&lt;/tt> plus that of the BigInteger &lt;tt>j&lt;/tt>.&quot;&#xA;The pseudo-code expression &lt;tt>(i == j)&lt;/tt> is shorthand for&#xA;&quot;&lt;tt>true&lt;/tt> if and only if the BigInteger &lt;tt>i&lt;/tt> represents the same&#xA;value as the BigInteger &lt;tt>j&lt;/tt>.&quot;  Other pseudo-code expressions are&#xA;interpreted similarly.&#xA;&lt;p>&#xA;All methods and constructors in this class throw&#xA;&lt;CODE>NullPointerException&lt;/CODE> when passed&#xA;a null object reference for any input parameter.&#xA;&#xA;@see     BigDecimal&#xA;@version 1.68, 04/29/04&#xA;@author  Josh Bloch&#xA;@author  Michael McCloskey&#xA;@since JDK1.1&#xA;" annotatedElement="2704870e-2063-423c-bb4b-aea7606f5a91"/>
            <generalization xmi:id="bc828357-cc9a-43c6-8eeb-0942ffa0b04f" isSubstitutable="true" general="86595613-8e64-4702-a472-32dc7405cc46"/>
            <interfaceRealization xmi:id="c870d276-97fa-4437-9410-fa2c68c49027" name="" supplier="d801c4d4-7d34-427a-9676-4e888c337c35" client="2704870e-2063-423c-bb4b-aea7606f5a91" contract="d801c4d4-7d34-427a-9676-4e888c337c35"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="f92c7a71-9b49-4316-8bfb-dfff7e159c40" name="text">
          <packagedElement xmi:type="uml:Class" xmi:id="20d48ba1-d935-4015-b1ad-51f05a34aae2" name="FieldPosition">
            <ownedComment xmi:id="fb9d7744-6067-43a6-a8dd-8d954fcc6336" body="&lt;code>FieldPosition&lt;/code> is a simple class used by &lt;code>Format&lt;/code>&#xA;and its subclasses to identify fields in formatted output. Fields can&#xA;be identified in two ways:&#xA;&lt;ul>&#xA;&lt;li>By an integer constant, whose names typically end with&#xA;&lt;code>_FIELD&lt;/code>. The constants are defined in the various&#xA;subclasses of &lt;code>Format&lt;/code>.&#xA;&lt;li>By a &lt;code>Format.Field&lt;/code> constant, see &lt;code>ERA_FIELD&lt;/code>&#xA;and its friends in &lt;code>DateFormat&lt;/code> for an example.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;&lt;code>FieldPosition&lt;/code> keeps track of the position of the&#xA;field within the formatted output with two indices: the index&#xA;of the first character of the field and the index of the last&#xA;character of the field.&#xA;&#xA;&lt;p>&#xA;One version of the &lt;code>format&lt;/code> method in the various&#xA;&lt;code>Format&lt;/code> classes requires a &lt;code>FieldPosition&lt;/code>&#xA;object as an argument. You use this &lt;code>format&lt;/code> method&#xA;to perform partial formatting or to get information about the&#xA;formatted output (such as the position of a field).&#xA;&#xA;&lt;p>&#xA;If you are interested in the positions of all attributes in the&#xA;formatted string use the &lt;code>Format&lt;/code> method&#xA;&lt;code>formatToCharacterIterator&lt;/code>.&#xA;&#xA;@version     1.21 12/19/03&#xA;@author      Mark Davis&#xA;@see         java.text.Format&#xA;" annotatedElement="20d48ba1-d935-4015-b1ad-51f05a34aae2"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="2e30c2ff-6133-4276-a711-89452c1daf30" name="Delegate" visibility="private" clientDependency="ac811374-3d80-477d-89b1-6ff0ce0f931d">
              <ownedComment xmi:id="0e153c8b-1ea8-4255-8deb-741de2eba609" body="An implementation of FieldDelegate that will adjust the begin/end&#xA;of the FieldPosition if the arguments match the field of&#xA;the FieldPosition.&#xA;" annotatedElement="2e30c2ff-6133-4276-a711-89452c1daf30"/>
              <interfaceRealization xmi:id="ac811374-3d80-477d-89b1-6ff0ce0f931d" name="" supplier="3dc6f06f-7804-4295-ba0e-cae99fabdc11" client="2e30c2ff-6133-4276-a711-89452c1daf30" contract="3dc6f06f-7804-4295-ba0e-cae99fabdc11"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="41518b71-c6c2-4919-9885-20bffa670193" name="UnicodeClassMapping" visibility="package" isLeaf="true"/>
          <packagedElement xmi:type="uml:Class" xmi:id="ae705895-74ba-4f53-9411-deb455437538" name="CollationRules" visibility="package" isLeaf="true">
            <ownedComment xmi:id="e4a4731f-88ac-4f38-baf4-1907bcdc0dbb" body="CollationRules contains the default en_US collation rules as a base&#xA;for building other collation tables.&#xA;&lt;p>Note that decompositions are done before these rules are used,&#xA;so they do not have to contain accented characters, such as A-grave.&#xA;@see                RuleBasedCollator&#xA;@see                LocaleElements&#xA;@version            1.26, 12/19/03&#xA;@author             Helena Shih, Mark Davis&#xA;" annotatedElement="ae705895-74ba-4f53-9411-deb455437538"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ac09ddb0-8e93-4cdc-a57c-ca620c2cb8a2" name="RBTableBuilder" visibility="package" isLeaf="true">
            <ownedComment xmi:id="e89f5821-65e6-4cfc-a623-c4ca3d345014" body="This class contains all the code to parse a RuleBasedCollator pattern&#xA;and build a RBCollationTables object from it.  A particular instance&#xA;of tis class exists only during the actual build process-- once an&#xA;RBCollationTables object has been built, the RBTableBuilder object&#xA;goes away.  This object carries all of the state which is only needed&#xA;during the build process, plus a &quot;shadow&quot; copy of all of the state&#xA;that will go into the tables object itself.  This object communicates&#xA;with RBCollationTables through a separate class, RBCollationTables.BuildAPI,&#xA;this is an inner class of RBCollationTables and provides a separate&#xA;private API for communication with RBTableBuilder.&#xA;This class isn't just an inner class of RBCollationTables itself because&#xA;of its large size.  For source-code readability, it seemed better for the&#xA;builder to have its own source file.&#xA;" annotatedElement="ac09ddb0-8e93-4cdc-a57c-ca620c2cb8a2"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="98377b2e-add6-4e0a-bda1-a83c326dc9ba" name="BreakIterator" clientDependency="9e267df2-1496-4800-805e-943f039b5403" isAbstract="true">
            <ownedComment xmi:id="56dcf686-1efa-49e4-89e5-7f8574749065" body="The &lt;code>BreakIterator&lt;/code> class implements methods for finding&#xA;the location of boundaries in text. Instances of &lt;code>BreakIterator&lt;/code>&#xA;maintain a current position and scan over text&#xA;returning the index of characters where boundaries occur.&#xA;Internally, &lt;code>BreakIterator&lt;/code> scans text using a&#xA;&lt;code>CharacterIterator&lt;/code>, and is thus able to scan text held&#xA;by any object implementing that protocol. A &lt;code>StringCharacterIterator&lt;/code>&#xA;is used to scan &lt;code>String&lt;/code> objects passed to &lt;code>setText&lt;/code>.&#xA;&#xA;&lt;p>&#xA;You use the factory methods provided by this class to create&#xA;instances of various types of break iterators. In particular,&#xA;use &lt;code>getWordIterator&lt;/code>, &lt;code>getLineIterator&lt;/code>,&#xA;&lt;code>getSentenceIterator&lt;/code>, and &lt;code>getCharacterIterator&lt;/code>&#xA;to create &lt;code>BreakIterator&lt;/code>s that perform&#xA;word, line, sentence, and character boundary analysis respectively.&#xA;A single &lt;code>BreakIterator&lt;/code> can work only on one unit&#xA;(word, line, sentence, and so on). You must use a different iterator&#xA;for each unit boundary analysis you wish to perform.&#xA;&#xA;&lt;p>&#xA;Line boundary analysis determines where a text string can be&#xA;broken when line-wrapping. The mechanism correctly handles&#xA;punctuation and hyphenated words.&#xA;&#xA;&lt;p>&#xA;Sentence boundary analysis allows selection with correct interpretation&#xA;of periods within numbers and abbreviations, and trailing punctuation&#xA;marks such as quotation marks and parentheses.&#xA;&#xA;&lt;p>&#xA;Word boundary analysis is used by search and replace functions, as&#xA;well as within text editing applications that allow the user to&#xA;select words with a double click. Word selection provides correct&#xA;interpretation of punctuation marks within and following&#xA;words. Characters that are not part of a word, such as symbols&#xA;or punctuation marks, have word-breaks on both sides.&#xA;&#xA;&lt;p>&#xA;Character boundary analysis allows users to interact with characters&#xA;as they expect to, for example, when moving the cursor through a text&#xA;string. Character boundary analysis provides correct navigation of&#xA;through character strings, regardless of how the character is stored.&#xA;For example, an accented character might be stored as a base character&#xA;and a diacritical mark. What users consider to be a character can&#xA;differ between languages.&#xA;&#xA;&lt;p>&#xA;&lt;code>BreakIterator&lt;/code> is intended for use with natural&#xA;languages only. Do not use this class to tokenize a programming language.&#xA;&#xA;&lt;P>&#xA;&lt;strong>Examples&lt;/strong>:&lt;P>&#xA;Creating and using text boundaries&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;public static void main(String args[]) {&#xA;if (args.length == 1) {&#xA;String stringToExamine = args[0];&#xA;print each word in order&#xA;BreakIterator boundary = BreakIterator.getWordInstance();&#xA;boundary.setText(stringToExamine);&#xA;printEachForward(boundary, stringToExamine);&#xA;print each sentence in reverse order&#xA;boundary = BreakIterator.getSentenceInstance(Locale.US);&#xA;boundary.setText(stringToExamine);&#xA;printEachBackward(boundary, stringToExamine);&#xA;printFirst(boundary, stringToExamine);&#xA;printLast(boundary, stringToExamine);&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;Print each element in order&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;public static void printEachForward(BreakIterator boundary, String source) {&#xA;int start = boundary.first();&#xA;for (int end = boundary.next();&#xA;end != BreakIterator.DONE;&#xA;start = end, end = boundary.next()) {&#xA;System.out.println(source.substring(start,end));&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;Print each element in reverse order&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;public static void printEachBackward(BreakIterator boundary, String source) {&#xA;int end = boundary.last();&#xA;for (int start = boundary.previous();&#xA;start != BreakIterator.DONE;&#xA;end = start, start = boundary.previous()) {&#xA;System.out.println(source.substring(start,end));&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;Print first element&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;public static void printFirst(BreakIterator boundary, String source) {&#xA;int start = boundary.first();&#xA;int end = boundary.next();&#xA;System.out.println(source.substring(start,end));&#xA;}&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;Print last element&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;public static void printLast(BreakIterator boundary, String source) {&#xA;int end = boundary.last();&#xA;int start = boundary.previous();&#xA;System.out.println(source.substring(start,end));&#xA;}&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;Print the element at a specified position&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;public static void printAt(BreakIterator boundary, int pos, String source) {&#xA;int end = boundary.following(pos);&#xA;int start = boundary.previous();&#xA;System.out.println(source.substring(start,end));&#xA;}&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;Find the next word&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;public static int nextWordStartAfter(int pos, String text) {&#xA;BreakIterator wb = BreakIterator.getWordInstance();&#xA;wb.setText(text);&#xA;int last = wb.following(pos);&#xA;int current = wb.next();&#xA;while (current != BreakIterator.DONE) {&#xA;for (int p = last; p &lt; current; p++) {&#xA;if (Character.isLetter(text.codePointAt(p))&#xA;return last;&#xA;}&#xA;last = current;&#xA;current = wb.next();&#xA;}&#xA;return BreakIterator.DONE;&#xA;}&#xA;&lt;/pre>&#xA;(The iterator returned by BreakIterator.getWordInstance() is unique in that&#xA;the break positions it returns don't represent both the start and end of the&#xA;thing being iterated over.  That is, a sentence-break iterator returns breaks&#xA;that each represent the end of one sentence and the beginning of the next.&#xA;With the word-break iterator, the characters between two boundaries might be a&#xA;word, or they might be the punctuation or whitespace between two words.  The&#xA;above code uses a simple heuristic to determine which boundary is the beginning&#xA;of a word: If the characters between this boundary and the next boundary&#xA;include at least one letter (this can be an alphabetical letter, a CJK ideograph,&#xA;a Hangul syllable, a Kana character, etc.), then the text between this boundary&#xA;and the next is a word; otherwise, it's the material between words.)&#xA;&lt;/blockquote>&#xA;&#xA;@see CharacterIterator&#xA;&#xA;" annotatedElement="98377b2e-add6-4e0a-bda1-a83c326dc9ba"/>
            <interfaceRealization xmi:id="9e267df2-1496-4800-805e-943f039b5403" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="98377b2e-add6-4e0a-bda1-a83c326dc9ba" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="aa28e6fc-8cb2-4646-9ef9-979f45d1fec8" name="BreakIteratorCache" visibility="private" isLeaf="true"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="ceffe59c-3a40-48a9-bef8-aa4ad7d7a8d5" name="Comparable&lt;CollationKey>">
            <templateBinding xmi:id="34b3b2be-e749-4240-98c8-7c198e997676" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="e1d541ac-42a1-42f7-9e7f-89ec49e49253" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="5b6b3d63-43b8-4ae0-be74-1e78c45f0542"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f1049098-7914-4226-9472-660ed1705629" name="ChoiceFormat">
            <ownedComment xmi:id="edeb527a-b29c-4fbc-a6e8-ef7482e90056" body="A &lt;code>ChoiceFormat&lt;/code> allows you to attach a format to a range of numbers.&#xA;It is generally used in a &lt;code>MessageFormat&lt;/code> for handling plurals.&#xA;The choice is specified with an ascending list of doubles, where each item&#xA;specifies a half-open interval up to the next item:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;X matches j if and only if limit[j] &lt;= X &lt; limit[j+1]&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;If there is no match, then either the first or last index is used, depending&#xA;on whether the number (X) is too low or too high.  If the limit array is not&#xA;in ascending order, the results of formatting will be incorrect.  ChoiceFormat&#xA;also accepts &lt;code>&amp;#92;u221E&lt;/code> as equivalent to infinity(INF).&#xA;&#xA;&lt;p>&#xA;&lt;strong>Note:&lt;/strong>&#xA;&lt;code>ChoiceFormat&lt;/code> differs from the other &lt;code>Format&lt;/code>&#xA;classes in that you create a &lt;code>ChoiceFormat&lt;/code> object with a&#xA;constructor (not with a &lt;code>getInstance&lt;/code> style factory&#xA;method). The factory methods aren't necessary because &lt;code>ChoiceFormat&lt;/code>&#xA;doesn't require any complex setup for a given locale. In fact,&#xA;&lt;code>ChoiceFormat&lt;/code> doesn't implement any locale specific behavior.&#xA;&#xA;&lt;p>&#xA;When creating a &lt;code>ChoiceFormat&lt;/code>, you must specify an array of formats&#xA;and an array of limits. The length of these arrays must be the same.&#xA;For example,&#xA;&lt;ul>&#xA;&lt;li>&#xA;&lt;em>limits&lt;/em> = {1,2,3,4,5,6,7}&lt;br>&#xA;&lt;em>formats&lt;/em> = {&quot;Sun&quot;,&quot;Mon&quot;,&quot;Tue&quot;,&quot;Wed&quot;,&quot;Thur&quot;,&quot;Fri&quot;,&quot;Sat&quot;}&#xA;&lt;li>&#xA;&lt;em>limits&lt;/em> = {0, 1, ChoiceFormat.nextDouble(1)}&lt;br>&#xA;&lt;em>formats&lt;/em> = {&quot;no files&quot;, &quot;one file&quot;, &quot;many files&quot;}&lt;br>&#xA;(&lt;code>nextDouble&lt;/code> can be used to get the next higher double, to&#xA;make the half-open interval.)&#xA;&lt;/ul>&#xA;&#xA;&lt;p>&#xA;Here is a simple example that shows formatting and parsing:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;double[] limits = {1,2,3,4,5,6,7};&#xA;String[] monthNames = {&quot;Sun&quot;,&quot;Mon&quot;,&quot;Tue&quot;,&quot;Wed&quot;,&quot;Thur&quot;,&quot;Fri&quot;,&quot;Sat&quot;};&#xA;ChoiceFormat form = new ChoiceFormat(limits, monthNames);&#xA;ParsePosition status = new ParsePosition(0);&#xA;for (double i = 0.0; i &lt;= 8.0; ++i) {&#xA;status.setIndex(0);&#xA;System.out.println(i + &quot; -> &quot; + form.format(i) + &quot; -> &quot;&#xA;+ form.parse(form.format(i),status));&#xA;}&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;Here is a more complex example, with a pattern format:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;double[] filelimits = {0,1,2};&#xA;String[] filepart = {&quot;are no files&quot;,&quot;is one file&quot;,&quot;are {2} files&quot;};&#xA;ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);&#xA;Format[] testFormats = {fileform, null, NumberFormat.getInstance()};&#xA;MessageFormat pattform = new MessageFormat(&quot;There {0} on {1}&quot;);&#xA;pattform.setFormats(testFormats);&#xA;Object[] testArgs = {null, &quot;ADisk&quot;, null};&#xA;for (int i = 0; i &lt; 4; ++i) {&#xA;testArgs[0] = new Integer(i);&#xA;testArgs[2] = testArgs[0];&#xA;System.out.println(pattform.format(testArgs));&#xA;}&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&lt;p>&#xA;Specifying a pattern for ChoiceFormat objects is fairly straightforward.&#xA;For example:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;ChoiceFormat fmt = new ChoiceFormat(&#xA;&quot;-1#is negative| 0#is zero or fraction | 1#is one |1.0&lt;is 1+ |2#is two |2&lt;is more than 2.&quot;);&#xA;System.out.println(&quot;Formatter Pattern : &quot; + fmt.toPattern());&#xA;&#xA;System.out.println(&quot;Format with -INF : &quot; + fmt.format(Double.NEGATIVE_INFINITY));&#xA;System.out.println(&quot;Format with -1.0 : &quot; + fmt.format(-1.0));&#xA;System.out.println(&quot;Format with 0 : &quot; + fmt.format(0));&#xA;System.out.println(&quot;Format with 0.9 : &quot; + fmt.format(0.9));&#xA;System.out.println(&quot;Format with 1.0 : &quot; + fmt.format(1));&#xA;System.out.println(&quot;Format with 1.5 : &quot; + fmt.format(1.5));&#xA;System.out.println(&quot;Format with 2 : &quot; + fmt.format(2));&#xA;System.out.println(&quot;Format with 2.1 : &quot; + fmt.format(2.1));&#xA;System.out.println(&quot;Format with NaN : &quot; + fmt.format(Double.NaN));&#xA;System.out.println(&quot;Format with +INF : &quot; + fmt.format(Double.POSITIVE_INFINITY));&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;And the output result would be like the following:&#xA;&lt;pre>&#xA;&lt;blockquote>&#xA;Format with -INF : is negative&#xA;Format with -1.0 : is negative&#xA;Format with 0 : is zero or fraction&#xA;Format with 0.9 : is zero or fraction&#xA;Format with 1.0 : is one&#xA;Format with 1.5 : is 1+&#xA;Format with 2 : is two&#xA;Format with 2.1 : is more than 2.&#xA;Format with NaN : is negative&#xA;Format with +INF : is more than 2.&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;h4>&lt;a name=&quot;synchronization&quot;>Synchronization&lt;/a>&lt;/h4>&#xA;&#xA;&lt;p>&#xA;Choice formats are not synchronized.&#xA;It is recommended to create separate format instances for each thread.&#xA;If multiple threads access a format concurrently, it must be synchronized&#xA;externally.&#xA;&#xA;&#xA;@see          DecimalFormat&#xA;@see          MessageFormat&#xA;@version      1.22 09/21/98&#xA;@author       Mark Davis&#xA;" annotatedElement="f1049098-7914-4226-9472-660ed1705629"/>
            <generalization xmi:id="0cd514de-3db5-44be-8fb2-14ab8f694375" isSubstitutable="true" general="e33046d9-864f-4997-b19a-8cbe93a7b156"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5d89cd05-87c7-4ef5-91b5-1b7f8d96ac75" name="Collator" clientDependency="e648a499-3ebe-4103-bc29-66595895eb0e 7d5b485f-79ed-4d25-89da-e219b55b051e" isAbstract="true">
            <ownedComment xmi:id="c38c6d16-f940-4979-8ca5-e838d8207d86" body="The &lt;code>Collator&lt;/code> class performs locale-sensitive&#xA;&lt;code>String&lt;/code> comparison. You use this class to build&#xA;searching and sorting routines for natural language text.&#xA;&#xA;&lt;p>&#xA;&lt;code>Collator&lt;/code> is an abstract base class. Subclasses&#xA;implement specific collation strategies. One subclass,&#xA;&lt;code>RuleBasedCollator&lt;/code>, is currently provided with&#xA;the Java 2 platform and is applicable to a wide set of languages. Other&#xA;subclasses may be created to handle more specialized needs.&#xA;&#xA;&lt;p>&#xA;Like other locale-sensitive classes, you can use the static&#xA;factory method, &lt;code>getInstance&lt;/code>, to obtain the appropriate&#xA;&lt;code>Collator&lt;/code> object for a given locale. You will only need&#xA;to look at the subclasses of &lt;code>Collator&lt;/code> if you need&#xA;to understand the details of a particular collation strategy or&#xA;if you need to modify that strategy.&#xA;&#xA;&lt;p>&#xA;The following example shows how to compare two strings using&#xA;the &lt;code>Collator&lt;/code> for the default locale.&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;Compare two strings in the default locale&#xA;Collator myCollator = Collator.getInstance();&#xA;if( myCollator.compare(&quot;abc&quot;, &quot;ABC&quot;) &lt; 0 )&#xA;System.out.println(&quot;abc is less than ABC&quot;);&#xA;else&#xA;System.out.println(&quot;abc is greater than or equal to ABC&quot;);&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;You can set a &lt;code>Collator&lt;/code>'s &lt;em>strength&lt;/em> property&#xA;to determine the level of difference considered significant in&#xA;comparisons. Four strengths are provided: &lt;code>PRIMARY&lt;/code>,&#xA;&lt;code>SECONDARY&lt;/code>, &lt;code>TERTIARY&lt;/code>, and &lt;code>IDENTICAL&lt;/code>.&#xA;The exact assignment of strengths to language features is&#xA;locale dependant.  For example, in Czech, &quot;e&quot; and &quot;f&quot; are considered&#xA;primary differences, while &quot;e&quot; and &quot;\u00EA&quot; are secondary differences,&#xA;&quot;e&quot; and &quot;E&quot; are tertiary differences and &quot;e&quot; and &quot;e&quot; are identical.&#xA;The following shows how both case and accents could be ignored for&#xA;US English.&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;Get the Collator for US English and set its strength to PRIMARY&#xA;Collator usCollator = Collator.getInstance(Locale.US);&#xA;usCollator.setStrength(Collator.PRIMARY);&#xA;if( usCollator.compare(&quot;abc&quot;, &quot;ABC&quot;) == 0 ) {&#xA;System.out.println(&quot;Strings are equivalent&quot;);&#xA;}&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&lt;p>&#xA;For comparing &lt;code>String&lt;/code>s exactly once, the &lt;code>compare&lt;/code>&#xA;method provides the best performance. When sorting a list of&#xA;&lt;code>String&lt;/code>s however, it is generally necessary to compare each&#xA;&lt;code>String&lt;/code> multiple times. In this case, &lt;code>CollationKey&lt;/code>s&#xA;provide better performance. The &lt;code>CollationKey&lt;/code> class converts&#xA;a &lt;code>String&lt;/code> to a series of bits that can be compared bitwise&#xA;against other &lt;code>CollationKey&lt;/code>s. A &lt;code>CollationKey&lt;/code> is&#xA;created by a &lt;code>Collator&lt;/code> object for a given &lt;code>String&lt;/code>.&#xA;&lt;br>&#xA;&lt;strong>Note:&lt;/strong> &lt;code>CollationKey&lt;/code>s from different&#xA;&lt;code>Collator&lt;/code>s can not be compared. See the class description&#xA;for {@link CollationKey}&#xA;for an example using &lt;code>CollationKey&lt;/code>s.&#xA;&#xA;@see         RuleBasedCollator&#xA;@see         CollationKey&#xA;@see         CollationElementIterator&#xA;@see         Locale&#xA;@version     1.39, 05/05/04&#xA;@author      Helena Shih, Laura Werner, Richard Gillam&#xA;" annotatedElement="5d89cd05-87c7-4ef5-91b5-1b7f8d96ac75"/>
            <interfaceRealization xmi:id="7d5b485f-79ed-4d25-89da-e219b55b051e" name="" supplier="7539b7c7-259d-4049-a7a0-6e6d532c6abb" client="5d89cd05-87c7-4ef5-91b5-1b7f8d96ac75" contract="7539b7c7-259d-4049-a7a0-6e6d532c6abb"/>
            <interfaceRealization xmi:id="e648a499-3ebe-4103-bc29-66595895eb0e" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="5d89cd05-87c7-4ef5-91b5-1b7f8d96ac75" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c6cf4cd2-0398-4c42-9838-ad90b4a5e476" name="DecimalFormat">
            <ownedComment xmi:id="0c7466b0-25e9-4e7d-8264-c9f1c4a7d830" body="&lt;code>DecimalFormat&lt;/code> is a concrete subclass of&#xA;&lt;code>NumberFormat&lt;/code> that formats decimal numbers. It has a variety of&#xA;features designed to make it possible to parse and format numbers in any&#xA;locale, including support for Western, Arabic, and Indic digits.  It also&#xA;supports different kinds of numbers, including integers (123), fixed-point&#xA;numbers (123.4), scientific notation (1.23E4), percentages (12%), and&#xA;currency amounts ($123).  All of these can be localized.&#xA;&#xA;&lt;p>To obtain a &lt;code>NumberFormat&lt;/code> for a specific locale, including the&#xA;default locale, call one of &lt;code>NumberFormat&lt;/code>'s factory methods, such&#xA;as &lt;code>getInstance()&lt;/code>.  In general, do not call the&#xA;&lt;code>DecimalFormat&lt;/code> constructors directly, since the&#xA;&lt;code>NumberFormat&lt;/code> factory methods may return subclasses other than&#xA;&lt;code>DecimalFormat&lt;/code>. If you need to customize the format object, do&#xA;something like this:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;NumberFormat f = NumberFormat.getInstance(loc);&#xA;if (f instanceof DecimalFormat) {&#xA;((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p>A &lt;code>DecimalFormat&lt;/code> comprises a &lt;em>pattern&lt;/em> and a set of&#xA;&lt;em>symbols&lt;/em>.  The pattern may be set directly using&#xA;&lt;code>applyPattern()&lt;/code>, or indirectly using the API methods.  The&#xA;symbols are stored in a &lt;code>DecimalFormatSymbols&lt;/code> object.  When using&#xA;the &lt;code>NumberFormat&lt;/code> factory methods, the pattern and symbols are&#xA;read from localized &lt;code>ResourceBundle&lt;/code>s.&#xA;&#xA;&lt;h4>Patterns&lt;/h4>&#xA;&#xA;&lt;code>DecimalFormat&lt;/code> patterns have the following syntax:&#xA;&lt;blockquote>&lt;pre>&#xA;&lt;i>Pattern:&lt;/i>&#xA;&lt;i>PositivePattern&lt;/i>&#xA;&lt;i>PositivePattern&lt;/i> ; &lt;i>NegativePattern&lt;/i>&#xA;&lt;i>PositivePattern:&lt;/i>&#xA;&lt;i>Prefix&lt;sub>opt&lt;/sub>&lt;/i> &lt;i>Number&lt;/i> &lt;i>Suffix&lt;sub>opt&lt;/sub>&lt;/i>&#xA;&lt;i>NegativePattern:&lt;/i>&#xA;&lt;i>Prefix&lt;sub>opt&lt;/sub>&lt;/i> &lt;i>Number&lt;/i> &lt;i>Suffix&lt;sub>opt&lt;/sub>&lt;/i>&#xA;&lt;i>Prefix:&lt;/i>&#xA;any Unicode characters except &amp;#92;uFFFE, &amp;#92;uFFFF, and special characters&#xA;&lt;i>Suffix:&lt;/i>&#xA;any Unicode characters except &amp;#92;uFFFE, &amp;#92;uFFFF, and special characters&#xA;&lt;i>Number:&lt;/i>&#xA;&lt;i>Integer&lt;/i> &lt;i>Exponent&lt;sub>opt&lt;/sub>&lt;/i>&#xA;&lt;i>Integer&lt;/i> . &lt;i>Fraction&lt;/i> &lt;i>Exponent&lt;sub>opt&lt;/sub>&lt;/i>&#xA;&lt;i>Integer:&lt;/i>&#xA;&lt;i>MinimumInteger&lt;/i>&#xA;#&#xA;# &lt;i>Integer&lt;/i>&#xA;# , &lt;i>Integer&lt;/i>&#xA;&lt;i>MinimumInteger:&lt;/i>&#xA;0&#xA;0 &lt;i>MinimumInteger&lt;/i>&#xA;0 , &lt;i>MinimumInteger&lt;/i>&#xA;&lt;i>Fraction:&lt;/i>&#xA;&lt;i>MinimumFraction&lt;sub>opt&lt;/sub>&lt;/i> &lt;i>OptionalFraction&lt;sub>opt&lt;/sub>&lt;/i>&#xA;&lt;i>MinimumFraction:&lt;/i>&#xA;0 &lt;i>MinimumFraction&lt;sub>opt&lt;/sub>&lt;/i>&#xA;&lt;i>OptionalFraction:&lt;/i>&#xA;# &lt;i>OptionalFraction&lt;sub>opt&lt;/sub>&lt;/i>&#xA;&lt;i>Exponent:&lt;/i>&#xA;E &lt;i>MinimumExponent&lt;/i>&#xA;&lt;i>MinimumExponent:&lt;/i>&#xA;0 &lt;i>MinimumExponent&lt;sub>opt&lt;/sub>&lt;/i>&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p>A &lt;code>DecimalFormat&lt;/code> pattern contains a positive and negative&#xA;subpattern, for example, &lt;code>&quot;#,##0.00;(#,##0.00)&quot;&lt;/code>.  Each&#xA;subpattern has a prefix, numeric part, and suffix. The negative subpattern&#xA;is optional; if absent, then the positive subpattern prefixed with the&#xA;localized minus sign (&lt;code>'-'&lt;/code> in most locales) is used as the&#xA;negative subpattern. That is, &lt;code>&quot;0.00&quot;&lt;/code> alone is equivalent to&#xA;&lt;code>&quot;0.00;-0.00&quot;&lt;/code>.  If there is an explicit negative subpattern, it&#xA;serves only to specify the negative prefix and suffix; the number of digits,&#xA;minimal digits, and other characteristics are all the same as the positive&#xA;pattern. That means that &lt;code>&quot;#,##0.0#;(#)&quot;&lt;/code> produces precisely&#xA;the same behavior as &lt;code>&quot;#,##0.0#;(#,##0.0#)&quot;&lt;/code>.&#xA;&#xA;&lt;p>The prefixes, suffixes, and various symbols used for infinity, digits,&#xA;thousands separators, decimal separators, etc. may be set to arbitrary&#xA;values, and they will appear properly during formatting.  However, care must&#xA;be taken that the symbols and strings do not conflict, or parsing will be&#xA;unreliable.  For example, either the positive and negative prefixes or the&#xA;suffixes must be distinct for &lt;code>DecimalFormat.parse()&lt;/code> to be able&#xA;to distinguish positive from negative values.  (If they are identical, then&#xA;&lt;code>DecimalFormat&lt;/code> will behave as if no negative subpattern was&#xA;specified.)  Another example is that the decimal separator and thousands&#xA;separator should be distinct characters, or parsing will be impossible.&#xA;&#xA;&lt;p>The grouping separator is commonly used for thousands, but in some&#xA;countries it separates ten-thousands. The grouping size is a constant number&#xA;of digits between the grouping characters, such as 3 for 100,000,000 or 4 for&#xA;1,0000,0000.  If you supply a pattern with multiple grouping characters, the&#xA;interval between the last one and the end of the integer is the one that is&#xA;used. So &lt;code>&quot;#,##,###,####&quot;&lt;/code> == &lt;code>&quot;######,####&quot;&lt;/code> ==&#xA;&lt;code>&quot;##,####,####&quot;&lt;/code>.&#xA;&#xA;&lt;h4>Special Pattern Characters&lt;/h4>&#xA;&#xA;&lt;p>Many characters in a pattern are taken literally; they are matched during&#xA;parsing and output unchanged during formatting.  Special characters, on the&#xA;other hand, stand for other characters, strings, or classes of characters.&#xA;They must be quoted, unless noted otherwise, if they are to appear in the&#xA;prefix or suffix as literals.&#xA;&#xA;&lt;p>The characters listed here are used in non-localized patterns.  Localized&#xA;patterns use the corresponding characters taken from this formatter's&#xA;&lt;code>DecimalFormatSymbols&lt;/code> object instead, and these characters lose&#xA;their special status.  Two exceptions are the currency sign and quote, which&#xA;are not localized.&#xA;&#xA;&lt;blockquote>&#xA;&lt;table border=0 cellspacing=3 cellpadding=0 summary=&quot;Chart showing symbol,&#xA;location, localized, and meaning.&quot;>&#xA;&lt;tr bgcolor=&quot;#ccccff&quot;>&#xA;&lt;th align=left>Symbol&#xA;&lt;th align=left>Location&#xA;&lt;th align=left>Localized?&#xA;&lt;th align=left>Meaning&#xA;&lt;tr valign=top>&#xA;&lt;td>&lt;code>0&lt;/code>&#xA;&lt;td>Number&#xA;&lt;td>Yes&#xA;&lt;td>Digit&#xA;&lt;tr valign=top bgcolor=&quot;#eeeeff&quot;>&#xA;&lt;td>&lt;code>#&lt;/code>&#xA;&lt;td>Number&#xA;&lt;td>Yes&#xA;&lt;td>Digit, zero shows as absent&#xA;&lt;tr valign=top>&#xA;&lt;td>&lt;code>.&lt;/code>&#xA;&lt;td>Number&#xA;&lt;td>Yes&#xA;&lt;td>Decimal separator or monetary decimal separator&#xA;&lt;tr valign=top bgcolor=&quot;#eeeeff&quot;>&#xA;&lt;td>&lt;code>-&lt;/code>&#xA;&lt;td>Number&#xA;&lt;td>Yes&#xA;&lt;td>Minus sign&#xA;&lt;tr valign=top>&#xA;&lt;td>&lt;code>,&lt;/code>&#xA;&lt;td>Number&#xA;&lt;td>Yes&#xA;&lt;td>Grouping separator&#xA;&lt;tr valign=top bgcolor=&quot;#eeeeff&quot;>&#xA;&lt;td>&lt;code>E&lt;/code>&#xA;&lt;td>Number&#xA;&lt;td>Yes&#xA;&lt;td>Separates mantissa and exponent in scientific notation.&#xA;&lt;em>Need not be quoted in prefix or suffix.&lt;/em>&#xA;&lt;tr valign=top>&#xA;&lt;td>&lt;code>;&lt;/code>&#xA;&lt;td>Subpattern boundary&#xA;&lt;td>Yes&#xA;&lt;td>Separates positive and negative subpatterns&#xA;&lt;tr valign=top bgcolor=&quot;#eeeeff&quot;>&#xA;&lt;td>&lt;code>%&lt;/code>&#xA;&lt;td>Prefix or suffix&#xA;&lt;td>Yes&#xA;&lt;td>Multiply by 100 and show as percentage&#xA;&lt;tr valign=top>&#xA;&lt;td>&lt;code>&amp;#92;u2030&lt;/code>&#xA;&lt;td>Prefix or suffix&#xA;&lt;td>Yes&#xA;&lt;td>Multiply by 1000 and show as per mille value&#xA;&lt;tr valign=top bgcolor=&quot;#eeeeff&quot;>&#xA;&lt;td>&lt;code>&amp;#164;&lt;/code> (&lt;code>&amp;#92;u00A4&lt;/code>)&#xA;&lt;td>Prefix or suffix&#xA;&lt;td>No&#xA;&lt;td>Currency sign, replaced by currency symbol.  If&#xA;doubled, replaced by international currency symbol.&#xA;If present in a pattern, the monetary decimal separator&#xA;is used instead of the decimal separator.&#xA;&lt;tr valign=top>&#xA;&lt;td>&lt;code>'&lt;/code>&#xA;&lt;td>Prefix or suffix&#xA;&lt;td>No&#xA;&lt;td>Used to quote special characters in a prefix or suffix,&#xA;for example, &lt;code>&quot;'#'#&quot;&lt;/code> formats 123 to&#xA;&lt;code>&quot;#123&quot;&lt;/code>.  To create a single quote&#xA;itself, use two in a row: &lt;code>&quot;# o''clock&quot;&lt;/code>.&#xA;&lt;/table>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;h4>Scientific Notation&lt;/h4>&#xA;&#xA;&lt;p>Numbers in scientific notation are expressed as the product of a mantissa&#xA;and a power of ten, for example, 1234 can be expressed as 1.234 x 10^3.  The&#xA;mantissa is often in the range 1.0 &lt;= x &lt; 10.0, but it need not be.&#xA;&lt;code>DecimalFormat&lt;/code> can be instructed to format and parse scientific&#xA;notation &lt;em>only via a pattern&lt;/em>; there is currently no factory method&#xA;that creates a scientific notation format.  In a pattern, the exponent&#xA;character immediately followed by one or more digit characters indicates&#xA;scientific notation.  Example: &lt;code>&quot;0.###E0&quot;&lt;/code> formats the number&#xA;1234 as &lt;code>&quot;1.234E3&quot;&lt;/code>.&#xA;&#xA;&lt;ul>&#xA;&lt;li>The number of digit characters after the exponent character gives the&#xA;minimum exponent digit count.  There is no maximum.  Negative exponents are&#xA;formatted using the localized minus sign, &lt;em>not&lt;/em> the prefix and suffix&#xA;from the pattern.  This allows patterns such as &lt;code>&quot;0.###E0 m/s&quot;&lt;/code>.&#xA;&#xA;&lt;li>The minimum and maximum number of integer digits are interpreted&#xA;together:&#xA;&#xA;&lt;ul>&#xA;&lt;li>If the maximum number of integer digits is greater than their minimum number&#xA;and greater than 1, it forces the exponent to be a multiple of the maximum&#xA;number of integer digits, and the minimum number of integer digits to be&#xA;interpreted as 1.  The most common use of this is to generate&#xA;&lt;em>engineering notation&lt;/em>, in which the exponent is a multiple of three,&#xA;e.g., &lt;code>&quot;##0.#####E0&quot;&lt;/code>. Using this pattern, the number 12345&#xA;formats to &lt;code>&quot;12.345E3&quot;&lt;/code>, and 123456 formats to&#xA;&lt;code>&quot;123.456E3&quot;&lt;/code>.&#xA;&#xA;&lt;li>Otherwise, the minimum number of integer digits is achieved by adjusting the&#xA;exponent.  Example: 0.00123 formatted with &lt;code>&quot;00.###E0&quot;&lt;/code> yields&#xA;&lt;code>&quot;12.3E-4&quot;&lt;/code>.&#xA;&lt;/ul>&#xA;&#xA;&lt;li>The number of significant digits in the mantissa is the sum of the&#xA;&lt;em>minimum integer&lt;/em> and &lt;em>maximum fraction&lt;/em> digits, and is&#xA;unaffected by the maximum integer digits.  For example, 12345 formatted with&#xA;&lt;code>&quot;##0.##E0&quot;&lt;/code> is &lt;code>&quot;12.3E3&quot;&lt;/code>. To show all digits, set&#xA;the significant digits count to zero.  The number of significant digits&#xA;does not affect parsing.&#xA;&#xA;&lt;li>Exponential patterns may not contain grouping separators.&#xA;&lt;/ul>&#xA;&#xA;&lt;h4>Rounding&lt;/h4>&#xA;&#xA;&lt;code>DecimalFormat&lt;/code> uses half-even rounding (see&#xA;{@link java.math.BigDecimal#ROUND_HALF_EVEN ROUND_HALF_EVEN}) for&#xA;formatting.&#xA;&#xA;&lt;h4>Digits&lt;/h4>&#xA;&#xA;For formatting, &lt;code>DecimalFormat&lt;/code> uses the ten consecutive&#xA;characters starting with the localized zero digit defined in the&#xA;&lt;code>DecimalFormatSymbols&lt;/code> object as digits. For parsing, these&#xA;digits as well as all Unicode decimal digits, as defined by&#xA;{@link Character#digit Character.digit}, are recognized.&#xA;&#xA;&lt;h4>Special Values&lt;/h4>&#xA;&#xA;&lt;p>&lt;code>NaN&lt;/code> is formatted as a single character, typically&#xA;&lt;code>&amp;#92;uFFFD&lt;/code>.  This character is determined by the&#xA;&lt;code>DecimalFormatSymbols&lt;/code> object.  This is the only value for which&#xA;the prefixes and suffixes are not used.&#xA;&#xA;&lt;p>Infinity is formatted as a single character, typically&#xA;&lt;code>&amp;#92;u221E&lt;/code>, with the positive or negative prefixes and suffixes&#xA;applied.  The infinity character is determined by the&#xA;&lt;code>DecimalFormatSymbols&lt;/code> object.&#xA;&#xA;&lt;p>Negative zero (&lt;code>&quot;-0&quot;&lt;/code>) parses to&#xA;&lt;ul>&#xA;&lt;li>&lt;code>BigDecimal(0)&lt;/code> if &lt;code>isParseBigDecimal()&lt;/code> is&#xA;true,&#xA;&lt;li>&lt;code>Long(0)&lt;/code> if &lt;code>isParseBigDecimal()&lt;/code> is false&#xA;and &lt;code>isParseIntegerOnly()&lt;/code> is true,&#xA;&lt;li>&lt;code>Double(-0.0)&lt;/code> if both &lt;code>isParseBigDecimal()&lt;/code>&#xA;and &lt;code>isParseIntegerOnly()&lt;/code> are false.&#xA;&lt;/ul>&#xA;&#xA;&lt;h4>&lt;a name=&quot;synchronization&quot;>Synchronization&lt;/a>&lt;/h4>&#xA;&#xA;&lt;p>&#xA;Decimal formats are generally not synchronized.&#xA;It is recommended to create separate format instances for each thread.&#xA;If multiple threads access a format concurrently, it must be synchronized&#xA;externally.&#xA;&#xA;&lt;h4>Example&lt;/h4>&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;&lt;strong>// Print out a number using the localized number, integer, currency,&#xA;and percent format for each locale&lt;/strong>&#xA;Locale[] locales = NumberFormat.getAvailableLocales();&#xA;double myNumber = -1234.56;&#xA;NumberFormat form;&#xA;for (int j=0; j&lt;4; ++j) {&#xA;System.out.println(&quot;FORMAT&quot;);&#xA;for (int i = 0; i &lt; locales.length; ++i) {&#xA;if (locales[i].getCountry().length() == 0) {&#xA;continue; // Skip language-only locales&#xA;}&#xA;System.out.print(locales[i].getDisplayName());&#xA;switch (j) {&#xA;case 0:&#xA;form = NumberFormat.getInstance(locales[i]); break;&#xA;case 1:&#xA;form = NumberFormat.getIntegerInstance(locales[i]); break;&#xA;case 2:&#xA;form = NumberFormat.getCurrencyInstance(locales[i]); break;&#xA;default:&#xA;form = NumberFormat.getPercentInstance(locales[i]); break;&#xA;}&#xA;if (form instanceof DecimalFormat) {&#xA;System.out.print(&quot;: &quot; + ((DecimalFormat) form).toPattern());&#xA;}&#xA;System.out.print(&quot; -> &quot; + form.format(myNumber));&#xA;try {&#xA;System.out.println(&quot; -> &quot; + form.parse(form.format(myNumber)));&#xA;} catch (ParseException e) {}&#xA;}&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;@see          &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/i18n/format/decimalFormat.html&quot;>Java Tutorial&lt;/a>&#xA;@see          NumberFormat&#xA;@see          DecimalFormatSymbols&#xA;@see          ParsePosition&#xA;@version      1.79 06/28/04&#xA;@author       Mark Davis&#xA;@author       Alan Liu&#xA;" annotatedElement="c6cf4cd2-0398-4c42-9838-ad90b4a5e476"/>
            <generalization xmi:id="81678fa1-6e1e-4878-baae-bd809176b682" isSubstitutable="true" general="e33046d9-864f-4997-b19a-8cbe93a7b156"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6b5799d4-036a-429a-acd1-1843404fa082" name="WordBreakTable" visibility="package" isLeaf="true"/>
          <packagedElement xmi:type="uml:Class" xmi:id="e33046d9-864f-4997-b19a-8cbe93a7b156" name="NumberFormat" isAbstract="true">
            <ownedComment xmi:id="cff8b5e1-21a2-4458-8fc9-6d545b49478b" body="&lt;code>NumberFormat&lt;/code> is the abstract base class for all number&#xA;formats. This class provides the interface for formatting and parsing&#xA;numbers. &lt;code>NumberFormat&lt;/code> also provides methods for determining&#xA;which locales have number formats, and what their names are.&#xA;&#xA;&lt;p>&#xA;&lt;code>NumberFormat&lt;/code> helps you to format and parse numbers for any locale.&#xA;Your code can be completely independent of the locale conventions for&#xA;decimal points, thousands-separators, or even the particular decimal&#xA;digits used, or whether the number format is even decimal.&#xA;&#xA;&lt;p>&#xA;To format a number for the current Locale, use one of the factory&#xA;class methods:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;myString = NumberFormat.getInstance().format(myNumber);&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;If you are formatting multiple numbers, it is&#xA;more efficient to get the format and use it multiple times so that&#xA;the system doesn't have to fetch the information about the local&#xA;language and country conventions multiple times.&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;NumberFormat nf = NumberFormat.getInstance();&#xA;for (int i = 0; i &lt; a.length; ++i) {&#xA;output.println(nf.format(myNumber[i]) + &quot;; &quot;);&#xA;}&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;To format a number for a different Locale, specify it in the&#xA;call to &lt;code>getInstance&lt;/code>.&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;You can also use a &lt;code>NumberFormat&lt;/code> to parse numbers:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;myNumber = nf.parse(myString);&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;Use &lt;code>getInstance&lt;/code> or &lt;code>getNumberInstance&lt;/code> to get the&#xA;normal number format. Use &lt;code>getIntegerInstance&lt;/code> to get an&#xA;integer number format. Use &lt;code>getCurrencyInstance&lt;/code> to get the&#xA;currency number format. And use &lt;code>getPercentInstance&lt;/code> to get a&#xA;format for displaying percentages. With this format, a fraction like&#xA;0.53 is displayed as 53%.&#xA;&#xA;&lt;p>&#xA;You can also control the display of numbers with such methods as&#xA;&lt;code>setMinimumFractionDigits&lt;/code>.&#xA;If you want even more control over the format or parsing,&#xA;or want to give your users more control,&#xA;you can try casting the &lt;code>NumberFormat&lt;/code> you get from the factory methods&#xA;to a &lt;code>DecimalFormat&lt;/code>. This will work for the vast majority&#xA;of locales; just remember to put it in a &lt;code>try&lt;/code> block in case you&#xA;encounter an unusual one.&#xA;&#xA;&lt;p>&#xA;NumberFormat and DecimalFormat are designed such that some controls&#xA;work for formatting and others work for parsing.  The following is&#xA;the detailed description for each these control methods,&#xA;&lt;p>&#xA;setParseIntegerOnly : only affects parsing, e.g.&#xA;if true,  &quot;3456.78&quot; -> 3456 (and leaves the parse position just after index 6)&#xA;if false, &quot;3456.78&quot; -> 3456.78 (and leaves the parse position just after index 8)&#xA;This is independent of formatting.  If you want to not show a decimal point&#xA;where there might be no digits after the decimal point, use&#xA;setDecimalSeparatorAlwaysShown.&#xA;&lt;p>&#xA;setDecimalSeparatorAlwaysShown : only affects formatting, and only where&#xA;there might be no digits after the decimal point, such as with a pattern&#xA;like &quot;#,##0.##&quot;, e.g.,&#xA;if true,  3456.00 -> &quot;3,456.&quot;&#xA;if false, 3456.00 -> &quot;3456&quot;&#xA;This is independent of parsing.  If you want parsing to stop at the decimal&#xA;point, use setParseIntegerOnly.&#xA;&#xA;&lt;p>&#xA;You can also use forms of the &lt;code>parse&lt;/code> and &lt;code>format&lt;/code>&#xA;methods with &lt;code>ParsePosition&lt;/code> and &lt;code>FieldPosition&lt;/code> to&#xA;allow you to:&#xA;&lt;ul>&#xA;&lt;li> progressively parse through pieces of a string&#xA;&lt;li> align the decimal point and other areas&#xA;&lt;/ul>&#xA;For example, you can align numbers in two ways:&#xA;&lt;ol>&#xA;&lt;li> If you are using a monospaced font with spacing for alignment,&#xA;you can pass the &lt;code>FieldPosition&lt;/code> in your format call, with&#xA;&lt;code>field&lt;/code> = &lt;code>INTEGER_FIELD&lt;/code>. On output,&#xA;&lt;code>getEndIndex&lt;/code> will be set to the offset between the&#xA;last character of the integer and the decimal. Add&#xA;(desiredSpaceCount - getEndIndex) spaces at the front of the string.&#xA;&#xA;&lt;li> If you are using proportional fonts,&#xA;instead of padding with spaces, measure the width&#xA;of the string in pixels from the start to &lt;code>getEndIndex&lt;/code>.&#xA;Then move the pen by&#xA;(desiredPixelWidth - widthToAlignmentPoint) before drawing the text.&#xA;It also works where there is no decimal, but possibly additional&#xA;characters at the end, e.g., with parentheses in negative&#xA;numbers: &quot;(12)&quot; for -12.&#xA;&lt;/ol>&#xA;&#xA;&lt;h4>&lt;a name=&quot;synchronization&quot;>Synchronization&lt;/a>&lt;/h4>&#xA;&#xA;&lt;p>&#xA;Number formats are generally not synchronized.&#xA;It is recommended to create separate format instances for each thread.&#xA;If multiple threads access a format concurrently, it must be synchronized&#xA;externally.&#xA;&#xA;@see          DecimalFormat&#xA;@see          ChoiceFormat&#xA;@version      1.65, 05/10/04&#xA;@author       Mark Davis&#xA;@author       Helena Shih&#xA;" annotatedElement="e33046d9-864f-4997-b19a-8cbe93a7b156"/>
            <generalization xmi:id="26eb1686-6b1a-43c9-9bbe-74d249091d21" isSubstitutable="true" general="734dcbb9-784d-47a7-b1fd-58b7a751990b"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="14d255e5-c642-434b-92e1-2682c5f6080c" name="Field">
              <ownedComment xmi:id="afa808f2-bb9f-492f-950c-7cc5f2d942b8" body="Defines constants that are used as attribute keys in the&#xA;&lt;code>AttributedCharacterIterator&lt;/code> returned&#xA;from &lt;code>NumberFormat.formatToCharacterIterator&lt;/code> and as&#xA;field identifiers in &lt;code>FieldPosition&lt;/code>.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="14d255e5-c642-434b-92e1-2682c5f6080c"/>
              <generalization xmi:id="87981566-6593-40af-a7f7-9a0131c0acef" isSubstitutable="true" general="3b27ecf5-3cb0-44ae-9fe0-5394c859e489"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="36ab21ac-9f4e-41f8-b6de-cfecab1a1a3d" name="TextBoundaryData" visibility="package" isAbstract="true"/>
          <packagedElement xmi:type="uml:Class" xmi:id="eb3ee3df-1ebb-420b-adec-7062b4644bcf" name="MessageFormat">
            <ownedComment xmi:id="9960b056-9547-44f4-80ad-8776d1adea9d" body="&lt;code>MessageFormat&lt;/code> provides a means to produce concatenated&#xA;messages in language-neutral way. Use this to construct messages&#xA;displayed for end users.&#xA;&#xA;&lt;p>&#xA;&lt;code>MessageFormat&lt;/code> takes a set of objects, formats them, then&#xA;inserts the formatted strings into the pattern at the appropriate places.&#xA;&#xA;&lt;p>&#xA;&lt;strong>Note:&lt;/strong>&#xA;&lt;code>MessageFormat&lt;/code> differs from the other &lt;code>Format&lt;/code>&#xA;classes in that you create a &lt;code>MessageFormat&lt;/code> object with one&#xA;of its constructors (not with a &lt;code>getInstance&lt;/code> style factory&#xA;method). The factory methods aren't necessary because &lt;code>MessageFormat&lt;/code>&#xA;itself doesn't implement locale specific behavior. Any locale specific&#xA;behavior is defined by the pattern that you provide as well as the&#xA;subformats used for inserted arguments.&#xA;&#xA;&lt;h4>&lt;a name=&quot;patterns&quot;>Patterns and Their Interpretation&lt;/a>&lt;/h4>&#xA;&#xA;&lt;code>MessageFormat&lt;/code> uses patterns of the following form:&#xA;&lt;blockquote>&lt;pre>&#xA;&lt;i>MessageFormatPattern:&lt;/i>&#xA;&lt;i>String&lt;/i>&#xA;&lt;i>MessageFormatPattern&lt;/i> &lt;i>FormatElement&lt;/i> &lt;i>String&lt;/i>&#xA;&#xA;&lt;i>FormatElement:&lt;/i>&#xA;{ &lt;i>ArgumentIndex&lt;/i> }&#xA;{ &lt;i>ArgumentIndex&lt;/i> , &lt;i>FormatType&lt;/i> }&#xA;{ &lt;i>ArgumentIndex&lt;/i> , &lt;i>FormatType&lt;/i> , &lt;i>FormatStyle&lt;/i> }&#xA;&#xA;&lt;i>FormatType: one of &lt;/i>&#xA;number date time choice&#xA;&#xA;&lt;i>FormatStyle:&lt;/i>&#xA;short&#xA;medium&#xA;long&#xA;full&#xA;integer&#xA;currency&#xA;percent&#xA;&lt;i>SubformatPattern&lt;/i>&#xA;&#xA;&lt;i>String:&lt;/i>&#xA;&lt;i>StringPart&lt;sub>opt&lt;/sub>&lt;/i>&#xA;&lt;i>String&lt;/i> &lt;i>StringPart&lt;/i>&#xA;&#xA;&lt;i>StringPart:&lt;/i>&#xA;''&#xA;' &lt;i>QuotedString&lt;/i> '&#xA;&lt;i>UnquotedString&lt;/i>&#xA;&#xA;&lt;i>SubformatPattern:&lt;/i>&#xA;&lt;i>SubformatPatternPart&lt;sub>opt&lt;/sub>&lt;/i>&#xA;&lt;i>SubformatPattern&lt;/i> &lt;i>SubformatPatternPart&lt;/i>&#xA;&#xA;&lt;i>SubFormatPatternPart:&lt;/i>&#xA;' &lt;i>QuotedPattern&lt;/i> '&#xA;&lt;i>UnquotedPattern&lt;/i>&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;Within a &lt;i>String&lt;/i>, &lt;code>&quot;''&quot;&lt;/code> represents a single&#xA;quote. A &lt;i>QuotedString&lt;/i> can contain arbitrary characters&#xA;except single quotes; the surrounding single quotes are removed.&#xA;An &lt;i>UnquotedString&lt;/i> can contain arbitrary characters&#xA;except single quotes and left curly brackets. Thus, a string that&#xA;should result in the formatted message &quot;'{0}'&quot; can be written as&#xA;&lt;code>&quot;'''{'0}''&quot;&lt;/code> or &lt;code>&quot;'''{0}'''&quot;&lt;/code>.&#xA;&lt;p>&#xA;Within a &lt;i>SubformatPattern&lt;/i>, different rules apply.&#xA;A &lt;i>QuotedPattern&lt;/i> can contain arbitrary characters&#xA;except single quotes; but the surrounding single quotes are&#xA;&lt;strong>not&lt;/strong> removed, so they may be interpreted by the&#xA;subformat. For example, &lt;code>&quot;{1,number,$'#',##}&quot;&lt;/code> will&#xA;produce a number format with the pound-sign quoted, with a result&#xA;such as: &quot;$#31,45&quot;.&#xA;An &lt;i>UnquotedPattern&lt;/i> can contain arbitrary characters&#xA;except single quotes, but curly braces within it must be balanced.&#xA;For example, &lt;code>&quot;ab {0} de&quot;&lt;/code> and &lt;code>&quot;ab '}' de&quot;&lt;/code>&#xA;are valid subformat patterns, but &lt;code>&quot;ab {0'}' de&quot;&lt;/code> and&#xA;&lt;code>&quot;ab } de&quot;&lt;/code> are not.&#xA;&lt;p>&#xA;&lt;dl>&lt;dt>&lt;b>Warning:&lt;/b>&lt;dd>The rules for using quotes within message&#xA;format patterns unfortunately have shown to be somewhat confusing.&#xA;In particular, it isn't always obvious to localizers whether single&#xA;quotes need to be doubled or not. Make sure to inform localizers about&#xA;the rules, and tell them (for example, by using comments in resource&#xA;bundle source files) which strings will be processed by MessageFormat.&#xA;Note that localizers may need to use single quotes in translated&#xA;strings where the original version doesn't have them.&#xA;&lt;/dl>&#xA;&lt;p>&#xA;The &lt;i>ArgumentIndex&lt;/i> value is a non-negative integer written&#xA;using the digits '0' through '9', and represents an index into the&#xA;&lt;code>arguments&lt;/code> array passed to the &lt;code>format&lt;/code> methods&#xA;or the result array returned by the &lt;code>parse&lt;/code> methods.&#xA;&lt;p>&#xA;The &lt;i>FormatType&lt;/i> and &lt;i>FormatStyle&lt;/i> values are used to create&#xA;a &lt;code>Format&lt;/code> instance for the format element. The following&#xA;table shows how the values map to Format instances. Combinations not&#xA;shown in the table are illegal. A &lt;i>SubformatPattern&lt;/i> must&#xA;be a valid pattern string for the Format subclass used.&#xA;&lt;p>&#xA;&lt;table border=1 summary=&quot;Shows how FormatType and FormatStyle values map to Format instances&quot;>&#xA;&lt;tr>&#xA;&lt;th id=&quot;ft&quot;>Format Type&#xA;&lt;th id=&quot;fs&quot;>Format Style&#xA;&lt;th id=&quot;sc&quot;>Subformat Created&#xA;&lt;tr>&#xA;&lt;td headers=&quot;ft&quot;>&lt;i>(none)&lt;/i>&#xA;&lt;td headers=&quot;fs&quot;>&lt;i>(none)&lt;/i>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>null&lt;/code>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;ft&quot; rowspan=5>&lt;code>number&lt;/code>&#xA;&lt;td headers=&quot;fs&quot;>&lt;i>(none)&lt;/i>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>NumberFormat.getInstance(getLocale())&lt;/code>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;fs&quot;>&lt;code>integer&lt;/code>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>NumberFormat.getIntegerInstance(getLocale())&lt;/code>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;fs&quot;>&lt;code>currency&lt;/code>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>NumberFormat.getCurrencyInstance(getLocale())&lt;/code>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;fs&quot;>&lt;code>percent&lt;/code>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>NumberFormat.getPercentInstance(getLocale())&lt;/code>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;fs&quot;>&lt;i>SubformatPattern&lt;/i>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>new DecimalFormat(subformatPattern, new DecimalFormatSymbols(getLocale()))&lt;/code>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;ft&quot; rowspan=6>&lt;code>date&lt;/code>&#xA;&lt;td headers=&quot;fs&quot;>&lt;i>(none)&lt;/i>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())&lt;/code>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;fs&quot;>&lt;code>short&lt;/code>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>DateFormat.getDateInstance(DateFormat.SHORT, getLocale())&lt;/code>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;fs&quot;>&lt;code>medium&lt;/code>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())&lt;/code>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;fs&quot;>&lt;code>long&lt;/code>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>DateFormat.getDateInstance(DateFormat.LONG, getLocale())&lt;/code>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;fs&quot;>&lt;code>full&lt;/code>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>DateFormat.getDateInstance(DateFormat.FULL, getLocale())&lt;/code>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;fs&quot;>&lt;i>SubformatPattern&lt;/i>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>new SimpleDateFormat(subformatPattern, getLocale())&#xA;&lt;tr>&#xA;&lt;td headers=&quot;ft&quot; rowspan=6>&lt;code>time&lt;/code>&#xA;&lt;td headers=&quot;fs&quot;>&lt;i>(none)&lt;/i>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())&lt;/code>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;fs&quot;>&lt;code>short&lt;/code>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>DateFormat.getTimeInstance(DateFormat.SHORT, getLocale())&lt;/code>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;fs&quot;>&lt;code>medium&lt;/code>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())&lt;/code>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;fs&quot;>&lt;code>long&lt;/code>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>DateFormat.getTimeInstance(DateFormat.LONG, getLocale())&lt;/code>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;fs&quot;>&lt;code>full&lt;/code>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>DateFormat.getTimeInstance(DateFormat.FULL, getLocale())&lt;/code>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;fs&quot;>&lt;i>SubformatPattern&lt;/i>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>new SimpleDateFormat(subformatPattern, getLocale())&#xA;&lt;tr>&#xA;&lt;td headers=&quot;ft&quot;>&lt;code>choice&lt;/code>&#xA;&lt;td headers=&quot;fs&quot;>&lt;i>SubformatPattern&lt;/i>&#xA;&lt;td headers=&quot;sc&quot;>&lt;code>new ChoiceFormat(subformatPattern)&lt;/code>&#xA;&lt;/table>&#xA;&lt;p>&#xA;&#xA;&lt;h4>Usage Information&lt;/h4>&#xA;&#xA;&lt;p>&#xA;Here are some examples of usage.&#xA;In real internationalized programs, the message format pattern and other&#xA;static strings will, of course, be obtained from resource bundles.&#xA;Other parameters will be dynamically determined at runtime.&#xA;&lt;p>&#xA;The first example uses the static method &lt;code>MessageFormat.format&lt;/code>,&#xA;which internally creates a &lt;code>MessageFormat&lt;/code> for one-time use:&#xA;&lt;blockquote>&lt;pre>&#xA;int planet = 7;&#xA;String event = &quot;a disturbance in the Force&quot;;&#xA;&#xA;String result = MessageFormat.format(&#xA;&quot;At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.&quot;,&#xA;planet, new Date(), event);&#xA;&lt;/pre>&lt;/blockquote>&#xA;The output is:&#xA;&lt;blockquote>&lt;pre>&#xA;At 12:30 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7.&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;The following example creates a &lt;code>MessageFormat&lt;/code> instance that&#xA;can be used repeatedly:&#xA;&lt;blockquote>&lt;pre>&#xA;int fileCount = 1273;&#xA;String diskName = &quot;MyDisk&quot;;&#xA;Object[] testArgs = {new Long(fileCount), diskName};&#xA;&#xA;MessageFormat form = new MessageFormat(&#xA;&quot;The disk \&quot;{1}\&quot; contains {0} file(s).&quot;);&#xA;&#xA;System.out.println(form.format(testArgs));&#xA;&lt;/pre>&lt;/blockquote>&#xA;The output with different values for &lt;code>fileCount&lt;/code>:&#xA;&lt;blockquote>&lt;pre>&#xA;The disk &quot;MyDisk&quot; contains 0 file(s).&#xA;The disk &quot;MyDisk&quot; contains 1 file(s).&#xA;The disk &quot;MyDisk&quot; contains 1,273 file(s).&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;For more sophisticated patterns, you can use a &lt;code>ChoiceFormat&lt;/code>&#xA;to produce correct forms for singular and plural:&#xA;&lt;blockquote>&lt;pre>&#xA;MessageFormat form = new MessageFormat(&quot;The disk \&quot;{1}\&quot; contains {0}.&quot;);&#xA;double[] filelimits = {0,1,2};&#xA;String[] filepart = {&quot;no files&quot;,&quot;one file&quot;,&quot;{0,number} files&quot;};&#xA;ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);&#xA;form.setFormatByArgumentIndex(0, fileform);&#xA;&#xA;int fileCount = 1273;&#xA;String diskName = &quot;MyDisk&quot;;&#xA;Object[] testArgs = {new Long(fileCount), diskName};&#xA;&#xA;System.out.println(form.format(testArgs));&#xA;&lt;/pre>&lt;/blockquote>&#xA;The output with different values for &lt;code>fileCount&lt;/code>:&#xA;&lt;blockquote>&lt;pre>&#xA;The disk &quot;MyDisk&quot; contains no files.&#xA;The disk &quot;MyDisk&quot; contains one file.&#xA;The disk &quot;MyDisk&quot; contains 1,273 files.&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;You can create the &lt;code>ChoiceFormat&lt;/code> programmatically, as in the&#xA;above example, or by using a pattern. See {@link ChoiceFormat}&#xA;for more information.&#xA;&lt;blockquote>&lt;pre>&#xA;form.applyPattern(&#xA;&quot;There {0,choice,0#are no files|1#is one file|1&lt;are {0,number,integer} files}.&quot;);&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;&lt;strong>Note:&lt;/strong> As we see above, the string produced&#xA;by a &lt;code>ChoiceFormat&lt;/code> in &lt;code>MessageFormat&lt;/code> is treated specially;&#xA;occurences of '{' are used to indicated subformats, and cause recursion.&#xA;If you create both a &lt;code>MessageFormat&lt;/code> and &lt;code>ChoiceFormat&lt;/code>&#xA;programmatically (instead of using the string patterns), then be careful not to&#xA;produce a format that recurses on itself, which will cause an infinite loop.&#xA;&lt;p>&#xA;When a single argument is parsed more than once in the string, the last match&#xA;will be the final result of the parsing.  For example,&#xA;&lt;blockquote>&lt;pre>&#xA;MessageFormat mf = new MessageFormat(&quot;{0,number,#.##}, {0,number,#.#}&quot;);&#xA;Object[] objs = {new Double(3.1415)};&#xA;String result = mf.format( objs );&#xA;result now equals &quot;3.14, 3.1&quot;&#xA;objs = null;&#xA;objs = mf.parse(result, new ParsePosition(0));&#xA;objs now equals {new Double(3.1)}&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;Likewise, parsing with a MessageFormat object using patterns containing&#xA;multiple occurences of the same argument would return the last match.  For&#xA;example,&#xA;&lt;blockquote>&lt;pre>&#xA;MessageFormat mf = new MessageFormat(&quot;{0}, {0}, {0}&quot;);&#xA;String forParsing = &quot;x, y, z&quot;;&#xA;Object[] objs = mf.parse(forParsing, new ParsePosition(0));&#xA;result now equals {new String(&quot;z&quot;)}&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;h4>&lt;a name=&quot;synchronization&quot;>Synchronization&lt;/a>&lt;/h4>&#xA;&#xA;&lt;p>&#xA;Message formats are not synchronized.&#xA;It is recommended to create separate format instances for each thread.&#xA;If multiple threads access a format concurrently, it must be synchronized&#xA;externally.&#xA;&#xA;@see          java.util.Locale&#xA;@see          Format&#xA;@see          NumberFormat&#xA;@see          DecimalFormat&#xA;@see          ChoiceFormat&#xA;@version      1.56, 12/19/03&#xA;@author       Mark Davis&#xA;" annotatedElement="eb3ee3df-1ebb-420b-adec-7062b4644bcf"/>
            <generalization xmi:id="4fee33f4-083b-421f-9a4a-98cf6c296094" isSubstitutable="true" general="734dcbb9-784d-47a7-b1fd-58b7a751990b"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="2d37dc34-7a56-42ec-8fc5-ea41759084af" name="Field">
              <ownedComment xmi:id="0e7313c6-1841-4117-8c5c-15fbabaf2f29" body="Defines constants that are used as attribute keys in the&#xA;&lt;code>AttributedCharacterIterator&lt;/code> returned&#xA;from &lt;code>MessageFormat.formatToCharacterIterator&lt;/code>.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="2d37dc34-7a56-42ec-8fc5-ea41759084af"/>
              <generalization xmi:id="5432df9b-8397-4917-b4ae-b3007931a60d" isSubstitutable="true" general="3b27ecf5-3cb0-44ae-9fe0-5394c859e489"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="15127a75-7126-4fb0-94a8-da2637edd4e0" name="PatternEntry" visibility="package">
            <ownedComment xmi:id="6e5bf10e-c595-4097-bfe2-c053cc98703f" body="Utility class for normalizing and merging patterns for collation.&#xA;This is to be used with MergeCollation for adding patterns to an&#xA;existing rule table.&#xA;@see        MergeCollation&#xA;@version    1.25 12/19/03&#xA;@author     Mark Davis, Helena Shih&#xA;" annotatedElement="15127a75-7126-4fb0-94a8-da2637edd4e0"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="5ef77193-5cd0-49e4-8724-204d28ea325e" name="Parser" visibility="package"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b71fe5f8-70c8-4716-bc96-1e23d0d281ab" name="AbstractMap&lt;Attribute, Object>">
            <templateBinding xmi:id="4f0840ee-ec46-4a30-9ea2-808a704417b1" signature="e1c0c6b1-bc5b-4c0b-a842-1dee570bfb72">
              <parameterSubstitution xmi:id="9ce2c3b4-fb64-4a95-98cc-962866dc0fc5" formal="5678fbfd-3b73-4f2d-9754-00fc4fbc970f" actual="86e8328e-c93b-4072-9bcc-f24cd737649f"/>
              <parameterSubstitution xmi:id="d0759fdb-cb88-4002-a239-76a457237408" formal="7b16f894-dca4-4787-b2f9-4a01749f8a12" actual="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a75322e7-6799-4367-ad45-5d28bcdc4f7a" name="CharacterBreakData" visibility="package" isLeaf="true"/>
          <packagedElement xmi:type="uml:Class" xmi:id="61401072-ad4f-4546-9e3c-8e5d2f20a933" name="ParseException">
            <ownedComment xmi:id="bae1c04a-697b-40a4-b55b-097765a7055d" body="Signals that an error has been reached unexpectedly&#xA;while parsing.&#xA;@see java.lang.Exception&#xA;@see java.text.Format&#xA;@see java.text.FieldPosition&#xA;@version     1.16, 12/19/03&#xA;@author      Mark Davis&#xA;" annotatedElement="61401072-ad4f-4546-9e3c-8e5d2f20a933"/>
            <generalization xmi:id="a4c13c8c-6372-4e0f-9a11-21688d8b398c" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ec68ff59-5178-4050-8ca4-5c35e7ee384c" name="AttributedString">
            <ownedComment xmi:id="04b2ef1c-88a3-4924-a519-f9eb6ddf4f07" body="An AttributedString holds text and related attribute information. It&#xA;may be used as the actual data storage in some cases where a text&#xA;reader wants to access attributed text through the AttributedCharacterIterator&#xA;interface.&#xA;&#xA;@see AttributedCharacterIterator&#xA;@see Annotation&#xA;@since 1.2&#xA;" annotatedElement="ec68ff59-5178-4050-8ca4-5c35e7ee384c"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="7c347c4b-b8ff-421f-ab64-106e8ad80c5c" name="AttributedStringIterator" visibility="private" clientDependency="e8fe85b2-b859-4831-a858-5c15aa0d38fa" isLeaf="true">
              <interfaceRealization xmi:id="e8fe85b2-b859-4831-a858-5c15aa0d38fa" name="" supplier="5ba316b1-ef90-436f-aa60-bf5bdaa9ad19" client="7c347c4b-b8ff-421f-ab64-106e8ad80c5c" contract="5ba316b1-ef90-436f-aa60-bf5bdaa9ad19"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8dd70d68-0449-46d5-b86f-542c85d0c933" name="AttributeMap" visibility="private" isLeaf="true">
              <generalization xmi:id="330a0dfb-9007-4641-ba4d-e29b88368a62" isSubstitutable="true" general="b71fe5f8-70c8-4716-bc96-1e23d0d281ab"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6c0fcce2-fb84-4d93-a225-eb172c1b6966" name="ParsePosition">
            <ownedComment xmi:id="968ec881-7c33-48d3-a4c0-f07f57dc60c7" body="&lt;code>ParsePosition&lt;/code> is a simple class used by &lt;code>Format&lt;/code>&#xA;and its subclasses to keep track of the current position during parsing.&#xA;The &lt;code>parseObject&lt;/code> method in the various &lt;code>Format&lt;/code>&#xA;classes requires a &lt;code>ParsePosition&lt;/code> object as an argument.&#xA;&#xA;&lt;p>&#xA;By design, as you parse through a string with different formats,&#xA;you can use the same &lt;code>ParsePosition&lt;/code>, since the index parameter&#xA;records the current position.&#xA;&#xA;@version     1.19 12/19/03&#xA;@author      Mark Davis&#xA;@see         java.text.Format&#xA;" annotatedElement="6c0fcce2-fb84-4d93-a225-eb172c1b6966"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="149b4461-e1dd-40f4-a45d-330bdda33096" name="DateFormat" isAbstract="true">
            <ownedComment xmi:id="630652ae-2ae1-41f3-91df-d94002983b57" body="DateFormat is an abstract class for date/time formatting subclasses which&#xA;formats and parses dates or time in a language-independent manner.&#xA;The date/time formatting subclass, such as SimpleDateFormat, allows for&#xA;formatting (i.e., date -> text), parsing (text -> date), and&#xA;normalization.  The date is represented as a &lt;code>Date&lt;/code> object or&#xA;as the milliseconds since January 1, 1970, 00:00:00 GMT.&#xA;&#xA;&lt;p>DateFormat provides many class methods for obtaining default date/time&#xA;formatters based on the default or a given locale and a number of formatting&#xA;styles. The formatting styles include FULL, LONG, MEDIUM, and SHORT. More&#xA;detail and examples of using these styles are provided in the method&#xA;descriptions.&#xA;&#xA;&lt;p>DateFormat helps you to format and parse dates for any locale.&#xA;Your code can be completely independent of the locale conventions for&#xA;months, days of the week, or even the calendar format: lunar vs. solar.&#xA;&#xA;&lt;p>To format a date for the current Locale, use one of the&#xA;static factory methods:&#xA;&lt;pre>&#xA;myString = DateFormat.getDateInstance().format(myDate);&#xA;&lt;/pre>&#xA;&lt;p>If you are formatting multiple dates, it is&#xA;more efficient to get the format and use it multiple times so that&#xA;the system doesn't have to fetch the information about the local&#xA;language and country conventions multiple times.&#xA;&lt;pre>&#xA;DateFormat df = DateFormat.getDateInstance();&#xA;for (int i = 0; i &lt; myDate.length; ++i) {&#xA;output.println(df.format(myDate[i]) + &quot;; &quot;);&#xA;}&#xA;&lt;/pre>&#xA;&lt;p>To format a date for a different Locale, specify it in the&#xA;call to getDateInstance().&#xA;&lt;pre>&#xA;DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);&#xA;&lt;/pre>&#xA;&lt;p>You can use a DateFormat to parse also.&#xA;&lt;pre>&#xA;myDate = df.parse(myString);&#xA;&lt;/pre>&#xA;&lt;p>Use getDateInstance to get the normal date format for that country.&#xA;There are other static factory methods available.&#xA;Use getTimeInstance to get the time format for that country.&#xA;Use getDateTimeInstance to get a date and time format. You can pass in&#xA;different options to these factory methods to control the length of the&#xA;result; from SHORT to MEDIUM to LONG to FULL. The exact result depends&#xA;on the locale, but generally:&#xA;&lt;ul>&lt;li>SHORT is completely numeric, such as 12.13.52 or 3:30pm&#xA;&lt;li>MEDIUM is longer, such as Jan 12, 1952&#xA;&lt;li>LONG is longer, such as January 12, 1952 or 3:30:32pm&#xA;&lt;li>FULL is pretty completely specified, such as&#xA;Tuesday, April 12, 1952 AD or 3:30:42pm PST.&#xA;&lt;/ul>&#xA;&#xA;&lt;p>You can also set the time zone on the format if you wish.&#xA;If you want even more control over the format or parsing,&#xA;(or want to give your users more control),&#xA;you can try casting the DateFormat you get from the factory methods&#xA;to a SimpleDateFormat. This will work for the majority&#xA;of countries; just remember to put it in a try block in case you&#xA;encounter an unusual one.&#xA;&#xA;&lt;p>You can also use forms of the parse and format methods with&#xA;ParsePosition and FieldPosition to&#xA;allow you to&#xA;&lt;ul>&lt;li>progressively parse through pieces of a string.&#xA;&lt;li>align any particular field, or find out where it is for selection&#xA;on the screen.&#xA;&lt;/ul>&#xA;&#xA;&lt;h4>&lt;a name=&quot;synchronization&quot;>Synchronization&lt;/a>&lt;/h4>&#xA;&#xA;&lt;p>&#xA;Date formats are not synchronized.&#xA;It is recommended to create separate format instances for each thread.&#xA;If multiple threads access a format concurrently, it must be synchronized&#xA;externally.&#xA;&#xA;@see          Format&#xA;@see          NumberFormat&#xA;@see          SimpleDateFormat&#xA;@see          java.util.Calendar&#xA;@see          java.util.GregorianCalendar&#xA;@see          java.util.TimeZone&#xA;@version      1.51 04/12/04&#xA;@author       Mark Davis, Chen-Lieh Huang, Alan Liu&#xA;" annotatedElement="149b4461-e1dd-40f4-a45d-330bdda33096"/>
            <generalization xmi:id="4b535b4e-e58f-4a56-9e98-2707de6b1545" isSubstitutable="true" general="734dcbb9-784d-47a7-b1fd-58b7a751990b"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ea5ea64b-7dbb-4443-9659-f190aeb76f89" name="Field">
              <ownedComment xmi:id="a79f631b-e708-461f-9b0a-4ce4b1b7e6e4" body="Defines constants that are used as attribute keys in the&#xA;&lt;code>AttributedCharacterIterator&lt;/code> returned&#xA;from &lt;code>DateFormat.formatToCharacterIterator&lt;/code> and as&#xA;field identifiers in &lt;code>FieldPosition&lt;/code>.&#xA;&lt;p>&#xA;The class also provides two methods to map&#xA;between its constants and the corresponding Calendar constants.&#xA;&#xA;@since 1.4&#xA;@see java.util.Calendar&#xA;" annotatedElement="ea5ea64b-7dbb-4443-9659-f190aeb76f89"/>
              <generalization xmi:id="5785011d-07cf-4789-b121-9ddd60f05fd8" isSubstitutable="true" general="3b27ecf5-3cb0-44ae-9fe0-5394c859e489"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8d3d8cb7-f026-40f7-85e5-5b7f11440e7c" name="RuleBasedBreakIterator" visibility="package">
            <ownedComment xmi:id="adc0cec3-0d28-43c4-a42b-26cee3652e3c" body="&lt;p>A subclass of BreakIterator whose behavior is specified using a list of rules.&lt;/p>&#xA;&#xA;&lt;p>There are two kinds of rules, which are separated by semicolons: &lt;i>substitutions&lt;/i>&#xA;and &lt;i>regular expressions.&lt;/i>&lt;/p>&#xA;&#xA;&lt;p>A substitution rule defines a name that can be used in place of an expression. It&#xA;consists of a name, which is a string of characters contained in angle brackets, an equals&#xA;sign, and an expression. (There can be no whitespace on either side of the equals sign.)&#xA;To keep its syntactic meaning intact, the expression must be enclosed in parentheses or&#xA;square brackets. A substitution is visible after its definition, and is filled in using&#xA;simple textual substitution. Substitution definitions can contain other substitutions, as&#xA;long as those substitutions have been defined first. Substitutions are generally used to&#xA;make the regular expressions (which can get quite complex) shorted and easier to read.&#xA;They typically define either character categories or commonly-used subexpressions.&lt;/p>&#xA;&#xA;&lt;p>There is one special substitution.&amp;nbsp; If the description defines a substitution&#xA;called &quot;&lt;ignore>&quot;, the expression must be a [] expression, and the&#xA;expression defines a set of characters (the &quot;&lt;em>ignore characters&lt;/em>&quot;) that&#xA;will be transparent to the BreakIterator.&amp;nbsp; A sequence of characters will break the&#xA;same way it would if any ignore characters it contains are taken out.&amp;nbsp; Break&#xA;positions never occur befoer ignore characters.&lt;/p>&#xA;&#xA;&lt;p>A regular expression uses a subset of the normal Unix regular-expression syntax, and&#xA;defines a sequence of characters to be kept together. With one significant exception, the&#xA;iterator uses a longest-possible-match algorithm when matching text to regular&#xA;expressions. The iterator also treats descriptions containing multiple regular expressions&#xA;as if they were ORed together (i.e., as if they were separated by |).&lt;/p>&#xA;&#xA;&lt;p>The special characters recognized by the regular-expression parser are as follows:&lt;/p>&#xA;&#xA;&lt;blockquote>&#xA;&lt;table border=&quot;1&quot; width=&quot;100%&quot;>&#xA;&lt;tr>&#xA;&lt;td width=&quot;6%&quot;>*&lt;/td>&#xA;&lt;td width=&quot;94%&quot;>Specifies that the expression preceding the asterisk may occur any number&#xA;of times (including not at all).&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td width=&quot;6%&quot;>{}&lt;/td>&#xA;&lt;td width=&quot;94%&quot;>Encloses a sequence of characters that is optional.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td width=&quot;6%&quot;>()&lt;/td>&#xA;&lt;td width=&quot;94%&quot;>Encloses a sequence of characters.&amp;nbsp; If followed by *, the sequence&#xA;repeats.&amp;nbsp; Otherwise, the parentheses are just a grouping device and a way to delimit&#xA;the ends of expressions containing |.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td width=&quot;6%&quot;>|&lt;/td>&#xA;&lt;td width=&quot;94%&quot;>Separates two alternative sequences of characters.&amp;nbsp; Either one&#xA;sequence or the other, but not both, matches this expression.&amp;nbsp; The | character can&#xA;only occur inside ().&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td width=&quot;6%&quot;>.&lt;/td>&#xA;&lt;td width=&quot;94%&quot;>Matches any character.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td width=&quot;6%&quot;>*?&lt;/td>&#xA;&lt;td width=&quot;94%&quot;>Specifies a non-greedy asterisk.&amp;nbsp; *? works the same way as *, except&#xA;when there is overlap between the last group of characters in the expression preceding the&#xA;and the first group of characters following the *.&amp;nbsp; When there is this kind of&#xA;overlap, * will match the longest sequence of characters that match the expression before&#xA;the *, and *? will match the shortest sequence of characters matching the expression&#xA;before the *?.&amp;nbsp; For example, if you have &quot;xxyxyyyxyxyxxyxyxyy&quot; in the text,&#xA;&quot;x[xy]*x&quot; will match through to the last x (i.e., &quot;&lt;strong>xxyxyyyxyxyxxyxyx&lt;/strong>yy&quot;,&#xA;but &quot;x[xy]*?x&quot; will only match the first two xes (&quot;&lt;strong>xx&lt;/strong>yxyyyxyxyxxyxyxyy&quot;).&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td width=&quot;6%&quot;>[]&lt;/td>&#xA;&lt;td width=&quot;94%&quot;>Specifies a group of alternative characters.&amp;nbsp; A [] expression will&#xA;match any single character that is specified in the [] expression.&amp;nbsp; For more on the&#xA;syntax of [] expressions, see below.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td width=&quot;6%&quot;>/&lt;/td>&#xA;&lt;td width=&quot;94%&quot;>Specifies where the break position should go if text matches this&#xA;expression.&amp;nbsp; (e.g., &quot;[a-z]&amp;#42;/[:Zs:]*[1-0]&quot; will match if the iterator sees a run&#xA;of letters, followed by a run of whitespace, followed by a digit, but the break position&#xA;will actually go before the whitespace).&amp;nbsp; Expressions that don't contain / put the&#xA;break position at the end of the matching text.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td width=&quot;6%&quot;>\&lt;/td>&#xA;&lt;td width=&quot;94%&quot;>Escape character.&amp;nbsp; The \ itself is ignored, but causes the next&#xA;character to be treated as literal character.&amp;nbsp; This has no effect for many&#xA;characters, but for the characters listed above, this deprives them of their special&#xA;meaning.&amp;nbsp; (There are no special escape sequences for Unicode characters, or tabs and&#xA;newlines; these are all handled by a higher-level protocol.&amp;nbsp; In a Java string,&#xA;&quot;\n&quot; will be converted to a literal newline character by the time the&#xA;regular-expression parser sees it.&amp;nbsp; Of course, this means that \ sequences that are&#xA;visible to the regexp parser must be written as \\ when inside a Java string.)&amp;nbsp; All&#xA;characters in the ASCII range except for letters, digits, and control characters are&#xA;reserved characters to the parser and must be preceded by \ even if they currently don't&#xA;mean anything.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td width=&quot;6%&quot;>!&lt;/td>&#xA;&lt;td width=&quot;94%&quot;>If ! appears at the beginning of a regular expression, it tells the regexp&#xA;parser that this expression specifies the backwards-iteration behavior of the iterator,&#xA;and not its normal iteration behavior.&amp;nbsp; This is generally only used in situations&#xA;where the automatically-generated backwards-iteration brhavior doesn't produce&#xA;satisfactory results and must be supplemented with extra client-specified rules.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td width=&quot;6%&quot;>&lt;em>(all others)&lt;/em>&lt;/td>&#xA;&lt;td width=&quot;94%&quot;>All other characters are treated as literal characters, which must match&#xA;the corresponding character(s) in the text exactly.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>Within a [] expression, a number of other special characters can be used to specify&#xA;groups of characters:&lt;/p>&#xA;&#xA;&lt;blockquote>&#xA;&lt;table border=&quot;1&quot; width=&quot;100%&quot;>&#xA;&lt;tr>&#xA;&lt;td width=&quot;6%&quot;>-&lt;/td>&#xA;&lt;td width=&quot;94%&quot;>Specifies a range of matching characters.&amp;nbsp; For example&#xA;&quot;[a-p]&quot; matches all lowercase Latin letters from a to p (inclusive).&amp;nbsp; The -&#xA;sign specifies ranges of continuous Unicode numeric values, not ranges of characters in a&#xA;language's alphabetical order: &quot;[a-z]&quot; doesn't include capital letters, nor does&#xA;it include accented letters such as a-umlaut.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td width=&quot;6%&quot;>::&lt;/td>&#xA;&lt;td width=&quot;94%&quot;>A pair of colons containing a one- or two-letter code matches all&#xA;characters in the corresponding Unicode category.&amp;nbsp; The two-letter codes are the same&#xA;as the two-letter codes in the Unicode database (for example, &quot;[:Sc::Sm:]&quot;&#xA;matches all currency symbols and all math symbols).&amp;nbsp; Specifying a one-letter code is&#xA;the same as specifying all two-letter codes that begin with that letter (for example,&#xA;&quot;[:L:]&quot; matches all letters, and is equivalent to&#xA;&quot;[:Lu::Ll::Lo::Lm::Lt:]&quot;).&amp;nbsp; Anything other than a valid two-letter Unicode&#xA;category code or a single letter that begins a Unicode category code is illegal within&#xA;colons.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td width=&quot;6%&quot;>[]&lt;/td>&#xA;&lt;td width=&quot;94%&quot;>[] expressions can nest.&amp;nbsp; This has no effect, except when used in&#xA;conjunction with the ^ token.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td width=&quot;6%&quot;>^&lt;/td>&#xA;&lt;td width=&quot;94%&quot;>Excludes the character (or the characters in the [] expression) following&#xA;it from the group of characters.&amp;nbsp; For example, &quot;[a-z^p]&quot; matches all Latin&#xA;lowercase letters except p.&amp;nbsp; &quot;[:L:^[&amp;#92;u4e00-&amp;#92;u9fff]]&quot; matches all letters&#xA;except the Han ideographs.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td width=&quot;6%&quot;>&lt;em>(all others)&lt;/em>&lt;/td>&#xA;&lt;td width=&quot;94%&quot;>All other characters are treated as literal characters.&amp;nbsp; (For&#xA;example, &quot;[aeiou]&quot; specifies just the letters a, e, i, o, and u.)&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>For a more complete explanation, see &lt;a&#xA;href=&quot;http://www.ibm.com/java/education/boundaries/boundaries.html&quot;>http://www.ibm.com/java/education/boundaries/boundaries.html&lt;/a>.&#xA;&amp;nbsp; For examples, see the resource data (which is annotated).&lt;/p>&#xA;&#xA;@author Richard Gillam&#xA;@version $RCSFile$ $Revision: 1.1 $ $Date: 1998/11/05 19:32:04 $&#xA;" annotatedElement="8d3d8cb7-f026-40f7-85e5-5b7f11440e7c"/>
            <generalization xmi:id="8c8ca3a4-77d6-469b-bf5e-832eac028ec5" isSubstitutable="true" general="98377b2e-add6-4e0a-bda1-a83c326dc9ba"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="0518cc66-5e03-4c20-83ba-657a49239b4a" name="SafeCharIterator" visibility="private" clientDependency="4ad294c9-2801-4247-a29a-fbfef952b48e e6f6f71b-1bfe-4a5c-b15f-d225fb16fca9" isLeaf="true">
              <interfaceRealization xmi:id="4ad294c9-2801-4247-a29a-fbfef952b48e" name="" supplier="b475bdb8-5ca3-494d-9082-5f62a1aa4a16" client="0518cc66-5e03-4c20-83ba-657a49239b4a" contract="b475bdb8-5ca3-494d-9082-5f62a1aa4a16"/>
              <interfaceRealization xmi:id="e6f6f71b-1bfe-4a5c-b15f-d225fb16fca9" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="0518cc66-5e03-4c20-83ba-657a49239b4a" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5b02f44f-239f-4011-b375-ffc799d27f30" name="RuleBasedCollator">
            <ownedComment xmi:id="d0cda1be-776d-4c73-bb00-68c6976c4248" body="The &lt;code>RuleBasedCollator&lt;/code> class is a concrete subclass of&#xA;&lt;code>Collator&lt;/code> that provides a simple, data-driven, table&#xA;collator.  With this class you can create a customized table-based&#xA;&lt;code>Collator&lt;/code>.  &lt;code>RuleBasedCollator&lt;/code> maps&#xA;characters to sort keys.&#xA;&#xA;&lt;p>&#xA;&lt;code>RuleBasedCollator&lt;/code> has the following restrictions&#xA;for efficiency (other subclasses may be used for more complex languages) :&#xA;&lt;ol>&#xA;&lt;li>If a special collation rule controlled by a &lt;modifier> is&#xA;specified it applies to the whole collator object.&#xA;&lt;li>All non-mentioned characters are at the end of the&#xA;collation order.&#xA;&lt;/ol>&#xA;&#xA;&lt;p>&#xA;The collation table is composed of a list of collation rules, where each&#xA;rule is of one of three forms:&#xA;&lt;pre>&#xA;&lt;modifier>&#xA;&lt;relation> &lt;text-argument>&#xA;&lt;reset> &lt;text-argument>&#xA;&lt;/pre>&#xA;The definitions of the rule elements is as follows:&#xA;&lt;UL Type=disc>&#xA;&lt;LI>&lt;strong>Text-Argument&lt;/strong>: A text-argument is any sequence of&#xA;characters, excluding special characters (that is, common&#xA;whitespace characters [0009-000D, 0020] and rule syntax characters&#xA;[0021-002F, 003A-0040, 005B-0060, 007B-007E]). If those&#xA;characters are desired, you can put them in single quotes&#xA;(e.g. ampersand => '&amp;'). Note that unquoted white space characters&#xA;are ignored; e.g. &lt;code>b c&lt;/code> is treated as &lt;code>bc&lt;/code>.&#xA;&lt;LI>&lt;strong>Modifier&lt;/strong>: There are currently two modifiers that&#xA;turn on special collation rules.&#xA;&lt;UL Type=square>&#xA;&lt;LI>'@' : Turns on backwards sorting of accents (secondary&#xA;differences), as in French.&#xA;&lt;LI>'!' : Turns on Thai/Lao vowel-consonant swapping.  If this&#xA;rule is in force when a Thai vowel of the range&#xA;&amp;#92;U0E40-&amp;#92;U0E44 precedes a Thai consonant of the range&#xA;&amp;#92;U0E01-&amp;#92;U0E2E OR a Lao vowel of the range &amp;#92;U0EC0-&amp;#92;U0EC4&#xA;precedes a Lao consonant of the range &amp;#92;U0E81-&amp;#92;U0EAE then&#xA;the vowel is placed after the consonant for collation&#xA;purposes.&#xA;&lt;/UL>&#xA;&lt;p>'@' : Indicates that accents are sorted backwards, as in French.&#xA;&lt;LI>&lt;strong>Relation&lt;/strong>: The relations are the following:&#xA;&lt;UL Type=square>&#xA;&lt;LI>'&lt;' : Greater, as a letter difference (primary)&#xA;&lt;LI>';' : Greater, as an accent difference (secondary)&#xA;&lt;LI>',' : Greater, as a case difference (tertiary)&#xA;&lt;LI>'=' : Equal&#xA;&lt;/UL>&#xA;&lt;LI>&lt;strong>Reset&lt;/strong>: There is a single reset&#xA;which is used primarily for contractions and expansions, but which&#xA;can also be used to add a modification at the end of a set of rules.&#xA;&lt;p>'&amp;' : Indicates that the next rule follows the position to where&#xA;the reset text-argument would be sorted.&#xA;&lt;/UL>&#xA;&#xA;&lt;p>&#xA;This sounds more complicated than it is in practice. For example, the&#xA;following are equivalent ways of expressing the same thing:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;a &lt; b &lt; c&#xA;a &lt; b &amp; b &lt; c&#xA;a &lt; c &amp; a &lt; b&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;Notice that the order is important, as the subsequent item goes immediately&#xA;after the text-argument. The following are not equivalent:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;a &lt; b &amp; a &lt; c&#xA;a &lt; c &amp; a &lt; b&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;Either the text-argument must already be present in the sequence, or some&#xA;initial substring of the text-argument must be present. (e.g. &quot;a &lt; b &amp; ae &lt;&#xA;e&quot; is valid since &quot;a&quot; is present in the sequence before &quot;ae&quot; is reset). In&#xA;this latter case, &quot;ae&quot; is not entered and treated as a single character;&#xA;instead, &quot;e&quot; is sorted as if it were expanded to two characters: &quot;a&quot;&#xA;followed by an &quot;e&quot;. This difference appears in natural languages: in&#xA;traditional Spanish &quot;ch&quot; is treated as though it contracts to a single&#xA;character (expressed as &quot;c &lt; ch &lt; d&quot;), while in traditional German&#xA;a-umlaut is treated as though it expanded to two characters&#xA;(expressed as &quot;a,A &lt; b,B ... &amp;ae;&amp;#92;u00e3&amp;AE;&amp;#92;u00c3&quot;).&#xA;[&amp;#92;u00e3 and &amp;#92;u00c3 are, of course, the escape sequences for a-umlaut.]&#xA;&lt;p>&#xA;&lt;strong>Ignorable Characters&lt;/strong>&#xA;&lt;p>&#xA;For ignorable characters, the first rule must start with a relation (the&#xA;examples we have used above are really fragments; &quot;a &lt; b&quot; really should be&#xA;&quot;&lt; a &lt; b&quot;). If, however, the first relation is not &quot;&lt;&quot;, then all the all&#xA;text-arguments up to the first &quot;&lt;&quot; are ignorable. For example, &quot;, - &lt; a &lt; b&quot;&#xA;makes &quot;-&quot; an ignorable character, as we saw earlier in the word&#xA;&quot;black-birds&quot;. In the samples for different languages, you see that most&#xA;accents are ignorable.&#xA;&#xA;&lt;p>&lt;strong>Normalization and Accents&lt;/strong>&#xA;&lt;p>&#xA;&lt;code>RuleBasedCollator&lt;/code> automatically processes its rule table to&#xA;include both pre-composed and combining-character versions of&#xA;accented characters.  Even if the provided rule string contains only&#xA;base characters and separate combining accent characters, the pre-composed&#xA;accented characters matching all canonical combinations of characters from&#xA;the rule string will be entered in the table.&#xA;&lt;p>&#xA;This allows you to use a RuleBasedCollator to compare accented strings&#xA;even when the collator is set to NO_DECOMPOSITION.  There are two caveats,&#xA;however.  First, if the strings to be collated contain combining&#xA;sequences that may not be in canonical order, you should set the collator to&#xA;CANONICAL_DECOMPOSITION or FULL_DECOMPOSITION to enable sorting of&#xA;combining sequences.  Second, if the strings contain characters with&#xA;compatibility decompositions (such as full-width and half-width forms),&#xA;you must use FULL_DECOMPOSITION, since the rule tables only include&#xA;canonical mappings.&#xA;&#xA;&lt;p>&lt;strong>Errors&lt;/strong>&#xA;&lt;p>&#xA;The following are errors:&#xA;&lt;UL Type=disc>&#xA;&lt;LI>A text-argument contains unquoted punctuation symbols&#xA;(e.g. &quot;a &lt; b-c &lt; d&quot;).&#xA;&lt;LI>A relation or reset character not followed by a text-argument&#xA;(e.g. &quot;a &lt; ,b&quot;).&#xA;&lt;LI>A reset where the text-argument (or an initial substring of the&#xA;text-argument) is not already in the sequence.&#xA;(e.g. &quot;a &lt; b &amp; e &lt; f&quot;)&#xA;&lt;/UL>&#xA;If you produce one of these errors, a &lt;code>RuleBasedCollator&lt;/code> throws&#xA;a &lt;code>ParseException&lt;/code>.&#xA;&#xA;&lt;p>&lt;strong>Examples&lt;/strong>&#xA;&lt;p>Simple:     &quot;&lt; a &lt; b &lt; c &lt; d&quot;&#xA;&lt;p>Norwegian:  &quot;&lt; a,A&lt; b,B&lt; c,C&lt; d,D&lt; e,E&lt; f,F&lt; g,G&lt; h,H&lt; i,I&lt; j,J&#xA;&lt; k,K&lt; l,L&lt; m,M&lt; n,N&lt; o,O&lt; p,P&lt; q,Q&lt; r,R&lt; s,S&lt; t,T&#xA;&lt; u,U&lt; v,V&lt; w,W&lt; x,X&lt; y,Y&lt; z,Z&#xA;&lt; &amp;#92;u00E5=a&amp;#92;u030A,&amp;#92;u00C5=A&amp;#92;u030A&#xA;;aa,AA&lt; &amp;#92;u00E6,&amp;#92;u00C6&lt; &amp;#92;u00F8,&amp;#92;u00D8&quot;&#xA;&#xA;&lt;p>&#xA;Normally, to create a rule-based Collator object, you will use&#xA;&lt;code>Collator&lt;/code>'s factory method &lt;code>getInstance&lt;/code>.&#xA;However, to create a rule-based Collator object with specialized&#xA;rules tailored to your needs, you construct the &lt;code>RuleBasedCollator&lt;/code>&#xA;with the rules contained in a &lt;code>String&lt;/code> object. For example:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;String Simple = &quot;&lt; a&lt; b&lt; c&lt; d&quot;;&#xA;RuleBasedCollator mySimple = new RuleBasedCollator(Simple);&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;Or:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;String Norwegian = &quot;&lt; a,A&lt; b,B&lt; c,C&lt; d,D&lt; e,E&lt; f,F&lt; g,G&lt; h,H&lt; i,I&lt; j,J&quot; +&#xA;&quot;&lt; k,K&lt; l,L&lt; m,M&lt; n,N&lt; o,O&lt; p,P&lt; q,Q&lt; r,R&lt; s,S&lt; t,T&quot; +&#xA;&quot;&lt; u,U&lt; v,V&lt; w,W&lt; x,X&lt; y,Y&lt; z,Z&quot; +&#xA;&quot;&lt; &amp;#92;u00E5=a&amp;#92;u030A,&amp;#92;u00C5=A&amp;#92;u030A&quot; +&#xA;&quot;;aa,AA&lt; &amp;#92;u00E6,&amp;#92;u00C6&lt; &amp;#92;u00F8,&amp;#92;u00D8&quot;;&#xA;RuleBasedCollator myNorwegian = new RuleBasedCollator(Norwegian);&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;Combining &lt;code>Collator&lt;/code>s is as simple as concatenating strings.&#xA;Here's an example that combines two &lt;code>Collator&lt;/code>s from two&#xA;different locales:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;Create an en_US Collator object&#xA;RuleBasedCollator en_USCollator = (RuleBasedCollator)&#xA;Collator.getInstance(new Locale(&quot;en&quot;, &quot;US&quot;, &quot;&quot;));&#xA;Create a da_DK Collator object&#xA;RuleBasedCollator da_DKCollator = (RuleBasedCollator)&#xA;Collator.getInstance(new Locale(&quot;da&quot;, &quot;DK&quot;, &quot;&quot;));&#xA;Combine the two&#xA;First, get the collation rules from en_USCollator&#xA;String en_USRules = en_USCollator.getRules();&#xA;Second, get the collation rules from da_DKCollator&#xA;String da_DKRules = da_DKCollator.getRules();&#xA;RuleBasedCollator newCollator =&#xA;new RuleBasedCollator(en_USRules + da_DKRules);&#xA;newCollator has the combined rules&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;Another more interesting example would be to make changes on an existing&#xA;table to create a new &lt;code>Collator&lt;/code> object.  For example, add&#xA;&quot;&amp;C&lt; ch, cH, Ch, CH&quot; to the &lt;code>en_USCollator&lt;/code> object to create&#xA;your own:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;Create a new Collator object with additional rules&#xA;String addRules = &quot;&amp;C&lt; ch, cH, Ch, CH&quot;;&#xA;RuleBasedCollator myCollator =&#xA;new RuleBasedCollator(en_USCollator + addRules);&#xA;myCollator contains the new rules&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;The following example demonstrates how to change the order of&#xA;non-spacing accents,&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;old rule&#xA;String oldRules = &quot;=&amp;#92;u0301;&amp;#92;u0300;&amp;#92;u0302;&amp;#92;u0308&quot;    // main accents&#xA;+ &quot;;&amp;#92;u0327;&amp;#92;u0303;&amp;#92;u0304;&amp;#92;u0305&quot;    // main accents&#xA;+ &quot;;&amp;#92;u0306;&amp;#92;u0307;&amp;#92;u0309;&amp;#92;u030A&quot;    // main accents&#xA;+ &quot;;&amp;#92;u030B;&amp;#92;u030C;&amp;#92;u030D;&amp;#92;u030E&quot;    // main accents&#xA;+ &quot;;&amp;#92;u030F;&amp;#92;u0310;&amp;#92;u0311;&amp;#92;u0312&quot;    // main accents&#xA;+ &quot;&lt; a , A ; ae, AE ; &amp;#92;u00e6 , &amp;#92;u00c6&quot;&#xA;+ &quot;&lt; b , B &lt; c, C &lt; e, E &amp; C &lt; d, D&quot;;&#xA;change the order of accent characters&#xA;String addOn = &quot;&amp; &amp;#92;u0300 ; &amp;#92;u0308 ; &amp;#92;u0302&quot;;&#xA;RuleBasedCollator myCollator = new RuleBasedCollator(oldRules + addOn);&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;The last example shows how to put new primary ordering in before the&#xA;default setting. For example, in Japanese &lt;code>Collator&lt;/code>, you&#xA;can either sort English characters before or after Japanese characters,&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;get en_US Collator rules&#xA;RuleBasedCollator en_USCollator = (RuleBasedCollator)Collator.getInstance(Locale.US);&#xA;add a few Japanese character to sort before English characters&#xA;suppose the last character before the first base letter 'a' in&#xA;the English collation rule is &amp;#92;u2212&#xA;String jaString = &quot;&amp; &amp;#92;u2212 &lt; &amp;#92;u3041, &amp;#92;u3042 &lt; &amp;#92;u3043, &amp;#92;u3044&quot;;&#xA;RuleBasedCollator myJapaneseCollator = new&#xA;RuleBasedCollator(en_USCollator.getRules() + jaString);&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;@see        Collator&#xA;@see        CollationElementIterator&#xA;@version    1.25 07/24/98&#xA;@author     Helena Shih, Laura Werner, Richard Gillam&#xA;" annotatedElement="5b02f44f-239f-4011-b375-ffc799d27f30"/>
            <generalization xmi:id="69910b00-9f81-4f50-8e80-64077f8de460" isSubstitutable="true" general="5d89cd05-87c7-4ef5-91b5-1b7f8d96ac75"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5b6b3d63-43b8-4ae0-be74-1e78c45f0542" name="CollationKey" clientDependency="ee9eba48-19c7-41ef-a7ed-498caa16f903" isLeaf="true">
            <ownedComment xmi:id="5428bba4-1e67-4184-b74d-1d4274e23480" body="A &lt;code>CollationKey&lt;/code> represents a &lt;code>String&lt;/code> under the&#xA;rules of a specific &lt;code>Collator&lt;/code> object. Comparing two&#xA;&lt;code>CollationKey&lt;/code>s returns the relative order of the&#xA;&lt;code>String&lt;/code>s they represent. Using &lt;code>CollationKey&lt;/code>s&#xA;to compare &lt;code>String&lt;/code>s is generally faster than using&#xA;&lt;code>Collator.compare&lt;/code>. Thus, when the &lt;code>String&lt;/code>s&#xA;must be compared multiple times, for example when sorting a list&#xA;of &lt;code>String&lt;/code>s. It's more efficient to use &lt;code>CollationKey&lt;/code>s.&#xA;&#xA;&lt;p>&#xA;You can not create &lt;code>CollationKey&lt;/code>s directly. Rather,&#xA;generate them by calling &lt;code>Collator.getCollationKey&lt;/code>.&#xA;You can only compare &lt;code>CollationKey&lt;/code>s generated from&#xA;the same &lt;code>Collator&lt;/code> object.&#xA;&#xA;&lt;p>&#xA;Generating a &lt;code>CollationKey&lt;/code> for a &lt;code>String&lt;/code>&#xA;involves examining the entire &lt;code>String&lt;/code>&#xA;and converting it to series of bits that can be compared bitwise. This&#xA;allows fast comparisons once the keys are generated. The cost of generating&#xA;keys is recouped in faster comparisons when &lt;code>String&lt;/code>s need&#xA;to be compared many times. On the other hand, the result of a comparison&#xA;is often determined by the first couple of characters of each &lt;code>String&lt;/code>.&#xA;&lt;code>Collator.compare&lt;/code> examines only as many characters as it needs which&#xA;allows it to be faster when doing single comparisons.&#xA;&lt;p>&#xA;The following example shows how &lt;code>CollationKey&lt;/code>s might be used&#xA;to sort a list of &lt;code>String&lt;/code>s.&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;Create an array of CollationKeys for the Strings to be sorted.&#xA;Collator myCollator = Collator.getInstance();&#xA;CollationKey[] keys = new CollationKey[3];&#xA;keys[0] = myCollator.getCollationKey(&quot;Tom&quot;);&#xA;keys[1] = myCollator.getCollationKey(&quot;Dick&quot;);&#xA;keys[2] = myCollator.getCollationKey(&quot;Harry&quot;);&#xA;sort( keys );&#xA;&lt;br>&#xA;...&#xA;&lt;br>&#xA;Inside body of sort routine, compare keys this way&#xA;if( keys[i].compareTo( keys[j] ) > 0 )&#xA;swap keys[i] and keys[j]&#xA;&lt;br>&#xA;...&#xA;&lt;br>&#xA;Finally, when we've returned from sort.&#xA;System.out.println( keys[0].getSourceString() );&#xA;System.out.println( keys[1].getSourceString() );&#xA;System.out.println( keys[2].getSourceString() );&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;@see          Collator&#xA;@see          RuleBasedCollator&#xA;@version      1.18, 05/05/04&#xA;@author       Helena Shih&#xA;" annotatedElement="5b6b3d63-43b8-4ae0-be74-1e78c45f0542"/>
            <interfaceRealization xmi:id="ee9eba48-19c7-41ef-a7ed-498caa16f903" name="" supplier="ceffe59c-3a40-48a9-bef8-aa4ad7d7a8d5" client="5b6b3d63-43b8-4ae0-be74-1e78c45f0542" contract="ceffe59c-3a40-48a9-bef8-aa4ad7d7a8d5"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="797c288e-3773-4d08-ad01-f55e810b3736" name="EntryPair" visibility="package" isLeaf="true">
            <ownedComment xmi:id="0080a385-3373-44dc-b09c-a27c76831b08" body="This is used for building contracting character tables.  entryName&#xA;is the contracting character name and value is its collation&#xA;order.&#xA;" annotatedElement="797c288e-3773-4d08-ad01-f55e810b3736"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="734dcbb9-784d-47a7-b1fd-58b7a751990b" name="Format" clientDependency="e25786b9-1e3b-47e7-b542-8d4cd27f4577 ab5e50d1-2201-4b34-bede-0da075a03b29" isAbstract="true">
            <ownedComment xmi:id="6565fa5a-9071-43e8-b9f3-03c5a2e73da6" body="&lt;code>Format&lt;/code> is an abstract base class for formatting locale-sensitive&#xA;information such as dates, messages, and numbers.&#xA;&#xA;&lt;p>&#xA;&lt;code>Format&lt;/code> defines the programming interface for formatting&#xA;locale-sensitive objects into &lt;code>String&lt;/code>s (the&#xA;&lt;code>format&lt;/code> method) and for parsing &lt;code>String&lt;/code>s back&#xA;into objects (the &lt;code>parseObject&lt;/code> method).&#xA;&#xA;&lt;p>&#xA;Generally, a format's &lt;code>parseObject&lt;/code> method must be able to parse&#xA;any string formatted by its &lt;code>format&lt;/code> method. However, there may&#xA;be exceptional cases where this is not possible. For example, a&#xA;&lt;code>format&lt;/code> method might create two adjacent integer numbers with&#xA;no separator in between, and in this case the &lt;code>parseObject&lt;/code> could&#xA;not tell which digits belong to which number.&#xA;&#xA;&lt;h4>Subclassing&lt;/h4>&#xA;&#xA;&lt;p>&#xA;The Java 2 platform provides three specialized subclasses of &lt;code>Format&lt;/code>--&#xA;&lt;code>DateFormat&lt;/code>, &lt;code>MessageFormat&lt;/code>, and&#xA;&lt;code>NumberFormat&lt;/code>--for formatting dates, messages, and numbers,&#xA;respectively.&#xA;&lt;p>&#xA;Concrete subclasses must implement three methods:&#xA;&lt;ol>&#xA;&lt;li> &lt;code>format(Object obj, StringBuffer toAppendTo, FieldPosition pos)&lt;/code>&#xA;&lt;li> &lt;code>formatToCharacterIterator(Object obj)&lt;/code>&#xA;&lt;li> &lt;code>parseObject(String source, ParsePosition pos)&lt;/code>&#xA;&lt;/ol>&#xA;These general methods allow polymorphic parsing and formatting of objects&#xA;and are used, for example, by &lt;code>MessageFormat&lt;/code>.&#xA;Subclasses often also provide additional &lt;code>format&lt;/code> methods for&#xA;specific input types as well as &lt;code>parse&lt;/code> methods for specific&#xA;result types. Any &lt;code>parse&lt;/code> method that does not take a&#xA;&lt;code>ParsePosition&lt;/code> argument should throw &lt;code>ParseException&lt;/code>&#xA;when no text in the required format is at the beginning of the input text.&#xA;&#xA;&lt;p>&#xA;Most subclasses will also implement the following factory methods:&#xA;&lt;ol>&#xA;&lt;li>&#xA;&lt;code>getInstance&lt;/code> for getting a useful format object appropriate&#xA;for the current locale&#xA;&lt;li>&#xA;&lt;code>getInstance(Locale)&lt;/code> for getting a useful format&#xA;object appropriate for the specified locale&#xA;&lt;/ol>&#xA;In addition, some subclasses may also implement other&#xA;&lt;code>getXxxxInstance&lt;/code> methods for more specialized control. For&#xA;example, the &lt;code>NumberFormat&lt;/code> class provides&#xA;&lt;code>getPercentInstance&lt;/code> and &lt;code>getCurrencyInstance&lt;/code>&#xA;methods for getting specialized number formatters.&#xA;&#xA;&lt;p>&#xA;Subclasses of &lt;code>Format&lt;/code> that allow programmers to create objects&#xA;for locales (with &lt;code>getInstance(Locale)&lt;/code> for example)&#xA;must also implement the following class method:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;public static Locale[] getAvailableLocales()&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;And finally subclasses may define a set of constants to identify the various&#xA;fields in the formatted output. These constants are used to create a FieldPosition&#xA;object which identifies what information is contained in the field and its&#xA;position in the formatted result. These constants should be named&#xA;&lt;code>&lt;em>item&lt;/em>_FIELD&lt;/code> where &lt;code>&lt;em>item&lt;/em>&lt;/code> identifies&#xA;the field. For examples of these constants, see &lt;code>ERA_FIELD&lt;/code> and its&#xA;friends in {@link DateFormat}.&#xA;&#xA;&lt;h4>&lt;a name=&quot;synchronization&quot;>Synchronization&lt;/a>&lt;/h4>&#xA;&#xA;&lt;p>&#xA;Formats are generally not synchronized.&#xA;It is recommended to create separate format instances for each thread.&#xA;If multiple threads access a format concurrently, it must be synchronized&#xA;externally.&#xA;&#xA;@see          java.text.ParsePosition&#xA;@see          java.text.FieldPosition&#xA;@see          java.text.NumberFormat&#xA;@see          java.text.DateFormat&#xA;@see          java.text.MessageFormat&#xA;@version      1.34, 12/19/03&#xA;@author       Mark Davis&#xA;" annotatedElement="734dcbb9-784d-47a7-b1fd-58b7a751990b"/>
            <interfaceRealization xmi:id="ab5e50d1-2201-4b34-bede-0da075a03b29" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="734dcbb9-784d-47a7-b1fd-58b7a751990b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="e25786b9-1e3b-47e7-b542-8d4cd27f4577" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="734dcbb9-784d-47a7-b1fd-58b7a751990b" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="3b27ecf5-3cb0-44ae-9fe0-5394c859e489" name="Field">
              <ownedComment xmi:id="7df93210-7155-49d9-bc14-8363fb6ba5af" body="Defines constants that are used as attribute keys in the&#xA;&lt;code>AttributedCharacterIterator&lt;/code> returned&#xA;from &lt;code>Format.formatToCharacterIterator&lt;/code> and as&#xA;field identifiers in &lt;code>FieldPosition&lt;/code>.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="3b27ecf5-3cb0-44ae-9fe0-5394c859e489"/>
              <generalization xmi:id="e4acef84-0265-41e4-8361-c6f925c45bd2" isSubstitutable="true" general="86e8328e-c93b-4072-9bcc-f24cd737649f"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Interface" xmi:id="3dc6f06f-7804-4295-ba0e-cae99fabdc11" name="FieldDelegate" visibility="package" isAbstract="true">
              <ownedComment xmi:id="2357ef9b-fe63-4b16-947d-300d678f6cdf" body="FieldDelegate is notified by the various &lt;code>Format&lt;/code>&#xA;implementations as they are formatting the Objects. This allows for&#xA;storage of the individual sections of the formatted String for&#xA;later use, such as in a &lt;code>FieldPosition&lt;/code> or for an&#xA;&lt;code>AttributedCharacterIterator&lt;/code>.&#xA;&lt;p>&#xA;Delegates should NOT assume that the &lt;code>Format&lt;/code> will notify&#xA;the delegate of fields in any particular order.&#xA;&#xA;@see FieldPosition.Delegate&#xA;@see CharacterIteratorFieldDelegate&#xA;" annotatedElement="3dc6f06f-7804-4295-ba0e-cae99fabdc11"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="702fb7a1-4384-40eb-8e08-21e8b2bd3aa6" name="Annotation">
            <ownedComment xmi:id="4d62d946-d24c-4800-b443-19495415d9f5" body="An Annotation object is used as a wrapper for a text attribute value if&#xA;the attribute has annotation characteristics. These characteristics are:&#xA;&lt;ul>&#xA;&lt;li>The text range that the attribute is applied to is critical to the&#xA;semantics of the range. That means, the attribute cannot be applied to subranges&#xA;of the text range that it applies to, and, if two adjacent text ranges have&#xA;the same value for this attribute, the attribute still cannot be applied to&#xA;the combined range as a whole with this value.&#xA;&lt;li>The attribute or its value usually do no longer apply if the underlying text is&#xA;changed.&#xA;&lt;/ul>&#xA;&#xA;An example is grammatical information attached to a sentence:&#xA;For the previous sentence, you can say that &quot;an example&quot;&#xA;is the subject, but you cannot say the same about &quot;an&quot;, &quot;example&quot;, or &quot;exam&quot;.&#xA;When the text is changed, the grammatical information typically becomes invalid.&#xA;Another example is Japanese reading information (yomi).&#xA;&#xA;&lt;p>&#xA;Wrapping the attribute value into an Annotation object guarantees that&#xA;adjacent text runs don't get merged even if the attribute values are equal,&#xA;and indicates to text containers that the attribute should be discarded if&#xA;the underlying text is modified.&#xA;&#xA;@see AttributedCharacterIterator&#xA;@since 1.2&#xA;" annotatedElement="702fb7a1-4384-40eb-8e08-21e8b2bd3aa6"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7d1b988d-0bbe-40c2-a368-ca427b2f603f" name="CollationElementIterator" isLeaf="true">
            <ownedComment xmi:id="1e4b11ef-7684-4194-9fe2-8c58b82cad5c" body="The &lt;code>CollationElementIterator&lt;/code> class is used as an iterator&#xA;to walk through each character of an international string. Use the iterator&#xA;to return the ordering priority of the positioned character. The ordering&#xA;priority of a character, which we refer to as a key, defines how a character&#xA;is collated in the given collation object.&#xA;&#xA;&lt;p>&#xA;For example, consider the following in Spanish:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;&quot;ca&quot; -> the first key is key('c') and second key is key('a').&#xA;&quot;cha&quot; -> the first key is key('ch') and second key is key('a').&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;And in German,&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;&quot;\u00e4b&quot;-> the first key is key('a'), the second key is key('e'), and&#xA;the third key is key('b').&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;The key of a character is an integer composed of primary order(short),&#xA;secondary order(byte), and tertiary order(byte). Java strictly defines&#xA;the size and signedness of its primitive data types. Therefore, the static&#xA;functions &lt;code>primaryOrder&lt;/code>, &lt;code>secondaryOrder&lt;/code>, and&#xA;&lt;code>tertiaryOrder&lt;/code> return &lt;code>int&lt;/code>, &lt;code>short&lt;/code>,&#xA;and &lt;code>short&lt;/code> respectively to ensure the correctness of the key&#xA;value.&#xA;&#xA;&lt;p>&#xA;Example of the iterator usage,&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;&#xA;String testString = &quot;This is a test&quot;;&#xA;RuleBasedCollator ruleBasedCollator = (RuleBasedCollator)Collator.getInstance();&#xA;CollationElementIterator collationElementIterator = ruleBasedCollator.getCollationElementIterator(testString);&#xA;int primaryOrder = CollationElementIterator.primaryOrder(collationElementIterator.next());&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;&lt;code>CollationElementIterator.next&lt;/code> returns the collation order&#xA;of the next character. A collation order consists of primary order,&#xA;secondary order and tertiary order. The data type of the collation&#xA;order is &lt;strong>int&lt;/strong>. The first 16 bits of a collation order&#xA;is its primary order; the next 8 bits is the secondary order and the&#xA;last 8 bits is the tertiary order.&#xA;&#xA;@see                Collator&#xA;@see                RuleBasedCollator&#xA;@version            1.24 07/27/98&#xA;@author             Helena Shih, Laura Werner, Richard Gillam&#xA;" annotatedElement="7d1b988d-0bbe-40c2-a368-ca427b2f603f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="7539b7c7-259d-4049-a7a0-6e6d532c6abb" name="Comparator&lt;Object>">
            <templateBinding xmi:id="e707caca-423e-4d68-a31d-e8452c67ac6f" signature="5ca0174c-f6a2-499c-8047-b28b014e167d">
              <parameterSubstitution xmi:id="683bced3-201d-4b43-8cb4-b876ea727108" formal="778d8bc4-7722-4223-9041-c33432cd4640" actual="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="b475bdb8-5ca3-494d-9082-5f62a1aa4a16" name="CharacterIterator" isAbstract="true">
            <ownedComment xmi:id="6a8cfcb2-eef4-452a-9e35-b61fbe763c59" body="This interface defines a protocol for bidirectional iteration over text.&#xA;The iterator iterates over a bounded sequence of characters.  Characters&#xA;are indexed with values beginning with the value returned by getBeginIndex() and&#xA;continuing through the value returned by getEndIndex()-1.&#xA;&lt;p>&#xA;Iterators maintain a current character index, whose valid range is from&#xA;getBeginIndex() to getEndIndex(); the value getEndIndex() is included to allow&#xA;handling of zero-length text ranges and for historical reasons.&#xA;The current index can be retrieved by calling getIndex() and set directly&#xA;by calling setIndex(), first(), and last().&#xA;&lt;p>&#xA;The methods previous() and next() are used for iteration. They return DONE if&#xA;they would move outside the range from getBeginIndex() to getEndIndex() -1,&#xA;signaling that the iterator has reached the end of the sequence. DONE is&#xA;also returned by other methods to indicate that the current index is&#xA;outside this range.&#xA;&#xA;&lt;P>Examples:&lt;P>&#xA;&#xA;Traverse the text from start to finish&#xA;&lt;pre>&#xA;public void traverseForward(CharacterIterator iter) {&#xA;for(char c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) {&#xA;processChar(c);&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;Traverse the text backwards, from end to start&#xA;&lt;pre>&#xA;public void traverseBackward(CharacterIterator iter) {&#xA;for(char c = iter.last(); c != CharacterIterator.DONE; c = iter.previous()) {&#xA;processChar(c);&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;Traverse both forward and backward from a given position in the text.&#xA;Calls to notBoundary() in this example represents some&#xA;additional stopping criteria.&#xA;&lt;pre>&#xA;public void traverseOut(CharacterIterator iter, int pos) {&#xA;for (char c = iter.setIndex(pos);&#xA;c != CharacterIterator.DONE &amp;&amp; notBoundary(c);&#xA;c = iter.next()) {&#xA;}&#xA;int end = iter.getIndex();&#xA;for (char c = iter.setIndex(pos);&#xA;c != CharacterIterator.DONE &amp;&amp; notBoundary(c);&#xA;c = iter.previous()) {&#xA;}&#xA;int start = iter.getIndex();&#xA;processSection(start, end);&#xA;}&#xA;&lt;/pre>&#xA;&#xA;@see StringCharacterIterator&#xA;@see AttributedCharacterIterator&#xA;" annotatedElement="b475bdb8-5ca3-494d-9082-5f62a1aa4a16"/>
            <generalization xmi:id="24545e28-6546-46df-a08b-7cc1b7689f02" isSubstitutable="true" general="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c0cd893b-96fc-4a2f-9679-c3715010b0d2" name="SimpleDateFormat">
            <ownedComment xmi:id="4d4b135b-4976-4f76-a3db-6aee14c42588" body="&lt;code>SimpleDateFormat&lt;/code> is a concrete class for formatting and&#xA;parsing dates in a locale-sensitive manner. It allows for formatting&#xA;(date -> text), parsing (text -> date), and normalization.&#xA;&#xA;&lt;p>&#xA;&lt;code>SimpleDateFormat&lt;/code> allows you to start by choosing&#xA;any user-defined patterns for date-time formatting. However, you&#xA;are encouraged to create a date-time formatter with either&#xA;&lt;code>getTimeInstance&lt;/code>, &lt;code>getDateInstance&lt;/code>, or&#xA;&lt;code>getDateTimeInstance&lt;/code> in &lt;code>DateFormat&lt;/code>. Each&#xA;of these class methods can return a date/time formatter initialized&#xA;with a default format pattern. You may modify the format pattern&#xA;using the &lt;code>applyPattern&lt;/code> methods as desired.&#xA;For more information on using these methods, see&#xA;{@link DateFormat}.&#xA;&#xA;&lt;h4>Date and Time Patterns&lt;/h4>&#xA;&lt;p>&#xA;Date and time formats are specified by &lt;em>date and time pattern&lt;/em>&#xA;strings.&#xA;Within date and time pattern strings, unquoted letters from&#xA;&lt;code>'A'&lt;/code> to &lt;code>'Z'&lt;/code> and from &lt;code>'a'&lt;/code> to&#xA;&lt;code>'z'&lt;/code> are interpreted as pattern letters representing the&#xA;components of a date or time string.&#xA;Text can be quoted using single quotes (&lt;code>'&lt;/code>) to avoid&#xA;interpretation.&#xA;&lt;code>&quot;''&quot;&lt;/code> represents a single quote.&#xA;All other characters are not interpreted; they're simply copied into the&#xA;output string during formatting or matched against the input string&#xA;during parsing.&#xA;&lt;p>&#xA;The following pattern letters are defined (all other characters from&#xA;&lt;code>'A'&lt;/code> to &lt;code>'Z'&lt;/code> and from &lt;code>'a'&lt;/code> to&#xA;&lt;code>'z'&lt;/code> are reserved):&#xA;&lt;blockquote>&#xA;&lt;table border=0 cellspacing=3 cellpadding=0 summary=&quot;Chart shows pattern letters, date/time component, presentation, and examples.&quot;>&#xA;&lt;tr bgcolor=&quot;#ccccff&quot;>&#xA;&lt;th align=left>Letter&#xA;&lt;th align=left>Date or Time Component&#xA;&lt;th align=left>Presentation&#xA;&lt;th align=left>Examples&#xA;&lt;tr>&#xA;&lt;td>&lt;code>G&lt;/code>&#xA;&lt;td>Era designator&#xA;&lt;td>&lt;a href=&quot;#text&quot;>Text&lt;/a>&#xA;&lt;td>&lt;code>AD&lt;/code>&#xA;&lt;tr bgcolor=&quot;#eeeeff&quot;>&#xA;&lt;td>&lt;code>y&lt;/code>&#xA;&lt;td>Year&#xA;&lt;td>&lt;a href=&quot;#year&quot;>Year&lt;/a>&#xA;&lt;td>&lt;code>1996&lt;/code>; &lt;code>96&lt;/code>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>M&lt;/code>&#xA;&lt;td>Month in year&#xA;&lt;td>&lt;a href=&quot;#month&quot;>Month&lt;/a>&#xA;&lt;td>&lt;code>July&lt;/code>; &lt;code>Jul&lt;/code>; &lt;code>07&lt;/code>&#xA;&lt;tr bgcolor=&quot;#eeeeff&quot;>&#xA;&lt;td>&lt;code>w&lt;/code>&#xA;&lt;td>Week in year&#xA;&lt;td>&lt;a href=&quot;#number&quot;>Number&lt;/a>&#xA;&lt;td>&lt;code>27&lt;/code>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>W&lt;/code>&#xA;&lt;td>Week in month&#xA;&lt;td>&lt;a href=&quot;#number&quot;>Number&lt;/a>&#xA;&lt;td>&lt;code>2&lt;/code>&#xA;&lt;tr bgcolor=&quot;#eeeeff&quot;>&#xA;&lt;td>&lt;code>D&lt;/code>&#xA;&lt;td>Day in year&#xA;&lt;td>&lt;a href=&quot;#number&quot;>Number&lt;/a>&#xA;&lt;td>&lt;code>189&lt;/code>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>d&lt;/code>&#xA;&lt;td>Day in month&#xA;&lt;td>&lt;a href=&quot;#number&quot;>Number&lt;/a>&#xA;&lt;td>&lt;code>10&lt;/code>&#xA;&lt;tr bgcolor=&quot;#eeeeff&quot;>&#xA;&lt;td>&lt;code>F&lt;/code>&#xA;&lt;td>Day of week in month&#xA;&lt;td>&lt;a href=&quot;#number&quot;>Number&lt;/a>&#xA;&lt;td>&lt;code>2&lt;/code>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>E&lt;/code>&#xA;&lt;td>Day in week&#xA;&lt;td>&lt;a href=&quot;#text&quot;>Text&lt;/a>&#xA;&lt;td>&lt;code>Tuesday&lt;/code>; &lt;code>Tue&lt;/code>&#xA;&lt;tr bgcolor=&quot;#eeeeff&quot;>&#xA;&lt;td>&lt;code>a&lt;/code>&#xA;&lt;td>Am/pm marker&#xA;&lt;td>&lt;a href=&quot;#text&quot;>Text&lt;/a>&#xA;&lt;td>&lt;code>PM&lt;/code>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>H&lt;/code>&#xA;&lt;td>Hour in day (0-23)&#xA;&lt;td>&lt;a href=&quot;#number&quot;>Number&lt;/a>&#xA;&lt;td>&lt;code>0&lt;/code>&#xA;&lt;tr bgcolor=&quot;#eeeeff&quot;>&#xA;&lt;td>&lt;code>k&lt;/code>&#xA;&lt;td>Hour in day (1-24)&#xA;&lt;td>&lt;a href=&quot;#number&quot;>Number&lt;/a>&#xA;&lt;td>&lt;code>24&lt;/code>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>K&lt;/code>&#xA;&lt;td>Hour in am/pm (0-11)&#xA;&lt;td>&lt;a href=&quot;#number&quot;>Number&lt;/a>&#xA;&lt;td>&lt;code>0&lt;/code>&#xA;&lt;tr bgcolor=&quot;#eeeeff&quot;>&#xA;&lt;td>&lt;code>h&lt;/code>&#xA;&lt;td>Hour in am/pm (1-12)&#xA;&lt;td>&lt;a href=&quot;#number&quot;>Number&lt;/a>&#xA;&lt;td>&lt;code>12&lt;/code>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>m&lt;/code>&#xA;&lt;td>Minute in hour&#xA;&lt;td>&lt;a href=&quot;#number&quot;>Number&lt;/a>&#xA;&lt;td>&lt;code>30&lt;/code>&#xA;&lt;tr bgcolor=&quot;#eeeeff&quot;>&#xA;&lt;td>&lt;code>s&lt;/code>&#xA;&lt;td>Second in minute&#xA;&lt;td>&lt;a href=&quot;#number&quot;>Number&lt;/a>&#xA;&lt;td>&lt;code>55&lt;/code>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>S&lt;/code>&#xA;&lt;td>Millisecond&#xA;&lt;td>&lt;a href=&quot;#number&quot;>Number&lt;/a>&#xA;&lt;td>&lt;code>978&lt;/code>&#xA;&lt;tr bgcolor=&quot;#eeeeff&quot;>&#xA;&lt;td>&lt;code>z&lt;/code>&#xA;&lt;td>Time zone&#xA;&lt;td>&lt;a href=&quot;#timezone&quot;>General time zone&lt;/a>&#xA;&lt;td>&lt;code>Pacific Standard Time&lt;/code>; &lt;code>PST&lt;/code>; &lt;code>GMT-08:00&lt;/code>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>Z&lt;/code>&#xA;&lt;td>Time zone&#xA;&lt;td>&lt;a href=&quot;#rfc822timezone&quot;>RFC 822 time zone&lt;/a>&#xA;&lt;td>&lt;code>-0800&lt;/code>&#xA;&lt;/table>&#xA;&lt;/blockquote>&#xA;Pattern letters are usually repeated, as their number determines the&#xA;exact presentation:&#xA;&lt;ul>&#xA;&lt;li>&lt;strong>&lt;a name=&quot;text&quot;>Text:&lt;/a>&lt;/strong>&#xA;For formatting, if the number of pattern letters is 4 or more,&#xA;the full form is used; otherwise a short or abbreviated form&#xA;is used if available.&#xA;For parsing, both forms are accepted, independent of the number&#xA;of pattern letters.&#xA;&lt;li>&lt;strong>&lt;a name=&quot;number&quot;>Number:&lt;/a>&lt;/strong>&#xA;For formatting, the number of pattern letters is the minimum&#xA;number of digits, and shorter numbers are zero-padded to this amount.&#xA;For parsing, the number of pattern letters is ignored unless&#xA;it's needed to separate two adjacent fields.&#xA;&lt;li>&lt;strong>&lt;a name=&quot;year&quot;>Year:&lt;/a>&lt;/strong>&#xA;For formatting, if the number of pattern letters is 2, the year&#xA;is truncated to 2 digits; otherwise it is interpreted as a&#xA;&lt;a href=&quot;#number&quot;>number&lt;/a>.&#xA;&lt;p>For parsing, if the number of pattern letters is more than 2,&#xA;the year is interpreted literally, regardless of the number of&#xA;digits. So using the pattern &quot;MM/dd/yyyy&quot;, &quot;01/11/12&quot; parses to&#xA;Jan 11, 12 A.D.&#xA;&lt;p>For parsing with the abbreviated year pattern (&quot;y&quot; or &quot;yy&quot;),&#xA;&lt;code>SimpleDateFormat&lt;/code> must interpret the abbreviated year&#xA;relative to some century.  It does this by adjusting dates to be&#xA;within 80 years before and 20 years after the time the &lt;code>SimpleDateFormat&lt;/code>&#xA;instance is created. For example, using a pattern of &quot;MM/dd/yy&quot; and a&#xA;&lt;code>SimpleDateFormat&lt;/code> instance created on Jan 1, 1997,  the string&#xA;&quot;01/11/12&quot; would be interpreted as Jan 11, 2012 while the string &quot;05/04/64&quot;&#xA;would be interpreted as May 4, 1964.&#xA;During parsing, only strings consisting of exactly two digits, as defined by&#xA;{@link Character#isDigit(char)}, will be parsed into the default century.&#xA;Any other numeric string, such as a one digit string, a three or more digit&#xA;string, or a two digit string that isn't all digits (for example, &quot;-1&quot;), is&#xA;interpreted literally.  So &quot;01/02/3&quot; or &quot;01/02/003&quot; are parsed, using the&#xA;same pattern, as Jan 2, 3 AD.  Likewise, &quot;01/02/-3&quot; is parsed as Jan 2, 4 BC.&#xA;&lt;li>&lt;strong>&lt;a name=&quot;month&quot;>Month:&lt;/a>&lt;/strong>&#xA;If the number of pattern letters is 3 or more, the month is&#xA;interpreted as &lt;a href=&quot;#text&quot;>text&lt;/a>; otherwise,&#xA;it is interpreted as a &lt;a href=&quot;#number&quot;>number&lt;/a>.&#xA;&lt;li>&lt;strong>&lt;a name=&quot;timezone&quot;>General time zone:&lt;/a>&lt;/strong>&#xA;Time zones are interpreted as &lt;a href=&quot;#text&quot;>text&lt;/a> if they have&#xA;names. For time zones representing a GMT offset value, the&#xA;following syntax is used:&#xA;&lt;pre>&#xA;&lt;a name=&quot;GMTOffsetTimeZone&quot;>&lt;i>GMTOffsetTimeZone:&lt;/i>&lt;/a>&#xA;&lt;code>GMT&lt;/code> &lt;i>Sign&lt;/i> &lt;i>Hours&lt;/i> &lt;code>:&lt;/code> &lt;i>Minutes&lt;/i>&#xA;&lt;i>Sign:&lt;/i> one of&#xA;&lt;code>+ -&lt;/code>&#xA;&lt;i>Hours:&lt;/i>&#xA;&lt;i>Digit&lt;/i>&#xA;&lt;i>Digit&lt;/i> &lt;i>Digit&lt;/i>&#xA;&lt;i>Minutes:&lt;/i>&#xA;&lt;i>Digit&lt;/i> &lt;i>Digit&lt;/i>&#xA;&lt;i>Digit:&lt;/i> one of&#xA;&lt;code>0 1 2 3 4 5 6 7 8 9&lt;/code>&lt;/pre>&#xA;&lt;i>Hours&lt;/i> must be between 0 and 23, and &lt;i>Minutes&lt;/i> must be between&#xA;00 and 59. The format is locale independent and digits must be taken&#xA;from the Basic Latin block of the Unicode standard.&#xA;&lt;p>For parsing, &lt;a href=&quot;#rfc822timezone&quot;>RFC 822 time zones&lt;/a> are also&#xA;accepted.&#xA;&lt;li>&lt;strong>&lt;a name=&quot;rfc822timezone&quot;>RFC 822 time zone:&lt;/a>&lt;/strong>&#xA;For formatting, the RFC 822 4-digit time zone format is used:&#xA;&lt;pre>&#xA;&lt;i>RFC822TimeZone:&lt;/i>&#xA;&lt;i>Sign&lt;/i> &lt;i>TwoDigitHours&lt;/i> &lt;i>Minutes&lt;/i>&#xA;&lt;i>TwoDigitHours:&lt;/i>&#xA;&lt;i>Digit Digit&lt;/i>&lt;/pre>&#xA;&lt;i>TwoDigitHours&lt;/i> must be between 00 and 23. Other definitions&#xA;are as for &lt;a href=&quot;#timezone&quot;>general time zones&lt;/a>.&#xA;&lt;p>For parsing, &lt;a href=&quot;#timezone&quot;>general time zones&lt;/a> are also&#xA;accepted.&#xA;&lt;/ul>&#xA;&lt;code>SimpleDateFormat&lt;/code> also supports &lt;em>localized date and time&#xA;pattern&lt;/em> strings. In these strings, the pattern letters described above&#xA;may be replaced with other, locale dependent, pattern letters.&#xA;&lt;code>SimpleDateFormat&lt;/code> does not deal with the localization of text&#xA;other than the pattern letters; that's up to the client of the class.&#xA;&lt;p>&#xA;&#xA;&lt;h4>Examples&lt;/h4>&#xA;&#xA;The following examples show how date and time patterns are interpreted in&#xA;the U.S. locale. The given date and time are 2001-07-04 12:08:56 local time&#xA;in the U.S. Pacific Time time zone.&#xA;&lt;blockquote>&#xA;&lt;table border=0 cellspacing=3 cellpadding=0 summary=&quot;Examples of date and time patterns interpreted in the U.S. locale&quot;>&#xA;&lt;tr bgcolor=&quot;#ccccff&quot;>&#xA;&lt;th align=left>Date and Time Pattern&#xA;&lt;th align=left>Result&#xA;&lt;tr>&#xA;&lt;td>&lt;code>&quot;yyyy.MM.dd G 'at' HH:mm:ss z&quot;&lt;/code>&#xA;&lt;td>&lt;code>2001.07.04 AD at 12:08:56 PDT&lt;/code>&#xA;&lt;tr bgcolor=&quot;#eeeeff&quot;>&#xA;&lt;td>&lt;code>&quot;EEE, MMM d, ''yy&quot;&lt;/code>&#xA;&lt;td>&lt;code>Wed, Jul 4, '01&lt;/code>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>&quot;h:mm a&quot;&lt;/code>&#xA;&lt;td>&lt;code>12:08 PM&lt;/code>&#xA;&lt;tr bgcolor=&quot;#eeeeff&quot;>&#xA;&lt;td>&lt;code>&quot;hh 'o''clock' a, zzzz&quot;&lt;/code>&#xA;&lt;td>&lt;code>12 o'clock PM, Pacific Daylight Time&lt;/code>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>&quot;K:mm a, z&quot;&lt;/code>&#xA;&lt;td>&lt;code>0:08 PM, PDT&lt;/code>&#xA;&lt;tr bgcolor=&quot;#eeeeff&quot;>&#xA;&lt;td>&lt;code>&quot;yyyyy.MMMMM.dd GGG hh:mm aaa&quot;&lt;/code>&#xA;&lt;td>&lt;code>02001.July.04 AD 12:08 PM&lt;/code>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>&quot;EEE, d MMM yyyy HH:mm:ss Z&quot;&lt;/code>&#xA;&lt;td>&lt;code>Wed, 4 Jul 2001 12:08:56 -0700&lt;/code>&#xA;&lt;tr bgcolor=&quot;#eeeeff&quot;>&#xA;&lt;td>&lt;code>&quot;yyMMddHHmmssZ&quot;&lt;/code>&#xA;&lt;td>&lt;code>010704120856-0700&lt;/code>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>&quot;yyyy-MM-dd'T'HH:mm:ss.SSSZ&quot;&lt;/code>&#xA;&lt;td>&lt;code>2001-07-04T12:08:56.235-0700&lt;/code>&#xA;&lt;/table>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;h4>&lt;a name=&quot;synchronization&quot;>Synchronization&lt;/a>&lt;/h4>&#xA;&#xA;&lt;p>&#xA;Date formats are not synchronized.&#xA;It is recommended to create separate format instances for each thread.&#xA;If multiple threads access a format concurrently, it must be synchronized&#xA;externally.&#xA;&#xA;@see          &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/i18n/format/simpleDateFormat.html&quot;>Java Tutorial&lt;/a>&#xA;@see          java.util.Calendar&#xA;@see          java.util.TimeZone&#xA;@see          DateFormat&#xA;@see          DateFormatSymbols&#xA;@version      1.77, 01/22/04&#xA;@author       Mark Davis, Chen-Lieh Huang, Alan Liu&#xA;" annotatedElement="c0cd893b-96fc-4a2f-9679-c3715010b0d2"/>
            <generalization xmi:id="29610a5f-6d07-475a-8e78-f7d5b3d071e1" isSubstitutable="true" general="149b4461-e1dd-40f4-a45d-330bdda33096"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="11c2fe9b-a775-4b74-bc5f-935c3559b55e" name="SimpleTextBoundary" visibility="package" isLeaf="true"/>
          <packagedElement xmi:type="uml:Class" xmi:id="3ce673ca-b883-4267-a272-18ef30d99e6c" name="LineBreakData" visibility="package" isLeaf="true"/>
          <packagedElement xmi:type="uml:Class" xmi:id="9123a9e3-28cb-44d4-8b14-e5ebaabafcf2" name="DateFormatSymbols" clientDependency="a74380b2-e277-4ff5-af35-c450e603732c a37d6c7f-1048-4bfd-808b-0fa02fddcdfe">
            <ownedComment xmi:id="009c59d5-6059-43da-b8db-b97817daa7f3" body="&lt;code>DateFormatSymbols&lt;/code> is a public class for encapsulating&#xA;localizable date-time formatting data, such as the names of the&#xA;months, the names of the days of the week, and the time zone data.&#xA;&lt;code>DateFormat&lt;/code> and &lt;code>SimpleDateFormat&lt;/code> both use&#xA;&lt;code>DateFormatSymbols&lt;/code> to encapsulate this information.&#xA;&#xA;&lt;p>&#xA;Typically you shouldn't use &lt;code>DateFormatSymbols&lt;/code> directly.&#xA;Rather, you are encouraged to create a date-time formatter with the&#xA;&lt;code>DateFormat&lt;/code> class's factory methods: &lt;code>getTimeInstance&lt;/code>,&#xA;&lt;code>getDateInstance&lt;/code>, or &lt;code>getDateTimeInstance&lt;/code>.&#xA;These methods automatically create a &lt;code>DateFormatSymbols&lt;/code> for&#xA;the formatter so that you don't have to. After the&#xA;formatter is created, you may modify its format pattern using the&#xA;&lt;code>setPattern&lt;/code> method. For more information about&#xA;creating formatters using &lt;code>DateFormat&lt;/code>'s factory methods,&#xA;see {@link DateFormat}.&#xA;&#xA;&lt;p>&#xA;If you decide to create a date-time formatter with a specific&#xA;format pattern for a specific locale, you can do so with:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;new SimpleDateFormat(aPattern, new DateFormatSymbols(aLocale)).&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;&lt;code>DateFormatSymbols&lt;/code> objects are cloneable. When you obtain&#xA;a &lt;code>DateFormatSymbols&lt;/code> object, feel free to modify the&#xA;date-time formatting data. For instance, you can replace the localized&#xA;date-time format pattern characters with the ones that you feel easy&#xA;to remember. Or you can change the representative cities&#xA;to your favorite ones.&#xA;&#xA;&lt;p>&#xA;New &lt;code>DateFormatSymbols&lt;/code> subclasses may be added to support&#xA;&lt;code>SimpleDateFormat&lt;/code> for date-time formatting for additional locales.&#xA;@see          DateFormat&#xA;@see          SimpleDateFormat&#xA;@see          java.util.SimpleTimeZone&#xA;@version      1.41 12/19/03&#xA;@author       Chen-Lieh Huang&#xA;" annotatedElement="9123a9e3-28cb-44d4-8b14-e5ebaabafcf2"/>
            <interfaceRealization xmi:id="a37d6c7f-1048-4bfd-808b-0fa02fddcdfe" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="9123a9e3-28cb-44d4-8b14-e5ebaabafcf2" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="a74380b2-e277-4ff5-af35-c450e603732c" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="9123a9e3-28cb-44d4-8b14-e5ebaabafcf2" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="81d80e9d-5201-4d67-939f-9f818624d2dd" name="SentenceBreakData" visibility="package" isLeaf="true"/>
          <packagedElement xmi:type="uml:Class" xmi:id="739e9e8e-5bc0-43ff-9b0f-1111f5eaf124" name="StringCharacterIterator" clientDependency="83537205-bdd3-404b-b5ad-cd22f58aa135" isLeaf="true">
            <ownedComment xmi:id="3441478d-31c4-4819-bd4b-451ea108a894" body="&lt;code>StringCharacterIterator&lt;/code> implements the&#xA;&lt;code>CharacterIterater&lt;/code> protocol for a &lt;code>String&lt;/code>.&#xA;The &lt;code>StringCharacterIterator&lt;/code> class iterates over the&#xA;entire &lt;code>String&lt;/code>.&#xA;&#xA;@see CharacterIterator&#xA;" annotatedElement="739e9e8e-5bc0-43ff-9b0f-1111f5eaf124"/>
            <interfaceRealization xmi:id="83537205-bdd3-404b-b5ad-cd22f58aa135" name="" supplier="b475bdb8-5ca3-494d-9082-5f62a1aa4a16" client="739e9e8e-5bc0-43ff-9b0f-1111f5eaf124" contract="b475bdb8-5ca3-494d-9082-5f62a1aa4a16"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="06a4e232-cebf-4bb3-a7da-c9eb5d819468" name="CharSet" visibility="package">
            <nestedClassifier xmi:type="uml:Class" xmi:id="0bcb2887-9738-4738-bda3-2edfefbfd5e0" name="Enumeration"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="5ba316b1-ef90-436f-aa60-bf5bdaa9ad19" name="AttributedCharacterIterator" isAbstract="true">
            <ownedComment xmi:id="46be778a-3d4d-4367-a72f-d270352d9be4" body="An AttributedCharacterIterator allows iteration through both text and&#xA;related attribute information.&#xA;&#xA;&lt;p>&#xA;An attribute is a key/value pair, identified by the key.  No two&#xA;attributes on a given character can have the same key.&#xA;&#xA;&lt;p>The values for an attribute are immutable, or must not be mutated&#xA;by clients or storage.  They are always passed by reference, and not&#xA;cloned.&#xA;&#xA;&lt;p>A &lt;em>run with respect to an attribute&lt;/em> is a maximum text range for&#xA;which:&#xA;&lt;ul>&#xA;&lt;li>the attribute is undefined or null for the entire range, or&#xA;&lt;li>the attribute value is defined and has the same non-null value for the&#xA;entire range.&#xA;&lt;/ul>&#xA;&#xA;&lt;p>A &lt;em>run with respect to a set of attributes&lt;/em> is a maximum text range for&#xA;which this condition is met for each member attribute.&#xA;&#xA;&lt;p>The returned indexes are limited to the range of the iterator.&#xA;&#xA;&lt;p>The returned attribute information is limited to runs that contain&#xA;the current character.&#xA;&#xA;&lt;p>&#xA;Attribute keys are instances of AttributedCharacterIterator.Attribute and its&#xA;subclasses, such as java.awt.font.TextAttribute.&#xA;&#xA;@see AttributedCharacterIterator.Attribute&#xA;@see java.awt.font.TextAttribute&#xA;@see AttributedString&#xA;@see Annotation&#xA;@since 1.2&#xA;" annotatedElement="5ba316b1-ef90-436f-aa60-bf5bdaa9ad19"/>
            <generalization xmi:id="325a850f-45f6-4bfb-9b73-ed573f3bc817" isSubstitutable="true" general="b475bdb8-5ca3-494d-9082-5f62a1aa4a16"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="86e8328e-c93b-4072-9bcc-f24cd737649f" name="Attribute" clientDependency="4acaaded-39fc-4f66-aeb4-a57414127375">
              <ownedComment xmi:id="3ea2fe91-cc99-4658-ba90-036d1e32047a" body="Defines attribute keys that are used to identify text attributes. These&#xA;keys are used in AttributedCharacterIterator and AttributedString.&#xA;@see AttributedCharacterIterator&#xA;@see AttributedString&#xA;@since 1.2&#xA;" annotatedElement="86e8328e-c93b-4072-9bcc-f24cd737649f"/>
              <interfaceRealization xmi:id="4acaaded-39fc-4f66-aeb4-a57414127375" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="86e8328e-c93b-4072-9bcc-f24cd737649f" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3001a5a1-b948-4133-ae99-e9f65f63faa0" name="WordBreakData" visibility="package" isLeaf="true"/>
          <packagedElement xmi:type="uml:Class" xmi:id="5dde0d58-eada-4307-b39c-15630b22fc21" name="DigitList" visibility="package" clientDependency="8114b977-2bf7-4557-988c-0fcdbcfececa" isLeaf="true">
            <ownedComment xmi:id="2ab1334e-5120-4352-8a5d-0b1b73817a75" body="Digit List. Private to DecimalFormat.&#xA;Handles the transcoding&#xA;between numeric values and strings of characters.  Only handles&#xA;non-negative numbers.  The division of labor between DigitList and&#xA;DecimalFormat is that DigitList handles the radix 10 representation&#xA;issues; DecimalFormat handles the locale-specific issues such as&#xA;positive/negative, grouping, decimal point, currency, and so on.&#xA;&#xA;A DigitList is really a representation of a floating point value.&#xA;It may be an integer value; we assume that a double has sufficient&#xA;precision to represent all digits of a long.&#xA;&#xA;The DigitList representation consists of a string of characters,&#xA;which are the digits radix 10, from '0' to '9'.  It also has a radix&#xA;10 exponent associated with it.  The value represented by a DigitList&#xA;object can be computed by mulitplying the fraction f, where 0 &lt;= f &lt; 1,&#xA;derived by placing all the digits of the list to the right of the&#xA;decimal point, by 10^exponent.&#xA;&#xA;@see  Locale&#xA;@see  Format&#xA;@see  NumberFormat&#xA;@see  DecimalFormat&#xA;@see  ChoiceFormat&#xA;@see  MessageFormat&#xA;@version      1.30 12/19/03&#xA;@author       Mark Davis, Alan Liu&#xA;" annotatedElement="5dde0d58-eada-4307-b39c-15630b22fc21"/>
            <interfaceRealization xmi:id="8114b977-2bf7-4557-988c-0fcdbcfececa" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="5dde0d58-eada-4307-b39c-15630b22fc21" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4888b791-e929-4e38-a232-5f6cfd91f792" name="DontCareFieldPosition" visibility="package">
            <ownedComment xmi:id="1ea856c4-abd5-4593-94ed-0aa5c644dc49" body="DontCareFieldPosition defines no-op FieldDelegate. Its&#xA;singleton is used for the format methods that don't take a&#xA;FieldPosition.&#xA;" annotatedElement="4888b791-e929-4e38-a232-5f6cfd91f792"/>
            <generalization xmi:id="6f536e47-a57c-49b2-93e5-9e118ac6f3a9" isSubstitutable="true" general="20d48ba1-d935-4015-b1ad-51f05a34aae2"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2ef0358b-8740-4659-800c-8adfa610cc05" name="DictionaryBasedBreakIterator" visibility="package">
            <ownedComment xmi:id="b8d706f4-46fa-46d6-af90-2d87992bc975" body="A subclass of RuleBasedBreakIterator that adds the ability to use a dictionary&#xA;to further subdivide ranges of text beyond what is possible using just the&#xA;state-table-based algorithm.  This is necessary, for example, to handle&#xA;word and line breaking in Thai, which doesn't use spaces between words.  The&#xA;state-table-based algorithm used by RuleBasedBreakIterator is used to divide&#xA;up text as far as possible, and then contiguous ranges of letters are&#xA;repeatedly compared against a list of known words (i.e., the dictionary)&#xA;to divide them up into words.&#xA;&#xA;DictionaryBasedBreakIterator uses the same rule language as RuleBasedBreakIterator,&#xA;but adds one more special substitution name: &lt;dictionary>.  This substitution&#xA;name is used to identify characters in words in the dictionary.  The idea is that&#xA;if the iterator passes over a chunk of text that includes two or more characters&#xA;in a row that are included in &lt;dictionary>, it goes back through that range and&#xA;derives additional break positions (if possible) using the dictionary.&#xA;&#xA;DictionaryBasedBreakIterator is also constructed with the filename of a dictionary&#xA;file.  It follows a prescribed search path to locate the dictionary (right now,&#xA;it looks for it in /com/ibm/text/resources in each directory in the classpath,&#xA;and won't find it in JAR files, but this location is likely to change).  The&#xA;dictionary file is in a serialized binary format.  We have a very primitive (and&#xA;slow) BuildDictionaryFile utility for creating dictionary files, but aren't&#xA;currently making it public.  Contact us for help.&#xA;" annotatedElement="2ef0358b-8740-4659-800c-8adfa610cc05"/>
            <generalization xmi:id="a935aa0c-5a60-4558-8bdb-43b08552845f" isSubstitutable="true" general="8d3d8cb7-f026-40f7-85e5-5b7f11440e7c"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d67d7593-4802-4ee3-b409-79adcdd0c56e" name="BreakDictionary" visibility="package">
            <ownedComment xmi:id="5a6915ff-7d91-4cf8-9f43-7c755f75dd17" body="This is the class that represents the list of known words used by&#xA;DictionaryBasedBreakIterator.  The conceptual data structure used&#xA;here is a trie: there is a node hanging off the root node for every&#xA;letter that can start a word.  Each of these nodes has a node hanging&#xA;off of it for every letter that can be the second letter of a word&#xA;if this node is the first letter, and so on.  The trie is represented&#xA;as a two-dimensional array that can be treated as a table of state&#xA;transitions.  Indexes are used to compress this array, taking&#xA;advantage of the fact that this array will always be very sparse.&#xA;" annotatedElement="d67d7593-4802-4ee3-b409-79adcdd0c56e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d492911c-92e0-437a-a11a-31d318b0a27a" name="Bidi" isLeaf="true">
            <ownedComment xmi:id="7c409dbb-6487-4ebe-98d9-93e14de22422" body="This class implements the Unicode Bidirectional Algorithm.&#xA;&lt;p>&#xA;A Bidi object provides information on the bidirectional reordering of the text&#xA;used to create it.  This is required, for example, to properly display Arabic&#xA;or Hebrew text.  These languages are inherently mixed directional, as they order&#xA;numbers from left-to-right while ordering most other text from right-to-left.&#xA;&lt;p>&#xA;Once created, a Bidi object can be queried to see if the text it represents is&#xA;all left-to-right or all right-to-left.  Such objects are very lightweight and&#xA;this text is relatively easy to process.&#xA;&lt;p>&#xA;If there are multiple runs of text, information about the runs can be accessed&#xA;by indexing to get the start, limit, and level of a run.  The level represents&#xA;both the direction and the 'nesting level' of a directional run.  Odd levels&#xA;are right-to-left, while even levels are left-to-right.  So for example level&#xA;0 represents left-to-right text, while level 1 represents right-to-left text, and&#xA;level 2 represents left-to-right text embedded in a right-to-left run.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="d492911c-92e0-437a-a11a-31d318b0a27a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ff17a735-68c6-4b68-8ec1-415cb027fe0f" name="AttributeEntry" visibility="package" clientDependency="aa515a12-0b6d-41e5-bd73-6558a8e0c350">
            <interfaceRealization xmi:id="aa515a12-0b6d-41e5-bd73-6558a8e0c350" name="" supplier="a2cdcc48-3430-4b6f-bc4f-d86c794149f7" client="ff17a735-68c6-4b68-8ec1-415cb027fe0f" contract="a2cdcc48-3430-4b6f-bc4f-d86c794149f7"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c016dff7-489d-4a46-b368-e78c845a1fac" name="DecimalFormatSymbols" clientDependency="0fc561d5-48f9-469d-907e-18f7b8e73e03 e3e28607-e40d-4efe-a040-27ab230774c7" isLeaf="true">
            <ownedComment xmi:id="f59db364-d4ca-42b2-b440-dc20b8099e04" body="This class represents the set of symbols (such as the decimal separator,&#xA;the grouping separator, and so on) needed by &lt;code>DecimalFormat&lt;/code>&#xA;to format numbers. &lt;code>DecimalFormat&lt;/code> creates for itself an instance of&#xA;&lt;code>DecimalFormatSymbols&lt;/code> from its locale data.  If you need to change any&#xA;of these symbols, you can get the &lt;code>DecimalFormatSymbols&lt;/code> object from&#xA;your &lt;code>DecimalFormat&lt;/code> and modify it.&#xA;&#xA;@see          java.util.Locale&#xA;@see          DecimalFormat&#xA;@version      1.41, 05/10/04&#xA;@author       Mark Davis&#xA;@author       Alan Liu&#xA;" annotatedElement="c016dff7-489d-4a46-b368-e78c845a1fac"/>
            <interfaceRealization xmi:id="e3e28607-e40d-4efe-a040-27ab230774c7" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="c016dff7-489d-4a46-b368-e78c845a1fac" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="0fc561d5-48f9-469d-907e-18f7b8e73e03" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="c016dff7-489d-4a46-b368-e78c845a1fac" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ae2c6d07-e755-4e77-941e-92d5d018897d" name="RBCollationTables" visibility="package" isLeaf="true">
            <ownedComment xmi:id="02291d82-f1d7-44a9-9def-5a21dedf1e06" body="This class contains the static state of a RuleBasedCollator: The various&#xA;tables that are used by the collation routines.  Several RuleBasedCollators&#xA;can share a single RBCollationTables object, easing memory requirements and&#xA;improving performance.&#xA;" annotatedElement="ae2c6d07-e755-4e77-941e-92d5d018897d"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="32a5f4bb-11e8-4e96-8093-ab209890e297" name="BuildAPI" visibility="package" isLeaf="true"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0bf6d859-ecf6-414a-875d-c32a623f66ad" name="CharacterIteratorFieldDelegate" visibility="package" clientDependency="5db27439-2450-481a-82d3-7e8ccf65fd27">
            <ownedComment xmi:id="523c7164-a230-45a2-995f-d3f588a34984" body="CharacterIteratorFieldDelegate combines the notifications from a Format&#xA;into a resulting &lt;code>AttributedCharacterIterator&lt;/code>. The resulting&#xA;&lt;code>AttributedCharacterIterator&lt;/code> can be retrieved by way of&#xA;the &lt;code>getIterator&lt;/code> method.&#xA;&#xA;@version 1.4 12/19/03&#xA;" annotatedElement="0bf6d859-ecf6-414a-875d-c32a623f66ad"/>
            <interfaceRealization xmi:id="5db27439-2450-481a-82d3-7e8ccf65fd27" name="" supplier="3dc6f06f-7804-4295-ba0e-cae99fabdc11" client="0bf6d859-ecf6-414a-875d-c32a623f66ad" contract="3dc6f06f-7804-4295-ba0e-cae99fabdc11"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8d6a3114-d3b5-478f-8db3-ad7cd3cf0a4f" name="MergeCollation" visibility="package" isLeaf="true">
            <ownedComment xmi:id="3efcb387-903e-4837-9530-6c4a57955f66" body="Utility class for normalizing and merging patterns for collation.&#xA;Patterns are strings of the form &lt;entry>*, where &lt;entry> has the&#xA;form:&#xA;&lt;pattern> := &lt;entry>&#xA;&lt;entry> := &lt;separator>&lt;chars>{&quot;/&quot;&lt;extension>}&#xA;&lt;separator> := &quot;=&quot;, &quot;,&quot;, &quot;;&quot;, &quot;&lt;&quot;, &quot;&amp;&quot;&#xA;&lt;chars>, and &lt;extension> are both arbitrary strings.&#xA;unquoted whitespaces are ignored.&#xA;'xxx' can be used to quote characters&#xA;One difference from Collator is that &amp; is used to reset to a current&#xA;point. Or, in other words, it introduces a new sequence which is to&#xA;be added to the old.&#xA;That is: &quot;a &lt; b &lt; c &lt; d&quot; is the same as &quot;a &lt; b &amp; b &lt; c &amp; c &lt; d&quot; OR&#xA;&quot;a &lt; b &lt; d &amp; b &lt; c&quot;&#xA;XXX: make '' be a single quote.&#xA;@see PatternEntry&#xA;@version    1.17 12/19/03&#xA;@author             Mark Davis, Helena Shih&#xA;" annotatedElement="8d6a3114-d3b5-478f-8db3-ad7cd3cf0a4f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f5dee5b5-f474-417a-abeb-8a74db30b02b" name="SpecialMapping" visibility="package" isLeaf="true"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="e59dd59a-d0e4-4517-97d8-4e478d25a7e6" name="nio">
          <packagedElement xmi:type="uml:Class" xmi:id="ba8a922d-0885-463f-a52e-b14e849e8684" name="HeapByteBuffer" visibility="package">
            <ownedComment xmi:id="89826b8b-0c40-4429-9fe8-a489f1049364" body="A read/write HeapByteBuffer.&#xA;" annotatedElement="ba8a922d-0885-463f-a52e-b14e849e8684"/>
            <generalization xmi:id="29fc08ff-a7b0-4669-b8ea-87e2994575e3" isSubstitutable="true" general="4eaf9f56-3d01-4280-a208-df721202f6f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="472450b7-28f8-4a02-b6ee-26fac457554b" name="ByteBufferAsFloatBufferB" visibility="package">
            <generalization xmi:id="81316e0a-8c4b-4d5f-92b7-df5ed8c401be" isSubstitutable="true" general="3317e581-02c3-4eec-bf92-1588209ed609"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0c935759-45a6-46ec-9330-3523ab36680c" name="HeapShortBuffer" visibility="package">
            <ownedComment xmi:id="6b66d50d-b210-434f-87a4-a9413ff585c8" body="A read/write HeapShortBuffer.&#xA;" annotatedElement="0c935759-45a6-46ec-9330-3523ab36680c"/>
            <generalization xmi:id="643eeae7-714b-4571-8faa-30ecf5bf80b5" isSubstitutable="true" general="38347dc2-2215-4670-9890-c9a2538f2289"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="62f6061a-40bc-47a8-bd25-f9452f4f3fb9" name="HeapCharBuffer" visibility="package">
            <ownedComment xmi:id="64c23e8e-d332-482e-8330-1ef4ad172dbf" body="A read/write HeapCharBuffer.&#xA;" annotatedElement="62f6061a-40bc-47a8-bd25-f9452f4f3fb9"/>
            <generalization xmi:id="13ed7f57-a982-4cdd-95c2-b055d32189fa" isSubstitutable="true" general="a4787598-15a7-437c-a0a4-b401bf308483"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="74f6d1eb-1a1b-44d8-baac-34898c4733fa" name="DirectCharBufferRU" visibility="package">
            <generalization xmi:id="8f3c52e7-7682-43bc-9bb4-e8f7937c2ba5" isSubstitutable="true" general="7346b18b-0b6c-460e-9e81-b9fa791509d1"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="66bfded3-c080-464e-9210-c686457f2762" name="HeapFloatBufferR" visibility="package">
            <ownedComment xmi:id="1f2109df-bd96-4066-b055-05eb52dd0659" body="A read-only HeapFloatBuffer.  This class extends the corresponding&#xA;read/write class, overriding the mutation methods to throw a {@link&#xA;ReadOnlyBufferException} and overriding the view-buffer methods to return an&#xA;instance of this class rather than of the superclass.&#xA;" annotatedElement="66bfded3-c080-464e-9210-c686457f2762"/>
            <generalization xmi:id="982ecd2c-5381-48e6-bf9f-206c5050bf0b" isSubstitutable="true" general="e381bc5f-c4ae-41ea-b160-280d36ffb468"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3317e581-02c3-4eec-bf92-1588209ed609" name="FloatBuffer" clientDependency="2897aacd-7ba5-42c6-896e-a859530014f7" isAbstract="true">
            <ownedComment xmi:id="d9488821-4a04-4f70-b76e-353bb176305f" body="A float buffer.&#xA;&#xA;&lt;p> This class defines four categories of operations upon&#xA;float buffers:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> Absolute and relative {@link #get() &lt;/code>&lt;i>get&lt;/i>&lt;code>} and&#xA;{@link #put(float) &lt;/code>&lt;i>put&lt;/i>&lt;code>} methods that read and write&#xA;single floats; &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Relative {@link #get(float[]) &lt;/code>&lt;i>bulk get&lt;/i>&lt;code>}&#xA;methods that transfer contiguous sequences of floats from this buffer&#xA;into an array; and&lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Relative {@link #put(float[]) &lt;/code>&lt;i>bulk put&lt;/i>&lt;code>}&#xA;methods that transfer contiguous sequences of floats from a&#xA;float array or some other float&#xA;buffer into this buffer;&amp;#32;and &lt;/p>&lt;/li>&#xA;&#xA;&#xA;&lt;li>&lt;p> Methods for {@link #compact &lt;/code>compacting&lt;code>}, {@link&#xA;#duplicate &lt;/code>duplicating&lt;code>}, and {@link #slice&#xA;&lt;/code>slicing&lt;code>} a float buffer.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p> Float buffers can be created either by {@link #allocate&#xA;&lt;/code>&lt;i>allocation&lt;/i>&lt;code>}, which allocates space for the buffer's&#xA;&#xA;&#xA;content, by {@link #wrap(float[]) &lt;/code>&lt;i>wrapping&lt;/i>&lt;code>} an existing&#xA;float array  into a buffer, or by creating a&#xA;&lt;a href=&quot;ByteBuffer.html#view&quot;>&lt;i>view&lt;/i>&lt;/a> of an existing byte buffer&#xA;&#xA;&#xA;&#xA;&#xA;&lt;p> Like a byte buffer, a float buffer is either &lt;a&#xA;href=&quot;ByteBuffer.html#direct&quot;>&lt;i>direct&lt;/i> or &lt;i>non-direct&lt;/i>&lt;/a>.  A&#xA;float buffer created via the &lt;tt>wrap&lt;/tt> methods of this class will&#xA;be non-direct.  A float buffer created as a view of a byte buffer will&#xA;be direct if, and only if, the byte buffer itself is direct.  Whether or not&#xA;a float buffer is direct may be determined by invoking the {@link&#xA;#isDirect isDirect} method.  &lt;/p>&#xA;&#xA;&#xA;&#xA;&#xA;&lt;p> Methods in this class that do not otherwise have a value to return are&#xA;specified to return the buffer upon which they are invoked.  This allows&#xA;method invocations to be chained.&#xA;&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.56, 04/07/16&#xA;@since 1.4&#xA;" annotatedElement="3317e581-02c3-4eec-bf92-1588209ed609"/>
            <generalization xmi:id="1f212a7c-6934-4a71-aae4-f451f2a50b60" isSubstitutable="true" general="f3bf1ee5-e390-4ce3-85d5-3c6fe94b2391"/>
            <interfaceRealization xmi:id="2897aacd-7ba5-42c6-896e-a859530014f7" name="" supplier="3acda3b0-da17-47fb-b48b-40d8e33c39a8" client="3317e581-02c3-4eec-bf92-1588209ed609" contract="3acda3b0-da17-47fb-b48b-40d8e33c39a8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e92a7f04-f22a-415f-a066-f5fe3da25252" name="ReadOnlyBufferException">
            <ownedComment xmi:id="f2045a0d-2ce0-4abf-8944-518df2a26f2c" body="Unchecked exception thrown when a content-mutation method such as&#xA;&lt;tt>put&lt;/tt> or &lt;tt>compact&lt;/tt> is invoked upon a read-only buffer.&#xA;&#xA;@version 1.14, 01/05/02&#xA;@since 1.4&#xA;" annotatedElement="e92a7f04-f22a-415f-a066-f5fe3da25252"/>
            <generalization xmi:id="9d9e2097-4b31-4c99-a690-2146c188a78e" isSubstitutable="true" general="f84657cb-3f68-473e-a4be-858306aab044"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="de892feb-a9e3-408d-94a1-83681a5c2447" name="DirectLongBufferS" visibility="package">
            <generalization xmi:id="7d0048f9-51a2-4663-bd26-a6ce5af34e5e" isSubstitutable="true" general="8d20592a-fd29-4546-9be9-dac230ff9392"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6146ab46-1689-4c50-9eba-dd795053087a" name="DirectIntBufferRS" visibility="package">
            <generalization xmi:id="07d38d79-7c89-49f3-a55a-f190afb15994" isSubstitutable="true" general="877e938c-66e6-48f8-8663-68f67a14c499"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="ebd16f7e-1ce5-47bf-a300-ae6ef04e09e3" name="channels">
            <packagedElement xmi:type="uml:Class" xmi:id="80e7b36b-cb37-471d-80e8-055cb7fd45aa" name="IllegalBlockingModeException">
              <ownedComment xmi:id="08ac3a47-fe35-4935-80d4-25e934c182c3" body="Unchecked exception thrown when a blocking-mode-specific operation&#xA;is invoked upon a channel in the incorrect blocking mode.&#xA;&#xA;@version 1.9, 01/11/19&#xA;@since 1.4&#xA;" annotatedElement="80e7b36b-cb37-471d-80e8-055cb7fd45aa"/>
              <generalization xmi:id="d666db90-a59d-4d41-8bb1-e28ab66838fd" isSubstitutable="true" general="f9e1d07d-a558-48c5-a45e-01540d385078"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="42a3ec10-f859-42a2-8678-81c017461ff4" name="IllegalSelectorException">
              <ownedComment xmi:id="03084215-9fa2-4095-9f0c-b6fadcb92eff" body="Unchecked exception thrown when an attempt is made to register a channel&#xA;with a selector that was not created by the provider that created the&#xA;channel.&#xA;&#xA;@version 1.9, 01/11/19&#xA;@since 1.4&#xA;" annotatedElement="42a3ec10-f859-42a2-8678-81c017461ff4"/>
              <generalization xmi:id="b40d4a5a-6c7b-40e7-bd71-66295f531a0b" isSubstitutable="true" general="015b8627-f5b5-477f-8717-4d7c48152015"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="b660e74c-cc26-4a3f-b118-324e4615636b" name="WritableByteChannel" isAbstract="true">
              <ownedComment xmi:id="e28beadb-77c4-4ccc-9bac-e6c648efa42c" body="A channel that can write bytes.&#xA;&#xA;&lt;p> Only one write operation upon a writable channel may be in progress at&#xA;any given time.  If one thread initiates a write operation upon a channel&#xA;then any other thread that attempts to initiate another write operation will&#xA;block until the first operation is complete.  Whether or not other kinds of&#xA;I/O operations may proceed concurrently with a write operation depends upon&#xA;the type of the channel. &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.15, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="b660e74c-cc26-4a3f-b118-324e4615636b"/>
              <generalization xmi:id="24a1240e-a846-4335-8808-22169cdd14df" isSubstitutable="true" general="72c61627-0aa7-4afb-8937-accf0a5c6055"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="fe7990e5-e53c-4eb3-a59f-77785eb60198" name="FileLockInterruptionException">
              <ownedComment xmi:id="55b95d71-f68b-4bca-a5ef-f65284146a83" body="Checked exception received by a thread when another thread interrupts it&#xA;while it is waiting to acquire a file lock.  Before this exception is thrown&#xA;the interrupt status of the previously-blocked thread will have been set.&#xA;&#xA;@version 1.9, 01/11/19&#xA;@since 1.4&#xA;" annotatedElement="fe7990e5-e53c-4eb3-a59f-77785eb60198"/>
              <generalization xmi:id="30bf532a-bbad-43db-aa21-c1331e9ed080" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="f4aaf231-0b99-406c-912d-a64ddc1f0c73" name="ByteChannel" isAbstract="true">
              <ownedComment xmi:id="0f585f1f-cc96-4258-bbc5-2d5ab78f9f27" body="A channel that can read and write bytes.  This interface simply unifies&#xA;{@link ReadableByteChannel} and {@link WritableByteChannel}; it does not&#xA;specify any new operations.&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.10, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="f4aaf231-0b99-406c-912d-a64ddc1f0c73"/>
              <generalization xmi:id="243bc66a-bf4a-461d-8c23-cb215a62aaf6" isSubstitutable="true" general="354820cf-f82c-4f33-bcfc-6618e2e6c58b"/>
              <generalization xmi:id="05aa33e7-6d10-4f30-b781-6a36b4cb8b89" isSubstitutable="true" general="b660e74c-cc26-4a3f-b118-324e4615636b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d0411c18-d2a0-4ab7-8a21-c6bf40cb2989" name="ClosedByInterruptException">
              <ownedComment xmi:id="03143d13-4f51-4ec3-90a8-fe61dfcf6553" body="Checked exception received by a thread when another thread interrupts it&#xA;while it is blocked in an I/O operation upon a channel.  Before this&#xA;exception is thrown the channel will have been closed and the interrupt&#xA;status of the previously-blocked thread will have been set.&#xA;&#xA;@version 1.9, 01/11/19&#xA;@since 1.4&#xA;" annotatedElement="d0411c18-d2a0-4ab7-8a21-c6bf40cb2989"/>
              <generalization xmi:id="c5b9d44b-285f-4e9d-af5d-5b53b4a8e75d" isSubstitutable="true" general="3cafd3c7-66fc-437e-aa50-2a97c846f866"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5faabdd7-c013-4630-b60d-1f4032f9cb0d" name="DatagramChannel" clientDependency="dc3b2630-f9fc-44cf-9d08-fe147f073ba6 d37c6955-a980-43c9-9624-6d922845f68a d4b77ec8-9964-4f47-a011-5dfc09187c7c" isAbstract="true">
              <ownedComment xmi:id="6fd886a0-f89b-4cee-9e52-d16f147d4057" body="A selectable channel for datagram-oriented sockets.&#xA;&#xA;&#xA;&lt;p> Datagram channels are not a complete abstraction of network datagram&#xA;sockets.  Binding and the manipulation of socket options must be done&#xA;through an associated {@link java.net.DatagramSocket} object obtained by&#xA;invoking the {@link #socket() socket} method.  It is not possible to create&#xA;a channel for an arbitrary, pre-existing datagram socket, nor is it possible&#xA;to specify the {@link java.net.DatagramSocketImpl} object to be used by a&#xA;datagram socket associated with a datagram channel.&#xA;&#xA;&lt;p> A datagram channel is created by invoking the {@link #open open} method&#xA;of this class.  A newly-created datagram channel is open but not connected.&#xA;A datagram channel need not be connected in order for the {@link #send send}&#xA;and {@link #receive receive} methods to be used.  A datagram channel may be&#xA;connected, by invoking its {@link #connect connect} method, in order to&#xA;avoid the overhead of the security checks are otherwise performed as part of&#xA;every send and receive operation.  A datagram channel must be connected in&#xA;order to use the {@link #read(java.nio.ByteBuffer) read} and {@link&#xA;#write(java.nio.ByteBuffer) write} methods, since those methods do not&#xA;accept or return socket addresses.&#xA;&#xA;&lt;p> Once connected, a datagram channel remains connected until it is&#xA;disconnected or closed.  Whether or not a datagram channel is connected may&#xA;be determined by invoking its {@link #isConnected isConnected} method.&#xA;&#xA;&lt;p> Datagram channels are safe for use by multiple concurrent threads.  They&#xA;support concurrent reading and writing, though at most one thread may be&#xA;reading and at most one thread may be writing at any given time.  &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.32, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="5faabdd7-c013-4630-b60d-1f4032f9cb0d"/>
              <generalization xmi:id="87fb3161-a697-46b1-a1f2-1433186a8fd9" isSubstitutable="true" general="5bc8a066-83eb-4e5d-b841-315ba4b0c99a"/>
              <interfaceRealization xmi:id="d4b77ec8-9964-4f47-a011-5dfc09187c7c" name="" supplier="f4aaf231-0b99-406c-912d-a64ddc1f0c73" client="5faabdd7-c013-4630-b60d-1f4032f9cb0d" contract="f4aaf231-0b99-406c-912d-a64ddc1f0c73"/>
              <interfaceRealization xmi:id="dc3b2630-f9fc-44cf-9d08-fe147f073ba6" name="" supplier="de4a14d1-4f1f-4255-b10e-2b538f30388b" client="5faabdd7-c013-4630-b60d-1f4032f9cb0d" contract="de4a14d1-4f1f-4255-b10e-2b538f30388b"/>
              <interfaceRealization xmi:id="d37c6955-a980-43c9-9624-6d922845f68a" name="" supplier="8f2f0cd1-b4bc-47c1-b5ba-19c68a49ab23" client="5faabdd7-c013-4630-b60d-1f4032f9cb0d" contract="8f2f0cd1-b4bc-47c1-b5ba-19c68a49ab23"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e0cd824c-343e-4d26-9def-f826a7760886" name="ClosedChannelException">
              <ownedComment xmi:id="0ae72a9f-9dd2-4ad6-86e0-5515ac97f8e7" body="Checked exception thrown when an attempt is made to invoke or complete an&#xA;I/O operation upon channel that is closed, or at least closed to that&#xA;operation.  That this exception is thrown does not necessarily imply that&#xA;the channel is completely closed.  A socket channel whose write half has&#xA;been shut down, for example, may still be open for reading.&#xA;&#xA;@version 1.9, 01/11/19&#xA;@since 1.4&#xA;" annotatedElement="e0cd824c-343e-4d26-9def-f826a7760886"/>
              <generalization xmi:id="8cb706cc-6afa-43d7-9ce3-eda81ee96c8f" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d8e37edd-d0d0-4c29-8874-faf31ba71637" name="ServerSocketChannel" isAbstract="true">
              <ownedComment xmi:id="788d7fac-4a0f-4aef-9ec2-7508af35beea" body="A selectable channel for stream-oriented listening sockets.&#xA;&#xA;&lt;p> Server-socket channels are not a complete abstraction of listening&#xA;network sockets.  Binding and the manipulation of socket options must be&#xA;done through an associated {@link java.net.ServerSocket} object obtained by&#xA;invoking the {@link #socket() socket} method.  It is not possible to create&#xA;a channel for an arbitrary, pre-existing server socket, nor is it possible&#xA;to specify the {@link java.net.SocketImpl} object to be used by a server&#xA;socket associated with a server-socket channel.&#xA;&#xA;&lt;p> A server-socket channel is created by invoking the {@link #open() open}&#xA;method of this class.  A newly-created server-socket channel is open but not&#xA;yet bound.  An attempt to invoke the {@link #accept() accept} method of an&#xA;unbound server-socket channel will cause a {@link NotYetBoundException} to&#xA;be thrown.  A server-socket channel can be bound by invoking one of the&#xA;{@link java.net.ServerSocket#bind(java.net.SocketAddress,int) bind} methods&#xA;of an associated server socket.&#xA;&#xA;&lt;p> Server-socket channels are safe for use by multiple concurrent threads.&#xA;&lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.24, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="d8e37edd-d0d0-4c29-8874-faf31ba71637"/>
              <generalization xmi:id="1c8ed828-4a20-4b87-99f0-6b9fd7b1862e" isSubstitutable="true" general="5bc8a066-83eb-4e5d-b841-315ba4b0c99a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="354820cf-f82c-4f33-bcfc-6618e2e6c58b" name="ReadableByteChannel" isAbstract="true">
              <ownedComment xmi:id="b507399f-0b7b-41f1-9bf0-31eb7f87f856" body="A channel that can read bytes.&#xA;&#xA;&lt;p> Only one read operation upon a readable channel may be in progress at&#xA;any given time.  If one thread initiates a read operation upon a channel&#xA;then any other thread that attempts to initiate another read operation will&#xA;block until the first operation is complete.  Whether or not other kinds of&#xA;I/O operations may proceed concurrently with a read operation depends upon&#xA;the type of the channel. &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.16, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="354820cf-f82c-4f33-bcfc-6618e2e6c58b"/>
              <generalization xmi:id="90117844-fdf5-40e2-8bad-1946e3b413c9" isSubstitutable="true" general="72c61627-0aa7-4afb-8937-accf0a5c6055"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="fe3e873c-07da-426e-8d89-86152bbd676e" name="CancelledKeyException">
              <ownedComment xmi:id="ff2a78d0-c5c8-45e9-b5f0-e9cbfc9b87de" body="Unchecked exception thrown when an attempt is made to use&#xA;a selection key that is no longer valid.&#xA;&#xA;@version 1.9, 01/11/19&#xA;@since 1.4&#xA;" annotatedElement="fe3e873c-07da-426e-8d89-86152bbd676e"/>
              <generalization xmi:id="79f84048-16f2-4c2b-b1fe-e719c6d8178f" isSubstitutable="true" general="f9e1d07d-a558-48c5-a45e-01540d385078"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="427e9bd1-f0af-413f-91a2-3c0c8b0cb0d0" name="UnresolvedAddressException">
              <ownedComment xmi:id="5a19acc3-f4bd-4e2a-9289-8f44cb868b15" body="Unchecked exception thrown when an attempt is made to invoke a network&#xA;operation upon an unresolved socket address.&#xA;&#xA;@version 1.9, 01/11/19&#xA;@since 1.4&#xA;" annotatedElement="427e9bd1-f0af-413f-91a2-3c0c8b0cb0d0"/>
              <generalization xmi:id="136bce02-4bb0-456b-bac9-4ef3d64d350f" isSubstitutable="true" general="015b8627-f5b5-477f-8717-4d7c48152015"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a58f8d3b-74f9-4f58-92c7-c03f3268cac9" name="FileLock" isAbstract="true">
              <ownedComment xmi:id="447df2c3-be37-4f3d-99ff-520b60bd4fe3" body="A token representing a lock on a region of a file.&#xA;&#xA;&lt;p> A file-lock object is created each time a lock is acquired on a file via&#xA;one of the {@link FileChannel#lock(long,long,boolean) lock} or {@link&#xA;FileChannel#tryLock(long,long,boolean) tryLock} methods of the {@link&#xA;FileChannel} class.&#xA;&#xA;&lt;p> A file-lock object is initially valid.  It remains valid until the lock&#xA;is released by invoking the {@link #release release} method, by closing the&#xA;channel that was used to acquire it, or by the termination of the Java&#xA;virtual machine, whichever comes first.  The validity of a lock may be&#xA;tested by invoking its {@link #isValid isValid} method.&#xA;&#xA;&lt;p> A file lock is either &lt;i>exclusive&lt;/i> or &lt;i>shared&lt;/i>.  A shared lock&#xA;prevents other concurrently-running programs from acquiring an overlapping&#xA;exclusive lock, but does allow them to acquire overlapping shared locks.  An&#xA;exclusive lock prevents other programs from acquiring an overlapping lock of&#xA;either type.  Once it is released, a lock has no further effect on the locks&#xA;that may be acquired by other programs.&#xA;&#xA;&lt;p> Whether a lock is exclusive or shared may be determined by invoking its&#xA;{@link #isShared isShared} method.  Some platforms do not support shared&#xA;locks, in which case a request for a shared lock is automatically converted&#xA;into a request for an exclusive lock.&#xA;&#xA;&lt;p> The locks held on a particular file by a single Java virtual machine do&#xA;not overlap.  The {@link #overlaps overlaps} method may be used to test&#xA;whether a candidate lock range overlaps an existing lock.&#xA;&#xA;&lt;p> A file-lock object records the file channel upon whose file the lock is&#xA;held, the type and validity of the lock, and the position and size of the&#xA;locked region.  Only the validity of a lock is subject to change over time;&#xA;all other aspects of a lock's state are immutable.&#xA;&#xA;&lt;p> File locks are held on behalf of the entire Java virtual machine.&#xA;They are not suitable for controlling access to a file by multiple&#xA;threads within the same virtual machine.&#xA;&#xA;&lt;p> File-lock objects are safe for use by multiple concurrent threads.&#xA;&#xA;&#xA;&lt;a name=&quot;pdep&quot;>&#xA;&lt;h4> Platform dependencies &lt;/h4>&#xA;&#xA;&lt;p> This file-locking API is intended to map directly to the native locking&#xA;facility of the underlying operating system.  Thus the locks held on a file&#xA;should be visible to all programs that have access to the file, regardless&#xA;of the language in which those programs are written.&#xA;&#xA;&lt;p> Whether or not a lock actually prevents another program from accessing&#xA;the content of the locked region is system-dependent and therefore&#xA;unspecified.  The native file-locking facilities of some systems are merely&#xA;&lt;i>advisory&lt;/i>, meaning that programs must cooperatively observe a known&#xA;locking protocol in order to guarantee data integrity.  On other systems&#xA;native file locks are &lt;i>mandatory&lt;/i>, meaning that if one program locks a&#xA;region of a file then other programs are actually prevented from accessing&#xA;that region in a way that would violate the lock.  On yet other systems,&#xA;whether native file locks are advisory or mandatory is configurable on a&#xA;per-file basis.  To ensure consistent and correct behavior across platforms,&#xA;it is strongly recommended that the locks provided by this API be used as if&#xA;they were advisory locks.&#xA;&#xA;&lt;p> On some systems, acquiring a mandatory lock on a region of a file&#xA;prevents that region from being {@link java.nio.channels.FileChannel#map&#xA;&lt;/code>mapped into memory&lt;code>}, and vice versa.  Programs that combine&#xA;locking and mapping should be prepared for this combination to fail.&#xA;&#xA;&lt;p> On some systems, closing a channel releases all locks held by the Java&#xA;virtual machine on the underlying file regardless of whether the locks were&#xA;acquired via that channel or via another channel open on the same file.  It&#xA;is strongly recommended that, within a program, a unique channel be used to&#xA;acquire all locks on any given file.&#xA;&#xA;&lt;p> Some network filesystems permit file locking to be used with&#xA;memory-mapped files only when the locked regions are page-aligned and a&#xA;whole multiple of the underlying hardware's page size.  Some network&#xA;filesystems do not implement file locks on regions that extend past a&#xA;certain position, often 2&lt;sup>30&lt;/sup> or 2&lt;sup>31&lt;/sup>.  In general, great&#xA;care should be taken when locking files that reside on network filesystems.&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.8, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="a58f8d3b-74f9-4f58-92c7-c03f3268cac9"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="aebd26a1-51d6-491b-b09c-6af99b82545a" name="Pipe" isAbstract="true">
              <ownedComment xmi:id="99e57d54-ac89-4126-9c1f-9b68df7045ce" body="A pair of channels that implements a unidirectional pipe.&#xA;&#xA;&lt;p> A pipe consists of a pair of channels: A writable {@link&#xA;Pipe.SinkChannel &lt;/code>sink&lt;code>} channel and a readable {@link&#xA;Pipe.SourceChannel &lt;/code>source&lt;code>} channel.  Once some bytes are&#xA;written to the sink channel they can be read from source channel in exactly&#xA;the order in which they were written.&#xA;&#xA;&lt;p> Whether or not a thread writing bytes to a pipe will block until another&#xA;thread reads those bytes, or some previously-written bytes, from the pipe is&#xA;system-dependent and therefore unspecified.  Many pipe implementations will&#xA;buffer up to a certain number of bytes between the sink and source channels,&#xA;but such buffering should not be assumed.  &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.20, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="aebd26a1-51d6-491b-b09c-6af99b82545a"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="9e6066b7-3054-4790-9938-cd6b676b469d" name="SourceChannel" clientDependency="a78ee34d-0f8c-49d6-b1e9-f549c688b3c3 c8070f9d-afb2-43f5-ab81-fe2c0a1e0435" isAbstract="true">
                <ownedComment xmi:id="24e86d48-7fd5-4260-8703-4f89e97198e8" body="A channel representing the readable end of a {@link Pipe}.  &lt;/p>&#xA;&#xA;@since 1.4&#xA;" annotatedElement="9e6066b7-3054-4790-9938-cd6b676b469d"/>
                <generalization xmi:id="339e6eec-99a3-4314-ac2e-59d958a40c14" isSubstitutable="true" general="5bc8a066-83eb-4e5d-b841-315ba4b0c99a"/>
                <interfaceRealization xmi:id="c8070f9d-afb2-43f5-ab81-fe2c0a1e0435" name="" supplier="354820cf-f82c-4f33-bcfc-6618e2e6c58b" client="9e6066b7-3054-4790-9938-cd6b676b469d" contract="354820cf-f82c-4f33-bcfc-6618e2e6c58b"/>
                <interfaceRealization xmi:id="a78ee34d-0f8c-49d6-b1e9-f549c688b3c3" name="" supplier="de4a14d1-4f1f-4255-b10e-2b538f30388b" client="9e6066b7-3054-4790-9938-cd6b676b469d" contract="de4a14d1-4f1f-4255-b10e-2b538f30388b"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="9af3e9d6-eabe-4960-97b3-7aba2885e64e" name="SinkChannel" clientDependency="20ab3bd0-01a2-480b-969f-ebb637ce635f 5968df96-a325-4383-8311-882191061216" isAbstract="true">
                <ownedComment xmi:id="69b8ac4f-354e-4aac-b097-620929571334" body="A channel representing the writable end of a {@link Pipe}.  &lt;/p>&#xA;&#xA;@since 1.4&#xA;" annotatedElement="9af3e9d6-eabe-4960-97b3-7aba2885e64e"/>
                <generalization xmi:id="fd38f11d-ecc2-41f0-a60a-3c9d3e5419c1" isSubstitutable="true" general="5bc8a066-83eb-4e5d-b841-315ba4b0c99a"/>
                <interfaceRealization xmi:id="20ab3bd0-01a2-480b-969f-ebb637ce635f" name="" supplier="b660e74c-cc26-4a3f-b118-324e4615636b" client="9af3e9d6-eabe-4960-97b3-7aba2885e64e" contract="b660e74c-cc26-4a3f-b118-324e4615636b"/>
                <interfaceRealization xmi:id="5968df96-a325-4383-8311-882191061216" name="" supplier="8f2f0cd1-b4bc-47c1-b5ba-19c68a49ab23" client="9af3e9d6-eabe-4960-97b3-7aba2885e64e" contract="8f2f0cd1-b4bc-47c1-b5ba-19c68a49ab23"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="3de5ca70-9a40-42bc-a59a-3599cfccdd8f" name="NotYetConnectedException">
              <ownedComment xmi:id="dab40f5e-4688-4a05-837c-ba723a077109" body="Unchecked exception thrown when an attempt is made to invoke an I/O&#xA;operation upon a socket channel that is not yet connected.&#xA;&#xA;@version 1.9, 01/11/19&#xA;@since 1.4&#xA;" annotatedElement="3de5ca70-9a40-42bc-a59a-3599cfccdd8f"/>
              <generalization xmi:id="01510e52-2c1a-4a42-9056-f9e5b4bd5cdd" isSubstitutable="true" general="f9e1d07d-a558-48c5-a45e-01540d385078"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5b7bcca9-7799-4f8d-98e6-2a0f27a71afc" name="SelectableChannel" clientDependency="0dca2002-95f4-436b-8b0f-0cf805d0f072" isAbstract="true">
              <ownedComment xmi:id="4c39f314-1a65-48e2-b359-b61bbdd67e76" body="A channel that can be multiplexed via a {@link Selector}.&#xA;&#xA;&lt;p> In order to be used with a selector, an instance of this class must&#xA;first be &lt;i>registered&lt;/i> via the {@link #register(Selector,int,Object)&#xA;register} method.  This method returns a new {@link SelectionKey} object&#xA;that represents the channel's registration with the selector.&#xA;&#xA;&lt;p> Once registered with a selector, a channel remains registered until it&#xA;is &lt;i>deregistered&lt;/i>.  This involves deallocating whatever resources were&#xA;allocated to the channel by the selector.&#xA;&#xA;&lt;p> A channel cannot be deregistered directly; instead, the key representing&#xA;its registration must be &lt;i>cancelled&lt;/i>.  Cancelling a key requests that&#xA;the channel be deregistered during the selector's next selection operation.&#xA;A key may be cancelled explicitly by invoking its {@link&#xA;SelectionKey#cancel() cancel} method.  All of a channel's keys are cancelled&#xA;implicitly when the channel is closed, whether by invoking its {@link&#xA;Channel#close close} method or by interrupting a thread blocked in an I/O&#xA;operation upon the channel.&#xA;&#xA;&lt;p> If the selector itself is closed then the channel will be deregistered,&#xA;and the key representing its registration will be invalidated, without&#xA;further delay.&#xA;&#xA;&lt;p> A channel may be registered at most once with any particular selector.&#xA;&#xA;&lt;p> Whether or not a channel is registered with one or more selectors may be&#xA;determined by invoking the {@link #isRegistered isRegistered} method.&#xA;&#xA;&lt;p> Selectable channels are safe for use by multiple concurrent&#xA;threads. &lt;/p>&#xA;&#xA;&#xA;&lt;a name=&quot;bm&quot;>&#xA;&lt;h4>Blocking mode&lt;/h4>&#xA;&#xA;A selectable channel is either in &lt;i>blocking&lt;/i> mode or in&#xA;&lt;i>non-blocking&lt;/i> mode.  In blocking mode, every I/O operation invoked&#xA;upon the channel will block until it completes.  In non-blocking mode an I/O&#xA;operation will never block and may transfer fewer bytes than were requested&#xA;or possibly no bytes at all.  The blocking mode of a selectable channel may&#xA;be determined by invoking its {@link #isBlocking isBlocking} method.&#xA;&#xA;&lt;p> Newly-created selectable channels are always in blocking mode.&#xA;Non-blocking mode is most useful in conjunction with selector-based&#xA;multiplexing.  A channel must be placed into non-blocking mode before being&#xA;registered with a selector, and may not be returned to blocking mode until&#xA;it has been deregistered.&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.34, 03/12/19&#xA;@since 1.4&#xA;&#xA;@see SelectionKey&#xA;@see Selector&#xA;" annotatedElement="5b7bcca9-7799-4f8d-98e6-2a0f27a71afc"/>
              <generalization xmi:id="075e7b3f-3cc0-45fe-873b-02c589b57e30" isSubstitutable="true" general="6ce11139-f44c-4a90-baeb-8815657a7cd8"/>
              <interfaceRealization xmi:id="0dca2002-95f4-436b-8b0f-0cf805d0f072" name="" supplier="72c61627-0aa7-4afb-8937-accf0a5c6055" client="5b7bcca9-7799-4f8d-98e6-2a0f27a71afc" contract="72c61627-0aa7-4afb-8937-accf0a5c6055"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5382ac10-fe4f-4668-8028-a78cb12072a9" name="SocketChannel" clientDependency="00dff21d-24f7-4405-bb8d-44a2d385dbdb 0cfffb40-97af-4367-9199-a07fe66cd10f b960e03f-5e03-444c-9368-1631cba800d3" isAbstract="true">
              <ownedComment xmi:id="4ce947d1-bfa4-47af-8e5b-c86a5469a8e7" body="A selectable channel for stream-oriented connecting sockets.&#xA;&#xA;&lt;p> Socket channels are not a complete abstraction of connecting network&#xA;sockets.  Binding, shutdown, and the manipulation of socket options must be&#xA;done through an associated {@link java.net.Socket} object obtained by&#xA;invoking the {@link #socket() socket} method.  It is not possible to create&#xA;a channel for an arbitrary, pre-existing socket, nor is it possible to&#xA;specify the {@link java.net.SocketImpl} object to be used by a socket&#xA;associated with a socket channel.&#xA;&#xA;&lt;p> A socket channel is created by invoking one of the {@link #open open}&#xA;methods of this class.  A newly-created socket channel is open but not yet&#xA;connected.  An attempt to invoke an I/O operation upon an unconnected&#xA;channel will cause a {@link NotYetConnectedException} to be thrown.  A&#xA;socket channel can be connected by invoking its {@link #connect connect}&#xA;method; once connected, a socket channel remains connected until it is&#xA;closed.  Whether or not a socket channel is connected may be determined by&#xA;invoking its {@link #isConnected isConnected} method.&#xA;&#xA;&lt;p> Socket channels support &lt;i>non-blocking connection:&lt;/i>&amp;nbsp;A socket&#xA;channel may be created and the process of establishing the link to the&#xA;remote socket may be initiated via the {@link #connect connect} method for&#xA;later completion by the {@link #finishConnect finishConnect} method.&#xA;Whether or not a connection operation is in progress may be determined by&#xA;invoking the {@link #isConnectionPending isConnectionPending} method.&#xA;&#xA;&lt;p> The input and output sides of a socket channel may independently be&#xA;&lt;i>shut down&lt;/i> without actually closing the channel.  Shutting down the&#xA;input side of a channel by invoking the {@link java.net.Socket#shutdownInput&#xA;shutdownInput} method of an associated socket object will cause further&#xA;reads on the channel to return &lt;tt>-1&lt;/tt>, the end-of-stream indication.&#xA;Shutting down the output side of the channel by invoking the {@link&#xA;java.net.Socket#shutdownOutput shutdownOutput} method of an associated&#xA;socket object will cause further writes on the channel to throw a {@link&#xA;ClosedChannelException}.&#xA;&#xA;&lt;p> Socket channels support &lt;i>asynchronous shutdown,&lt;/i> which is similar&#xA;to the asynchronous close operation specified in the {@link Channel} class.&#xA;If the input side of a socket is shut down by one thread while another&#xA;thread is blocked in a read operation on the socket's channel, then the read&#xA;operation in the blocked thread will complete without reading any bytes and&#xA;will return &lt;tt>-1&lt;/tt>.  If the output side of a socket is shut down by one&#xA;thread while another thread is blocked in a write operation on the socket's&#xA;channel, then the blocked thread will receive an {@link&#xA;AsynchronousCloseException}.&#xA;&#xA;&lt;p> Socket channels are safe for use by multiple concurrent threads.  They&#xA;support concurrent reading and writing, though at most one thread may be&#xA;reading and at most one thread may be writing at any given time.  The {@link&#xA;#connect connect} and {@link #finishConnect finishConnect} methods are&#xA;mutually synchronized against each other, and an attempt to initiate a read&#xA;or write operation while an invocation of one of these methods is in&#xA;progress will block until that invocation is complete.  &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.33, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="5382ac10-fe4f-4668-8028-a78cb12072a9"/>
              <generalization xmi:id="2191d5f5-a43c-4cc8-a886-12056ebe9060" isSubstitutable="true" general="5bc8a066-83eb-4e5d-b841-315ba4b0c99a"/>
              <interfaceRealization xmi:id="0cfffb40-97af-4367-9199-a07fe66cd10f" name="" supplier="f4aaf231-0b99-406c-912d-a64ddc1f0c73" client="5382ac10-fe4f-4668-8028-a78cb12072a9" contract="f4aaf231-0b99-406c-912d-a64ddc1f0c73"/>
              <interfaceRealization xmi:id="b960e03f-5e03-444c-9368-1631cba800d3" name="" supplier="de4a14d1-4f1f-4255-b10e-2b538f30388b" client="5382ac10-fe4f-4668-8028-a78cb12072a9" contract="de4a14d1-4f1f-4255-b10e-2b538f30388b"/>
              <interfaceRealization xmi:id="00dff21d-24f7-4405-bb8d-44a2d385dbdb" name="" supplier="8f2f0cd1-b4bc-47c1-b5ba-19c68a49ab23" client="5382ac10-fe4f-4668-8028-a78cb12072a9" contract="8f2f0cd1-b4bc-47c1-b5ba-19c68a49ab23"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="72c61627-0aa7-4afb-8937-accf0a5c6055" name="Channel" isAbstract="true">
              <ownedComment xmi:id="63abbe48-1d0b-4e43-be63-2e6f48332f72" body="A nexus for I/O operations.&#xA;&#xA;&lt;p> A channel represents an open connection to an entity such as a hardware&#xA;device, a file, a network socket, or a program component that is capable of&#xA;performing one or more distinct I/O operations, for example reading or&#xA;writing.&#xA;&#xA;&lt;p> A channel is either open or closed.  A channel is open upon creation,&#xA;and once closed it remains closed.  Once a channel is closed, any attempt to&#xA;invoke an I/O operation upon it will cause a {@link ClosedChannelException}&#xA;to be thrown.  Whether or not a channel is open may be tested by invoking&#xA;its {@link #isOpen isOpen} method.&#xA;&#xA;&lt;p> Channels are, in general, intended to be safe for multithreaded access&#xA;as described in the specifications of the interfaces and classes that extend&#xA;and implement this interface.&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.18, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="72c61627-0aa7-4afb-8937-accf0a5c6055"/>
              <generalization xmi:id="241e2751-ff91-4450-810e-1c9dab5f7a87" isSubstitutable="true" general="3c998d9c-d5c5-4e4f-b879-d51904b00107"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="8a7ebe2a-6bce-4477-8208-1398eaab4114" name="InterruptibleChannel" isAbstract="true">
              <ownedComment xmi:id="71d4d460-ff55-415f-9bcf-c87230739d0d" body="A channel that can be asynchronously closed and interrupted.&#xA;&#xA;&lt;p> A channel that implements this interface is &lt;i>asynchronously&#xA;closeable:&lt;/i> If a thread is blocked in an I/O operation on an&#xA;interruptible channel then another thread may invoke the channel's {@link&#xA;#close close} method.  This will cause the blocked thread to receive an&#xA;{@link AsynchronousCloseException}.&#xA;&#xA;&lt;p> A channel that implements this interface is also &lt;i>interruptible:&lt;/i>&#xA;If a thread is blocked in an I/O operation on an interruptible channel then&#xA;another thread may invoke the blocked thread's {@link Thread#interrupt()&#xA;interrupt} method.  This will cause the channel to be closed, the blocked&#xA;thread to receive a {@link ClosedByInterruptException}, and the blocked&#xA;thread's interrupt status to be set.&#xA;&#xA;&lt;p> If a thread's interrupt status is already set and it invokes a blocking&#xA;I/O operation upon a channel then the channel will be closed and the thread&#xA;will immediately receive a {@link ClosedByInterruptException}; its interrupt&#xA;status will remain set.&#xA;&#xA;&lt;p> A channel supports asynchronous closing and interruption if, and only&#xA;if, it implements this interface.  This can be tested at runtime, if&#xA;necessary, via the &lt;tt>instanceof&lt;/tt> operator.&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.5, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="8a7ebe2a-6bce-4477-8208-1398eaab4114"/>
              <generalization xmi:id="bb7bc29a-f39f-4f13-b7bc-77665f8cf8f0" isSubstitutable="true" general="72c61627-0aa7-4afb-8937-accf0a5c6055"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="055d838b-4f59-4225-97d7-03b1b46b106e" name="NoConnectionPendingException">
              <ownedComment xmi:id="fa7af595-7317-43cb-a1a9-485e22829ea5" body="Unchecked exception thrown when the {@link SocketChannel#finishConnect&#xA;finishConnect} method of a {@link SocketChannel} is invoked without first&#xA;successfully invoking its {@link SocketChannel#connect connect} method.&#xA;&#xA;@version 1.9, 01/11/19&#xA;@since 1.4&#xA;" annotatedElement="055d838b-4f59-4225-97d7-03b1b46b106e"/>
              <generalization xmi:id="76797bdb-9a38-405e-97b0-e192b2589049" isSubstitutable="true" general="f9e1d07d-a558-48c5-a45e-01540d385078"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b48cd5df-eef8-4eea-8a59-7801c02fa9ad" name="ClosedSelectorException">
              <ownedComment xmi:id="ed053bdf-b604-469b-b8cb-8f34c9b76ad3" body="Unchecked exception thrown when an attempt is made to invoke an I/O&#xA;operation upon a closed selector.&#xA;&#xA;@version 1.9, 01/11/19&#xA;@since 1.4&#xA;" annotatedElement="b48cd5df-eef8-4eea-8a59-7801c02fa9ad"/>
              <generalization xmi:id="4b3c8e92-ca46-40df-8b63-f6fd1156fc56" isSubstitutable="true" general="f9e1d07d-a558-48c5-a45e-01540d385078"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="8f2f0cd1-b4bc-47c1-b5ba-19c68a49ab23" name="GatheringByteChannel" isAbstract="true">
              <ownedComment xmi:id="85fd7ba1-ee70-479c-ac3b-a4ffd34df930" body="A channel that can write bytes from a sequence of buffers.&#xA;&#xA;&lt;p> A &lt;i>gathering&lt;/i> write operation writes, in a single invocation, a&#xA;sequence of bytes from one or more of a given sequence of buffers.&#xA;Gathering writes are often useful when implementing network protocols or&#xA;file formats that, for example, group data into segments consisting of one&#xA;or more fixed-length headers followed by a variable-length body.  Similar&#xA;&lt;i>scattering&lt;/i> read operations are defined in the {@link&#xA;ScatteringByteChannel} interface.  &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.12, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="8f2f0cd1-b4bc-47c1-b5ba-19c68a49ab23"/>
              <generalization xmi:id="692eaf1b-3d1a-43fd-b500-2c5cf01805b0" isSubstitutable="true" general="b660e74c-cc26-4a3f-b118-324e4615636b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1fd6eb98-efa1-4b8d-97a0-271fad1f5006" name="SelectionKey" isAbstract="true">
              <ownedComment xmi:id="7c908b6d-6c09-482c-aa73-efec036fdc39" body="A token representing the registration of a {@link SelectableChannel} with a&#xA;{@link Selector}.&#xA;&#xA;&lt;p> A selection key is created each time a channel is registered with a&#xA;selector.  A key remains valid until it is &lt;i>cancelled&lt;/i> by invoking its&#xA;{@link #cancel cancel} method, by closing its channel, or by closing its&#xA;selector.  Cancelling a key does not immediately remove it from its&#xA;selector; it is instead added to the selector's &lt;a&#xA;href=&quot;Selector.html#ks&quot;>&lt;i>cancelled-key set&lt;/i>&lt;/a> for removal during the&#xA;next selection operation.  The validity of a key may be tested by invoking&#xA;its {@link #isValid isValid} method.&#xA;&#xA;&lt;a name=&quot;opsets&quot;>&#xA;&#xA;&lt;p> A selection key contains two &lt;i>operation sets&lt;/i> represented as&#xA;integer values.  Each bit of an operation set denotes a category of&#xA;selectable operations that are supported by the key's channel.&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> The &lt;i>interest set&lt;/i> determines which operation categories will&#xA;be tested for readiness the next time one of the selector's selection&#xA;methods is invoked.  The interest set is initialized with the value given&#xA;when the key is created; it may later be changed via the {@link&#xA;#interestOps(int)} method. &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> The &lt;i>ready set&lt;/i> identifies the operation categories for which&#xA;the key's channel has been detected to be ready by the key's selector.&#xA;The ready set is initialized to zero when the key is created; it may later&#xA;be updated by the selector during a selection operation, but it cannot be&#xA;updated directly. &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p> That a selection key's ready set indicates that its channel is ready for&#xA;some operation category is a hint, but not a guarantee, that an operation in&#xA;such a category may be performed by a thread without causing the thread to&#xA;block.  A ready set is most likely to be accurate immediately after the&#xA;completion of a selection operation.  It is likely to be made inaccurate by&#xA;external events and by I/O operations that are invoked upon the&#xA;corresponding channel.&#xA;&#xA;&lt;p> This class defines all known operation-set bits, but precisely which&#xA;bits are supported by a given channel depends upon the type of the channel.&#xA;Each subclass of {@link SelectableChannel} defines an {@link&#xA;SelectableChannel#validOps() validOps()} method which returns a set&#xA;identifying just those operations that are supported by the channel.  An&#xA;attempt to set or test an operation-set bit that is not supported by a key's&#xA;channel will result in an appropriate run-time exception.&#xA;&#xA;&lt;p> It is often necessary to associate some application-specific data with a&#xA;selection key, for example an object that represents the state of a&#xA;higher-level protocol and handles readiness notifications in order to&#xA;implement that protocol.  Selection keys therefore support the&#xA;&lt;i>attachment&lt;/i> of a single arbitrary object to a key.  An object can be&#xA;attached via the {@link #attach attach} method and then later retrieved via&#xA;the {@link #attachment attachment} method.&#xA;&#xA;&lt;p> Selection keys are safe for use by multiple concurrent threads.  The&#xA;operations of reading and writing the interest set will, in general, be&#xA;synchronized with certain operations of the selector.  Exactly how this&#xA;synchronization is performed is implementation-dependent: In a naive&#xA;implementation, reading or writing the interest set may block indefinitely&#xA;if a selection operation is already in progress; in a high-performance&#xA;implementation, reading or writing the interest set may block briefly, if at&#xA;all.  In any case, a selection operation will always use the interest-set&#xA;value that was current at the moment that the operation began.  &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.24, 03/12/19&#xA;@since 1.4&#xA;&#xA;@see SelectableChannel&#xA;@see Selector&#xA;" annotatedElement="1fd6eb98-efa1-4b8d-97a0-271fad1f5006"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6eb0344f-736b-47a8-b392-6f2bc18072b3" name="Channels" isLeaf="true">
              <ownedComment xmi:id="efa1a046-251f-4d72-9537-d810a4256417" body="Utility methods for channels and streams.&#xA;&#xA;&lt;p> This class defines static methods that support the interoperation of the&#xA;stream classes of the &lt;tt>{@link java.io}&lt;/tt> package with the channel&#xA;classes of this package.  &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author Mike McCloskey&#xA;@author JSR-51 Expert Group&#xA;@version 1.23, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="6eb0344f-736b-47a8-b392-6f2bc18072b3"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="5e112349-c9ea-427e-8e12-c7eb51153dae" name="ReadableByteChannelImpl" visibility="private" clientDependency="2b02d8dd-e9d1-4315-9c0e-38c6b6410a3e">
                <generalization xmi:id="ea234240-c325-4e8b-91b7-9a38cba9cb87" isSubstitutable="true" general="6ce11139-f44c-4a90-baeb-8815657a7cd8"/>
                <interfaceRealization xmi:id="2b02d8dd-e9d1-4315-9c0e-38c6b6410a3e" name="" supplier="354820cf-f82c-4f33-bcfc-6618e2e6c58b" client="5e112349-c9ea-427e-8e12-c7eb51153dae" contract="354820cf-f82c-4f33-bcfc-6618e2e6c58b"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="9fc40c68-13a2-4782-b40b-207a854a13d2" name="WritableByteChannelImpl" visibility="private" clientDependency="1c792722-937e-4381-8a17-bab3f70c17be">
                <generalization xmi:id="2fdf51b3-63a9-4f4e-b1a8-e299c4a23aba" isSubstitutable="true" general="6ce11139-f44c-4a90-baeb-8815657a7cd8"/>
                <interfaceRealization xmi:id="1c792722-937e-4381-8a17-bab3f70c17be" name="" supplier="b660e74c-cc26-4a3f-b118-324e4615636b" client="9fc40c68-13a2-4782-b40b-207a854a13d2" contract="b660e74c-cc26-4a3f-b118-324e4615636b"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="09f4b3cb-d263-470d-bb40-af075bd3fe35" name="ConnectionPendingException">
              <ownedComment xmi:id="54e285f0-0c78-4623-99e0-1468eee26c20" body="Unchecked exception thrown when an attempt is made to connect a {@link&#xA;SocketChannel} for which a non-blocking connection operation is already in&#xA;progress.&#xA;&#xA;@version 1.9, 01/11/19&#xA;@since 1.4&#xA;" annotatedElement="09f4b3cb-d263-470d-bb40-af075bd3fe35"/>
              <generalization xmi:id="cf34efde-b9da-479d-b203-b30101aa4c87" isSubstitutable="true" general="f9e1d07d-a558-48c5-a45e-01540d385078"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a75ccd6e-0096-4f67-91ca-053c8c5a14c8" name="AlreadyConnectedException">
              <ownedComment xmi:id="de648278-d343-4fb3-9e05-f5facb656a1f" body="Unchecked exception thrown when an attempt is made to connect a {@link&#xA;SocketChannel} that is already connected.&#xA;&#xA;@version 1.9, 01/11/19&#xA;@since 1.4&#xA;" annotatedElement="a75ccd6e-0096-4f67-91ca-053c8c5a14c8"/>
              <generalization xmi:id="4dd7b06f-3268-4573-a922-39b3b77899ab" isSubstitutable="true" general="f9e1d07d-a558-48c5-a45e-01540d385078"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="de4a14d1-4f1f-4255-b10e-2b538f30388b" name="ScatteringByteChannel" isAbstract="true">
              <ownedComment xmi:id="78fd5501-c9f6-4e6e-8a6e-8672779847e8" body="A channel that can read bytes into a sequence of buffers.&#xA;&#xA;&lt;p> A &lt;i>scattering&lt;/i> read operation reads, in a single invocation, a&#xA;sequence of bytes into one or more of a given sequence of buffers.&#xA;Scattering reads are often useful when implementing network protocols or&#xA;file formats that, for example, group data into segments consisting of one&#xA;or more fixed-length headers followed by a variable-length body.  Similar&#xA;&lt;i>gathering&lt;/i> write operations are defined in the {@link&#xA;GatheringByteChannel} interface.  &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.13, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="de4a14d1-4f1f-4255-b10e-2b538f30388b"/>
              <generalization xmi:id="c2a77808-8b41-4b32-8fb7-8f3f67c58ed1" isSubstitutable="true" general="354820cf-f82c-4f33-bcfc-6618e2e6c58b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1c01c885-8926-46c8-b157-04a686c21425" name="Selector" isAbstract="true">
              <ownedComment xmi:id="723e85cb-f8a1-4bc4-a900-700516ad99c0" body="A multiplexor of {@link SelectableChannel} objects.&#xA;&#xA;&lt;p> A selector may be created by invoking the {@link #open open} method of&#xA;this class, which will use the system's default {@link&#xA;java.nio.channels.spi.SelectorProvider &lt;/code>selector provider&lt;code>} to&#xA;create a new selector.  A selector may also be created by invoking the&#xA;{@link java.nio.channels.spi.SelectorProvider#openSelector openSelector}&#xA;method of a custom selector provider.  A selector remains open until it is&#xA;closed via its {@link #close close} method.&#xA;&#xA;&lt;a name=&quot;ks&quot;>&#xA;&#xA;&lt;p> A selectable channel's registration with a selector is represented by a&#xA;{@link SelectionKey} object.  A selector maintains three sets of selection&#xA;keys:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> The &lt;i>key set&lt;/i> contains the keys representing the current&#xA;channel registrations of this selector.  This set is returned by the&#xA;{@link #keys() keys} method. &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> The &lt;i>selected-key set&lt;/i> is the set of keys such that each&#xA;key's channel was detected to be ready for at least one of the operations&#xA;identified in the key's interest set during a prior selection operation.&#xA;This set is returned by the {@link #selectedKeys() selectedKeys} method.&#xA;The selected-key set is always a subset of the key set. &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> The &lt;i>cancelled-key&lt;/i> set is the set of keys that have been&#xA;cancelled but whose channels have not yet been deregistered.  This set is&#xA;not directly accessible.  The cancelled-key set is always a subset of the&#xA;key set. &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p> All three sets are empty in a newly-created selector.&#xA;&#xA;&lt;p> A key is added to a selector's key set as a side effect of registering a&#xA;channel via the channel's {@link SelectableChannel#register(Selector,int)&#xA;register} method.  Cancelled keys are removed from the key set during&#xA;selection operations.  The key set itself is not directly modifiable.&#xA;&#xA;&lt;p> A key is added to its selector's cancelled-key set when it is cancelled,&#xA;whether by closing its channel or by invoking its {@link SelectionKey#cancel&#xA;cancel} method.  Cancelling a key will cause its channel to be deregistered&#xA;during the next selection operation, at which time the key will removed from&#xA;all of the selector's key sets.&#xA;&#xA;&lt;a name=&quot;sks&quot;>&lt;p> Keys are added to the selected-key set by selection&#xA;operations.  A key may be removed directly from the selected-key set by&#xA;invoking the set's {@link java.util.Set#remove(java.lang.Object) remove}&#xA;method or by invoking the {@link java.util.Iterator#remove() remove} method&#xA;of an {@link java.util.Iterator &lt;/code>iterator&lt;code>} obtained from the&#xA;set.  Keys are never removed from the selected-key set in any other way;&#xA;they are not, in particular, removed as a side effect of selection&#xA;operations.  Keys may not be added directly to the selected-key set. &lt;/p>&#xA;&#xA;&#xA;&lt;a name=&quot;selop&quot;>&#xA;&lt;h4>Selection&lt;/h4>&#xA;&#xA;&lt;p> During each selection operation, keys may be added to and removed from a&#xA;selector's selected-key set and may be removed from its key and&#xA;cancelled-key sets.  Selection is performed by the {@link #select()}, {@link&#xA;#select(long)}, and {@link #selectNow()} methods, and involves three steps:&#xA;&lt;/p>&#xA;&#xA;&lt;ol>&#xA;&#xA;&lt;li>&lt;p> Each key in the cancelled-key set is removed from each key set of&#xA;which it is a member, and its channel is deregistered.  This step leaves&#xA;the cancelled-key set empty. &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> The underlying operating system is queried for an update as to the&#xA;readiness of each remaining channel to perform any of the operations&#xA;identified by its key's interest set as of the moment that the selection&#xA;operation began.  For a channel that is ready for at least one such&#xA;operation, one of the following two actions is performed: &lt;/p>&#xA;&#xA;&lt;ol type=a>&#xA;&#xA;&lt;li>&lt;p> If the channel's key is not already in the selected-key set then&#xA;it is added to that set and its ready-operation set is modified to&#xA;identify exactly those operations for which the channel is now reported&#xA;to be ready.  Any readiness information previously recorded in the ready&#xA;set is discarded.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Otherwise the channel's key is already in the selected-key set,&#xA;so its ready-operation set is modified to identify any new operations&#xA;for which the channel is reported to be ready.  Any readiness&#xA;information previously recorded in the ready set is preserved; in other&#xA;words, the ready set returned by the underlying system is&#xA;bitwise-disjoined into the key's current ready set. &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ol>&lt;/li>&#xA;&#xA;If all of the keys in the key set at the start of this step have empty&#xA;interest sets then neither the selected-key set nor any of the keys'&#xA;ready-operation sets will be updated.&#xA;&#xA;&lt;li>&lt;p> If any keys were added to the cancelled-key set while step (2) was&#xA;in progress then they are processed as in step (1). &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ol>&#xA;&#xA;&lt;p> Whether or not a selection operation blocks to wait for one or more&#xA;channels to become ready, and if so for how long, is the only essential&#xA;difference between the three selection methods. &lt;/p>&#xA;&#xA;&#xA;&lt;h4>Concurrency&lt;/h4>&#xA;&#xA;&lt;p> Selectors are themselves safe for use by multiple concurrent threads;&#xA;their key sets, however, are not.&#xA;&#xA;&lt;p> The selection operations synchronize on the selector itself, on the key&#xA;set, and on the selected-key set, in that order.  They also synchronize on&#xA;the cancelled-key set during steps (1) and (3) above.&#xA;&#xA;&lt;p> Changes made to the interest sets of a selector's keys while a&#xA;selection operation is in progress have no effect upon that operation; they&#xA;will be seen by the next selection operation.&#xA;&#xA;&lt;p> Keys may be cancelled and channels may be closed at any time.  Hence the&#xA;presence of a key in one or more of a selector's key sets does not imply&#xA;that the key is valid or that its channel is open.  Application code should&#xA;be careful to synchronize and check these conditions as necessary if there&#xA;is any possibility that another thread will cancel a key or close a channel.&#xA;&#xA;&lt;p> A thread blocked in one of the {@link #select()} or {@link&#xA;#select(long)} methods may be interrupted by some other thread in one of&#xA;three ways:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> By invoking the selector's {@link #wakeup wakeup} method,&#xA;&lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> By invoking the selector's {@link #close close} method, or&#xA;&lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> By invoking the blocked thread's {@link&#xA;java.lang.Thread#interrupt() interrupt} method, in which case its&#xA;interrupt status will be set and the selector's {@link #wakeup wakeup}&#xA;method will be invoked. &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p> The {@link #close close} method synchronizes on the selector and all&#xA;three key sets in the same order as in a selection operation.&#xA;&#xA;&lt;a name=&quot;ksc&quot;>&#xA;&#xA;&lt;p> A selector's key and selected-key sets are not, in general, safe for use&#xA;by multiple concurrent threads.  If such a thread might modify one of these&#xA;sets directly then access should be controlled by synchronizing on the set&#xA;itself.  The iterators returned by these sets' {@link&#xA;java.util.Set#iterator() iterator} methods are &lt;i>fail-fast:&lt;/i> If the set&#xA;is modified after the iterator is created, in any way except by invoking the&#xA;iterator's own {@link java.util.Iterator#remove() remove} method, then a&#xA;{@link java.util.ConcurrentModificationException} will be thrown. &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.37, 04/05/05&#xA;@since 1.4&#xA;&#xA;@see SelectableChannel&#xA;@see SelectionKey&#xA;" annotatedElement="1c01c885-8926-46c8-b157-04a686c21425"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="36d836f6-f931-45b8-8175-15c425a7100f" name="NonWritableChannelException">
              <ownedComment xmi:id="d2d62d99-8d38-4722-822e-73247d330efc" body="Unchecked exception thrown when an attempt is made to write&#xA;to a channel that was not originally opened for writing.&#xA;&#xA;@version 1.9, 01/11/19&#xA;@since 1.4&#xA;" annotatedElement="36d836f6-f931-45b8-8175-15c425a7100f"/>
              <generalization xmi:id="89b305f9-fd65-4ba1-8a67-2987d0b538bf" isSubstitutable="true" general="f9e1d07d-a558-48c5-a45e-01540d385078"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="3cafd3c7-66fc-437e-aa50-2a97c846f866" name="AsynchronousCloseException">
              <ownedComment xmi:id="093e7f3c-becf-4481-a791-2528c418dffd" body="Checked exception received by a thread when another thread closes the&#xA;channel or the part of the channel upon which it is blocked in an I/O&#xA;operation.&#xA;&#xA;@version 1.9, 01/11/19&#xA;@since 1.4&#xA;" annotatedElement="3cafd3c7-66fc-437e-aa50-2a97c846f866"/>
              <generalization xmi:id="1e07f8ff-a3c8-4d0f-8c2a-7416da5d3097" isSubstitutable="true" general="e0cd824c-343e-4d26-9def-f826a7760886"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c2a01461-5aa5-4809-b55b-25f2b774b2c5" name="UnsupportedAddressTypeException">
              <ownedComment xmi:id="fd833ab8-edf2-4897-8c14-fd3968439ce0" body="Unchecked exception thrown when an attempt is made to bind or connect&#xA;to a socket address of a type that is not supported.&#xA;&#xA;@version 1.9, 01/11/19&#xA;@since 1.4&#xA;" annotatedElement="c2a01461-5aa5-4809-b55b-25f2b774b2c5"/>
              <generalization xmi:id="41a9e00a-5114-479b-ac72-77d726b073ff" isSubstitutable="true" general="015b8627-f5b5-477f-8717-4d7c48152015"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="41cb7b50-7200-4b09-8982-dd38bac3db51" name="FileChannel" clientDependency="659f4c14-6a30-48d4-80a8-534a353175f7 7ea78647-f792-44dc-805c-a45c6bc9d03f 819f93ae-62f1-44aa-b0e4-43105a92fd7d" isAbstract="true">
              <ownedComment xmi:id="a145aca1-58b4-4de6-aa69-540d43620934" body="A channel for reading, writing, mapping, and manipulating a file.&#xA;&#xA;&lt;p> A file channel has a current &lt;i>position&lt;/i> within its file which can&#xA;be both {@link #position() &lt;/code>queried&lt;code>} and {@link #position(long)&#xA;&lt;/code>modified&lt;code>}.  The file itself contains a variable-length sequence&#xA;of bytes that can be read and written and whose current {@link #size&#xA;&lt;/code>&lt;i>size&lt;/i>&lt;code>} can be queried.  The size of the file increases&#xA;when bytes are written beyond its current size; the size of the file&#xA;decreases when it is {@link #truncate &lt;/code>&lt;i>truncated&lt;/i>&lt;code>}.  The&#xA;file may also have some associated &lt;i>metadata&lt;/i> such as access&#xA;permissions, content type, and last-modification time; this class does not&#xA;define methods for metadata access.&#xA;&#xA;&lt;p> In addition to the familiar read, write, and close operations of byte&#xA;channels, this class defines the following file-specific operations: &lt;/p>&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> Bytes may be {@link #read(ByteBuffer, long) &lt;/code>read&lt;code>} or&#xA;{@link #write(ByteBuffer, long) &lt;/code>written&lt;code>} at an absolute&#xA;position in a file in a way that does not affect the channel's current&#xA;position.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> A region of a file may be {@link #map &lt;/code>mapped&lt;code>}&#xA;directly into memory; for large files this is often much more efficient&#xA;than invoking the usual &lt;tt>read&lt;/tt> or &lt;tt>write&lt;/tt> methods.&#xA;&lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Updates made to a file may be {@link #force &lt;/code>forced&#xA;out&lt;code>} to the underlying storage device, ensuring that data are not&#xA;lost in the event of a system crash.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Bytes can be transferred from a file {@link #transferTo &lt;/code>to&#xA;some other channel&lt;code>}, and {@link #transferFrom &lt;/code>vice&#xA;versa&lt;code>}, in a way that can be optimized by many operating systems&#xA;into a very fast transfer directly to or from the filesystem cache.&#xA;&lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> A region of a file may be {@link FileLock &lt;/code>locked&lt;code>}&#xA;against access by other programs.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p> File channels are safe for use by multiple concurrent threads.  The&#xA;{@link Channel#close close} method may be invoked at any time, as specified&#xA;by the {@link Channel} interface.  Only one operation that involves the&#xA;channel's position or can change its file's size may be in progress at any&#xA;given time; attempts to initiate a second such operation while the first is&#xA;still in progress will block until the first operation completes.  Other&#xA;operations, in particular those that take an explicit position, may proceed&#xA;concurrently; whether they in fact do so is dependent upon the underlying&#xA;implementation and is therefore unspecified.&#xA;&#xA;&lt;p> The view of a file provided by an instance of this class is guaranteed&#xA;to be consistent with other views of the same file provided by other&#xA;instances in the same program.  The view provided by an instance of this&#xA;class may or may not, however, be consistent with the views seen by other&#xA;concurrently-running programs due to caching performed by the underlying&#xA;operating system and delays induced by network-filesystem protocols.  This&#xA;is true regardless of the language in which these other programs are&#xA;written, and whether they are running on the same machine or on some other&#xA;machine.  The exact nature of any such inconsistencies are system-dependent&#xA;and are therefore unspecified.&#xA;&#xA;&lt;p> This class does not define methods for opening existing files or for&#xA;creating new ones; such methods may be added in a future release.  In this&#xA;release a file channel can be obtained from an existing {@link&#xA;java.io.FileInputStream#getChannel FileInputStream}, {@link&#xA;java.io.FileOutputStream#getChannel FileOutputStream}, or {@link&#xA;java.io.RandomAccessFile#getChannel RandomAccessFile} object by invoking&#xA;that object's &lt;tt>getChannel&lt;/tt> method, which returns a file channel that&#xA;is connected to the same underlying file.&#xA;&#xA;&lt;p> The state of a file channel is intimately connected to that of the&#xA;object whose &lt;tt>getChannel&lt;/tt> method returned the channel.  Changing the&#xA;channel's position, whether explicitly or by reading or writing bytes, will&#xA;change the file position of the originating object, and vice versa.&#xA;Changing the file's length via the file channel will change the length seen&#xA;via the originating object, and vice versa.  Changing the file's content by&#xA;writing bytes will change the content seen by the originating object, and&#xA;vice versa.&#xA;&#xA;&lt;a name=&quot;open-mode&quot;>&lt;p> At various points this class specifies that an&#xA;instance that is &quot;open for reading,&quot; &quot;open for writing,&quot; or &quot;open for&#xA;reading and writing&quot; is required.  A channel obtained via the {@link&#xA;java.io.FileInputStream#getChannel getChannel} method of a {@link&#xA;java.io.FileInputStream} instance will be open for reading.  A channel&#xA;obtained via the {@link java.io.FileOutputStream#getChannel getChannel}&#xA;method of a {@link java.io.FileOutputStream} instance will be open for&#xA;writing.  Finally, a channel obtained via the {@link&#xA;java.io.RandomAccessFile#getChannel getChannel} method of a {@link&#xA;java.io.RandomAccessFile} instance will be open for reading if the instance&#xA;was created with mode &lt;tt>&quot;r&quot;&lt;/tt> and will be open for reading and writing&#xA;if the instance was created with mode &lt;tt>&quot;rw&quot;&lt;/tt>.&#xA;&#xA;&lt;a name=&quot;append-mode&quot;>&lt;p> A file channel that is open for writing may be in&#xA;&lt;i>append mode&lt;/i>, for example if it was obtained from a file-output stream&#xA;that was created by invoking the {@link&#xA;java.io.FileOutputStream#FileOutputStream(java.io.File,boolean)&#xA;FileOutputStream(File,boolean)} constructor and passing &lt;tt>true&lt;/tt> for&#xA;the second parameter.  In this mode each invocation of a relative write&#xA;operation first advances the position to the end of the file and then writes&#xA;the requested data.  Whether the advancement of the position and the writing&#xA;of the data are done in a single atomic operation is system-dependent and&#xA;therefore unspecified.&#xA;&#xA;&#xA;@see java.io.FileInputStream#getChannel()&#xA;@see java.io.FileOutputStream#getChannel()&#xA;@see java.io.RandomAccessFile#getChannel()&#xA;&#xA;@author Mark Reinhold&#xA;@author Mike McCloskey&#xA;@author JSR-51 Expert Group&#xA;@version 1.40, 04/01/12&#xA;@since 1.4&#xA;" annotatedElement="41cb7b50-7200-4b09-8982-dd38bac3db51"/>
              <generalization xmi:id="c42ed42f-ca35-4e04-b77c-69884cbdb6f2" isSubstitutable="true" general="6ce11139-f44c-4a90-baeb-8815657a7cd8"/>
              <interfaceRealization xmi:id="819f93ae-62f1-44aa-b0e4-43105a92fd7d" name="" supplier="f4aaf231-0b99-406c-912d-a64ddc1f0c73" client="41cb7b50-7200-4b09-8982-dd38bac3db51" contract="f4aaf231-0b99-406c-912d-a64ddc1f0c73"/>
              <interfaceRealization xmi:id="7ea78647-f792-44dc-805c-a45c6bc9d03f" name="" supplier="8f2f0cd1-b4bc-47c1-b5ba-19c68a49ab23" client="41cb7b50-7200-4b09-8982-dd38bac3db51" contract="8f2f0cd1-b4bc-47c1-b5ba-19c68a49ab23"/>
              <interfaceRealization xmi:id="659f4c14-6a30-48d4-80a8-534a353175f7" name="" supplier="de4a14d1-4f1f-4255-b10e-2b538f30388b" client="41cb7b50-7200-4b09-8982-dd38bac3db51" contract="de4a14d1-4f1f-4255-b10e-2b538f30388b"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="beaec725-5ba0-475e-803c-e1a108927eed" name="MapMode">
                <ownedComment xmi:id="069a6b84-0a9e-4306-b6e2-03a5be80b20d" body="A typesafe enumeration for file-mapping modes.&#xA;&#xA;@version 1.40, 04/01/12&#xA;@since 1.4&#xA;&#xA;@see java.nio.channels.FileChannel#map&#xA;" annotatedElement="beaec725-5ba0-475e-803c-e1a108927eed"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="aee2896e-ef9a-4da4-be37-5db01a44339f" name="NotYetBoundException">
              <ownedComment xmi:id="82947b3e-4956-426c-af60-1e6cbaf6c4a5" body="Unchecked exception thrown when an attempt is made to invoke an I/O&#xA;operation upon a server socket channel that is not yet bound.&#xA;&#xA;@version 1.9, 01/11/19&#xA;@since 1.4&#xA;" annotatedElement="aee2896e-ef9a-4da4-be37-5db01a44339f"/>
              <generalization xmi:id="cd28a1b2-1769-41bd-b2d9-52cb72711e85" isSubstitutable="true" general="f9e1d07d-a558-48c5-a45e-01540d385078"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="2463de83-5423-489d-93d6-1e06c4732d80" name="spi">
              <packagedElement xmi:type="uml:Class" xmi:id="2002bce1-6065-4274-a307-726f90501835" name="AbstractSelectionKey" isAbstract="true">
                <ownedComment xmi:id="a990b185-31d8-4c6d-b277-3f46c842faad" body="Base implementation class for selection keys.&#xA;&#xA;&lt;p> This class tracks the validity of the key and implements cancellation.&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.11, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="2002bce1-6065-4274-a307-726f90501835"/>
                <generalization xmi:id="d371129a-7679-4df1-bfe4-8073df0b77bf" isSubstitutable="true" general="1fd6eb98-efa1-4b8d-97a0-271fad1f5006"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6ce11139-f44c-4a90-baeb-8815657a7cd8" name="AbstractInterruptibleChannel" clientDependency="3a416e5c-f3b2-45ff-a115-645ebbc0b1f9 535f9942-7a2f-4e33-8c64-62e826648c89" isAbstract="true">
                <ownedComment xmi:id="fedd1fb9-428a-47c8-a9a5-2be2bf802ccd" body="Base implementation class for interruptible channels.&#xA;&#xA;&lt;p> This class encapsulates the low-level machinery required to implement&#xA;the asynchronous closing and interruption of channels.  A concrete channel&#xA;class must invoke the {@link #begin begin} and {@link #end end} methods&#xA;before and after, respectively, invoking an I/O operation that might block&#xA;indefinitely.  In order to ensure that the {@link #end end} method is always&#xA;invoked, these methods should be used within a&#xA;&lt;tt>try&lt;/tt>&amp;nbsp;...&amp;nbsp;&lt;tt>finally&lt;/tt> block: &lt;a name=&quot;be&quot;>&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;boolean completed = false;&#xA;try {&#xA;begin();&#xA;completed = ...;    // Perform blocking I/O operation&#xA;return ...;         // Return result&#xA;} finally {&#xA;end(completed);&#xA;}&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p> The &lt;tt>completed&lt;/tt> argument to the {@link #end end} method tells&#xA;whether or not the I/O operation actually completed, that is, whether it had&#xA;any effect that would be visible to the invoker.  In the case of an&#xA;operation that reads bytes, for example, this argument should be&#xA;&lt;tt>true&lt;/tt> if, and only if, some bytes were actually transferred into the&#xA;invoker's target buffer.&#xA;&#xA;&lt;p> A concrete channel class must also implement the {@link&#xA;#implCloseChannel implCloseChannel} method in such a way that if it is&#xA;invoked while another thread is blocked in a native I/O operation upon the&#xA;channel then that operation will immediately return, either by throwing an&#xA;exception or by returning normally.  If a thread is interrupted or the&#xA;channel upon which it is blocked is asynchronously closed then the channel's&#xA;{@link #end end} method will throw the appropriate exception.&#xA;&#xA;&lt;p> This class performs the synchronization required to implement the {@link&#xA;java.nio.channels.Channel} specification.  Implementations of the {@link&#xA;#implCloseChannel implCloseChannel} method need not synchronize against&#xA;other threads that might be attempting to close the channel.  &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.15, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="6ce11139-f44c-4a90-baeb-8815657a7cd8"/>
                <interfaceRealization xmi:id="3a416e5c-f3b2-45ff-a115-645ebbc0b1f9" name="" supplier="72c61627-0aa7-4afb-8937-accf0a5c6055" client="6ce11139-f44c-4a90-baeb-8815657a7cd8" contract="72c61627-0aa7-4afb-8937-accf0a5c6055"/>
                <interfaceRealization xmi:id="535f9942-7a2f-4e33-8c64-62e826648c89" name="" supplier="8a7ebe2a-6bce-4477-8208-1398eaab4114" client="6ce11139-f44c-4a90-baeb-8815657a7cd8" contract="8a7ebe2a-6bce-4477-8208-1398eaab4114"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="b640a41d-8b0d-4c26-bb8e-0481e512919a" name="FooChannel" visibility="private">
                  <generalization xmi:id="6470a095-2def-49ca-b6a9-f302fca0adbb" isSubstitutable="true" general="6ce11139-f44c-4a90-baeb-8815657a7cd8"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="7fc5514c-e689-47ef-98f4-e5dabf449200" name="AbstractSelector" isAbstract="true">
                <ownedComment xmi:id="8bda6cf5-e631-4feb-8515-4d3ebe063e5c" body="Base implementation class for selectors.&#xA;&#xA;&lt;p> This class encapsulates the low-level machinery required to implement&#xA;the interruption of selection operations.  A concrete selector class must&#xA;invoke the {@link #begin begin} and {@link #end end} methods before and&#xA;after, respectively, invoking an I/O operation that might block&#xA;indefinitely.  In order to ensure that the {@link #end end} method is always&#xA;invoked, these methods should be used within a&#xA;&lt;tt>try&lt;/tt>&amp;nbsp;...&amp;nbsp;&lt;tt>finally&lt;/tt> block: &lt;a name=&quot;be&quot;>&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;try {&#xA;begin();&#xA;Perform blocking I/O operation here&#xA;...&#xA;} finally {&#xA;end();&#xA;}&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p> This class also defines methods for maintaining a selector's&#xA;cancelled-key set and for removing a key from its channel's key set, and&#xA;declares the abstract {@link #register register} method that is invoked by a&#xA;selectable channel's {@link AbstractSelectableChannel#register register}&#xA;method in order to perform the actual work of registering a channel.  &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.19, 04/05/05&#xA;@since 1.4&#xA;" annotatedElement="7fc5514c-e689-47ef-98f4-e5dabf449200"/>
                <generalization xmi:id="ff5d1f31-8828-44f1-9c2a-e844e08d75b1" isSubstitutable="true" general="1c01c885-8926-46c8-b157-04a686c21425"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="b8fa8e6c-a509-4c39-aba6-44566554b63e" name="SelectorProvider" isAbstract="true">
                <ownedComment xmi:id="9320e82a-a04f-4fa3-976e-398463067807" body="Service-provider class for selectors and selectable channels.&#xA;&#xA;&lt;p> A selector provider is a concrete subclass of this class that has a&#xA;zero-argument constructor and implements the abstract methods specified&#xA;below.  A given invocation of the Java virtual machine maintains a single&#xA;system-wide default provider instance, which is returned by the {@link&#xA;#provider provider} method.  The first invocation of that method will locate&#xA;the default provider as specified below.&#xA;&#xA;&lt;p> The system-wide default provider is used by the static &lt;tt>open&lt;/tt>&#xA;methods of the {@link java.nio.channels.DatagramChannel#open&#xA;DatagramChannel}, {@link java.nio.channels.Pipe#open Pipe}, {@link&#xA;java.nio.channels.Selector#open Selector}, {@link&#xA;java.nio.channels.ServerSocketChannel#open ServerSocketChannel}, and {@link&#xA;java.nio.channels.SocketChannel#open SocketChannel} classes.  It is also&#xA;used by the {@link java.lang.System#inheritedChannel System.inheritedChannel()}&#xA;method. A program may make use of a provider other than the default provider&#xA;by instantiating that provider and then directly invoking the &lt;tt>open&lt;/tt>&#xA;methods defined in this class.&#xA;&#xA;&lt;p> All of the methods in this class are safe for use by multiple concurrent&#xA;threads.  &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.26, 04/06/15&#xA;@since 1.4&#xA;" annotatedElement="b8fa8e6c-a509-4c39-aba6-44566554b63e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="5bc8a066-83eb-4e5d-b841-315ba4b0c99a" name="AbstractSelectableChannel" isAbstract="true">
                <ownedComment xmi:id="bd0c141d-8d18-4fb0-b181-ac133fb9e31b" body="Base implementation class for selectable channels.&#xA;&#xA;&lt;p> This class defines methods that handle the mechanics of channel&#xA;registration, deregistration, and closing.  It maintains the current&#xA;blocking mode of this channel as well as its current set of selection keys.&#xA;It performs all of the synchronization required to implement the {@link&#xA;java.nio.channels.SelectableChannel} specification.  Implementations of the&#xA;abstract protected methods defined in this class need not synchronize&#xA;against other threads that might be engaged in the same operations.  &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author Mike McCloskey&#xA;@author JSR-51 Expert Group&#xA;@version 1.25, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="5bc8a066-83eb-4e5d-b841-315ba4b0c99a"/>
                <generalization xmi:id="783b4c40-1f7c-4ff7-b8c2-f011cdbf1109" isSubstitutable="true" general="5b7bcca9-7799-4f8d-98e6-2a0f27a71afc"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a8229dcb-eb79-4c49-8e05-9f3c682a1c9b" name="NonReadableChannelException">
              <ownedComment xmi:id="afec1e73-1789-49a7-a0e7-a72bb099c789" body="Unchecked exception thrown when an attempt is made to read&#xA;from a channel that was not originally opened for reading.&#xA;&#xA;@version 1.9, 01/11/19&#xA;@since 1.4&#xA;" annotatedElement="a8229dcb-eb79-4c49-8e05-9f3c682a1c9b"/>
              <generalization xmi:id="63305bf2-121b-47d3-a318-b6670b7bf474" isSubstitutable="true" general="f9e1d07d-a558-48c5-a45e-01540d385078"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e7c2e418-48e6-4c48-90f3-c20b9a4eb002" name="OverlappingFileLockException">
              <ownedComment xmi:id="13ed8a2b-9e34-49f6-abbb-e796c14012ec" body="Unchecked exception thrown when an attempt is made to acquire a lock on a&#xA;region of a file that overlaps a region already locked by the same Java&#xA;virtual machine, or when another thread is already waiting to lock an&#xA;overlapping region of the same file.&#xA;&#xA;@version 1.9, 01/11/19&#xA;@since 1.4&#xA;" annotatedElement="e7c2e418-48e6-4c48-90f3-c20b9a4eb002"/>
              <generalization xmi:id="896aeb94-3dc9-4b87-836f-862f03a24f92" isSubstitutable="true" general="f9e1d07d-a558-48c5-a45e-01540d385078"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8e93004c-a9a2-4c99-853e-c64fbda7173f" name="MappedByteBuffer" isAbstract="true">
            <ownedComment xmi:id="a1bc80a4-39a2-4176-a587-e2404f92a980" body="A direct byte buffer whose content is a memory-mapped region of a file.&#xA;&#xA;&lt;p> Mapped byte buffers are created via the {@link&#xA;java.nio.channels.FileChannel#map FileChannel.map} method.  This class&#xA;extends the {@link ByteBuffer} class with operations that are specific to&#xA;memory-mapped file regions.&#xA;&#xA;&lt;p> A mapped byte buffer and the file mapping that it represents remain&#xA;valid until the buffer itself is garbage-collected.&#xA;&#xA;&lt;p> The content of a mapped byte buffer can change at any time, for example&#xA;if the content of the corresponding region of the mapped file is changed by&#xA;this program or another.  Whether or not such changes occur, and when they&#xA;occur, is operating-system dependent and therefore unspecified.&#xA;&#xA;&lt;a name=&quot;inaccess&quot;>&lt;p> All or part of a mapped byte buffer may become&#xA;inaccessible at any time, for example if the mapped file is truncated.  An&#xA;attempt to access an inaccessible region of a mapped byte buffer will not&#xA;change the buffer's content and will cause an unspecified exception to be&#xA;thrown either at the time of the access or at some later time.  It is&#xA;therefore strongly recommended that appropriate precautions be taken to&#xA;avoid the manipulation of a mapped file by this program, or by a&#xA;concurrently running program, except to read or write the file's content.&#xA;&#xA;&lt;p> Mapped byte buffers otherwise behave no differently than ordinary direct&#xA;byte buffers. &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.23, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="8e93004c-a9a2-4c99-853e-c64fbda7173f"/>
            <generalization xmi:id="1d16d590-2aa9-48f1-9250-92a752caf408" isSubstitutable="true" general="4eaf9f56-3d01-4280-a208-df721202f6f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7346b18b-0b6c-460e-9e81-b9fa791509d1" name="DirectCharBufferU" visibility="package">
            <generalization xmi:id="57796768-3aca-43cf-906e-fc0eae0c1c7b" isSubstitutable="true" general="a4787598-15a7-437c-a0a4-b401bf308483"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="cce17f93-92e6-4dc9-8873-80a0ae378937" name="ByteBufferAsLongBufferL" visibility="package">
            <generalization xmi:id="2e35a6eb-f02b-4048-985e-20241ddf1e7f" isSubstitutable="true" general="8d20592a-fd29-4546-9be9-dac230ff9392"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6ba48d89-6887-47ee-9036-aeda76e513aa" name="DirectFloatBufferRS" visibility="package">
            <generalization xmi:id="c8d8ee10-a3dd-41fa-a0dc-7414abef3011" isSubstitutable="true" general="e0f7456a-3107-4e66-a06b-9e662d76d5e1"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9a6b3287-85b5-41d2-ba73-0ca1a083d6d2" name="DirectFloatBufferU" visibility="package">
            <generalization xmi:id="64a22431-ae88-40e3-848b-6300a7f058fe" isSubstitutable="true" general="3317e581-02c3-4eec-bf92-1588209ed609"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d38c0f24-c7ba-44a1-a3a9-248882c28927" name="ByteBufferAsDoubleBufferRB" visibility="package">
            <generalization xmi:id="1029deef-f384-4bac-989c-f3f8a17f0ed0" isSubstitutable="true" general="4ade080d-9783-4329-8876-023c390e544f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e089ebd5-aaa3-44f4-b8a1-246b0a078776" name="HeapDoubleBufferR" visibility="package">
            <ownedComment xmi:id="652a9afc-2c68-48cf-851f-819fde9680eb" body="A read-only HeapDoubleBuffer.  This class extends the corresponding&#xA;read/write class, overriding the mutation methods to throw a {@link&#xA;ReadOnlyBufferException} and overriding the view-buffer methods to return an&#xA;instance of this class rather than of the superclass.&#xA;" annotatedElement="e089ebd5-aaa3-44f4-b8a1-246b0a078776"/>
            <generalization xmi:id="7e657157-951c-4118-bdb7-6d545be55ca8" isSubstitutable="true" general="f12e55fb-76c4-4f27-9a26-13690b93fb11"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c31b73ef-8200-4307-885c-09b6ba2b2c45" name="DirectCharBufferRS" visibility="package">
            <generalization xmi:id="522f3273-94da-4ef8-9b63-8952e999d4a9" isSubstitutable="true" general="f07282c6-8547-468f-a871-908371a25218"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="e19f688e-e409-439c-9fc4-2e2752ed890c" name="Comparable&lt;CharBuffer>">
            <templateBinding xmi:id="23d372b8-dda7-4708-ad06-e01f751dfbf0" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="e0f7f031-38f5-4474-a889-aee94abba3d0" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="a4787598-15a7-437c-a0a4-b401bf308483"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9e9269e8-6078-4f28-b829-c2288d91b246" name="ByteBufferAsShortBufferB" visibility="package">
            <generalization xmi:id="1ac4345d-acd1-47a2-ad41-1ac7417a37d2" isSubstitutable="true" general="38347dc2-2215-4670-9890-c9a2538f2289"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8d20592a-fd29-4546-9be9-dac230ff9392" name="LongBuffer" clientDependency="8ffed1c6-36a6-4467-8315-8c534920f493" isAbstract="true">
            <ownedComment xmi:id="d794ed91-044c-4642-9ef5-5a70fe5de311" body="A long buffer.&#xA;&#xA;&lt;p> This class defines four categories of operations upon&#xA;long buffers:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> Absolute and relative {@link #get() &lt;/code>&lt;i>get&lt;/i>&lt;code>} and&#xA;{@link #put(long) &lt;/code>&lt;i>put&lt;/i>&lt;code>} methods that read and write&#xA;single longs; &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Relative {@link #get(long[]) &lt;/code>&lt;i>bulk get&lt;/i>&lt;code>}&#xA;methods that transfer contiguous sequences of longs from this buffer&#xA;into an array; and&lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Relative {@link #put(long[]) &lt;/code>&lt;i>bulk put&lt;/i>&lt;code>}&#xA;methods that transfer contiguous sequences of longs from a&#xA;long array or some other long&#xA;buffer into this buffer;&amp;#32;and &lt;/p>&lt;/li>&#xA;&#xA;&#xA;&lt;li>&lt;p> Methods for {@link #compact &lt;/code>compacting&lt;code>}, {@link&#xA;#duplicate &lt;/code>duplicating&lt;code>}, and {@link #slice&#xA;&lt;/code>slicing&lt;code>} a long buffer.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p> Long buffers can be created either by {@link #allocate&#xA;&lt;/code>&lt;i>allocation&lt;/i>&lt;code>}, which allocates space for the buffer's&#xA;&#xA;&#xA;content, by {@link #wrap(long[]) &lt;/code>&lt;i>wrapping&lt;/i>&lt;code>} an existing&#xA;long array  into a buffer, or by creating a&#xA;&lt;a href=&quot;ByteBuffer.html#view&quot;>&lt;i>view&lt;/i>&lt;/a> of an existing byte buffer&#xA;&#xA;&#xA;&#xA;&#xA;&lt;p> Like a byte buffer, a long buffer is either &lt;a&#xA;href=&quot;ByteBuffer.html#direct&quot;>&lt;i>direct&lt;/i> or &lt;i>non-direct&lt;/i>&lt;/a>.  A&#xA;long buffer created via the &lt;tt>wrap&lt;/tt> methods of this class will&#xA;be non-direct.  A long buffer created as a view of a byte buffer will&#xA;be direct if, and only if, the byte buffer itself is direct.  Whether or not&#xA;a long buffer is direct may be determined by invoking the {@link&#xA;#isDirect isDirect} method.  &lt;/p>&#xA;&#xA;&#xA;&#xA;&#xA;&lt;p> Methods in this class that do not otherwise have a value to return are&#xA;specified to return the buffer upon which they are invoked.  This allows&#xA;method invocations to be chained.&#xA;&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.56, 04/07/16&#xA;@since 1.4&#xA;" annotatedElement="8d20592a-fd29-4546-9be9-dac230ff9392"/>
            <generalization xmi:id="c6a0f4af-3fa5-44f1-9109-5a8385cfbccd" isSubstitutable="true" general="f3bf1ee5-e390-4ce3-85d5-3c6fe94b2391"/>
            <interfaceRealization xmi:id="8ffed1c6-36a6-4467-8315-8c534920f493" name="" supplier="e4a43475-3cf3-4a9e-8eab-03d00b54c989" client="8d20592a-fd29-4546-9be9-dac230ff9392" contract="e4a43475-3cf3-4a9e-8eab-03d00b54c989"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7fcc39a8-6c67-41c6-b77c-34c462fb3e15" name="IntBuffer" clientDependency="f1f9d302-95f1-44b2-a682-b2af4be32e29" isAbstract="true">
            <ownedComment xmi:id="88b6cbbb-9e9e-475b-8db3-2678f4c1efcf" body="An int buffer.&#xA;&#xA;&lt;p> This class defines four categories of operations upon&#xA;int buffers:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> Absolute and relative {@link #get() &lt;/code>&lt;i>get&lt;/i>&lt;code>} and&#xA;{@link #put(int) &lt;/code>&lt;i>put&lt;/i>&lt;code>} methods that read and write&#xA;single ints; &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Relative {@link #get(int[]) &lt;/code>&lt;i>bulk get&lt;/i>&lt;code>}&#xA;methods that transfer contiguous sequences of ints from this buffer&#xA;into an array; and&lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Relative {@link #put(int[]) &lt;/code>&lt;i>bulk put&lt;/i>&lt;code>}&#xA;methods that transfer contiguous sequences of ints from an&#xA;int array or some other int&#xA;buffer into this buffer;&amp;#32;and &lt;/p>&lt;/li>&#xA;&#xA;&#xA;&lt;li>&lt;p> Methods for {@link #compact &lt;/code>compacting&lt;code>}, {@link&#xA;#duplicate &lt;/code>duplicating&lt;code>}, and {@link #slice&#xA;&lt;/code>slicing&lt;code>} a int buffer.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p> Int buffers can be created either by {@link #allocate&#xA;&lt;/code>&lt;i>allocation&lt;/i>&lt;code>}, which allocates space for the buffer's&#xA;&#xA;&#xA;content, by {@link #wrap(int[]) &lt;/code>&lt;i>wrapping&lt;/i>&lt;code>} an existing&#xA;int array  into a buffer, or by creating a&#xA;&lt;a href=&quot;ByteBuffer.html#view&quot;>&lt;i>view&lt;/i>&lt;/a> of an existing byte buffer&#xA;&#xA;&#xA;&#xA;&#xA;&lt;p> Like a byte buffer, a int buffer is either &lt;a&#xA;href=&quot;ByteBuffer.html#direct&quot;>&lt;i>direct&lt;/i> or &lt;i>non-direct&lt;/i>&lt;/a>.  A&#xA;int buffer created via the &lt;tt>wrap&lt;/tt> methods of this class will&#xA;be non-direct.  A int buffer created as a view of a byte buffer will&#xA;be direct if, and only if, the byte buffer itself is direct.  Whether or not&#xA;a int buffer is direct may be determined by invoking the {@link&#xA;#isDirect isDirect} method.  &lt;/p>&#xA;&#xA;&#xA;&#xA;&#xA;&lt;p> Methods in this class that do not otherwise have a value to return are&#xA;specified to return the buffer upon which they are invoked.  This allows&#xA;method invocations to be chained.&#xA;&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.56, 04/07/16&#xA;@since 1.4&#xA;" annotatedElement="7fcc39a8-6c67-41c6-b77c-34c462fb3e15"/>
            <generalization xmi:id="28ae9885-2a69-48fb-b98b-4b4e41c33737" isSubstitutable="true" general="f3bf1ee5-e390-4ce3-85d5-3c6fe94b2391"/>
            <interfaceRealization xmi:id="f1f9d302-95f1-44b2-a682-b2af4be32e29" name="" supplier="45244236-a78b-4c2d-afb7-347d73d52db5" client="7fcc39a8-6c67-41c6-b77c-34c462fb3e15" contract="45244236-a78b-4c2d-afb7-347d73d52db5"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="57f63dc4-afc9-493a-8799-bfb94a9b2bbc" name="DoubleBuffer" clientDependency="68dd004d-2780-4df6-a673-36264afca8ed" isAbstract="true">
            <ownedComment xmi:id="47ffb2b5-b0f2-4815-b5f0-aa7fbf4a5cfb" body="A double buffer.&#xA;&#xA;&lt;p> This class defines four categories of operations upon&#xA;double buffers:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> Absolute and relative {@link #get() &lt;/code>&lt;i>get&lt;/i>&lt;code>} and&#xA;{@link #put(double) &lt;/code>&lt;i>put&lt;/i>&lt;code>} methods that read and write&#xA;single doubles; &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Relative {@link #get(double[]) &lt;/code>&lt;i>bulk get&lt;/i>&lt;code>}&#xA;methods that transfer contiguous sequences of doubles from this buffer&#xA;into an array; and&lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Relative {@link #put(double[]) &lt;/code>&lt;i>bulk put&lt;/i>&lt;code>}&#xA;methods that transfer contiguous sequences of doubles from a&#xA;double array or some other double&#xA;buffer into this buffer;&amp;#32;and &lt;/p>&lt;/li>&#xA;&#xA;&#xA;&lt;li>&lt;p> Methods for {@link #compact &lt;/code>compacting&lt;code>}, {@link&#xA;#duplicate &lt;/code>duplicating&lt;code>}, and {@link #slice&#xA;&lt;/code>slicing&lt;code>} a double buffer.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p> Double buffers can be created either by {@link #allocate&#xA;&lt;/code>&lt;i>allocation&lt;/i>&lt;code>}, which allocates space for the buffer's&#xA;&#xA;&#xA;content, by {@link #wrap(double[]) &lt;/code>&lt;i>wrapping&lt;/i>&lt;code>} an existing&#xA;double array  into a buffer, or by creating a&#xA;&lt;a href=&quot;ByteBuffer.html#view&quot;>&lt;i>view&lt;/i>&lt;/a> of an existing byte buffer&#xA;&#xA;&#xA;&#xA;&#xA;&lt;p> Like a byte buffer, a double buffer is either &lt;a&#xA;href=&quot;ByteBuffer.html#direct&quot;>&lt;i>direct&lt;/i> or &lt;i>non-direct&lt;/i>&lt;/a>.  A&#xA;double buffer created via the &lt;tt>wrap&lt;/tt> methods of this class will&#xA;be non-direct.  A double buffer created as a view of a byte buffer will&#xA;be direct if, and only if, the byte buffer itself is direct.  Whether or not&#xA;a double buffer is direct may be determined by invoking the {@link&#xA;#isDirect isDirect} method.  &lt;/p>&#xA;&#xA;&#xA;&#xA;&#xA;&lt;p> Methods in this class that do not otherwise have a value to return are&#xA;specified to return the buffer upon which they are invoked.  This allows&#xA;method invocations to be chained.&#xA;&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.56, 04/07/16&#xA;@since 1.4&#xA;" annotatedElement="57f63dc4-afc9-493a-8799-bfb94a9b2bbc"/>
            <generalization xmi:id="dddac640-c966-4b22-8efc-42f262187300" isSubstitutable="true" general="f3bf1ee5-e390-4ce3-85d5-3c6fe94b2391"/>
            <interfaceRealization xmi:id="68dd004d-2780-4df6-a673-36264afca8ed" name="" supplier="2122753e-57b6-43e8-b757-92410e3eab42" client="57f63dc4-afc9-493a-8799-bfb94a9b2bbc" contract="2122753e-57b6-43e8-b757-92410e3eab42"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="42f4bbd2-4fc1-4799-bfb7-091a4ee9f89d" name="HeapCharBufferR" visibility="package">
            <ownedComment xmi:id="e3090e84-6eb7-4af7-aeae-c36c0229e14c" body="A read-only HeapCharBuffer.  This class extends the corresponding&#xA;read/write class, overriding the mutation methods to throw a {@link&#xA;ReadOnlyBufferException} and overriding the view-buffer methods to return an&#xA;instance of this class rather than of the superclass.&#xA;" annotatedElement="42f4bbd2-4fc1-4799-bfb7-091a4ee9f89d"/>
            <generalization xmi:id="7dfb66b9-7df8-486b-8504-204283800627" isSubstitutable="true" general="62f6061a-40bc-47a8-bd25-f9452f4f3fb9"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b34c04c2-5561-4192-8719-7df5a1d3f881" name="ByteBufferAsFloatBufferRL" visibility="package">
            <generalization xmi:id="7749e12b-ea04-400d-8d20-e9d54db761f4" isSubstitutable="true" general="ed03c79f-841d-47fc-8c41-4340ed1a4e3d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="10d7b7e5-870f-4b60-9546-9619147eee39" name="DirectDoubleBufferU" visibility="package">
            <generalization xmi:id="9b54dcbf-01d3-4f81-9f23-736069d332b0" isSubstitutable="true" general="57f63dc4-afc9-493a-8799-bfb94a9b2bbc"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6e02f500-5b01-42c7-a577-dcfe2caa1d9e" name="ByteOrder" isLeaf="true">
            <ownedComment xmi:id="6d7fdfbc-0b8d-4d96-9a68-a8aa65170200" body="A typesafe enumeration for byte orders.&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.13, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="6e02f500-5b01-42c7-a577-dcfe2caa1d9e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a05aa25a-5fd3-4b36-96f1-fc92ff839fee" name="ByteBufferAsDoubleBufferRL" visibility="package">
            <generalization xmi:id="5547f432-de5f-4af5-b956-059d1c8cc27a" isSubstitutable="true" general="a6fe0b35-7d24-495e-8acc-88c3c5aa1087"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="877e938c-66e6-48f8-8663-68f67a14c499" name="DirectIntBufferS" visibility="package">
            <generalization xmi:id="bfb697c1-ea37-4ae1-a6a4-1c14bdd757e9" isSubstitutable="true" general="7fcc39a8-6c67-41c6-b77c-34c462fb3e15"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a4787598-15a7-437c-a0a4-b401bf308483" name="CharBuffer" clientDependency="6c358368-eb87-4dad-bd44-4567677a3b6c 72f7adaa-401e-4fd5-ae9d-f89282543b7f 97bf99fa-20f7-4dd7-83ba-c1ebc6a17798 8cb8934a-d353-4091-a990-5222f394cffd" isAbstract="true">
            <ownedComment xmi:id="4e753e8e-df09-45cd-beb7-32222fdc92ec" body="A character buffer.&#xA;&#xA;&lt;p> This class defines four categories of operations upon&#xA;character buffers:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> Absolute and relative {@link #get() &lt;/code>&lt;i>get&lt;/i>&lt;code>} and&#xA;{@link #put(char) &lt;/code>&lt;i>put&lt;/i>&lt;code>} methods that read and write&#xA;single characters; &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Relative {@link #get(char[]) &lt;/code>&lt;i>bulk get&lt;/i>&lt;code>}&#xA;methods that transfer contiguous sequences of characters from this buffer&#xA;into an array; and&lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Relative {@link #put(char[]) &lt;/code>&lt;i>bulk put&lt;/i>&lt;code>}&#xA;methods that transfer contiguous sequences of characters from a&#xA;character array,&amp;#32;a&amp;#32;string, or some other character&#xA;buffer into this buffer;&amp;#32;and &lt;/p>&lt;/li>&#xA;&#xA;&#xA;&lt;li>&lt;p> Methods for {@link #compact &lt;/code>compacting&lt;code>}, {@link&#xA;#duplicate &lt;/code>duplicating&lt;code>}, and {@link #slice&#xA;&lt;/code>slicing&lt;code>} a character buffer.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p> Character buffers can be created either by {@link #allocate&#xA;&lt;/code>&lt;i>allocation&lt;/i>&lt;code>}, which allocates space for the buffer's&#xA;&#xA;&#xA;content, by {@link #wrap(char[]) &lt;/code>&lt;i>wrapping&lt;/i>&lt;code>} an existing&#xA;character array or&amp;#32;string into a buffer, or by creating a&#xA;&lt;a href=&quot;ByteBuffer.html#view&quot;>&lt;i>view&lt;/i>&lt;/a> of an existing byte buffer&#xA;&#xA;&#xA;&#xA;&#xA;&lt;p> Like a byte buffer, a character buffer is either &lt;a&#xA;href=&quot;ByteBuffer.html#direct&quot;>&lt;i>direct&lt;/i> or &lt;i>non-direct&lt;/i>&lt;/a>.  A&#xA;character buffer created via the &lt;tt>wrap&lt;/tt> methods of this class will&#xA;be non-direct.  A character buffer created as a view of a byte buffer will&#xA;be direct if, and only if, the byte buffer itself is direct.  Whether or not&#xA;a character buffer is direct may be determined by invoking the {@link&#xA;#isDirect isDirect} method.  &lt;/p>&#xA;&#xA;&#xA;&#xA;&lt;p> This class implements the {@link CharSequence} interface so that&#xA;character buffers may be used wherever character sequences are accepted, for&#xA;example in the regular-expression package &lt;tt>{@link java.util.regex}&lt;/tt>.&#xA;&lt;/p>&#xA;&#xA;&#xA;&#xA;&lt;p> Methods in this class that do not otherwise have a value to return are&#xA;specified to return the buffer upon which they are invoked.  This allows&#xA;method invocations to be chained.&#xA;&#xA;&#xA;The sequence of statements&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;cb.put(&quot;text/&quot;);&#xA;cb.put(subtype);&#xA;cb.put(&quot;; charset=&quot;);&#xA;cb.put(enc);&lt;/pre>&lt;/blockquote>&#xA;&#xA;can, for example, be replaced by the single statement&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;cb.put(&quot;text/&quot;).put(subtype).put(&quot;; charset=&quot;).put(enc);&lt;/pre>&lt;/blockquote>&#xA;&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.56, 04/07/16&#xA;@since 1.4&#xA;" annotatedElement="a4787598-15a7-437c-a0a4-b401bf308483"/>
            <generalization xmi:id="a866a3ca-0014-4a24-bf78-423103caefb6" isSubstitutable="true" general="f3bf1ee5-e390-4ce3-85d5-3c6fe94b2391"/>
            <interfaceRealization xmi:id="6c358368-eb87-4dad-bd44-4567677a3b6c" name="" supplier="e19f688e-e409-439c-9fc4-2e2752ed890c" client="a4787598-15a7-437c-a0a4-b401bf308483" contract="e19f688e-e409-439c-9fc4-2e2752ed890c"/>
            <interfaceRealization xmi:id="72f7adaa-401e-4fd5-ae9d-f89282543b7f" name="" supplier="e1b0e7ce-3e7f-4c85-be61-5b3588027acb" client="a4787598-15a7-437c-a0a4-b401bf308483" contract="e1b0e7ce-3e7f-4c85-be61-5b3588027acb"/>
            <interfaceRealization xmi:id="97bf99fa-20f7-4dd7-83ba-c1ebc6a17798" name="" supplier="add26864-681f-4efa-930b-32e7f66a5186" client="a4787598-15a7-437c-a0a4-b401bf308483" contract="add26864-681f-4efa-930b-32e7f66a5186"/>
            <interfaceRealization xmi:id="8cb8934a-d353-4091-a990-5222f394cffd" name="" supplier="4245e8f4-88b0-4637-bbe8-d441309e9db9" client="a4787598-15a7-437c-a0a4-b401bf308483" contract="4245e8f4-88b0-4637-bbe8-d441309e9db9"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b74e9494-bf86-4dbc-83c7-ba1d6a346332" name="StringCharBuffer" visibility="package">
            <generalization xmi:id="17e4cdb0-3b22-41ec-b522-88eaccf3bb91" isSubstitutable="true" general="a4787598-15a7-437c-a0a4-b401bf308483"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="37f11946-d8a4-4055-872d-158af7ff9b3e" name="ByteBufferAsLongBufferRB" visibility="package">
            <generalization xmi:id="27f5cfba-eb64-419f-892c-96fb40c6707e" isSubstitutable="true" general="51efc53a-6c12-4b77-acdb-0e0fb57eaf8f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="3acda3b0-da17-47fb-b48b-40d8e33c39a8" name="Comparable&lt;FloatBuffer>">
            <templateBinding xmi:id="53368bda-7802-4244-b139-9c93c617b22b" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="72a1ecdd-60e7-4dde-b5b4-19d031329f83" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="3317e581-02c3-4eec-bf92-1588209ed609"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="41449d83-54af-4f12-91f8-0555f079fc35" name="ByteBufferAsFloatBufferRB" visibility="package">
            <generalization xmi:id="c0d120cf-48c7-4380-9a32-fc33099dd8af" isSubstitutable="true" general="472450b7-28f8-4a02-b6ee-26fac457554b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f12e55fb-76c4-4f27-9a26-13690b93fb11" name="HeapDoubleBuffer" visibility="package">
            <ownedComment xmi:id="6bc09544-dade-42ed-ac59-9d3c658f2676" body="A read/write HeapDoubleBuffer.&#xA;" annotatedElement="f12e55fb-76c4-4f27-9a26-13690b93fb11"/>
            <generalization xmi:id="4bd82e12-3fe4-43f8-951e-7cbc11af9996" isSubstitutable="true" general="57f63dc4-afc9-493a-8799-bfb94a9b2bbc"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8af0c321-5bbc-4fad-8768-1b847a1df000" name="InvalidMarkException">
            <ownedComment xmi:id="b8d4d483-2397-4d70-a390-bd4c2b989fce" body="Unchecked exception thrown when an attempt is made to reset a buffer&#xA;when its mark is not defined.&#xA;&#xA;@version 1.14, 01/05/02&#xA;@since 1.4&#xA;" annotatedElement="8af0c321-5bbc-4fad-8768-1b847a1df000"/>
            <generalization xmi:id="66ae5258-b209-4763-b390-42daec20852e" isSubstitutable="true" general="f9e1d07d-a558-48c5-a45e-01540d385078"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7b308a85-a8b1-4b9a-9105-31a6625a1f57" name="DirectShortBufferRU" visibility="package">
            <generalization xmi:id="358abbba-18be-451f-8d87-6ff0ad68de21" isSubstitutable="true" general="56312ee4-acaf-4fb2-b284-6ae1a396b276"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a6fe0b35-7d24-495e-8acc-88c3c5aa1087" name="ByteBufferAsDoubleBufferL" visibility="package">
            <generalization xmi:id="ad67e0b5-2334-4be3-ab5a-5300dc68bbe8" isSubstitutable="true" general="57f63dc4-afc9-493a-8799-bfb94a9b2bbc"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4eb15374-f412-4db0-b6f7-1c5862b2bd18" name="ByteBufferAsCharBufferL" visibility="package">
            <generalization xmi:id="e3379491-3632-4761-b4cf-83a423033e38" isSubstitutable="true" general="a4787598-15a7-437c-a0a4-b401bf308483"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6b3ed5f9-7f06-4417-b31e-82e1abf926ec" name="ByteBufferAsIntBufferRL" visibility="package">
            <generalization xmi:id="b557cab5-8387-45b3-9695-e711e5d8d56b" isSubstitutable="true" general="4dc56b0a-1ab1-433a-8066-36f75968ca12"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e381bc5f-c4ae-41ea-b160-280d36ffb468" name="HeapFloatBuffer" visibility="package">
            <ownedComment xmi:id="703fb213-d6c0-4143-b3d0-0f7616f9607f" body="A read/write HeapFloatBuffer.&#xA;" annotatedElement="e381bc5f-c4ae-41ea-b160-280d36ffb468"/>
            <generalization xmi:id="64823f0d-be8e-4084-b58a-2a412b6578a1" isSubstitutable="true" general="3317e581-02c3-4eec-bf92-1588209ed609"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="45244236-a78b-4c2d-afb7-347d73d52db5" name="Comparable&lt;IntBuffer>">
            <templateBinding xmi:id="e1df7a40-c702-4980-802a-543f6353cbb0" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="37a0ce5d-b226-4394-a335-3e528aa44ba4" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="7fcc39a8-6c67-41c6-b77c-34c462fb3e15"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="62fc621e-c8fd-420b-814f-546764bf9f74" name="DirectIntBufferRU" visibility="package">
            <generalization xmi:id="2baaf60e-742d-4456-af3e-442b4ad5c441" isSubstitutable="true" general="a60ffd57-b83e-4c27-8632-4f74eece123f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e9e1f358-b93c-4067-bffb-72bc6062f682" name="BufferUnderflowException">
            <ownedComment xmi:id="0f2e34cc-7129-4370-bf13-15fffb218ca3" body="Unchecked exception thrown when a relative &lt;i>get&lt;/i> operation reaches&#xA;the source buffer's limit.&#xA;&#xA;@version 1.14, 01/05/02&#xA;@since 1.4&#xA;" annotatedElement="e9e1f358-b93c-4067-bffb-72bc6062f682"/>
            <generalization xmi:id="5577f2cb-70f9-4f5e-9ded-93e40b841f06" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f07282c6-8547-468f-a871-908371a25218" name="DirectCharBufferS" visibility="package">
            <generalization xmi:id="4a97dcf2-b163-4526-8d7e-2f8f3e3e0814" isSubstitutable="true" general="a4787598-15a7-437c-a0a4-b401bf308483"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a60ffd57-b83e-4c27-8632-4f74eece123f" name="DirectIntBufferU" visibility="package">
            <generalization xmi:id="c1044409-6ffb-447d-86b0-65f71e7aafe9" isSubstitutable="true" general="7fcc39a8-6c67-41c6-b77c-34c462fb3e15"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e5ca13eb-529b-4b25-b1d9-a00fe5fb4a24" name="ByteBufferAsIntBufferRB" visibility="package">
            <generalization xmi:id="b3acdc76-2a53-4e59-8509-6dff6d0dac15" isSubstitutable="true" general="de4a1136-8f2b-4609-a55e-90cb53fd128e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f3bf1ee5-e390-4ce3-85d5-3c6fe94b2391" name="Buffer" isAbstract="true">
            <ownedComment xmi:id="6fb1caad-a337-4402-ab26-c295a7d249ad" body="A container for data of a specific primitive type.&#xA;&#xA;&lt;p> A buffer is a linear, finite sequence of elements of a specific&#xA;primitive type.  Aside from its content, the essential properties of a&#xA;buffer are its capacity, limit, and position: &lt;/p>&#xA;&#xA;&lt;blockquote>&#xA;&#xA;&lt;p> A buffer's &lt;i>capacity&lt;/i> is the number of elements it contains.  The&#xA;capacity of a buffer is never negative and never changes.  &lt;/p>&#xA;&#xA;&lt;p> A buffer's &lt;i>limit&lt;/i> is the index of the first element that should&#xA;not be read or written.  A buffer's limit is never negative and is never&#xA;greater than its capacity.  &lt;/p>&#xA;&#xA;&lt;p> A buffer's &lt;i>position&lt;/i> is the index of the next element to be&#xA;read or written.  A buffer's position is never negative and is never&#xA;greater than its limit.  &lt;/p>&#xA;&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p> There is one subclass of this class for each non-boolean primitive type.&#xA;&#xA;&#xA;&lt;h4> Transferring data &lt;/h4>&#xA;&#xA;&lt;p> Each subclass of this class defines two categories of &lt;i>get&lt;/i> and&#xA;&lt;i>put&lt;/i> operations: &lt;/p>&#xA;&#xA;&lt;blockquote>&#xA;&#xA;&lt;p> &lt;i>Relative&lt;/i> operations read or write one or more elements starting&#xA;at the current position and then increment the position by the number of&#xA;elements transferred.  If the requested transfer exceeds the limit then a&#xA;relative &lt;i>get&lt;/i> operation throws a {@link BufferUnderflowException}&#xA;and a relative &lt;i>put&lt;/i> operation throws a {@link&#xA;BufferOverflowException}; in either case, no data is transferred.  &lt;/p>&#xA;&#xA;&lt;p> &lt;i>Absolute&lt;/i> operations take an explicit element index and do not&#xA;affect the position.  Absolute &lt;i>get&lt;/i> and &lt;i>put&lt;/i> operations throw&#xA;an {@link IndexOutOfBoundsException} if the index argument exceeds the&#xA;limit.  &lt;/p>&#xA;&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p> Data may also, of course, be transferred in to or out of a buffer by the&#xA;I/O operations of an appropriate channel, which are always relative to the&#xA;current position.&#xA;&#xA;&#xA;&lt;h4> Marking and resetting &lt;/h4>&#xA;&#xA;&lt;p> A buffer's &lt;i>mark&lt;/i> is the index to which its position will be reset&#xA;when the {@link #reset reset} method is invoked.  The mark is not always&#xA;defined, but when it is defined it is never negative and is never greater&#xA;than the position.  If the mark is defined then it is discarded when the&#xA;position or the limit is adjusted to a value smaller than the mark.  If the&#xA;mark is not defined then invoking the {@link #reset reset} method causes an&#xA;{@link InvalidMarkException} to be thrown.&#xA;&#xA;&#xA;&lt;h4> Invariants &lt;/h4>&#xA;&#xA;&lt;p> The following invariant holds for the mark, position, limit, and&#xA;capacity values:&#xA;&#xA;&lt;blockquote>&#xA;&lt;tt>0&lt;/tt> &lt;tt>&lt;=&lt;/tt>&#xA;&lt;i>mark&lt;/i> &lt;tt>&lt;=&lt;/tt>&#xA;&lt;i>position&lt;/i> &lt;tt>&lt;=&lt;/tt>&#xA;&lt;i>limit&lt;/i> &lt;tt>&lt;=&lt;/tt>&#xA;&lt;i>capacity&lt;/i>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p> A newly-created buffer always has a position of zero and a mark that is&#xA;undefined.  The initial limit may be zero, or it may be some other value&#xA;that depends upon the type of the buffer and the manner in which it is&#xA;constructed.  The initial content of a buffer is, in general,&#xA;undefined.&#xA;&#xA;&#xA;&lt;h4> Clearing, flipping, and rewinding &lt;/h4>&#xA;&#xA;&lt;p> In addition to methods for accessing the position, limit, and capacity&#xA;values and for marking and resetting, this class also defines the following&#xA;operations upon buffers:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> {@link #clear} makes a buffer ready for a new sequence of&#xA;channel-read or relative &lt;i>put&lt;/i> operations: It sets the limit to the&#xA;capacity and the position to zero.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> {@link #flip} makes a buffer ready for a new sequence of&#xA;channel-write or relative &lt;i>get&lt;/i> operations: It sets the limit to the&#xA;current position and then sets the position to zero.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> {@link #rewind} makes a buffer ready for re-reading the data that&#xA;it already contains: It leaves the limit unchanged and sets the position&#xA;to zero.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&#xA;&lt;h4> Read-only buffers &lt;/h4>&#xA;&#xA;&lt;p> Every buffer is readable, but not every buffer is writable.  The&#xA;mutation methods of each buffer class are specified as &lt;i>optional&#xA;operations&lt;/i> that will throw a {@link ReadOnlyBufferException} when&#xA;invoked upon a read-only buffer.  A read-only buffer does not allow its&#xA;content to be changed, but its mark, position, and limit values are mutable.&#xA;Whether or not a buffer is read-only may be determined by invoking its&#xA;{@link #isReadOnly isReadOnly} method.&#xA;&#xA;&#xA;&lt;h4> Thread safety &lt;/h4>&#xA;&#xA;&lt;p> Buffers are not safe for use by multiple concurrent threads.  If a&#xA;buffer is to be used by more than one thread then access to the buffer&#xA;should be controlled by appropriate synchronization.&#xA;&#xA;&#xA;&lt;h4> Invocation chaining &lt;/h4>&#xA;&#xA;&lt;p> Methods in this class that do not otherwise have a value to return are&#xA;specified to return the buffer upon which they are invoked.  This allows&#xA;method invocations to be chained; for example, the sequence of statements&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;b.flip();&#xA;b.position(23);&#xA;b.limit(42);&lt;/pre>&lt;/blockquote>&#xA;&#xA;can be replaced by the single, more compact statement&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;b.flip().position(23).limit(42);&lt;/pre>&lt;/blockquote>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.34, 04/06/14&#xA;@since 1.4&#xA;" annotatedElement="f3bf1ee5-e390-4ce3-85d5-3c6fe94b2391"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="e4a43475-3cf3-4a9e-8eab-03d00b54c989" name="Comparable&lt;LongBuffer>">
            <templateBinding xmi:id="379b8529-35a5-49a0-923e-b5d7d946ea89" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="66c574b0-b330-46f3-b0f7-1735e36618c1" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="8d20592a-fd29-4546-9be9-dac230ff9392"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c876be31-8623-4326-89eb-d3b03bebcb41" name="DirectShortBufferS" visibility="package">
            <generalization xmi:id="4ca40232-c686-4eaf-b0eb-344e1affbfa0" isSubstitutable="true" general="38347dc2-2215-4670-9890-c9a2538f2289"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="35b3f3ed-c288-4e42-8c57-87755ce2c934" name="HeapIntBuffer" visibility="package">
            <ownedComment xmi:id="e01ecee1-1a1f-43f2-a6de-16736dd68fa4" body="A read/write HeapIntBuffer.&#xA;" annotatedElement="35b3f3ed-c288-4e42-8c57-87755ce2c934"/>
            <generalization xmi:id="bcf509d3-e293-4880-a1ca-cf1941d4cd63" isSubstitutable="true" general="7fcc39a8-6c67-41c6-b77c-34c462fb3e15"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="2122753e-57b6-43e8-b757-92410e3eab42" name="Comparable&lt;DoubleBuffer>">
            <templateBinding xmi:id="694c7fb5-c530-49bc-a639-07531a180d2e" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="89e93a55-5045-437f-830d-2b73303c8cd5" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="57f63dc4-afc9-493a-8799-bfb94a9b2bbc"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4008c9a7-71a8-4707-8a96-e67284d0e7bb" name="HeapByteBufferR" visibility="package">
            <ownedComment xmi:id="ef2e13a5-e271-4cc7-98a9-232778c4cd15" body="A read-only HeapByteBuffer.  This class extends the corresponding&#xA;read/write class, overriding the mutation methods to throw a {@link&#xA;ReadOnlyBufferException} and overriding the view-buffer methods to return an&#xA;instance of this class rather than of the superclass.&#xA;" annotatedElement="4008c9a7-71a8-4707-8a96-e67284d0e7bb"/>
            <generalization xmi:id="c18b71d6-3afd-49ce-b6c8-056f28fb0498" isSubstitutable="true" general="ba8a922d-0885-463f-a52e-b14e849e8684"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a678df8d-c5f8-4459-8c55-cb0e0e2ecbb2" name="DirectByteBufferR" visibility="package">
            <generalization xmi:id="8c658f54-b4fe-4acb-985e-7909e03319f8" isSubstitutable="true" general="006c7c03-a40e-47ae-abb8-83eb8cbd6403"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="00344089-9bfc-490d-865a-c3bab0404aba" name="ByteBufferAsCharBufferRB" visibility="package">
            <generalization xmi:id="98713663-24f9-462f-bece-989dbb7fa292" isSubstitutable="true" general="63fa4ec2-e5e7-4385-82b1-ae44a03c6162"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="c174dcda-0920-4e54-ad16-1a989d07c883" name="Comparable&lt;ShortBuffer>">
            <templateBinding xmi:id="eff62d41-e79c-4e08-9553-8a7eb1525adc" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="f9d2239d-5e43-4e57-972b-21ec1b61e582" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="38347dc2-2215-4670-9890-c9a2538f2289"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="006c7c03-a40e-47ae-abb8-83eb8cbd6403" name="DirectByteBuffer" visibility="package">
            <generalization xmi:id="7d4d3583-4ac5-4d6d-b927-7eac4151ec00" isSubstitutable="true" general="8e93004c-a9a2-4c99-853e-c64fbda7173f"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8200f168-7cc4-4004-99db-e8bae51dcc28" name="Deallocator" visibility="private" clientDependency="1f2ef865-581d-4af3-8bf5-87184063d638">
              <interfaceRealization xmi:id="1f2ef865-581d-4af3-8bf5-87184063d638" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="8200f168-7cc4-4004-99db-e8bae51dcc28" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="de4a1136-8f2b-4609-a55e-90cb53fd128e" name="ByteBufferAsIntBufferB" visibility="package">
            <generalization xmi:id="e8135c8d-1b1b-4843-838b-7c5874347ece" isSubstitutable="true" general="7fcc39a8-6c67-41c6-b77c-34c462fb3e15"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c35f09ec-d343-4b14-b024-c21f42b7cf71" name="ByteBufferAsShortBufferRL" visibility="package">
            <generalization xmi:id="658bfd9b-f7f8-4811-809a-da81bac2aaf6" isSubstitutable="true" general="88c5b833-3206-44ec-acd2-0e1c6aba960f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2b4a229a-29d5-416d-9747-7811f213cec4" name="HeapLongBufferR" visibility="package">
            <ownedComment xmi:id="86b47c68-6bbc-4daf-b816-0049feab8376" body="A read-only HeapLongBuffer.  This class extends the corresponding&#xA;read/write class, overriding the mutation methods to throw a {@link&#xA;ReadOnlyBufferException} and overriding the view-buffer methods to return an&#xA;instance of this class rather than of the superclass.&#xA;" annotatedElement="2b4a229a-29d5-416d-9747-7811f213cec4"/>
            <generalization xmi:id="33de2844-3b34-4716-8e05-b3938f42c3bc" isSubstitutable="true" general="65ee6025-5744-452e-a76a-bef1f29ac1ec"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4eaf9f56-3d01-4280-a208-df721202f6f8" name="ByteBuffer" clientDependency="41a4ed69-ade1-4307-902b-76613015ba0a" isAbstract="true">
            <ownedComment xmi:id="b8429150-c61a-4012-977e-5de4bc5d495c" body="A byte buffer.&#xA;&#xA;&lt;p> This class defines six categories of operations upon&#xA;byte buffers:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> Absolute and relative {@link #get() &lt;/code>&lt;i>get&lt;/i>&lt;code>} and&#xA;{@link #put(byte) &lt;/code>&lt;i>put&lt;/i>&lt;code>} methods that read and write&#xA;single bytes; &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Relative {@link #get(byte[]) &lt;/code>&lt;i>bulk get&lt;/i>&lt;code>}&#xA;methods that transfer contiguous sequences of bytes from this buffer&#xA;into an array; &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Relative {@link #put(byte[]) &lt;/code>&lt;i>bulk put&lt;/i>&lt;code>}&#xA;methods that transfer contiguous sequences of bytes from a&#xA;byte array or some other byte&#xA;buffer into this buffer; &lt;/p>&lt;/li>&#xA;&#xA;&#xA;&lt;li>&lt;p> Absolute and relative {@link #getChar() &lt;/code>&lt;i>get&lt;/i>&lt;code>}&#xA;and {@link #putChar(char) &lt;/code>&lt;i>put&lt;/i>&lt;code>} methods that read and&#xA;write values of other primitive types, translating them to and from&#xA;sequences of bytes in a particular byte order; &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Methods for creating &lt;i>&lt;a href=&quot;#views&quot;>view buffers&lt;/a>&lt;/i>,&#xA;which allow a byte buffer to be viewed as a buffer containing values of&#xA;some other primitive type; and &lt;/p>&lt;/li>&#xA;&#xA;&#xA;&lt;li>&lt;p> Methods for {@link #compact &lt;/code>compacting&lt;code>}, {@link&#xA;#duplicate &lt;/code>duplicating&lt;code>}, and {@link #slice&#xA;&lt;/code>slicing&lt;code>} a byte buffer.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p> Byte buffers can be created either by {@link #allocate&#xA;&lt;/code>&lt;i>allocation&lt;/i>&lt;code>}, which allocates space for the buffer's&#xA;&#xA;&#xA;content, or by {@link #wrap(byte[]) &lt;/code>&lt;i>wrapping&lt;/i>&lt;code>} an&#xA;existing byte array  into a buffer.&#xA;&#xA;&#xA;&#xA;&lt;a name=&quot;direct&quot;>&#xA;&lt;h4> Direct &lt;i>vs.&lt;/i> non-direct buffers &lt;/h4>&#xA;&#xA;&lt;p> A byte buffer is either &lt;i>direct&lt;/i> or &lt;i>non-direct&lt;/i>.  Given a&#xA;direct byte buffer, the Java virtual machine will make a best effort to&#xA;perform native I/O operations directly upon it.  That is, it will attempt to&#xA;avoid copying the buffer's content to (or from) an intermediate buffer&#xA;before (or after) each invocation of one of the underlying operating&#xA;system's native I/O operations.&#xA;&#xA;&lt;p> A direct byte buffer may be created by invoking the {@link&#xA;#allocateDirect(int) allocateDirect} factory method of this class.  The&#xA;buffers returned by this method typically have somewhat higher allocation&#xA;and deallocation costs than non-direct buffers.  The contents of direct&#xA;buffers may reside outside of the normal garbage-collected heap, and so&#xA;their impact upon the memory footprint of an application might not be&#xA;obvious.  It is therefore recommended that direct buffers be allocated&#xA;primarily for large, long-lived buffers that are subject to the underlying&#xA;system's native I/O operations.  In general it is best to allocate direct&#xA;buffers only when they yield a measureable gain in program performance.&#xA;&#xA;&lt;p> A direct byte buffer may also be created by {@link&#xA;java.nio.channels.FileChannel#map &lt;/code>mapping&lt;code>} a region of a file&#xA;directly into memory.  An implementation of the Java platform may optionally&#xA;support the creation of direct byte buffers from native code via JNI.  If an&#xA;instance of one of these kinds of buffers refers to an inaccessible region&#xA;of memory then an attempt to access that region will not change the buffer's&#xA;content and will cause an unspecified exception to be thrown either at the&#xA;time of the access or at some later time.&#xA;&#xA;&lt;p> Whether a byte buffer is direct or non-direct may be determined by&#xA;invoking its {@link #isDirect isDirect} method.  This method is provided so&#xA;that explicit buffer management can be done in performance-critical code.&#xA;&#xA;&#xA;&lt;a name=&quot;bin&quot;>&#xA;&lt;h4> Access to binary data &lt;/h4>&#xA;&#xA;&lt;p> This class defines methods for reading and writing values of all other&#xA;primitive types, except &lt;tt>boolean&lt;/tt>.  Primitive values are translated&#xA;to (or from) sequences of bytes according to the buffer's current byte&#xA;order, which may be retrieved and modified via the {@link #order order}&#xA;methods.  Specific byte orders are represented by instances of the {@link&#xA;ByteOrder} class.  The initial order of a byte buffer is always {@link&#xA;ByteOrder#BIG_ENDIAN BIG_ENDIAN}.&#xA;&#xA;&lt;p> For access to heterogeneous binary data, that is, sequences of values of&#xA;different types, this class defines a family of absolute and relative&#xA;&lt;i>get&lt;/i> and &lt;i>put&lt;/i> methods for each type.  For 32-bit floating-point&#xA;values, for example, this class defines:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;float  {@link #getFloat()}&#xA;float  {@link #getFloat(int) getFloat(int index)}&#xA;void  {@link #putFloat(float) putFloat(float f)}&#xA;void  {@link #putFloat(int,float) putFloat(int index, float f)}&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p> Corresponding methods are defined for the types &lt;tt>char&lt;/tt>,&#xA;&lt;tt>short&lt;/tt>, &lt;tt>int&lt;/tt>, &lt;tt>long&lt;/tt>, and &lt;tt>double&lt;/tt>.  The index&#xA;parameters of the absolute &lt;i>get&lt;/i> and &lt;i>put&lt;/i> methods are in terms of&#xA;bytes rather than of the type being read or written.&#xA;&#xA;&lt;a name=&quot;views&quot;>&#xA;&#xA;&lt;p> For access to homogeneous binary data, that is, sequences of values of&#xA;the same type, this class defines methods that can create &lt;i>views&lt;/i> of a&#xA;given byte buffer.  A &lt;i>view buffer&lt;/i> is simply another buffer whose&#xA;content is backed by the byte buffer.  Changes to the byte buffer's content&#xA;will be visible in the view buffer, and vice versa; the two buffers'&#xA;position, limit, and mark values are independent.  The {@link&#xA;#asFloatBuffer() asFloatBuffer} method, for example, creates an instance of&#xA;the {@link FloatBuffer} class that is backed by the byte buffer upon which&#xA;the method is invoked.  Corresponding view-creation methods are defined for&#xA;the types &lt;tt>char&lt;/tt>, &lt;tt>short&lt;/tt>, &lt;tt>int&lt;/tt>, &lt;tt>long&lt;/tt>, and&#xA;&lt;tt>double&lt;/tt>.&#xA;&#xA;&lt;p> View buffers have three important advantages over the families of&#xA;type-specific &lt;i>get&lt;/i> and &lt;i>put&lt;/i> methods described above:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> A view buffer is indexed not in terms of bytes but rather in terms&#xA;of the type-specific size of its values;  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> A view buffer provides relative bulk &lt;i>get&lt;/i> and &lt;i>put&lt;/i>&#xA;methods that can transfer contiguous sequences of values between a buffer&#xA;and an array or some other buffer of the same type; and  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> A view buffer is potentially much more efficient because it will&#xA;be direct if, and only if, its backing byte buffer is direct.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p> The byte order of a view buffer is fixed to be that of its byte buffer&#xA;at the time that the view is created.  &lt;/p>&#xA;&#xA;&#xA;&#xA;&#xA;&lt;h4> Invocation chaining &lt;/h4>&#xA;&#xA;&lt;p> Methods in this class that do not otherwise have a value to return are&#xA;specified to return the buffer upon which they are invoked.  This allows&#xA;method invocations to be chained.&#xA;&#xA;&#xA;The sequence of statements&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;bb.putInt(0xCAFEBABE);&#xA;bb.putShort(3);&#xA;bb.putShort(45);&lt;/pre>&lt;/blockquote>&#xA;&#xA;can, for example, be replaced by the single statement&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;bb.putInt(0xCAFEBABE).putShort(3).putShort(45);&lt;/pre>&lt;/blockquote>&#xA;&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.56, 04/07/16&#xA;@since 1.4&#xA;" annotatedElement="4eaf9f56-3d01-4280-a208-df721202f6f8"/>
            <generalization xmi:id="cbf25b24-fc9e-4efb-98ed-448d4c374eea" isSubstitutable="true" general="f3bf1ee5-e390-4ce3-85d5-3c6fe94b2391"/>
            <interfaceRealization xmi:id="41a4ed69-ade1-4307-902b-76613015ba0a" name="" supplier="68041507-27a5-4741-b72c-ff3bddd2cf53" client="4eaf9f56-3d01-4280-a208-df721202f6f8" contract="68041507-27a5-4741-b72c-ff3bddd2cf53"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7133704f-e8a6-4858-b88c-0add2760fc0d" name="ByteBufferAsShortBufferRB" visibility="package">
            <generalization xmi:id="5b5583ad-01cc-4c8c-9fc9-ee30816bd841" isSubstitutable="true" general="9e9269e8-6078-4f28-b829-c2288d91b246"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="65ee6025-5744-452e-a76a-bef1f29ac1ec" name="HeapLongBuffer" visibility="package">
            <ownedComment xmi:id="505500e1-1ee5-4f80-b429-061e2c630066" body="A read/write HeapLongBuffer.&#xA;" annotatedElement="65ee6025-5744-452e-a76a-bef1f29ac1ec"/>
            <generalization xmi:id="2d078535-d451-4228-92aa-4cf06c719f72" isSubstitutable="true" general="8d20592a-fd29-4546-9be9-dac230ff9392"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4ade080d-9783-4329-8876-023c390e544f" name="ByteBufferAsDoubleBufferB" visibility="package">
            <generalization xmi:id="2e22bf9a-ca0d-416e-9e2a-4efb58a24515" isSubstitutable="true" general="57f63dc4-afc9-493a-8799-bfb94a9b2bbc"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f6c5694a-fedf-4e5b-a86f-0b2c0887af69" name="DirectDoubleBufferS" visibility="package">
            <generalization xmi:id="6be12ba5-f47c-4ab3-802d-ef5710e38548" isSubstitutable="true" general="57f63dc4-afc9-493a-8799-bfb94a9b2bbc"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="40f68c5b-0296-411d-a390-e3f729d32602" name="charset">
            <packagedElement xmi:type="uml:Class" xmi:id="01f1cecf-79a9-4d82-b170-b567f46b988e" name="Charset" clientDependency="6be54117-4b02-48d3-8e6d-b821c2c5402a" isAbstract="true">
              <ownedComment xmi:id="7aa9eb12-90b4-43f8-98de-0bff656772df" body="A named mapping between sequences of sixteen-bit Unicode &lt;a&#xA;href=&quot;../../lang/Character.java#unicode&quot;>code units&lt;/a> and sequences of&#xA;bytes.  This class defines methods for creating decoders and encoders and&#xA;for retrieving the various names associated with a charset.  Instances of&#xA;this class are immutable.&#xA;&#xA;&lt;p> This class also defines static methods for testing whether a particular&#xA;charset is supported, for locating charset instances by name, and for&#xA;constructing a map that contains every charset for which support is&#xA;available in the current Java virtual machine.  Support for new charsets can&#xA;be added via the service-provider interface defined in the {@link&#xA;java.nio.charset.spi.CharsetProvider} class.&#xA;&#xA;&lt;p> All of the methods defined in this class are safe for use by multiple&#xA;concurrent threads.&#xA;&#xA;&#xA;&lt;a name=&quot;names&quot;>&lt;a name=&quot;charenc&quot;>&#xA;&lt;h4>Charset names&lt;/h4>&#xA;&#xA;&lt;p> Charsets are named by strings composed of the following characters:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li> The uppercase letters &lt;tt>'A'&lt;/tt> through &lt;tt>'Z'&lt;/tt>&#xA;(&lt;tt>'&amp;#92;u0041'&lt;/tt>&amp;nbsp;through&amp;nbsp;&lt;tt>'&amp;#92;u005a'&lt;/tt>),&#xA;&#xA;&lt;li> The lowercase letters &lt;tt>'a'&lt;/tt> through &lt;tt>'z'&lt;/tt>&#xA;(&lt;tt>'&amp;#92;u0061'&lt;/tt>&amp;nbsp;through&amp;nbsp;&lt;tt>'&amp;#92;u007a'&lt;/tt>),&#xA;&#xA;&lt;li> The digits &lt;tt>'0'&lt;/tt> through &lt;tt>'9'&lt;/tt>&#xA;(&lt;tt>'&amp;#92;u0030'&lt;/tt>&amp;nbsp;through&amp;nbsp;&lt;tt>'&amp;#92;u0039'&lt;/tt>),&#xA;&#xA;&lt;li> The dash character &lt;tt>'-'&lt;/tt>&#xA;(&lt;tt>'&amp;#92;u002d'&lt;/tt>,&amp;nbsp;&lt;small>HYPHEN-MINUS&lt;/small>),&#xA;&#xA;&lt;li> The period character &lt;tt>'.'&lt;/tt>&#xA;(&lt;tt>'&amp;#92;u002e'&lt;/tt>,&amp;nbsp;&lt;small>FULL STOP&lt;/small>),&#xA;&#xA;&lt;li> The colon character &lt;tt>':'&lt;/tt>&#xA;(&lt;tt>'&amp;#92;u003a'&lt;/tt>,&amp;nbsp;&lt;small>COLON&lt;/small>), and&#xA;&#xA;&lt;li> The underscore character &lt;tt>'_'&lt;/tt>&#xA;(&lt;tt>'&amp;#92;u005f'&lt;/tt>,&amp;nbsp;&lt;small>LOW&amp;nbsp;LINE&lt;/small>).&#xA;&#xA;&lt;/ul>&#xA;&#xA;A charset name must begin with either a letter or a digit.  The empty string&#xA;is not a legal charset name.  Charset names are not case-sensitive; that is,&#xA;case is always ignored when comparing charset names.  Charset names&#xA;generally follow the conventions documented in &lt;a&#xA;href=&quot;http://ietf.org/rfc/rfc2278.txt&quot;>&lt;i>RFC&amp;nbsp;2278:&amp;nbsp;IANA Charset&#xA;Registration Procedures&lt;/i>&lt;/a>.&#xA;&#xA;&lt;p> Every charset has a &lt;i>canonical name&lt;/i> and may also have one or more&#xA;&lt;i>aliases&lt;/i>.  The canonical name is returned by the {@link #name name} method&#xA;of this class.  Canonical names are, by convention, usually in upper case.&#xA;The aliases of a charset are returned by the {@link #aliases aliases}&#xA;method.&#xA;&#xA;&lt;a name=&quot;hn&quot;>&#xA;&#xA;&lt;p> Some charsets have an &lt;i>historical name&lt;/i> that is defined for&#xA;compatibility with previous versions of the Java platform.  A charset's&#xA;historical name is either its canonical name or one of its aliases.  The&#xA;historical name is returned by the &lt;tt>getEncoding()&lt;/tt> methods of the&#xA;{@link java.io.InputStreamReader#getEncoding InputStreamReader} and {@link&#xA;java.io.OutputStreamWriter#getEncoding OutputStreamWriter} classes.&#xA;&#xA;&lt;a name=&quot;iana&quot;>&#xA;&#xA;&lt;p> If a charset listed in the &lt;a&#xA;href=&quot;http://www.iana.org/assignments/character-sets&quot;>&lt;i>IANA Charset&#xA;Registry&lt;/i>&lt;/a> is supported by an implementation of the Java platform then&#xA;its canonical name must be the name listed in the registry.  Many charsets&#xA;are given more than one name in the registry, in which case the registry&#xA;identifies one of the names as &lt;i>MIME-preferred&lt;/i>.  If a charset has more&#xA;than one registry name then its canonical name must be the MIME-preferred&#xA;name and the other names in the registry must be valid aliases.  If a&#xA;supported charset is not listed in the IANA registry then its canonical name&#xA;must begin with one of the strings &lt;tt>&quot;X-&quot;&lt;/tt> or &lt;tt>&quot;x-&quot;&lt;/tt>.&#xA;&#xA;&lt;p> The IANA charset registry does change over time, and so the canonical&#xA;name and the aliases of a particular charset may also change over time.  To&#xA;ensure compatibility it is recommended that no alias ever be removed from a&#xA;charset, and that if the canonical name of a charset is changed then its&#xA;previous canonical name be made into an alias.&#xA;&#xA;&#xA;&lt;h4>Standard charsets&lt;/h4>&#xA;&#xA;&lt;p> Every implementation of the Java platform is required to support the&#xA;following standard charsets.  Consult the release documentation for your&#xA;implementation to see if any other charsets are supported.  The behavior&#xA;of such optional charsets may differ between implementations.&#xA;&#xA;&lt;blockquote>&lt;table width=&quot;80%&quot; summary=&quot;Description of standard charsets&quot;>&#xA;&lt;tr>&lt;th>&lt;p align=&quot;left&quot;>Charset&lt;/p>&lt;/th>&lt;th>&lt;p align=&quot;left&quot;>Description&lt;/p>&lt;/th>&lt;/tr>&#xA;&lt;tr>&lt;td valign=top>&lt;tt>US-ASCII&lt;/tt>&lt;/td>&#xA;&lt;td>Seven-bit ASCII, a.k.a. &lt;tt>ISO646-US&lt;/tt>,&#xA;a.k.a. the Basic Latin block of the Unicode character set&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=top>&lt;tt>ISO-8859-1&amp;nbsp;&amp;nbsp;&lt;/tt>&lt;/td>&#xA;&lt;td>ISO Latin Alphabet No. 1, a.k.a. &lt;tt>ISO-LATIN-1&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=top>&lt;tt>UTF-8&lt;/tt>&lt;/td>&#xA;&lt;td>Eight-bit UCS Transformation Format&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=top>&lt;tt>UTF-16BE&lt;/tt>&lt;/td>&#xA;&lt;td>Sixteen-bit UCS Transformation Format,&#xA;big-endian byte&amp;nbsp;order&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=top>&lt;tt>UTF-16LE&lt;/tt>&lt;/td>&#xA;&lt;td>Sixteen-bit UCS Transformation Format,&#xA;little-endian byte&amp;nbsp;order&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=top>&lt;tt>UTF-16&lt;/tt>&lt;/td>&#xA;&lt;td>Sixteen-bit UCS Transformation Format,&#xA;byte&amp;nbsp;order identified by an optional byte-order mark&lt;/td>&lt;/tr>&#xA;&lt;/table>&lt;/blockquote>&#xA;&#xA;&lt;p> The &lt;tt>UTF-8&lt;/tt> charset is specified by &lt;a&#xA;href=&quot;http://ietf.org/rfc/rfc2279.txt&quot;>&lt;i>RFC&amp;nbsp;2279&lt;/i>&lt;/a>; the&#xA;transformation format upon which it is based is specified in&#xA;Amendment&amp;nbsp;2 of ISO&amp;nbsp;10646-1 and is also described in the &lt;a&#xA;href=&quot;http://www.unicode.org/unicode/standard/standard.html&quot;>&lt;i>Unicode&#xA;Standard&lt;/i>&lt;/a>.&#xA;&#xA;&lt;p> The &lt;tt>UTF-16&lt;/tt> charsets are specified by &lt;a&#xA;href=&quot;http://ietf.org/rfc/rfc2781.txt&quot;>&lt;i>RFC&amp;nbsp;2781&lt;/i>&lt;/a>; the&#xA;transformation formats upon which they are based are specified in&#xA;Amendment&amp;nbsp;1 of ISO&amp;nbsp;10646-1 and are also described in the &lt;a&#xA;href=&quot;http://www.unicode.org/unicode/standard/standard.html&quot;>&lt;i>Unicode&#xA;Standard&lt;/i>&lt;/a>.&#xA;&#xA;&lt;p> The &lt;tt>UTF-16&lt;/tt> charsets use sixteen-bit quantities and are&#xA;therefore sensitive to byte order.  In these encodings the byte order of a&#xA;stream may be indicated by an initial &lt;i>byte-order mark&lt;/i> represented by&#xA;the Unicode character &lt;tt>'&amp;#92;uFEFF'&lt;/tt>.  Byte-order marks are handled&#xA;as follows:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> When decoding, the &lt;tt>UTF-16BE&lt;/tt> and &lt;tt>UTF-16LE&lt;/tt>&#xA;charsets ignore byte-order marks; when encoding, they do not write&#xA;byte-order marks. &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> When decoding, the &lt;tt>UTF-16&lt;/tt> charset interprets a byte-order&#xA;mark to indicate the byte order of the stream but defaults to big-endian&#xA;if there is no byte-order mark; when encoding, it uses big-endian byte&#xA;order and writes a big-endian byte-order mark. &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;In any case, when a byte-order mark is read at the beginning of a decoding&#xA;operation it is omitted from the resulting sequence of characters.  Byte&#xA;order marks occuring after the first element of an input sequence are not&#xA;omitted since the same code is used to represent &lt;small>ZERO-WIDTH&#xA;NON-BREAKING SPACE&lt;/small>.&#xA;&#xA;&lt;p> Every instance of the Java virtual machine has a default charset, which&#xA;may or may not be one of the standard charsets.  The default charset is&#xA;determined during virtual-machine startup and typically depends upon the&#xA;locale and charset being used by the underlying operating system. &lt;/p>&#xA;&#xA;&#xA;&lt;h4>Terminology&lt;/h4>&#xA;&#xA;&lt;p> The name of this class is taken from the terms used in &lt;a&#xA;href=&quot;http://ietf.org/rfc/rfc2278.txt&quot;&quot;>&lt;i>RFC&amp;nbsp;2278&lt;/i>&lt;/a>.  In that&#xA;document a &lt;i>charset&lt;/i> is defined as the combination of a coded character&#xA;set and a character-encoding scheme.&#xA;&#xA;&lt;p> A &lt;i>coded character set&lt;/i> is a mapping between a set of abstract&#xA;characters and a set of integers.  US-ASCII, ISO&amp;nbsp;8859-1,&#xA;JIS&amp;nbsp;X&amp;nbsp;0201, and full Unicode, which is the same as&#xA;ISO&amp;nbsp;10646-1, are examples of coded character sets.&#xA;&#xA;&lt;p> A &lt;i>character-encoding scheme&lt;/i> is a mapping between a coded&#xA;character set and a set of octet (eight-bit byte) sequences.  UTF-8, UCS-2,&#xA;UTF-16, ISO&amp;nbsp;2022, and EUC are examples of character-encoding schemes.&#xA;Encoding schemes are often associated with a particular coded character set;&#xA;UTF-8, for example, is used only to encode Unicode.  Some schemes, however,&#xA;are associated with multiple character sets; EUC, for example, can be used&#xA;to encode characters in a variety of Asian character sets.&#xA;&#xA;&lt;p> When a coded character set is used exclusively with a single&#xA;character-encoding scheme then the corresponding charset is usually named&#xA;for the character set; otherwise a charset is usually named for the encoding&#xA;scheme and, possibly, the locale of the character sets that it supports.&#xA;Hence &lt;tt>US-ASCII&lt;/tt> is the name of the charset for US-ASCII while&#xA;&lt;tt>EUC-JP&lt;/tt> is the name of the charset that encodes the&#xA;JIS&amp;nbsp;X&amp;nbsp;0201, JIS&amp;nbsp;X&amp;nbsp;0208, and JIS&amp;nbsp;X&amp;nbsp;0212&#xA;character sets.&#xA;&#xA;&lt;p> The native character encoding of the Java programming language is&#xA;UTF-16.  A charset in the Java platform therefore defines a mapping between&#xA;sequences of sixteen-bit UTF-16 code units and sequences of bytes. &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.46, 04/07/16&#xA;@since 1.4&#xA;&#xA;@see CharsetDecoder&#xA;@see CharsetEncoder&#xA;@see java.nio.charset.spi.CharsetProvider&#xA;@see java.lang.Character&#xA;" annotatedElement="01f1cecf-79a9-4d82-b170-b567f46b988e"/>
              <interfaceRealization xmi:id="6be54117-4b02-48d3-8e6d-b821c2c5402a" name="" supplier="4fbdae1d-3da1-4f04-a70b-9abd085f3176" client="01f1cecf-79a9-4d82-b170-b567f46b988e" contract="4fbdae1d-3da1-4f04-a70b-9abd085f3176"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f7c1e2d4-43ee-4c19-82e0-263d71d021f6" name="CodingErrorAction">
              <ownedComment xmi:id="4b57abfd-18f3-46b1-9410-a400d2b926b2" body="A typesafe enumeration for coding-error actions.&#xA;&#xA;&lt;p> Instances of this class are used to specify how malformed-input and&#xA;unmappable-character errors are to be handled by charset &lt;a&#xA;href=&quot;CharsetDecoder.html#cae&quot;>decoders&lt;/a> and &lt;a&#xA;href=&quot;CharsetEncoder.html#cae&quot;>encoders&lt;/a>.  &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.6, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="f7c1e2d4-43ee-4c19-82e0-263d71d021f6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1b1c2aa1-cb79-4bdc-8709-fd938c5805ae" name="IllegalCharsetNameException">
              <ownedComment xmi:id="12260884-d802-4e7f-a13e-855be85aced7" body="Unchecked exception thrown when a string that is not a&#xA;&lt;a href=Charset.html#names>legal charset name&lt;/a> is used as such.&#xA;&#xA;@version 1.2, 01/09/17&#xA;@since 1.4&#xA;" annotatedElement="1b1c2aa1-cb79-4bdc-8709-fd938c5805ae"/>
              <generalization xmi:id="a4cefed7-6efd-408c-9627-5c15432a6338" isSubstitutable="true" general="015b8627-f5b5-477f-8717-4d7c48152015"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ed13d022-cd0c-4421-8556-c0afd2ad50f1" name="CharacterCodingException">
              <ownedComment xmi:id="6553a9c8-11f8-49f6-b8e7-5b26f9d924ad" body="Checked exception thrown when a character encoding&#xA;or decoding error occurs.&#xA;&#xA;@version 1.2, 01/09/17&#xA;@since 1.4&#xA;" annotatedElement="ed13d022-cd0c-4421-8556-c0afd2ad50f1"/>
              <generalization xmi:id="c910f70f-5fde-4790-a5a7-90812a667fe7" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="450306a3-d084-4e5d-bc47-f823f4e56432" name="UnsupportedCharsetException">
              <ownedComment xmi:id="861986a2-0a1d-49e9-9e85-323abfdb1d10" body="Unchecked exception thrown when no support is available&#xA;for a requested charset.&#xA;&#xA;@version 1.2, 01/09/17&#xA;@since 1.4&#xA;" annotatedElement="450306a3-d084-4e5d-bc47-f823f4e56432"/>
              <generalization xmi:id="604d2410-78d3-413e-870d-8c45b5397fd9" isSubstitutable="true" general="015b8627-f5b5-477f-8717-4d7c48152015"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="1e28f34c-96d3-4a59-9f98-2eb02e26dea1" name="spi">
              <packagedElement xmi:type="uml:Class" xmi:id="b36e0c57-cfd7-4c0b-b8bf-495438034114" name="CharsetProvider" isAbstract="true">
                <ownedComment xmi:id="1c8f8ff8-87ba-4e1f-bbbb-7f6a69ae8c56" body="Charset service-provider class.&#xA;&#xA;&lt;p> A charset provider is a concrete subclass of this class that has a&#xA;zero-argument constructor and some number of associated charset&#xA;implementation classes.  Charset providers may be installed in an instance&#xA;of the Java platform as extensions, that is, jar files placed into any of&#xA;the usual extension directories.  Providers may also be made available by&#xA;adding them to the applet or application class path or by some other&#xA;platform-specific means.  Charset providers are looked up via the current&#xA;thread's {@link java.lang.Thread#getContextClassLoader() &lt;/code>context&#xA;class loader&lt;code>}.&#xA;&#xA;&lt;p> A charset provider identifies itself with a provider-configuration file&#xA;named &lt;tt>java.nio.charset.spi.CharsetProvider&lt;/tt> in the resource&#xA;directory &lt;tt>META-INF/services&lt;/tt>.  The file should contain a list of&#xA;fully-qualified concrete charset-provider class names, one per line.  A line&#xA;is terminated by any one of a line feed (&lt;tt>'\n'&lt;/tt>), a carriage return&#xA;(&lt;tt>'\r'&lt;/tt>), or a carriage return followed immediately by a line feed.&#xA;Space and tab characters surrounding each name, as well as blank lines, are&#xA;ignored.  The comment character is &lt;tt>'#'&lt;/tt> (&lt;tt>'&amp;#92;u0023'&lt;/tt>); on&#xA;each line all characters following the first comment character are ignored.&#xA;The file must be encoded in UTF-8.&#xA;&#xA;&lt;p> If a particular concrete charset provider class is named in more than&#xA;one configuration file, or is named in the same configuration file more than&#xA;once, then the duplicates will be ignored.  The configuration file naming a&#xA;particular provider need not be in the same jar file or other distribution&#xA;unit as the provider itself.  The provider must be accessible from the same&#xA;class loader that was initially queried to locate the configuration file;&#xA;this is not necessarily the class loader that loaded the file. &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.15, 04/05/05&#xA;@since 1.4&#xA;&#xA;@see java.nio.charset.Charset&#xA;" annotatedElement="b36e0c57-cfd7-4c0b-b8bf-495438034114"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="21008951-438e-401e-8ddf-47eb36e127b7" name="CoderMalfunctionError">
              <ownedComment xmi:id="d356fbef-dc9d-4f02-9969-e019fe95fda9" body="Error thrown when the {@link CharsetDecoder#decodeLoop decodeLoop} method of&#xA;a {@link CharsetDecoder}, or the {@link CharsetEncoder#encodeLoop&#xA;encodeLoop} method of a {@link CharsetEncoder}, throws an unexpected&#xA;exception.&#xA;&#xA;@version 1.5, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="21008951-438e-401e-8ddf-47eb36e127b7"/>
              <generalization xmi:id="b82c006d-142b-4805-8191-9e534be08664" isSubstitutable="true" general="4e4110b0-dae3-4d54-846c-b32f5eb17a30"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="4fbdae1d-3da1-4f04-a70b-9abd085f3176" name="Comparable&lt;Charset>">
              <templateBinding xmi:id="45e33024-8c37-4bf4-b9a3-583190d466d2" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
                <parameterSubstitution xmi:id="9a9c4716-bc54-427f-aa8e-426da1449a89" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="01f1cecf-79a9-4d82-b170-b567f46b988e"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a65029db-09da-4296-923c-f428aa3c0350" name="MalformedInputException">
              <ownedComment xmi:id="412f4e14-49a9-417f-b633-20408f5fcc24" body="Checked exception thrown when an input byte sequence is not legal for given&#xA;charset, or an input character sequence is not a legal sixteen-bit Unicode&#xA;sequence.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="a65029db-09da-4296-923c-f428aa3c0350"/>
              <generalization xmi:id="e2d6c105-46d3-43a8-86eb-d1d50ef18f87" isSubstitutable="true" general="ed13d022-cd0c-4421-8556-c0afd2ad50f1"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="3c161dc9-bc34-4395-8f2d-b5db3ebe43d6" name="UnmappableCharacterException">
              <ownedComment xmi:id="7904e9a4-29dc-4226-8523-899f3107d378" body="Checked exception thrown when an input character (or byte) sequence&#xA;is valid but cannot be mapped to an output byte (or character)&#xA;sequence.  &lt;/p>&#xA;&#xA;@since 1.4&#xA;" annotatedElement="3c161dc9-bc34-4395-8f2d-b5db3ebe43d6"/>
              <generalization xmi:id="71d65457-4057-496a-80aa-f01f61e11946" isSubstitutable="true" general="ed13d022-cd0c-4421-8556-c0afd2ad50f1"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ca83f7e1-a3f6-4f0c-852e-a8116343c441" name="CharsetEncoder" isAbstract="true">
              <ownedComment xmi:id="0fbed2c4-2e96-427b-b780-69241494b98a" body="An engine that can transform a sequence of sixteen-bit Unicode characters into a sequence of&#xA;bytes in a specific charset.&#xA;&#xA;&lt;a name=&quot;steps&quot;>&#xA;&#xA;&lt;p> The input character sequence is provided in a character buffer or a series&#xA;of such buffers.  The output byte sequence is written to a byte buffer&#xA;or a series of such buffers.  An encoder should always be used by making&#xA;the following sequence of method invocations, hereinafter referred to as an&#xA;&lt;i>encoding operation&lt;/i>:&#xA;&#xA;&lt;ol>&#xA;&#xA;&lt;li>&lt;p> Reset the encoder via the {@link #reset reset} method, unless it&#xA;has not been used before; &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Invoke the {@link #encode encode} method zero or more times, as&#xA;long as additional input may be available, passing &lt;tt>false&lt;/tt> for the&#xA;&lt;tt>endOfInput&lt;/tt> argument and filling the input buffer and flushing the&#xA;output buffer between invocations; &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Invoke the {@link #encode encode} method one final time, passing&#xA;&lt;tt>true&lt;/tt> for the &lt;tt>endOfInput&lt;/tt> argument; and then &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Invoke the {@link #flush flush} method so that the encoder can&#xA;flush any internal state to the output buffer. &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ol>&#xA;&#xA;Each invocation of the {@link #encode encode} method will encode as many&#xA;characters as possible from the input buffer, writing the resulting bytes&#xA;to the output buffer.  The {@link #encode encode} method returns when more&#xA;input is required, when there is not enough room in the output buffer, or&#xA;when an encoding error has occurred.  In each case a {@link CoderResult}&#xA;object is returned to describe the reason for termination.  An invoker can&#xA;examine this object and fill the input buffer, flush the output buffer, or&#xA;attempt to recover from an encoding error, as appropriate, and try again.&#xA;&#xA;&lt;a name=&quot;ce&quot;>&#xA;&#xA;&lt;p> There are two general types of encoding errors.  If the input character&#xA;sequence is not a legal sixteen-bit Unicode sequence then the input is considered &lt;i>malformed&lt;/i>.  If&#xA;the input character sequence is legal but cannot be mapped to a valid&#xA;byte sequence in the given charset then an &lt;i>unmappable character&lt;/i> has been encountered.&#xA;&#xA;&lt;a name=&quot;cae&quot;>&#xA;&#xA;&lt;p> How an encoding error is handled depends upon the action requested for&#xA;that type of error, which is described by an instance of the {@link&#xA;CodingErrorAction} class.  The possible error actions are to {@link&#xA;CodingErrorAction#IGNORE &lt;/code>ignore&lt;code>} the erroneous input, {@link&#xA;CodingErrorAction#REPORT &lt;/code>report&lt;code>} the error to the invoker via&#xA;the returned {@link CoderResult} object, or {@link CodingErrorAction#REPLACE&#xA;&lt;/code>replace&lt;code>} the erroneous input with the current value of the&#xA;replacement byte array.  The replacement&#xA;&#xA;is initially set to the encoder's default replacement, which often&#xA;(but not always) has the initial value&amp;nbsp;&lt;tt>{&lt;/tt>&amp;nbsp;&lt;tt>(byte)'?'&lt;/tt>&amp;nbsp;&lt;tt>}&lt;/tt>;&#xA;&#xA;its value may be changed via the {@link #replaceWith(byte[])&#xA;replaceWith} method.&#xA;&#xA;&lt;p> The default action for malformed-input and unmappable-character errors&#xA;is to {@link CodingErrorAction#REPORT &lt;/code>report&lt;code>} them.  The&#xA;malformed-input error action may be changed via the {@link&#xA;#onMalformedInput(CodingErrorAction) onMalformedInput} method; the&#xA;unmappable-character action may be changed via the {@link&#xA;#onUnmappableCharacter(CodingErrorAction) onUnmappableCharacter} method.&#xA;&#xA;&lt;p> This class is designed to handle many of the details of the encoding&#xA;process, including the implementation of error actions.  An encoder for a&#xA;specific charset, which is a concrete subclass of this class, need only&#xA;implement the abstract {@link #encodeLoop encodeLoop} method, which&#xA;encapsulates the basic encoding loop.  A subclass that maintains internal&#xA;state should, additionally, override the {@link #flush flush} and {@link&#xA;#reset reset} methods.&#xA;&#xA;&lt;p> Instances of this class are not safe for use by multiple concurrent&#xA;threads.  &lt;/p>&#xA;&#xA;&#xA;@version 1.40, 04/06/19&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@since 1.4&#xA;&#xA;@see ByteBuffer&#xA;@see CharBuffer&#xA;@see Charset&#xA;@see CharsetDecoder&#xA;" annotatedElement="ca83f7e1-a3f6-4f0c-852e-a8116343c441"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ff34defa-5579-4d52-9512-9d87104a1259" name="CoderResult">
              <ownedComment xmi:id="5f70abc9-4526-4cef-bd03-328750a9c58d" body="A description of the result state of a coder.&#xA;&#xA;&lt;p> A charset coder, that is, either a decoder or an encoder, consumes bytes&#xA;(or characters) from an input buffer, translates them, and writes the&#xA;resulting characters (or bytes) to an output buffer.  A coding process&#xA;terminates for one of four categories of reasons, which are described by&#xA;instances of this class:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> &lt;i>Underflow&lt;/i> is reported when there is no more input to be&#xA;processed, or there is insufficient input and additional input is&#xA;required.  This condition is represented by the unique result object&#xA;{@link #UNDERFLOW}, whose {@link #isUnderflow() isUnderflow} method&#xA;returns &lt;tt>true&lt;/tt>.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> &lt;i>Overflow&lt;/i> is reported when there is insufficient room&#xA;remaining in the output buffer.  This condition is represented by the&#xA;unique result object {@link #OVERFLOW}, whose {@link #isOverflow()&#xA;isOverflow} method returns &lt;tt>true&lt;/tt>.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> A &lt;i>malformed-input error&lt;/i> is reported when a sequence of&#xA;input units is not well-formed.  Such errors are described by instances of&#xA;this class whose {@link #isMalformed() isMalformed} method returns&#xA;&lt;tt>true&lt;/tt> and whose {@link #length() length} method returns the length&#xA;of the malformed sequence.  There is one unique instance of this class for&#xA;all malformed-input errors of a given length.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> An &lt;i>unmappable-character error&lt;/i> is reported when a sequence&#xA;of input units denotes a character that cannot be represented in the&#xA;output charset.  Such errors are described by instances of this class&#xA;whose {@link #isUnmappable() isUnmappable} method returns &lt;tt>true&lt;/tt> and&#xA;whose {@link #length() length} method returns the length of the input&#xA;sequence denoting the unmappable character.  There is one unique instance&#xA;of this class for all unmappable-character errors of a given length.&#xA;&lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;For convenience, the {@link #isError() isError} method returns &lt;tt>true&lt;/tt>&#xA;for result objects that describe malformed-input and unmappable-character&#xA;errors but &lt;tt>false&lt;/tt> for those that describe underflow or overflow&#xA;conditions.  &lt;/p>&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.8, 03/12/19&#xA;@since 1.4&#xA;" annotatedElement="ff34defa-5579-4d52-9512-9d87104a1259"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="38aac4e8-dca2-4aae-814b-82911a894b50" name="Cache" visibility="private" isAbstract="true"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f5c56e8d-75a4-4cd3-aae7-4a5e791c0e3f" name="CharsetDecoder" isAbstract="true">
              <ownedComment xmi:id="b714b7b5-48cd-458f-9797-d86cfbdcdf13" body="An engine that can transform a sequence of bytes in a specific charset into a sequence of&#xA;sixteen-bit Unicode characters.&#xA;&#xA;&lt;a name=&quot;steps&quot;>&#xA;&#xA;&lt;p> The input byte sequence is provided in a byte buffer or a series&#xA;of such buffers.  The output character sequence is written to a character buffer&#xA;or a series of such buffers.  A decoder should always be used by making&#xA;the following sequence of method invocations, hereinafter referred to as a&#xA;&lt;i>decoding operation&lt;/i>:&#xA;&#xA;&lt;ol>&#xA;&#xA;&lt;li>&lt;p> Reset the decoder via the {@link #reset reset} method, unless it&#xA;has not been used before; &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Invoke the {@link #decode decode} method zero or more times, as&#xA;long as additional input may be available, passing &lt;tt>false&lt;/tt> for the&#xA;&lt;tt>endOfInput&lt;/tt> argument and filling the input buffer and flushing the&#xA;output buffer between invocations; &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Invoke the {@link #decode decode} method one final time, passing&#xA;&lt;tt>true&lt;/tt> for the &lt;tt>endOfInput&lt;/tt> argument; and then &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Invoke the {@link #flush flush} method so that the decoder can&#xA;flush any internal state to the output buffer. &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ol>&#xA;&#xA;Each invocation of the {@link #decode decode} method will decode as many&#xA;bytes as possible from the input buffer, writing the resulting characters&#xA;to the output buffer.  The {@link #decode decode} method returns when more&#xA;input is required, when there is not enough room in the output buffer, or&#xA;when a decoding error has occurred.  In each case a {@link CoderResult}&#xA;object is returned to describe the reason for termination.  An invoker can&#xA;examine this object and fill the input buffer, flush the output buffer, or&#xA;attempt to recover from a decoding error, as appropriate, and try again.&#xA;&#xA;&lt;a name=&quot;ce&quot;>&#xA;&#xA;&lt;p> There are two general types of decoding errors.  If the input byte&#xA;sequence is not legal for this charset then the input is considered &lt;i>malformed&lt;/i>.  If&#xA;the input byte sequence is legal but cannot be mapped to a valid&#xA;Unicode character then an &lt;i>unmappable character&lt;/i> has been encountered.&#xA;&#xA;&lt;a name=&quot;cae&quot;>&#xA;&#xA;&lt;p> How a decoding error is handled depends upon the action requested for&#xA;that type of error, which is described by an instance of the {@link&#xA;CodingErrorAction} class.  The possible error actions are to {@link&#xA;CodingErrorAction#IGNORE &lt;/code>ignore&lt;code>} the erroneous input, {@link&#xA;CodingErrorAction#REPORT &lt;/code>report&lt;code>} the error to the invoker via&#xA;the returned {@link CoderResult} object, or {@link CodingErrorAction#REPLACE&#xA;&lt;/code>replace&lt;code>} the erroneous input with the current value of the&#xA;replacement string.  The replacement&#xA;&#xA;has the initial value &lt;tt>&quot;&amp;#92;uFFFD&quot;&lt;/tt>;&#xA;&#xA;its value may be changed via the {@link #replaceWith(java.lang.String)&#xA;replaceWith} method.&#xA;&#xA;&lt;p> The default action for malformed-input and unmappable-character errors&#xA;is to {@link CodingErrorAction#REPORT &lt;/code>report&lt;code>} them.  The&#xA;malformed-input error action may be changed via the {@link&#xA;#onMalformedInput(CodingErrorAction) onMalformedInput} method; the&#xA;unmappable-character action may be changed via the {@link&#xA;#onUnmappableCharacter(CodingErrorAction) onUnmappableCharacter} method.&#xA;&#xA;&lt;p> This class is designed to handle many of the details of the decoding&#xA;process, including the implementation of error actions.  A decoder for a&#xA;specific charset, which is a concrete subclass of this class, need only&#xA;implement the abstract {@link #decodeLoop decodeLoop} method, which&#xA;encapsulates the basic decoding loop.  A subclass that maintains internal&#xA;state should, additionally, override the {@link #flush flush} and {@link&#xA;#reset reset} methods.&#xA;&#xA;&lt;p> Instances of this class are not safe for use by multiple concurrent&#xA;threads.  &lt;/p>&#xA;&#xA;&#xA;@version 1.40, 04/06/19&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@since 1.4&#xA;&#xA;@see ByteBuffer&#xA;@see CharBuffer&#xA;@see Charset&#xA;@see CharsetEncoder&#xA;" annotatedElement="f5c56e8d-75a4-4cd3-aae7-4a5e791c0e3f"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="63fa4ec2-e5e7-4385-82b1-ae44a03c6162" name="ByteBufferAsCharBufferB" visibility="package">
            <generalization xmi:id="739f2d1e-f6ce-4b4b-b2cf-67a54b004a16" isSubstitutable="true" general="a4787598-15a7-437c-a0a4-b401bf308483"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="56312ee4-acaf-4fb2-b284-6ae1a396b276" name="DirectShortBufferU" visibility="package">
            <generalization xmi:id="7682355c-6aa0-4624-afda-8596b07023d4" isSubstitutable="true" general="38347dc2-2215-4670-9890-c9a2538f2289"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d51eaa16-733c-4d09-9d2e-087c1b03e9ff" name="BufferOverflowException">
            <ownedComment xmi:id="adffde51-2702-4055-97c0-cc3cfa4e12de" body="Unchecked exception thrown when a relative &lt;i>put&lt;/i> operation reaches&#xA;the target buffer's limit.&#xA;&#xA;@version 1.14, 01/05/02&#xA;@since 1.4&#xA;" annotatedElement="d51eaa16-733c-4d09-9d2e-087c1b03e9ff"/>
            <generalization xmi:id="e36b8f4e-7632-4576-912f-f0a8a84c1c0d" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="869a6bb7-7016-4957-be1e-3aed996ff2f9" name="DirectDoubleBufferRS" visibility="package">
            <generalization xmi:id="935a14ae-e750-4e28-9e8e-344f16dcac6d" isSubstitutable="true" general="f6c5694a-fedf-4e5b-a86f-0b2c0887af69"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="68041507-27a5-4741-b72c-ff3bddd2cf53" name="Comparable&lt;ByteBuffer>">
            <templateBinding xmi:id="d94c646b-25a8-4be8-9e95-3f66ba3f3b61" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="9182b87c-c82c-4c6e-8745-05981eeb1688" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="4eaf9f56-3d01-4280-a208-df721202f6f8"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e0f7456a-3107-4e66-a06b-9e662d76d5e1" name="DirectFloatBufferS" visibility="package">
            <generalization xmi:id="669abd11-04ee-441a-8810-a9e52900dbab" isSubstitutable="true" general="3317e581-02c3-4eec-bf92-1588209ed609"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d8d8921a-b394-435f-a827-760feb6bf1ab" name="DirectLongBufferU" visibility="package">
            <generalization xmi:id="f505bf4f-9510-4044-b579-0d9277d90ce2" isSubstitutable="true" general="8d20592a-fd29-4546-9be9-dac230ff9392"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f55648eb-4f84-42f3-85e1-aa0313a4217f" name="HeapIntBufferR" visibility="package">
            <ownedComment xmi:id="117a2f70-ca6a-47f1-8e8a-6b124aae93a7" body="A read-only HeapIntBuffer.  This class extends the corresponding&#xA;read/write class, overriding the mutation methods to throw a {@link&#xA;ReadOnlyBufferException} and overriding the view-buffer methods to return an&#xA;instance of this class rather than of the superclass.&#xA;" annotatedElement="f55648eb-4f84-42f3-85e1-aa0313a4217f"/>
            <generalization xmi:id="af8fc8a3-76d6-462e-bd46-37686d734074" isSubstitutable="true" general="35b3f3ed-c288-4e42-8c57-87755ce2c934"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="98f3edc5-1c91-4832-a4eb-16b232539f2b" name="DirectDoubleBufferRU" visibility="package">
            <generalization xmi:id="d2bd4814-d163-4572-81a0-fa725bfbe561" isSubstitutable="true" general="10d7b7e5-870f-4b60-9546-9619147eee39"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="51efc53a-6c12-4b77-acdb-0e0fb57eaf8f" name="ByteBufferAsLongBufferB" visibility="package">
            <generalization xmi:id="777d6469-8822-4036-9ee9-292a85032f78" isSubstitutable="true" general="8d20592a-fd29-4546-9be9-dac230ff9392"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b508c4cd-de27-485a-991b-fd5c13045332" name="Bits" visibility="package">
            <ownedComment xmi:id="6bf16724-6be1-44fc-acfa-417c008d29d7" body="Access to bits, native and otherwise.&#xA;" annotatedElement="b508c4cd-de27-485a-991b-fd5c13045332"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7757732f-9cbe-4dd3-a096-a648b5b4b101" name="DirectLongBufferRS" visibility="package">
            <generalization xmi:id="6cbc02ff-8f1a-4678-a3ed-7a946ee8e54b" isSubstitutable="true" general="de892feb-a9e3-408d-94a1-83681a5c2447"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="335b9679-13db-49ab-8602-cb4c685c9498" name="ByteBufferAsLongBufferRL" visibility="package">
            <generalization xmi:id="9ddf0e62-67ce-4316-8d75-bc8a4f5039a5" isSubstitutable="true" general="cce17f93-92e6-4dc9-8873-80a0ae378937"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ed03c79f-841d-47fc-8c41-4340ed1a4e3d" name="ByteBufferAsFloatBufferL" visibility="package">
            <generalization xmi:id="22b2fe5c-fe2f-4cb4-ba48-ef8992d227b4" isSubstitutable="true" general="3317e581-02c3-4eec-bf92-1588209ed609"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2c3d0f01-11e8-4762-baff-a0c45f39059c" name="ByteBufferAsCharBufferRL" visibility="package">
            <generalization xmi:id="9bf29b33-acdd-419b-8694-b2a29249c6ad" isSubstitutable="true" general="4eb15374-f412-4db0-b6f7-1c5862b2bd18"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="79a4e279-a107-420e-b0d0-e20087b4b0fe" name="DirectShortBufferRS" visibility="package">
            <generalization xmi:id="56f501a7-221f-46d5-b91f-128cdaefa72c" isSubstitutable="true" general="c876be31-8623-4326-89eb-d3b03bebcb41"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="88c5b833-3206-44ec-acd2-0e1c6aba960f" name="ByteBufferAsShortBufferL" visibility="package">
            <generalization xmi:id="aa7b2865-645a-4a6d-8775-8cf009b45cff" isSubstitutable="true" general="38347dc2-2215-4670-9890-c9a2538f2289"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="38347dc2-2215-4670-9890-c9a2538f2289" name="ShortBuffer" clientDependency="1101b047-f630-4d68-911f-5a136f04c6c7" isAbstract="true">
            <ownedComment xmi:id="f876ece9-9578-4811-aef1-686a3635f319" body="A short buffer.&#xA;&#xA;&lt;p> This class defines four categories of operations upon&#xA;short buffers:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> Absolute and relative {@link #get() &lt;/code>&lt;i>get&lt;/i>&lt;code>} and&#xA;{@link #put(short) &lt;/code>&lt;i>put&lt;/i>&lt;code>} methods that read and write&#xA;single shorts; &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Relative {@link #get(short[]) &lt;/code>&lt;i>bulk get&lt;/i>&lt;code>}&#xA;methods that transfer contiguous sequences of shorts from this buffer&#xA;into an array; and&lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Relative {@link #put(short[]) &lt;/code>&lt;i>bulk put&lt;/i>&lt;code>}&#xA;methods that transfer contiguous sequences of shorts from a&#xA;short array or some other short&#xA;buffer into this buffer;&amp;#32;and &lt;/p>&lt;/li>&#xA;&#xA;&#xA;&lt;li>&lt;p> Methods for {@link #compact &lt;/code>compacting&lt;code>}, {@link&#xA;#duplicate &lt;/code>duplicating&lt;code>}, and {@link #slice&#xA;&lt;/code>slicing&lt;code>} a short buffer.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p> Short buffers can be created either by {@link #allocate&#xA;&lt;/code>&lt;i>allocation&lt;/i>&lt;code>}, which allocates space for the buffer's&#xA;&#xA;&#xA;content, by {@link #wrap(short[]) &lt;/code>&lt;i>wrapping&lt;/i>&lt;code>} an existing&#xA;short array  into a buffer, or by creating a&#xA;&lt;a href=&quot;ByteBuffer.html#view&quot;>&lt;i>view&lt;/i>&lt;/a> of an existing byte buffer&#xA;&#xA;&#xA;&#xA;&#xA;&lt;p> Like a byte buffer, a short buffer is either &lt;a&#xA;href=&quot;ByteBuffer.html#direct&quot;>&lt;i>direct&lt;/i> or &lt;i>non-direct&lt;/i>&lt;/a>.  A&#xA;short buffer created via the &lt;tt>wrap&lt;/tt> methods of this class will&#xA;be non-direct.  A short buffer created as a view of a byte buffer will&#xA;be direct if, and only if, the byte buffer itself is direct.  Whether or not&#xA;a short buffer is direct may be determined by invoking the {@link&#xA;#isDirect isDirect} method.  &lt;/p>&#xA;&#xA;&#xA;&#xA;&#xA;&lt;p> Methods in this class that do not otherwise have a value to return are&#xA;specified to return the buffer upon which they are invoked.  This allows&#xA;method invocations to be chained.&#xA;&#xA;&#xA;&#xA;@author Mark Reinhold&#xA;@author JSR-51 Expert Group&#xA;@version 1.56, 04/07/16&#xA;@since 1.4&#xA;" annotatedElement="38347dc2-2215-4670-9890-c9a2538f2289"/>
            <generalization xmi:id="d30fcec8-b607-4b11-b625-d246858238e9" isSubstitutable="true" general="f3bf1ee5-e390-4ce3-85d5-3c6fe94b2391"/>
            <interfaceRealization xmi:id="1101b047-f630-4d68-911f-5a136f04c6c7" name="" supplier="c174dcda-0920-4e54-ad16-1a989d07c883" client="38347dc2-2215-4670-9890-c9a2538f2289" contract="c174dcda-0920-4e54-ad16-1a989d07c883"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4dc56b0a-1ab1-433a-8066-36f75968ca12" name="ByteBufferAsIntBufferL" visibility="package">
            <generalization xmi:id="e79f0e56-c1ff-4dcb-a0f5-b3411dc55872" isSubstitutable="true" general="7fcc39a8-6c67-41c6-b77c-34c462fb3e15"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9804607a-1759-4910-88f6-8613e321d982" name="DirectFloatBufferRU" visibility="package">
            <generalization xmi:id="8be891de-a185-4856-91b7-c4b7ba0bcb2c" isSubstitutable="true" general="9a6b3287-85b5-41d2-ba73-0ca1a083d6d2"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c118fba2-6f17-4d14-b578-ee9f07beb016" name="HeapShortBufferR" visibility="package">
            <ownedComment xmi:id="bfb6eab2-aa48-4340-a2ac-b82823e29beb" body="A read-only HeapShortBuffer.  This class extends the corresponding&#xA;read/write class, overriding the mutation methods to throw a {@link&#xA;ReadOnlyBufferException} and overriding the view-buffer methods to return an&#xA;instance of this class rather than of the superclass.&#xA;" annotatedElement="c118fba2-6f17-4d14-b578-ee9f07beb016"/>
            <generalization xmi:id="1124b61f-65de-4a2a-8c6a-92a92a2ce0ee" isSubstitutable="true" general="0c935759-45a6-46ec-9330-3523ab36680c"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="af71db7b-0084-4b9c-a48c-afe77354a1ef" name="DirectLongBufferRU" visibility="package">
            <generalization xmi:id="425c5db6-8c44-4bb0-b704-8dbe17a58a46" isSubstitutable="true" general="d8d8921a-b394-435f-a827-760feb6bf1ab"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="400abbdf-80ee-4fc4-9e84-0224b252cbeb" name="security">
          <packagedElement xmi:type="uml:Package" xmi:id="6aae9c38-fee7-4339-b76d-c2206c156283" name="acl">
            <packagedElement xmi:type="uml:Interface" xmi:id="216fb2a9-bfd9-47e8-808b-17474488bde5" name="Owner" isAbstract="true">
              <ownedComment xmi:id="c60e343d-c60b-4e71-9f62-cefab2a79188" body="Interface for managing owners of Access Control Lists (ACLs) or ACL&#xA;configurations. (Note that the Acl interface in the&#xA;&lt;code> java.security.acl &lt;/code> package extends this Owner&#xA;interface.) The initial owner Principal should be specified as an&#xA;argument to the constructor of the class implementing this interface.&#xA;&#xA;@see java.security.acl.Acl&#xA;&#xA;" annotatedElement="216fb2a9-bfd9-47e8-808b-17474488bde5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="91c99b5a-7f6c-4723-9ded-e6d8f872865f" name="Permission" isAbstract="true">
              <ownedComment xmi:id="5cdefb65-163f-4acc-b142-1c2d53944864" body="This interface represents a permission, such as that used to grant&#xA;a particular type of access to a resource.&#xA;&#xA;@author Satish Dharmaraj&#xA;" annotatedElement="91c99b5a-7f6c-4723-9ded-e6d8f872865f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="bd7cb3b6-96d9-452b-9615-045421dc0d41" name="Acl" isAbstract="true">
              <ownedComment xmi:id="58cdd2f3-12cd-49b0-be64-ebd26515b914" body="Interface representing an Access Control List (ACL).  An Access&#xA;Control List is a data structure used to guard access to&#xA;resources.&lt;p>&#xA;&#xA;An ACL can be thought of as a data structure with multiple ACL&#xA;entries.  Each ACL entry, of interface type AclEntry, contains a&#xA;set of permissions associated with a particular principal. (A&#xA;principal represents an entity such as an individual user or a&#xA;group). Additionally, each ACL entry is specified as being either&#xA;positive or negative. If positive, the permissions are to be&#xA;granted to the associated principal. If negative, the permissions&#xA;are to be denied.&lt;p>&#xA;&#xA;The ACL Entries in each ACL observe the following rules:&lt;p>&#xA;&#xA;&lt;ul> &lt;li>Each principal can have at most one positive ACL entry and&#xA;one negative entry; that is, multiple positive or negative ACL&#xA;entries are not allowed for any principal.  Each entry specifies&#xA;the set of permissions that are to be granted (if positive) or&#xA;denied (if negative). &lt;p>&#xA;&#xA;&lt;li>If there is no entry for a particular principal, then the&#xA;principal is considered to have a null (empty) permission set.&lt;p>&#xA;&#xA;&lt;li>If there is a positive entry that grants a principal a&#xA;particular permission, and a negative entry that denies the&#xA;principal the same permission, the result is as though the&#xA;permission was never granted or denied. &lt;p>&#xA;&#xA;&lt;li>Individual permissions always override permissions of the&#xA;group(s) to which the individual belongs. That is, individual&#xA;negative permissions (specific denial of permissions) override the&#xA;groups' positive permissions. And individual positive permissions&#xA;override the groups' negative permissions.&lt;p>&#xA;&#xA;&lt;/ul>&#xA;&#xA;The &lt;code> java.security.acl &lt;/code> package provides the&#xA;interfaces to the ACL and related data structures (ACL entries,&#xA;groups, permissions, etc.), and the &lt;code> sun.security.acl &lt;/code>&#xA;classes provide a default implementation of the interfaces. For&#xA;example, &lt;code> java.security.acl.Acl &lt;/code> provides the&#xA;interface to an ACL and the &lt;code> sun.security.acl.AclImpl &lt;/code>&#xA;class provides the default implementation of the interface.&lt;p>&#xA;&#xA;The &lt;code> java.security.acl.Acl &lt;/code> interface extends the&#xA;&lt;code> java.security.acl.Owner &lt;/code> interface. The Owner&#xA;interface is used to maintain a list of owners for each ACL.  Only&#xA;owners are allowed to modify an ACL. For example, only an owner can&#xA;call the ACL's &lt;code>addEntry&lt;/code> method to add a new ACL entry&#xA;to the ACL.&#xA;&#xA;@see java.security.acl.AclEntry&#xA;@see java.security.acl.Owner&#xA;@see java.security.acl.Acl#getPermissions&#xA;&#xA;@version 1.23, 04/05/05&#xA;@author Satish Dharmaraj&#xA;" annotatedElement="bd7cb3b6-96d9-452b-9615-045421dc0d41"/>
              <generalization xmi:id="2e500cd8-150f-4dc6-87a0-5f08c376850e" isSubstitutable="true" general="216fb2a9-bfd9-47e8-808b-17474488bde5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e1bb41ad-4bde-4c27-a90b-f2467aebd153" name="NotOwnerException">
              <ownedComment xmi:id="024f6df8-7945-4c15-8b4f-8212b70924c1" body="This is an exception that is thrown whenever the modification of an object&#xA;(such as an Access Control List) is only allowed to be done by an owner of&#xA;the object, but the Principal attempting the modification is not an owner.&#xA;&#xA;@author &#x9;Satish Dharmaraj&#xA;" annotatedElement="e1bb41ad-4bde-4c27-a90b-f2467aebd153"/>
              <generalization xmi:id="063c299b-9c53-49b9-803d-b30b614d6059" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="4dc49289-63d5-4e25-824e-c495acd4bfc4" name="AclEntry" isAbstract="true">
              <ownedComment xmi:id="932df8c4-673b-4dd9-acf3-06e6989dedcc" body="This is the interface used for representing one entry in an Access&#xA;Control List (ACL).&lt;p>&#xA;&#xA;An ACL can be thought of as a data structure with multiple ACL entry&#xA;objects. Each ACL entry object contains a set of permissions associated&#xA;with a particular principal. (A principal represents an entity such as&#xA;an individual user or a group). Additionally, each ACL entry is specified&#xA;as being either positive or negative. If positive, the permissions are&#xA;to be granted to the associated principal. If negative, the permissions&#xA;are to be denied. Each principal can have at most one positive ACL entry&#xA;and one negative entry; that is, multiple positive or negative ACL&#xA;entries are not allowed for any principal.&#xA;&#xA;Note: ACL entries are by default positive. An entry becomes a&#xA;negative entry only if the&#xA;{@link #setNegativePermissions() setNegativePermissions}&#xA;method is called on it.&#xA;&#xA;@see java.security.acl.Acl&#xA;&#xA;@author &#x9;Satish Dharmaraj&#xA;" annotatedElement="4dc49289-63d5-4e25-824e-c495acd4bfc4"/>
              <generalization xmi:id="1bf8ab80-7bb4-4d3c-8487-a43fadabe6ac" isSubstitutable="true" general="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f9dc2cad-7c21-4063-a7a9-1b11f879fb65" name="AclNotFoundException">
              <ownedComment xmi:id="2fc664b0-f51b-484e-808b-d2c3e1aa3eb6" body="This is an exception that is thrown whenever a reference is made to a&#xA;non-existent ACL (Access Control List).&#xA;&#xA;@author &#x9;Satish Dharmaraj&#xA;" annotatedElement="f9dc2cad-7c21-4063-a7a9-1b11f879fb65"/>
              <generalization xmi:id="d1cd6541-7d1d-404b-95db-ce6a0c0f3f85" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d4a4d3d6-db73-467c-8a8c-585ebcd65a8a" name="Group" isAbstract="true">
              <ownedComment xmi:id="9693b481-4444-4711-a731-7c9d491a7969" body="This interface is used to represent a group of principals. (A principal&#xA;represents an entity such as an individual user or a company). &lt;p>&#xA;&#xA;Note that Group extends Principal. Thus, either a Principal or a Group can&#xA;be passed as an argument to methods containing a Principal parameter. For&#xA;example, you can add either a Principal or a Group to a Group object by&#xA;calling the object's &lt;code>addMember&lt;/code> method, passing it the&#xA;Principal or Group.&#xA;&#xA;@author &#x9;Satish Dharmaraj&#xA;" annotatedElement="d4a4d3d6-db73-467c-8a8c-585ebcd65a8a"/>
              <generalization xmi:id="05935540-63ec-48d3-abcc-fa5ad54ceee9" isSubstitutable="true" general="516530d1-1bf1-40f1-8619-f08f8811875d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4c9c7036-7559-49a8-9036-122549e68aeb" name="LastOwnerException">
              <ownedComment xmi:id="b89a33c9-2e31-4a0f-b349-168e2808da9d" body="This is an exception that is thrown whenever an attempt is made to delete&#xA;the last owner of an Access Control List.&#xA;&#xA;@see java.security.acl.Owner#deleteOwner&#xA;&#xA;@author Satish Dharmaraj&#xA;" annotatedElement="4c9c7036-7559-49a8-9036-122549e68aeb"/>
              <generalization xmi:id="b5792125-2fce-4795-ac4c-c51583247f6d" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f2ae92a8-f7b7-41b1-be64-153a0078167e" name="KeyStore">
            <ownedComment xmi:id="438695e7-1c4b-496b-b1cb-d57824025e7e" body="This class represents a storage facility for cryptographic&#xA;keys and certificates.&#xA;&#xA;&lt;p> A &lt;code>KeyStore&lt;/code> manages different types of entries.&#xA;Each type of entry implements the &lt;code>KeyStore.Entry&lt;/code> interface.&#xA;Three basic &lt;code>KeyStore.Entry&lt;/code> implementations are provided:&#xA;&#xA;&lt;ul>&#xA;&lt;li>&lt;b>KeyStore.PrivateKeyEntry&lt;/b>&#xA;&lt;p> This type of entry holds a cryptographic &lt;code>PrivateKey&lt;/code>,&#xA;which is optionally stored in a protected format to prevent&#xA;unauthorized access.  It is also accompanied by a certificate chain&#xA;for the corresponding public key.&#xA;&#xA;&lt;p> Private keys and certificate chains are used by a given entity for&#xA;self-authentication. Applications for this authentication include software&#xA;distribution organizations which sign JAR files as part of releasing&#xA;and/or licensing software.&#xA;&#xA;&lt;li>&lt;b>KeyStore.SecretKeyEntry&lt;/b>&#xA;&lt;p> This type of entry holds a cryptographic &lt;code>SecretKey&lt;/code>,&#xA;which is optionally stored in a protected format to prevent&#xA;unauthorized access.&#xA;&#xA;&lt;li>&lt;b>KeyStore.TrustedCertificateEntry&lt;/b>&#xA;&lt;p> This type of entry contains a single public key &lt;code>Certificate&lt;/code>&#xA;belonging to another party. It is called a &lt;i>trusted certificate&lt;/i>&#xA;because the keystore owner trusts that the public key in the certificate&#xA;indeed belongs to the identity identified by the &lt;i>subject&lt;/i> (owner)&#xA;of the certificate.&#xA;&#xA;&lt;p>This type of entry can be used to authenticate other parties.&#xA;&lt;/ul>&#xA;&#xA;&lt;p> Each entry in a keystore is identified by an &quot;alias&quot; string. In the&#xA;case of private keys and their associated certificate chains, these strings&#xA;distinguish among the different ways in which the entity may authenticate&#xA;itself. For example, the entity may authenticate itself using different&#xA;certificate authorities, or using different public key algorithms.&#xA;&#xA;&lt;p> Whether keystores are persistent, and the mechanisms used by the&#xA;keystore if it is persistent, are not specified here. This allows&#xA;use of a variety of techniques for protecting sensitive (e.g., private or&#xA;secret) keys. Smart cards or other integrated cryptographic engines&#xA;(SafeKeyper) are one option, and simpler mechanisms such as files may also&#xA;be used (in a variety of formats).&#xA;&#xA;&lt;p> Typical ways to request a KeyStore object include&#xA;relying on the default type and providing a specific keystore type.&#xA;&#xA;&lt;ul>&#xA;&lt;li>To rely on the default type:&#xA;&lt;pre>&#xA;KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());&#xA;&lt;/pre>&#xA;The system will return a keystore implementation for the default type.&#xA;&lt;p>&#xA;&#xA;&lt;li>To provide a specific keystore type:&#xA;&lt;pre>&#xA;KeyStore ks = KeyStore.getInstance(&quot;JKS&quot;);&#xA;&lt;/pre>&#xA;The system will return the most preferred implementation of the&#xA;specified keystore type available in the environment. &lt;p>&#xA;&lt;/ul>&#xA;&#xA;&lt;p> Before a keystore can be accessed, it must be&#xA;{@link #load(java.io.InputStream, char[]) loaded}.&#xA;&lt;pre>&#xA;KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());&#xA;&#xA;get user password and file input stream&#xA;char[] password = getPassword();&#xA;java.io.FileInputStream fis =&#xA;new java.io.FileInputStream(&quot;keyStoreName&quot;);&#xA;ks.load(fis, password);&#xA;fis.close();&#xA;&lt;/pre>&#xA;&#xA;To create an empty keystore using the above &lt;code>load&lt;/code> method,&#xA;pass &lt;code>null&lt;/code> as the &lt;code>InputStream&lt;/code> argument.&#xA;&#xA;&lt;p> Once the keystore has been loaded, it is possible&#xA;to read existing entries from the keystore, or to write new entries&#xA;into the keystore:&#xA;&lt;pre>&#xA;get my private key&#xA;KeyStore.PrivateKeyEntry pkEntry = (KeyStore.PrivateKeyEntry)&#xA;ks.getEntry(&quot;privateKeyAlias&quot;, password);&#xA;PrivateKey myPrivateKey = pkEntry.getPrivateKey();&#xA;&#xA;save my secret key&#xA;javax.crypto.SecretKey mySecretKey;&#xA;KeyStore.SecretKeyEntry skEntry =&#xA;new KeyStore.SecretKeyEntry(mySecretKey);&#xA;ks.setEntry(&quot;secretKeyAlias&quot;, skEntry, password);&#xA;&#xA;store away the keystore&#xA;java.io.FileOutputStream fos =&#xA;new java.io.FileOutputStream(&quot;newKeyStoreName&quot;);&#xA;ks.store(fos, password);&#xA;fos.close();&#xA;&lt;/pre>&#xA;&#xA;Note that although the same password may be used to&#xA;load the keystore, to protect the private key entry,&#xA;to protect the secret key entry, and to store the keystore&#xA;(as is shown in the sample code above),&#xA;different passwords or other protection parameters&#xA;may also be used.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.42, 06/28/04&#xA;&#xA;@see java.security.PrivateKey&#xA;@see javax.crypto.SecretKey&#xA;@see java.security.cert.Certificate&#xA;&#xA;@since 1.2&#xA;" annotatedElement="f2ae92a8-f7b7-41b1-be64-153a0078167e"/>
            <nestedClassifier xmi:type="uml:Interface" xmi:id="11573554-63b0-43f4-853a-f8581c51061f" name="LoadStoreParameter" isAbstract="true">
              <ownedComment xmi:id="6bb36850-3362-4adb-a05a-bda455b616d4" body="A marker interface for &lt;code>KeyStore&lt;/code>&#xA;{@link #load(KeyStore.LoadStoreParameter) load}&#xA;and&#xA;{@link #store(KeyStore.LoadStoreParameter) store}&#xA;parameters.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="11573554-63b0-43f4-853a-f8581c51061f"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Interface" xmi:id="49c7a596-2eeb-40a3-8399-42cd948fbc07" name="ProtectionParameter" isAbstract="true">
              <ownedComment xmi:id="26062b9a-3519-4db5-a11c-bf11c4b5ee18" body="A marker interface for keystore protection parameters.&#xA;&#xA;&lt;p> The information stored in a &lt;code>ProtectionParameter&lt;/code>&#xA;object protects the contents of a keystore.&#xA;For example, protection parameters may be used to check&#xA;the integrity of keystore data, or to protect the&#xA;confidentiality of sensitive keystore data&#xA;(such as a &lt;code>PrivateKey&lt;/code>).&#xA;&#xA;@since 1.5&#xA;" annotatedElement="49c7a596-2eeb-40a3-8399-42cd948fbc07"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="62bf6d78-5194-45a4-aa9c-bb1c0226b2ba" name="PasswordProtection" clientDependency="554e753f-c170-4681-80c0-312cc2a5b1fc a426cd02-fb49-47c9-b5f1-b5ef1544ccf0">
              <ownedComment xmi:id="065fb358-8f7a-44ff-a2f3-14e5db8eec83" body="A password-based implementation of &lt;code>ProtectionParameter&lt;/code>.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="62bf6d78-5194-45a4-aa9c-bb1c0226b2ba"/>
              <interfaceRealization xmi:id="a426cd02-fb49-47c9-b5f1-b5ef1544ccf0" name="" supplier="49c7a596-2eeb-40a3-8399-42cd948fbc07" client="62bf6d78-5194-45a4-aa9c-bb1c0226b2ba" contract="49c7a596-2eeb-40a3-8399-42cd948fbc07"/>
              <interfaceRealization xmi:id="554e753f-c170-4681-80c0-312cc2a5b1fc" name="" supplier="8a4f780b-bb34-4f90-bdfb-a28d9959af3a" client="62bf6d78-5194-45a4-aa9c-bb1c0226b2ba" contract="8a4f780b-bb34-4f90-bdfb-a28d9959af3a"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="b047bb26-6600-4df5-8ccb-d29d073592e8" name="CallbackHandlerProtection" clientDependency="273f00ae-e1d0-4894-8ed3-775db6b0d74c">
              <ownedComment xmi:id="83510054-9272-4b47-8d39-29e8692a842a" body="A ProtectionParameter encapsulating a CallbackHandler.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="b047bb26-6600-4df5-8ccb-d29d073592e8"/>
              <interfaceRealization xmi:id="273f00ae-e1d0-4894-8ed3-775db6b0d74c" name="" supplier="49c7a596-2eeb-40a3-8399-42cd948fbc07" client="b047bb26-6600-4df5-8ccb-d29d073592e8" contract="49c7a596-2eeb-40a3-8399-42cd948fbc07"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Interface" xmi:id="da7f27ea-be7d-4262-9a49-a794f95cdb4f" name="Entry" isAbstract="true">
              <ownedComment xmi:id="8216f047-a3af-4bbd-8bcb-70547e5f1b79" body="A marker interface for &lt;code>KeyStore&lt;/code> entry types.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="da7f27ea-be7d-4262-9a49-a794f95cdb4f"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="e7dccc2f-1368-46ea-86a7-9263a00a9caf" name="PrivateKeyEntry" clientDependency="a47276cd-fa62-47df-abd0-f34b0a74a372" isLeaf="true">
              <ownedComment xmi:id="7e560a9e-4c70-45b6-95b6-3e7f8cc21d1a" body="A &lt;code>KeyStore&lt;/code> entry that holds a &lt;code>PrivateKey&lt;/code>&#xA;and corresponding certificate chain.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="e7dccc2f-1368-46ea-86a7-9263a00a9caf"/>
              <interfaceRealization xmi:id="a47276cd-fa62-47df-abd0-f34b0a74a372" name="" supplier="da7f27ea-be7d-4262-9a49-a794f95cdb4f" client="e7dccc2f-1368-46ea-86a7-9263a00a9caf" contract="da7f27ea-be7d-4262-9a49-a794f95cdb4f"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="68e73484-c68c-48a4-a8a1-669a61983938" name="SecretKeyEntry" clientDependency="54db4895-8bd3-467f-a14e-236b9f637bb0" isLeaf="true">
              <ownedComment xmi:id="e0819ec6-3f00-4ed5-968b-e09b231ac7d4" body="A &lt;code>KeyStore&lt;/code> entry that holds a &lt;code>SecretKey&lt;/code>.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="68e73484-c68c-48a4-a8a1-669a61983938"/>
              <interfaceRealization xmi:id="54db4895-8bd3-467f-a14e-236b9f637bb0" name="" supplier="da7f27ea-be7d-4262-9a49-a794f95cdb4f" client="68e73484-c68c-48a4-a8a1-669a61983938" contract="da7f27ea-be7d-4262-9a49-a794f95cdb4f"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ba48644a-ef7c-48e0-a6e2-d64db33eb9da" name="TrustedCertificateEntry" clientDependency="af8a1411-8a68-4ef3-89b7-ac0353960793" isLeaf="true">
              <ownedComment xmi:id="3bd2c756-d04e-4622-abfc-c3f957b5a5ca" body="A &lt;code>KeyStore&lt;/code> entry that holds a trusted&#xA;&lt;code>Certificate&lt;/code>.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="ba48644a-ef7c-48e0-a6e2-d64db33eb9da"/>
              <interfaceRealization xmi:id="af8a1411-8a68-4ef3-89b7-ac0353960793" name="" supplier="da7f27ea-be7d-4262-9a49-a794f95cdb4f" client="ba48644a-ef7c-48e0-a6e2-d64db33eb9da" contract="da7f27ea-be7d-4262-9a49-a794f95cdb4f"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="74000cd1-8230-4611-a376-91ddb6d41d1e" name="Builder" isAbstract="true">
              <ownedComment xmi:id="ed35c10e-f4b4-4f9c-9764-8a5a55631fc8" body="A description of a to-be-instantiated KeyStore object.&#xA;&#xA;&lt;p>An instance of this class encapsulates the information needed to&#xA;instantiate and initialize a KeyStore object. That process is&#xA;triggered when the {@linkplain #getKeyStore} method is called.&#xA;&#xA;&lt;p>This makes it possible to decouple configuration from KeyStore&#xA;object creation and e.g. delay a password prompt until it is&#xA;needed.&#xA;&#xA;@see KeyStore&#xA;@see javax.net.ssl.KeyStoreBuilderParameters&#xA;@since 1.5&#xA;" annotatedElement="74000cd1-8230-4611-a376-91ddb6d41d1e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="eac7a52a-5cad-40b0-8aae-759baaa7f9be" name="FileBuilder" visibility="private" isLeaf="true">
                <generalization xmi:id="51ca04c9-6d75-4616-80f5-1a0a6b772360" isSubstitutable="true" general="74000cd1-8230-4611-a376-91ddb6d41d1e"/>
              </nestedClassifier>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="1ef0d9f2-97a5-4cf3-9a5a-15afbf1150f0" name="SimpleLoadStoreParameter" visibility="package" clientDependency="4afd649d-ee59-4510-87bc-e0d5f57f2405">
              <interfaceRealization xmi:id="4afd649d-ee59-4510-87bc-e0d5f57f2405" name="" supplier="11573554-63b0-43f4-853a-f8581c51061f" client="1ef0d9f2-97a5-4cf3-9a5a-15afbf1150f0" contract="11573554-63b0-43f4-853a-f8581c51061f"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9dfa5238-222b-4a84-bf32-2fe4cf9b8487" name="KeyException">
            <ownedComment xmi:id="b066eac2-1250-438c-bb9b-ac1652112f9b" body="This is the basic key exception.&#xA;&#xA;@see Key&#xA;@see InvalidKeyException&#xA;@see KeyManagementException&#xA;&#xA;@version 1.19 03/12/19&#xA;@author Benjamin Renaud&#xA;" annotatedElement="9dfa5238-222b-4a84-bf32-2fe4cf9b8487"/>
            <generalization xmi:id="111e1a59-a176-415b-b14a-e30e865f79f6" isSubstitutable="true" general="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5d23df0d-909e-4f30-b658-8f7e483be0ed" name="BasicPermissionCollection" visibility="package" clientDependency="2a37a926-6922-4b98-99a0-800811ca1e64" isLeaf="true">
            <ownedComment xmi:id="585fc7f8-2bb5-4bf7-aade-7aa82303d5e3" body="A BasicPermissionCollection stores a collection&#xA;of BasicPermission permissions. BasicPermission objects&#xA;must be stored in a manner that allows them to be inserted in any&#xA;order, but enable the implies function to evaluate the implies&#xA;method in an efficient (and consistent) manner.&#xA;&#xA;A BasicPermissionCollection handles comparing a permission like &quot;a.b.c.d.e&quot;&#xA;with a Permission such as &quot;a.b.*&quot;, or &quot;*&quot;.&#xA;&#xA;@see java.security.Permission&#xA;@see java.security.Permissions&#xA;@see java.security.PermissionsImpl&#xA;&#xA;@version 1.40 12/19/03&#xA;&#xA;@author Roland Schemers&#xA;&#xA;@serial include&#xA;" annotatedElement="5d23df0d-909e-4f30-b658-8f7e483be0ed"/>
            <generalization xmi:id="4c892f61-acb9-45b5-832f-2ccbc12cbaca" isSubstitutable="true" general="528e6ee9-bd4d-433a-b08d-a8e30fb7d9c7"/>
            <interfaceRealization xmi:id="2a37a926-6922-4b98-99a0-800811ca1e64" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="5d23df0d-909e-4f30-b658-8f7e483be0ed" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8aed5c18-c6dd-4e59-bd5d-ab9a7fdb5473" name="PermissionsEnumerator" visibility="package" clientDependency="7489a133-8878-4ec5-89d9-1b9b2c856fac" isLeaf="true">
            <interfaceRealization xmi:id="7489a133-8878-4ec5-89d9-1b9b2c856fac" name="" supplier="752780c3-ed52-4379-826b-17bc1470f821" client="8aed5c18-c6dd-4e59-bd5d-ab9a7fdb5473" contract="752780c3-ed52-4379-826b-17bc1470f821"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="23b7a3b0-3320-4277-98d5-05f5399b1a3c" name="MessageDigestSpi" isAbstract="true">
            <ownedComment xmi:id="5a2b8d92-30fa-4d76-9b74-441a517225d9" body="This class defines the &lt;i>Service Provider Interface&lt;/i> (&lt;b>SPI&lt;/b>)&#xA;for the &lt;code>MessageDigest&lt;/code> class, which provides the functionality&#xA;of a message digest algorithm, such as MD5 or SHA. Message digests are&#xA;secure one-way hash functions that take arbitrary-sized data and output a&#xA;fixed-length hash value.&#xA;&#xA;&lt;p> All the abstract methods in this class must be implemented by a&#xA;cryptographic service provider who wishes to supply the implementation&#xA;of a particular message digest algorithm.&#xA;&#xA;&lt;p> Implementations are free to implement the Cloneable interface.&#xA;&#xA;@author Benjamin Renaud&#xA;&#xA;@version 1.15, 12/19/03&#xA;&#xA;@see MessageDigest&#xA;" annotatedElement="23b7a3b0-3320-4277-98d5-05f5399b1a3c"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="fdbdd3ee-258d-4e53-b8a8-4a027a601a28" name="AllPermissionCollection" visibility="package" clientDependency="993e9cfb-04da-4c14-a25c-e0567058b29e" isLeaf="true">
            <ownedComment xmi:id="65f42972-d724-4222-817a-994fe07994a8" body="A AllPermissionCollection stores a collection&#xA;of AllPermission permissions. AllPermission objects&#xA;must be stored in a manner that allows them to be inserted in any&#xA;order, but enable the implies function to evaluate the implies&#xA;method in an efficient (and consistent) manner.&#xA;&#xA;@see java.security.Permission&#xA;@see java.security.Permissions&#xA;&#xA;@version 1.20 12/19/03&#xA;&#xA;@author Roland Schemers&#xA;&#xA;@serial include&#xA;" annotatedElement="fdbdd3ee-258d-4e53-b8a8-4a027a601a28"/>
            <generalization xmi:id="2c36f167-94bf-4aab-a8e5-59de7274561a" isSubstitutable="true" general="528e6ee9-bd4d-433a-b08d-a8e30fb7d9c7"/>
            <interfaceRealization xmi:id="993e9cfb-04da-4c14-a25c-e0567058b29e" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="fdbdd3ee-258d-4e53-b8a8-4a027a601a28" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f5f045f8-1538-4de5-8f91-4c2d47c30b68" name="KeyFactorySpi" isAbstract="true">
            <ownedComment xmi:id="2e50b0b6-2ca1-4bc6-88c0-7580d00fe410" body="This class defines the &lt;i>Service Provider Interface&lt;/i> (&lt;b>SPI&lt;/b>)&#xA;for the &lt;code>KeyFactory&lt;/code> class.&#xA;All the abstract methods in this class must be implemented by each&#xA;cryptographic service provider who wishes to supply the implementation&#xA;of a key factory for a particular algorithm.&#xA;&#xA;&lt;P> Key factories are used to convert &lt;I>keys&lt;/I> (opaque&#xA;cryptographic keys of type &lt;code>Key&lt;/code>) into &lt;I>key specifications&lt;/I>&#xA;(transparent representations of the underlying key material), and vice&#xA;versa.&#xA;&#xA;&lt;P> Key factories are bi-directional. That is, they allow you to build an&#xA;opaque key object from a given key specification (key material), or to&#xA;retrieve the underlying key material of a key object in a suitable format.&#xA;&#xA;&lt;P> Multiple compatible key specifications may exist for the same key.&#xA;For example, a DSA public key may be specified using&#xA;&lt;code>DSAPublicKeySpec&lt;/code> or&#xA;&lt;code>X509EncodedKeySpec&lt;/code>. A key factory can be used to translate&#xA;between compatible key specifications.&#xA;&#xA;&lt;P> A provider should document all the key specifications supported by its&#xA;key factory.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.12, 05/05/04&#xA;&#xA;@see KeyFactory&#xA;@see Key&#xA;@see PublicKey&#xA;@see PrivateKey&#xA;@see java.security.spec.KeySpec&#xA;@see java.security.spec.DSAPublicKeySpec&#xA;@see java.security.spec.X509EncodedKeySpec&#xA;&#xA;@since 1.2&#xA;" annotatedElement="f5f045f8-1538-4de5-8f91-4c2d47c30b68"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ec96c463-1aaa-4995-b1f3-3d320507e91f" name="DigestInputStream">
            <ownedComment xmi:id="244623ef-5f22-40e5-9b6d-fc9b060462c9" body="A transparent stream that updates the associated message digest using&#xA;the bits going through the stream.&#xA;&#xA;&lt;p>To complete the message digest computation, call one of the&#xA;&lt;code>digest&lt;/code> methods on the associated message&#xA;digest after your calls to one of this digest input stream's&#xA;{@link #read() read} methods.&#xA;&#xA;&lt;p>It is possible to turn this stream on or off (see&#xA;{@link #on(boolean) on}). When it is on, a call to one of the&#xA;&lt;code>read&lt;/code> methods&#xA;results in an update on the message digest.  But when it is off,&#xA;the message digest is not updated. The default is for the stream&#xA;to be on.&#xA;&#xA;&lt;p>Note that digest objects can compute only one digest (see&#xA;{@link MessageDigest}),&#xA;so that in order to compute intermediate digests, a caller should&#xA;retain a handle onto the digest object, and clone it for each&#xA;digest to be computed, leaving the orginal digest untouched.&#xA;&#xA;@see MessageDigest&#xA;&#xA;@see DigestOutputStream&#xA;&#xA;@version 1.37 03/12/19&#xA;@author Benjamin Renaud&#xA;" annotatedElement="ec96c463-1aaa-4995-b1f3-3d320507e91f"/>
            <generalization xmi:id="a18f1ebe-9864-453b-88ec-5e349015211f" isSubstitutable="true" general="740d283f-3027-4647-a498-6f94656e662b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6f71f1ae-1aac-44e9-9c46-d9b76dc38613" name="Policy" isAbstract="true">
            <ownedComment xmi:id="cc2daca8-1239-4a65-baaf-6a565e0076af" body="This is an abstract class for representing the system security&#xA;policy for a Java application environment (specifying&#xA;which permissions are available for code from various sources).&#xA;That is, the security policy is represented by a Policy subclass&#xA;providing an implementation of the abstract methods&#xA;in this Policy class.&#xA;&#xA;&lt;p>There is only one Policy object in effect at any given time.&#xA;&#xA;&lt;p>The source location for the policy information utilized by the&#xA;Policy object is up to the Policy implementation.&#xA;The policy configuration may be stored, for example, as a&#xA;flat ASCII file, as a serialized binary file of&#xA;the Policy class, or as a database.&#xA;&#xA;&lt;p>The currently-installed Policy object can be obtained by&#xA;calling the &lt;code>getPolicy&lt;/code> method, and it can be&#xA;changed by a call to the &lt;code>setPolicy&lt;/code> method (by&#xA;code with permission to reset the Policy).&#xA;&#xA;&lt;p>The &lt;code>refresh&lt;/code> method causes the policy&#xA;object to refresh/reload its current configuration.&#xA;&#xA;&lt;p>This is implementation-dependent. For example, if the policy&#xA;object stores its policy in configuration files, calling&#xA;&lt;code>refresh&lt;/code> will cause it to re-read the configuration&#xA;policy files. The refreshed policy may not have an effect on classes&#xA;in a particular ProtectionDomain. This is dependent on the Policy&#xA;provider's implementation of the&#xA;{@link #implies(ProtectionDomain,Permission) implies}&#xA;method and the PermissionCollection caching strategy.&#xA;&#xA;&lt;p>The default Policy implementation can be changed by setting the&#xA;value of the &quot;policy.provider&quot; security property (in the Java&#xA;security properties file) to the fully qualified name of&#xA;the desired Policy implementation class.&#xA;The Java security properties file is located in the file named&#xA;&lt;JAVA_HOME>/lib/security/java.security, where &lt;JAVA_HOME>&#xA;refers to the directory where the JDK was installed.&#xA;&#xA;@author Roland Schemers&#xA;@author Gary Ellison&#xA;@version 1.94, 06/28/04&#xA;@see java.security.CodeSource&#xA;@see java.security.PermissionCollection&#xA;@see java.security.SecureClassLoader&#xA;" annotatedElement="6f71f1ae-1aac-44e9-9c46-d9b76dc38613"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="73716b1f-eac3-438e-85f8-fed1d169cc94" name="KeyPairGeneratorSpi" isAbstract="true">
            <ownedComment xmi:id="a5b07ee1-7ae5-461e-a17e-c26766db3229" body="&lt;p> This class defines the &lt;i>Service Provider Interface&lt;/i> (&lt;b>SPI&lt;/b>)&#xA;for the &lt;code>KeyPairGenerator&lt;/code> class, which is used to generate&#xA;pairs of public and private keys.&#xA;&#xA;&lt;p> All the abstract methods in this class must be implemented by each&#xA;cryptographic service provider who wishes to supply the implementation&#xA;of a key pair generator for a particular algorithm.&#xA;&#xA;&lt;p> In case the client does not explicitly initialize the KeyPairGenerator&#xA;(via a call to an &lt;code>initialize&lt;/code> method), each provider must&#xA;supply (and document) a default initialization.&#xA;For example, the &lt;i>Sun&lt;/i> provider uses a default modulus size (keysize)&#xA;of 1024 bits.&#xA;&#xA;@author Benjamin Renaud&#xA;&#xA;@version 1.14, 12/19/03&#xA;&#xA;@see KeyPairGenerator&#xA;@see java.security.spec.AlgorithmParameterSpec&#xA;" annotatedElement="73716b1f-eac3-438e-85f8-fed1d169cc94"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4f38cd56-60e0-446e-8176-b2380912ba68" name="KeyRep" clientDependency="69bccf62-ce3a-4168-94d0-9340a3bb35ad">
            <ownedComment xmi:id="7aaccb3f-3198-4059-8890-ff8bae345d4d" body="Standardized representation for serialized Key objects.&#xA;&#xA;&lt;p>&#xA;&#xA;Note that a serialized Key may contain sensitive information&#xA;which should not be exposed in untrusted environments.  See the&#xA;&lt;a href=&quot;../../../guide/serialization/spec/security.html&quot;>&#xA;Security Appendix&lt;/a>&#xA;of the Serialization Specification for more information.&#xA;&#xA;@see Key&#xA;@see KeyFactory&#xA;@see javax.crypto.spec.SecretKeySpec&#xA;@see java.security.spec.X509EncodedKeySpec&#xA;@see java.security.spec.PKCS8EncodedKeySpec&#xA;&#xA;@version 1.7, 04/04/20&#xA;@since 1.5&#xA;" annotatedElement="4f38cd56-60e0-446e-8176-b2380912ba68"/>
            <interfaceRealization xmi:id="69bccf62-ce3a-4168-94d0-9340a3bb35ad" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4f38cd56-60e0-446e-8176-b2380912ba68" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="1e1c657c-2c4c-4385-93ef-e600ab737f1c" name="Type">
              <ownedComment xmi:id="4e023e25-a3f9-45d4-8d65-66d496f939fd" body="Key type.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="1e1c657c-2c4c-4385-93ef-e600ab737f1c"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c61af840-8b4e-4f1d-b18c-b62a7de53c73" name="IdentityScope" isAbstract="true">
            <ownedComment xmi:id="5b81b5ce-f5a6-4285-bc58-883cab0b3367" body="&lt;p>This class represents a scope for identities. It is an Identity&#xA;itself, and therefore has a name and can have a scope. It can also&#xA;optionally have a public key and associated certificates.&#xA;&#xA;&lt;p>An IdentityScope can contain Identity objects of all kinds, including&#xA;Signers. All types of Identity objects can be retrieved, added, and&#xA;removed using the same methods. Note that it is possible, and in fact&#xA;expected, that different types of identity scopes will&#xA;apply different policies for their various operations on the&#xA;various types of Identities.&#xA;&#xA;&lt;p>There is a one-to-one mapping between keys and identities, and&#xA;there can only be one copy of one key per scope. For example, suppose&#xA;&lt;b>Acme Software, Inc&lt;/b> is a software publisher known to a user.&#xA;Suppose it is an Identity, that is, it has a public key, and a set of&#xA;associated certificates. It is named in the scope using the name&#xA;&quot;Acme Software&quot;. No other named Identity in the scope has the same&#xA;public  key. Of course, none has the same name as well.&#xA;&#xA;@see Identity&#xA;@see Signer&#xA;@see Principal&#xA;@see Key&#xA;&#xA;@version 1.54 04/05/18&#xA;@author Benjamin Renaud&#xA;&#xA;@deprecated This class is no longer used. Its functionality has been&#xA;replaced by &lt;code>java.security.KeyStore&lt;/code>, the&#xA;&lt;code>java.security.cert&lt;/code> package, and&#xA;&lt;code>java.security.Principal&lt;/code>.&#xA;" annotatedElement="c61af840-8b4e-4f1d-b18c-b62a7de53c73"/>
            <generalization xmi:id="5684a1b8-adfd-47fc-8db1-573725087aa6" isSubstitutable="true" general="7902076f-9f68-439e-98a5-9035ed9c990b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ad639af3-42da-4b61-9da1-df431e91e612" name="KeyStoreSpi" isAbstract="true">
            <ownedComment xmi:id="41f5fd65-580b-44bb-b6ea-16bc3bed5330" body="This class defines the &lt;i>Service Provider Interface&lt;/i> (&lt;b>SPI&lt;/b>)&#xA;for the &lt;code>KeyStore&lt;/code> class.&#xA;All the abstract methods in this class must be implemented by each&#xA;cryptographic service provider who wishes to supply the implementation&#xA;of a keystore for a particular keystore type.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.18, 05/25/04&#xA;&#xA;@see KeyStore&#xA;&#xA;@since 1.2&#xA;" annotatedElement="ad639af3-42da-4b61-9da1-df431e91e612"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2e3e7dec-c317-4eb2-8b75-0d01fa6500ad" name="SignatureException">
            <ownedComment xmi:id="68921a24-fa5e-446c-ab40-b67edca419ea" body="This is the generic Signature exception.&#xA;&#xA;@version 1.16 12/19/03&#xA;@author Benjamin Renaud&#xA;" annotatedElement="2e3e7dec-c317-4eb2-8b75-0d01fa6500ad"/>
            <generalization xmi:id="4929d3cc-8e42-4828-a7af-6821ecc40e77" isSubstitutable="true" general="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="a47b3e4b-5618-401f-a098-d0490c80d17e" name="PrivateKey" isAbstract="true">
            <ownedComment xmi:id="79892b26-5342-46ca-9f7e-bfb93efbc402" body="&lt;p>A private key. This interface contains no methods or constants.&#xA;It merely serves to group (and provide type safety for) all private key&#xA;interfaces.&#xA;&#xA;Note: The specialized private key interfaces extend this interface.&#xA;See, for example, the DSAPrivateKey interface in&#xA;&lt;code>java.security.interfaces&lt;/code>.&#xA;&#xA;@see Key&#xA;@see PublicKey&#xA;@see Certificate&#xA;@see Signature#initVerify&#xA;@see java.security.interfaces.DSAPrivateKey&#xA;@see java.security.interfaces.RSAPrivateKey&#xA;@see java.security.interfaces.RSAPrivateCrtKey&#xA;&#xA;@version 1.29 03/12/19&#xA;@author Benjamin Renaud&#xA;@author Josh Bloch&#xA;" annotatedElement="a47b3e4b-5618-401f-a098-d0490c80d17e"/>
            <generalization xmi:id="87bf1f9e-94ad-4567-a328-e5160bd4e2b3" isSubstitutable="true" general="fe3665e0-00d8-4870-aaea-298b20a40025"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="78b05fcc-2262-4d18-a0ff-3f1ec2ba389f" name="PermissionsHash" visibility="package" clientDependency="48711b84-0816-4bff-a0c5-553f7742b7ef" isLeaf="true">
            <ownedComment xmi:id="ed9619fb-8c08-48b0-ada8-046edc4c7287" body="A PermissionsHash stores a homogeneous set of permissions in a hashtable.&#xA;&#xA;@see Permission&#xA;@see Permissions&#xA;&#xA;@version 1.58, 05/05/04&#xA;&#xA;@author Roland Schemers&#xA;&#xA;@serial include&#xA;" annotatedElement="78b05fcc-2262-4d18-a0ff-3f1ec2ba389f"/>
            <generalization xmi:id="cb4dbe02-50d2-4e22-b927-d4c14e0ee9e4" isSubstitutable="true" general="528e6ee9-bd4d-433a-b08d-a8e30fb7d9c7"/>
            <interfaceRealization xmi:id="48711b84-0816-4bff-a0c5-553f7742b7ef" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="78b05fcc-2262-4d18-a0ff-3f1ec2ba389f" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="516530d1-1bf1-40f1-8619-f08f8811875d" name="Principal" isAbstract="true">
            <ownedComment xmi:id="faf84836-3b5a-43db-ac01-dd26f80e0b42" body="This interface represents the abstract notion of a principal, which&#xA;can be used to represent any entity, such as an individual, a&#xA;corporation, and a login id.&#xA;&#xA;@see java.security.cert.X509Certificate&#xA;&#xA;@version 1.22, 03/12/19&#xA;@author Li Gong&#xA;" annotatedElement="516530d1-1bf1-40f1-8619-f08f8811875d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0bfb9983-ac5f-4af0-867e-41da0e610de3" name="UnrecoverableEntryException">
            <ownedComment xmi:id="55e969d0-c46e-405e-8d53-6e3657ce4c66" body="This exception is thrown if an entry in the keystore cannot be recovered.&#xA;&#xA;@version 1.2, 12/19/03&#xA;&#xA;@since 1.5&#xA;" annotatedElement="0bfb9983-ac5f-4af0-867e-41da0e610de3"/>
            <generalization xmi:id="4055004e-c51b-4c65-94a6-0fe3d12ea9f6" isSubstitutable="true" general="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="7236ae27-1929-4829-8f5e-d52e0b0a839e" name="cert">
            <packagedElement xmi:type="uml:Class" xmi:id="a7e222e1-fd2a-4a2b-b9fa-6e30d68d9b3d" name="PKIXCertPathBuilderResult" clientDependency="0a70ee00-caec-4df0-a840-a42289bb73c9">
              <ownedComment xmi:id="7efb0ce0-ca38-4741-922d-fa7fe602bb7e" body="This class represents the successful result of the PKIX certification&#xA;path builder algorithm. All certification paths that are built and&#xA;returned using this algorithm are also validated according to the PKIX&#xA;certification path validation algorithm.&#xA;&#xA;&lt;p>Instances of &lt;code>PKIXCertPathBuilderResult&lt;/code> are returned by&#xA;the &lt;code>build&lt;/code> method of &lt;code>CertPathBuilder&lt;/code>&#xA;objects implementing the PKIX algorithm.&#xA;&#xA;&lt;p>All &lt;code>PKIXCertPathBuilderResult&lt;/code> objects contain the&#xA;certification path constructed by the build algorithm, the&#xA;valid policy tree and subject public key resulting from the build&#xA;algorithm, and a &lt;code>TrustAnchor&lt;/code> describing the certification&#xA;authority (CA) that served as a trust anchor for the certification path.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;Unless otherwise specified, the methods defined in this class are not&#xA;thread-safe. Multiple threads that need to access a single&#xA;object concurrently should synchronize amongst themselves and&#xA;provide the necessary locking. Multiple threads each manipulating&#xA;separate objects need not synchronize.&#xA;&#xA;@see CertPathBuilderResult&#xA;&#xA;@version&#x9;1.9 12/19/03&#xA;@since&#x9;1.4&#xA;@author&#x9;Anne Anderson&#xA;" annotatedElement="a7e222e1-fd2a-4a2b-b9fa-6e30d68d9b3d"/>
              <generalization xmi:id="416a19ca-d400-423c-a493-7258d8f6edb6" isSubstitutable="true" general="aa4c61ac-f545-4e7c-8b42-4951d8c7f4eb"/>
              <interfaceRealization xmi:id="0a70ee00-caec-4df0-a840-a42289bb73c9" name="" supplier="92658088-b0b8-46a0-95a9-ef39d83c1f03" client="a7e222e1-fd2a-4a2b-b9fa-6e30d68d9b3d" contract="92658088-b0b8-46a0-95a9-ef39d83c1f03"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="fa4c46a1-12cc-4a62-8e5d-9d019b0aa4e4" name="CertPathValidatorException">
              <ownedComment xmi:id="97e0ac30-18e6-4015-9f4e-2eebcb83701f" body="An exception indicating one of a variety of problems encountered when&#xA;validating a certification path.&#xA;&lt;p>&#xA;A &lt;code>CertPathValidatorException&lt;/code> provides support for wrapping&#xA;exceptions. The {@link #getCause getCause} method returns the throwable,&#xA;if any, that caused this exception to be thrown.&#xA;&lt;p>&#xA;A &lt;code>CertPathValidatorException&lt;/code> may also include the&#xA;certification path that was being validated when the exception was thrown&#xA;and the index of the certificate in the certification path that caused the&#xA;exception to be thrown. Use the {@link #getCertPath getCertPath} and&#xA;{@link #getIndex getIndex} methods to retrieve this information.&#xA;&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;Unless otherwise specified, the methods defined in this class are not&#xA;thread-safe. Multiple threads that need to access a single&#xA;object concurrently should synchronize amongst themselves and&#xA;provide the necessary locking. Multiple threads each manipulating&#xA;separate objects need not synchronize.&#xA;&#xA;@see CertPathValidator&#xA;&#xA;@version &#x9;1.10 12/19/03&#xA;@since&#x9;1.4&#xA;@author &#x9;Yassir Elley&#xA;" annotatedElement="fa4c46a1-12cc-4a62-8e5d-9d019b0aa4e4"/>
              <generalization xmi:id="f2858c9f-dc41-4db5-af7a-9743b7bf6c70" isSubstitutable="true" general="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0da604a5-1a2c-4961-bf5e-792ef70e9ea5" name="CertPathBuilderException">
              <ownedComment xmi:id="b0bb062f-7bc1-485b-a996-59d81cfdf144" body="An exception indicating one of a variety of problems encountered when&#xA;building a certification path with a &lt;code>CertPathBuilder&lt;/code>.&#xA;&lt;p>&#xA;A &lt;code>CertPathBuilderException&lt;/code> provides support for wrapping&#xA;exceptions. The {@link #getCause getCause} method returns the throwable,&#xA;if any, that caused this exception to be thrown.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;Unless otherwise specified, the methods defined in this class are not&#xA;thread-safe. Multiple threads that need to access a single&#xA;object concurrently should synchronize amongst themselves and&#xA;provide the necessary locking. Multiple threads each manipulating&#xA;separate objects need not synchronize.&#xA;&#xA;@see CertPathBuilder&#xA;&#xA;@version &#x9;1.7 12/19/03&#xA;@since&#x9;1.4&#xA;@author &#x9;Sean Mullan&#xA;" annotatedElement="0da604a5-1a2c-4961-bf5e-792ef70e9ea5"/>
              <generalization xmi:id="c3a09a5f-ae79-4996-9e87-cdc37032d95d" isSubstitutable="true" general="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="65a1a719-c19a-48fc-9f0e-dcfbc92de21f" name="CertPathBuilderSpi" isAbstract="true">
              <ownedComment xmi:id="c80747e0-ddc5-4dd5-9901-a407844f5d93" body="The &lt;i>Service Provider Interface&lt;/i> (&lt;b>SPI&lt;/b>)&#xA;for the {@link CertPathBuilder CertPathBuilder} class. All&#xA;&lt;code>CertPathBuilder&lt;/code> implementations must include a class (the&#xA;SPI class) that extends this class (&lt;code>CertPathBuilderSpi&lt;/code>) and&#xA;implements all of its methods. In general, instances of this class should&#xA;only be accessed through the &lt;code>CertPathBuilder&lt;/code> class. For&#xA;details, see the Java Cryptography Architecture.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;Instances of this class need not be protected against concurrent&#xA;access from multiple threads. Threads that need to access a single&#xA;&lt;code>CertPathBuilderSpi&lt;/code> instance concurrently should synchronize&#xA;amongst themselves and provide the necessary locking before calling the&#xA;wrapping &lt;code>CertPathBuilder&lt;/code> object.&#xA;&lt;p>&#xA;However, implementations of &lt;code>CertPathBuilderSpi&lt;/code> may still&#xA;encounter concurrency issues, since multiple threads each&#xA;manipulating a different &lt;code>CertPathBuilderSpi&lt;/code> instance need not&#xA;synchronize.&#xA;&#xA;@version &#x9;1.5 12/19/03&#xA;@since&#x9;1.4&#xA;@author&#x9;Sean Mullan&#xA;" annotatedElement="65a1a719-c19a-48fc-9f0e-dcfbc92de21f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a29a9c57-8a11-40dc-98a5-e7dbdc0650d0" name="CertStore">
              <ownedComment xmi:id="49c13e9f-3ed1-43df-87e9-2dd380a440a4" body="A class for retrieving &lt;code>Certificate&lt;/code>s and &lt;code>CRL&lt;/code>s&#xA;from a repository.&#xA;&lt;p>&#xA;This class uses a provider-based architecture, as described in the&#xA;Java Cryptography Architecture.&#xA;To create a &lt;code>CertStore&lt;/code>, call one of the static&#xA;&lt;code>getInstance&lt;/code> methods, passing in the type of&#xA;&lt;code>CertStore&lt;/code> desired, any applicable initialization parameters&#xA;and optionally the name of the provider desired.&#xA;&lt;p>&#xA;Once the &lt;code>CertStore&lt;/code> has been created, it can be used to&#xA;retrieve &lt;code>Certificate&lt;/code>s and &lt;code>CRL&lt;/code>s by calling its&#xA;{@link #getCertificates(CertSelector selector) getCertificates} and&#xA;{@link #getCRLs(CRLSelector selector) getCRLs} methods.&#xA;&lt;p>&#xA;Unlike a {@link java.security.KeyStore KeyStore}, which provides access&#xA;to a cache of private keys and trusted certificates, a&#xA;&lt;code>CertStore&lt;/code> is designed to provide access to a potentially&#xA;vast repository of untrusted certificates and CRLs. For example, an LDAP&#xA;implementation of &lt;code>CertStore&lt;/code> provides access to certificates&#xA;and CRLs stored in one or more directories using the LDAP protocol and the&#xA;schema as defined in the RFC service attribute. See Appendix A in the&#xA;&lt;a href= &quot;../../../../guide/security/certpath/CertPathProgGuide.html#AppA&quot;>&#xA;Java Certification Path API Programmer's Guide&lt;/a> for more information about&#xA;standard &lt;code>CertStore&lt;/code> types.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;All public methods of &lt;code>CertStore&lt;/code> objects must be thread-safe.&#xA;That is, multiple threads may concurrently invoke these methods on a&#xA;single &lt;code>CertStore&lt;/code> object (or more than one) with no&#xA;ill effects. This allows a &lt;code>CertPathBuilder&lt;/code> to search for a&#xA;CRL while simultaneously searching for further certificates, for instance.&#xA;&lt;p>&#xA;The static methods of this class are also guaranteed to be thread-safe.&#xA;Multiple threads may concurrently invoke the static methods defined in&#xA;this class with no ill effects.&#xA;&#xA;@version &#x9;1.13 06/28/04&#xA;@since&#x9;1.4&#xA;@author&#x9;Sean Mullan, Steve Hanna&#xA;" annotatedElement="a29a9c57-8a11-40dc-98a5-e7dbdc0650d0"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="86f83d19-4fb8-4a5f-a35f-8b57b0f24e68" name="CRLException">
              <ownedComment xmi:id="128d1836-dc93-43e3-93a0-12de26dce2e8" body="CRL (Certificate Revocation List) Exception.&#xA;&#xA;@author Hemma Prafullchandra&#xA;1.12&#xA;" annotatedElement="86f83d19-4fb8-4a5f-a35f-8b57b0f24e68"/>
              <generalization xmi:id="4cae0b45-e81c-4db7-ab94-e54e5f23af2a" isSubstitutable="true" general="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4e9ccb14-366e-4b67-a2a1-620f80b0c07a" name="CertificateExpiredException">
              <ownedComment xmi:id="65b4e2d2-e039-49cd-a4fa-d403eb6d7561" body="Certificate Expired Exception. This is thrown whenever the current&#xA;&lt;code>Date&lt;/code> or the specified &lt;code>Date&lt;/code> is after the&#xA;&lt;code>notAfter&lt;/code> date/time specified in the validity period&#xA;of the certificate.&#xA;&#xA;@author Hemma Prafullchandra&#xA;1.10&#xA;" annotatedElement="4e9ccb14-366e-4b67-a2a1-620f80b0c07a"/>
              <generalization xmi:id="da5ff560-48f8-4145-80a1-128d3741fef6" isSubstitutable="true" general="0ad9f22a-c816-4a28-896f-eb864ee1eb4e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="41189e81-f4ab-4539-acbd-052e940b4f1c" name="PKIXParameters" clientDependency="1bf45a25-a3eb-4e06-a67b-ec2f29eb6c03">
              <ownedComment xmi:id="c4d918a5-7d50-478e-9d36-446ed662dd51" body="Parameters used as input for the PKIX &lt;code>CertPathValidator&lt;/code>&#xA;algorithm.&#xA;&lt;p>&#xA;A PKIX &lt;code>CertPathValidator&lt;/code> uses these parameters to&#xA;validate a &lt;code>CertPath&lt;/code> according to the PKIX certification path&#xA;validation algorithm.&#xA;&#xA;&lt;p>To instantiate a &lt;code>PKIXParameters&lt;/code> object, an&#xA;application must specify one or more &lt;i>most-trusted CAs&lt;/i> as defined by&#xA;the PKIX certification path validation algorithm. The most-trusted CAs&#xA;can be specified using one of two constructors. An application&#xA;can call {@link #PKIXParameters(Set) PKIXParameters(Set)},&#xA;specifying a &lt;code>Set&lt;/code> of &lt;code>TrustAnchor&lt;/code> objects, each&#xA;of which identify a most-trusted CA. Alternatively, an application can call&#xA;{@link #PKIXParameters(KeyStore) PKIXParameters(KeyStore)}, specifying a&#xA;&lt;code>KeyStore&lt;/code> instance containing trusted certificate entries, each&#xA;of which will be considered as a most-trusted CA.&#xA;&lt;p>&#xA;Once a &lt;code>PKIXParameters&lt;/code> object has been created, other parameters&#xA;can be specified (by calling {@link #setInitialPolicies setInitialPolicies}&#xA;or {@link #setDate setDate}, for instance) and then the&#xA;&lt;code>PKIXParameters&lt;/code> is passed along with the &lt;code>CertPath&lt;/code>&#xA;to be validated to {@link CertPathValidator#validate&#xA;CertPathValidator.validate}.&#xA;&lt;p>&#xA;Any parameter that is not set (or is set to &lt;code>null&lt;/code>) will&#xA;be set to the default value for that parameter. The default value for the&#xA;&lt;code>date&lt;/code> parameter is &lt;code>null&lt;/code>, which indicates&#xA;the current time when the path is validated. The default for the&#xA;remaining parameters is the least constrained.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;Unless otherwise specified, the methods defined in this class are not&#xA;thread-safe. Multiple threads that need to access a single&#xA;object concurrently should synchronize amongst themselves and&#xA;provide the necessary locking. Multiple threads each manipulating&#xA;separate objects need not synchronize.&#xA;&#xA;@see CertPathValidator&#xA;&#xA;@version &#x9;1.17 12/19/03&#xA;@since&#x9;1.4&#xA;@author&#x9;Sean Mullan&#xA;@author&#x9;Yassir Elley&#xA;" annotatedElement="41189e81-f4ab-4539-acbd-052e940b4f1c"/>
              <interfaceRealization xmi:id="1bf45a25-a3eb-4e06-a67b-ec2f29eb6c03" name="" supplier="dc6667a7-d917-4dca-8f37-81c8832e968d" client="41189e81-f4ab-4539-acbd-052e940b4f1c" contract="dc6667a7-d917-4dca-8f37-81c8832e968d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="10847259-217d-4d4c-ab8a-fbf8dbd50cd2" name="Certificate" clientDependency="1f32d618-aea0-4a20-886b-005bc4a307c0" isAbstract="true">
              <ownedComment xmi:id="9a21fa1f-4670-4382-b14e-6a2f71bfd0f2" body="&lt;p>Abstract class for managing a variety of identity certificates.&#xA;An identity certificate is a binding of a principal to a public key which&#xA;is vouched for by another principal.  (A principal represents&#xA;an entity such as an individual user, a group, or a corporation.)&#xA;&lt;p>&#xA;This class is an abstraction for certificates that have different&#xA;formats but important common uses.  For example, different types of&#xA;certificates, such as X.509 and PGP, share general certificate&#xA;functionality (like encoding and verifying) and&#xA;some types of information (like a public key).&#xA;&lt;p>&#xA;X.509, PGP, and SDSI certificates can all be implemented by&#xA;subclassing the Certificate class, even though they contain different&#xA;sets of information, and they store and retrieve the information in&#xA;different ways.&#xA;&#xA;@see X509Certificate&#xA;@see CertificateFactory&#xA;&#xA;@author Hemma Prafullchandra&#xA;@version 1.24, 12/19/03&#xA;" annotatedElement="10847259-217d-4d4c-ab8a-fbf8dbd50cd2"/>
              <interfaceRealization xmi:id="1f32d618-aea0-4a20-886b-005bc4a307c0" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="10847259-217d-4d4c-ab8a-fbf8dbd50cd2" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="05a08a60-8200-4107-86de-3684beeee7b8" name="CertificateRep" visibility="protected" clientDependency="01bbacbd-3143-413c-b535-c3eaf99a836b">
                <ownedComment xmi:id="5475ad5d-71ad-4d31-a6f6-b00174577473" body="Alternate Certificate class for serialization.&#xA;" annotatedElement="05a08a60-8200-4107-86de-3684beeee7b8"/>
                <interfaceRealization xmi:id="01bbacbd-3143-413c-b535-c3eaf99a836b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="05a08a60-8200-4107-86de-3684beeee7b8" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="966c87d6-d11a-42dd-ba6a-f1f4edde9449" name="CertPathValidatorResult" isAbstract="true">
              <ownedComment xmi:id="21de5ee5-4f6f-4f64-b880-3d36be3b2176" body="A specification of the result of a certification path validator algorithm.&#xA;&lt;p>&#xA;The purpose of this interface is to group (and provide type safety&#xA;for) all certification path validator results. All results returned&#xA;by the {@link CertPathValidator#validate CertPathValidator.validate}&#xA;method must implement this interface.&#xA;&#xA;@see CertPathValidator&#xA;&#xA;@version &#x9;1.5 12/19/03&#xA;@since&#x9;1.4&#xA;@author&#x9;Yassir Elley&#xA;" annotatedElement="966c87d6-d11a-42dd-ba6a-f1f4edde9449"/>
              <generalization xmi:id="1c0e2182-c85b-4692-9a48-d64a4edc2df1" isSubstitutable="true" general="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e87d8d16-c118-412e-a5df-dffe1e99b283" name="X509CRLSelector" clientDependency="a944b5fc-1dd0-42a2-90af-7e032fcd4b85">
              <ownedComment xmi:id="3f6d030d-3499-4df1-91e4-8512a24386c3" body="A &lt;code>CRLSelector&lt;/code> that selects &lt;code>X509CRLs&lt;/code> that&#xA;match all specified criteria. This class is particularly useful when&#xA;selecting CRLs from a &lt;code>CertStore&lt;/code> to check revocation status&#xA;of a particular certificate.&#xA;&lt;p>&#xA;When first constructed, an &lt;code>X509CRLSelector&lt;/code> has no criteria&#xA;enabled and each of the &lt;code>get&lt;/code> methods return a default&#xA;value (&lt;code>null&lt;/code>). Therefore, the {@link #match match} method&#xA;would return &lt;code>true&lt;/code> for any &lt;code>X509CRL&lt;/code>. Typically,&#xA;several criteria are enabled (by calling {@link #setIssuers setIssuers}&#xA;or {@link #setDateAndTime setDateAndTime}, for instance) and then the&#xA;&lt;code>X509CRLSelector&lt;/code> is passed to&#xA;{@link CertStore#getCRLs CertStore.getCRLs} or some similar&#xA;method.&#xA;&lt;p>&#xA;Please refer to RFC 2459 for definitions of the X.509 CRL fields and&#xA;extensions mentioned below.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;Unless otherwise specified, the methods defined in this class are not&#xA;thread-safe. Multiple threads that need to access a single&#xA;object concurrently should synchronize amongst themselves and&#xA;provide the necessary locking. Multiple threads each manipulating&#xA;separate objects need not synchronize.&#xA;&#xA;@see CRLSelector&#xA;@see X509CRL&#xA;&#xA;@version &#x9;1.16 07/16/04&#xA;@since&#x9;1.4&#xA;@author&#x9;Steve Hanna&#xA;" annotatedElement="e87d8d16-c118-412e-a5df-dffe1e99b283"/>
              <interfaceRealization xmi:id="a944b5fc-1dd0-42a2-90af-7e032fcd4b85" name="" supplier="885274c9-e151-4ac9-b49e-eef138428bce" client="e87d8d16-c118-412e-a5df-dffe1e99b283" contract="885274c9-e151-4ac9-b49e-eef138428bce"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="aae9be84-94f3-458e-8adb-16c531315dff" name="CertPathValidatorSpi" isAbstract="true">
              <ownedComment xmi:id="03056f79-0013-4be7-843e-35af1e4fa870" body="The &lt;i>Service Provider Interface&lt;/i> (&lt;b>SPI&lt;/b>)&#xA;for the {@link CertPathValidator CertPathValidator} class. All&#xA;&lt;code>CertPathValidator&lt;/code> implementations must include a class (the&#xA;SPI class) that extends this class (&lt;code>CertPathValidatorSpi&lt;/code>)&#xA;and implements all of its methods. In general, instances of this class&#xA;should only be accessed through the &lt;code>CertPathValidator&lt;/code> class.&#xA;For details, see the Java Cryptography Architecture.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;Instances of this class need not be protected against concurrent&#xA;access from multiple threads. Threads that need to access a single&#xA;&lt;code>CertPathValidatorSpi&lt;/code> instance concurrently should synchronize&#xA;amongst themselves and provide the necessary locking before calling the&#xA;wrapping &lt;code>CertPathValidator&lt;/code> object.&#xA;&lt;p>&#xA;However, implementations of &lt;code>CertPathValidatorSpi&lt;/code> may still&#xA;encounter concurrency issues, since multiple threads each&#xA;manipulating a different &lt;code>CertPathValidatorSpi&lt;/code> instance need not&#xA;synchronize.&#xA;&#xA;@version &#x9;1.5 12/19/03&#xA;@since&#x9;1.4&#xA;@author&#x9;Yassir Elley&#xA;" annotatedElement="aae9be84-94f3-458e-8adb-16c531315dff"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="b97d37b3-5750-4b7c-af92-ef9331b73cab" name="X509Extension" isAbstract="true">
              <ownedComment xmi:id="b4e03afd-2435-4da0-81be-3b14afc3ed5b" body="Interface for an X.509 extension.&#xA;&#xA;&lt;p>The extensions defined for X.509 v3&#xA;{@link X509Certificate Certificates} and v2&#xA;{@link X509CRL CRLs} (Certificate Revocation&#xA;Lists) provide methods&#xA;for associating additional attributes with users or public keys,&#xA;for managing the certification hierarchy, and for managing CRL&#xA;distribution. The X.509 extensions format also allows communities&#xA;to define private extensions to carry information unique to those&#xA;communities.&#xA;&#xA;&lt;p>Each extension in a certificate/CRL may be designated as&#xA;critical or non-critical.  A certificate/CRL-using system (an application&#xA;validating a certificate/CRL) must reject the certificate/CRL if it&#xA;encounters a critical extension it does not recognize.  A non-critical&#xA;extension may be ignored if it is not recognized.&#xA;&lt;p>&#xA;The ASN.1 definition for this is:&#xA;&lt;pre>&#xA;Extensions  ::=  SEQUENCE SIZE (1..MAX) OF Extension&#xA;&#xA;Extension  ::=  SEQUENCE  {&#xA;extnId        OBJECT IDENTIFIER,&#xA;critical      BOOLEAN DEFAULT FALSE,&#xA;extnValue     OCTET STRING&#xA;-- contains a DER encoding of a value&#xA;-- of the type registered for use with&#xA;-- the extnId object identifier value&#xA;}&#xA;&lt;/pre>&#xA;Since not all extensions are known, the &lt;code>getExtensionValue&lt;/code>&#xA;method returns the DER-encoded OCTET STRING of the&#xA;extension value (i.e., the &lt;code>extnValue&lt;/code>). This can then&#xA;be handled by a &lt;em>Class&lt;/em> that understands the extension.&#xA;&#xA;@author Hemma Prafullchandra&#xA;@version 1.22 03/12/19&#xA;" annotatedElement="b97d37b3-5750-4b7c-af92-ef9331b73cab"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="970c4ecd-93d2-46f1-b3f4-2c6a7bea060e" name="CertSelector" isAbstract="true">
              <ownedComment xmi:id="b8a599ef-8a4c-4d6b-ab1f-f3acc5608b5c" body="A selector that defines a set of criteria for selecting&#xA;&lt;code>Certificate&lt;/code>s. Classes that implement this interface&#xA;are often used to specify which &lt;code>Certificate&lt;/code>s should&#xA;be retrieved from a &lt;code>CertStore&lt;/code>.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;Unless otherwise specified, the methods defined in this interface are not&#xA;thread-safe. Multiple threads that need to access a single&#xA;object concurrently should synchronize amongst themselves and&#xA;provide the necessary locking. Multiple threads each manipulating&#xA;separate objects need not synchronize.&#xA;&#xA;@see Certificate&#xA;@see CertStore&#xA;@see CertStore#getCertificates&#xA;&#xA;@version &#x9;1.5 12/19/03&#xA;@author&#x9;Steve Hanna&#xA;@since&#x9;1.4&#xA;" annotatedElement="970c4ecd-93d2-46f1-b3f4-2c6a7bea060e"/>
              <generalization xmi:id="40b0c13a-1416-4987-98eb-b637f7908381" isSubstitutable="true" general="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5e098ea6-8296-4cc8-be8c-588610f4a769" name="X509CRLEntry" clientDependency="c3ee2735-6946-4990-ae74-03c8010ff3a1" isAbstract="true">
              <ownedComment xmi:id="60db5982-c0c6-419a-bc92-b51e68d900bb" body="&lt;p>Abstract class for a revoked certificate in a CRL (Certificate&#xA;Revocation List).&#xA;&#xA;The ASN.1 definition for &lt;em>revokedCertificates&lt;/em> is:&#xA;&lt;pre>&#xA;revokedCertificates    SEQUENCE OF SEQUENCE  {&#xA;userCertificate    CertificateSerialNumber,&#xA;revocationDate     ChoiceOfTime,&#xA;crlEntryExtensions Extensions OPTIONAL&#xA;-- if present, must be v2&#xA;}  OPTIONAL&#xA;&lt;p>&#xA;CertificateSerialNumber  ::=  INTEGER&#xA;&lt;p>&#xA;Extensions  ::=  SEQUENCE SIZE (1..MAX) OF Extension&#xA;&lt;p>&#xA;Extension  ::=  SEQUENCE  {&#xA;extnId        OBJECT IDENTIFIER,&#xA;critical      BOOLEAN DEFAULT FALSE,&#xA;extnValue     OCTET STRING&#xA;-- contains a DER encoding of a value&#xA;-- of the type registered for use with&#xA;-- the extnId object identifier value&#xA;}&#xA;&lt;/pre>&#xA;&#xA;@see X509CRL&#xA;@see X509Extension&#xA;&#xA;@author Hemma Prafullchandra&#xA;@version 1.16 03/12/19&#xA;" annotatedElement="5e098ea6-8296-4cc8-be8c-588610f4a769"/>
              <interfaceRealization xmi:id="c3ee2735-6946-4990-ae74-03c8010ff3a1" name="" supplier="b97d37b3-5750-4b7c-af92-ef9331b73cab" client="5e098ea6-8296-4cc8-be8c-588610f4a769" contract="b97d37b3-5750-4b7c-af92-ef9331b73cab"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c5a019ae-51b8-463b-83c1-530a63e65477" name="CertPathHelperImpl" visibility="package">
              <ownedComment xmi:id="72226137-02de-4627-a572-55acddba9767" body="Helper class that allows the Sun CertPath provider to access&#xA;implementation dependent APIs in CertPath framework.&#xA;&#xA;@author Andreas Sterbenz&#xA;@version 1.4, 12/19/03&#xA;" annotatedElement="c5a019ae-51b8-463b-83c1-530a63e65477"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1c901dea-063d-4205-a171-d9f625ef9579" name="PKIXCertPathChecker" clientDependency="0cdfe0b6-4bb2-4101-8652-cb715679154a" isAbstract="true">
              <ownedComment xmi:id="96fb876d-0d3b-4cda-b2cb-29a133177519" body="An abstract class that performs one or more checks on an&#xA;&lt;code>X509Certificate&lt;/code>.&#xA;&#xA;&lt;p>A concrete implementation of the &lt;code>PKIXCertPathChecker&lt;/code> class&#xA;can be created to extend the PKIX certification path validation algorithm.&#xA;For example, an implementation may check for and process a critical private&#xA;extension of each certificate in a certification path.&#xA;&#xA;&lt;p>Instances of &lt;code>PKIXCertPathChecker&lt;/code> are passed as parameters&#xA;using the {@link PKIXParameters#setCertPathCheckers setCertPathCheckers}&#xA;or {@link PKIXParameters#addCertPathChecker addCertPathChecker} methods&#xA;of the &lt;code>PKIXParameters&lt;/code> and &lt;code>PKIXBuilderParameters&lt;/code>&#xA;class. Each of the &lt;code>PKIXCertPathChecker&lt;/code>s {@link #check check}&#xA;methods will be called, in turn, for each certificate processed by a PKIX&#xA;&lt;code>CertPathValidator&lt;/code> or &lt;code>CertPathBuilder&lt;/code>&#xA;implementation.&#xA;&#xA;&lt;p>A &lt;code>PKIXCertPathChecker&lt;/code> may be called multiple times on&#xA;successive certificates in a certification path. Concrete subclasses&#xA;are expected to maintain any internal state that may be necessary to&#xA;check successive certificates. The {@link #init init} method is used&#xA;to initialize the internal state of the checker so that the certificates&#xA;of a new certification path may be checked. A stateful implementation&#xA;&lt;b>must&lt;/b> override the {@link #clone clone} method if necessary in&#xA;order to allow a PKIX &lt;code>CertPathBuilder&lt;/code> to efficiently&#xA;backtrack and try other paths. In these situations, the&#xA;&lt;code>CertPathBuilder&lt;/code> is able to restore prior path validation&#xA;states by restoring the cloned &lt;code>PKIXCertPathChecker&lt;/code>s.&#xA;&#xA;&lt;p>The order in which the certificates are presented to the&#xA;&lt;code>PKIXCertPathChecker&lt;/code> may be either in the forward direction&#xA;(from target to most-trusted CA) or in the reverse direction (from&#xA;most-trusted CA to target). A &lt;code>PKIXCertPathChecker&lt;/code> implementation&#xA;&lt;b>must&lt;/b> support reverse checking (the ability to perform its checks when&#xA;it is presented with certificates in the reverse direction) and &lt;b>may&lt;/b>&#xA;support forward checking (the ability to perform its checks when it is&#xA;presented with certificates in the forward direction). The&#xA;{@link #isForwardCheckingSupported isForwardCheckingSupported} method&#xA;indicates whether forward checking is supported.&#xA;&lt;p>&#xA;Additional input parameters required for executing the check may be&#xA;specified through constructors of concrete implementations of this class.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;Unless otherwise specified, the methods defined in this class are not&#xA;thread-safe. Multiple threads that need to access a single&#xA;object concurrently should synchronize amongst themselves and&#xA;provide the necessary locking. Multiple threads each manipulating&#xA;separate objects need not synchronize.&#xA;&#xA;@see PKIXParameters&#xA;@see PKIXBuilderParameters&#xA;&#xA;@version &#x9;1.7 12/19/03&#xA;@since&#x9;1.4&#xA;@author&#x9;Yassir Elley&#xA;@author&#x9;Sean Mullan&#xA;" annotatedElement="1c901dea-063d-4205-a171-d9f625ef9579"/>
              <interfaceRealization xmi:id="0cdfe0b6-4bb2-4101-8652-cb715679154a" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="1c901dea-063d-4205-a171-d9f625ef9579" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="663439e2-ed68-4793-9e89-9cf66ea41e6c" name="X509CertSelector" clientDependency="e5e378c5-77df-4f5e-a33f-683d853bdc48">
              <ownedComment xmi:id="1a0565b7-3489-465e-8b5c-314567f76e6e" body="A &lt;code>CertSelector&lt;/code> that selects &lt;code>X509Certificates&lt;/code> that&#xA;match all specified criteria. This class is particularly useful when&#xA;selecting certificates from a &lt;code>CertStore&lt;/code> to build a&#xA;PKIX-compliant certification path.&#xA;&lt;p>&#xA;When first constructed, an &lt;code>X509CertSelector&lt;/code> has no criteria&#xA;enabled and each of the &lt;code>get&lt;/code> methods return a default value&#xA;(&lt;code>null&lt;/code>, or &lt;code>-1&lt;/code> for the {@link #getBasicConstraints&#xA;getBasicConstraints} method). Therefore, the {@link #match match}&#xA;method would return &lt;code>true&lt;/code> for any &lt;code>X509Certificate&lt;/code>.&#xA;Typically, several criteria are enabled (by calling&#xA;{@link #setIssuer setIssuer} or&#xA;{@link #setKeyUsage setKeyUsage}, for instance) and then the&#xA;&lt;code>X509CertSelector&lt;/code> is passed to&#xA;{@link CertStore#getCertificates CertStore.getCertificates} or some similar&#xA;method.&#xA;&lt;p>&#xA;Several criteria can be enabled (by calling {@link #setIssuer setIssuer}&#xA;and {@link #setSerialNumber setSerialNumber},&#xA;for example) such that the &lt;code>match&lt;/code> method&#xA;usually uniquely matches a single &lt;code>X509Certificate&lt;/code>. We say&#xA;usually, since it is possible for two issuing CAs to have the same&#xA;distinguished name and each issue a certificate with the same serial&#xA;number. Other unique combinations include the issuer, subject,&#xA;subjectKeyIdentifier and/or the subjectPublicKey criteria.&#xA;&lt;p>&#xA;Please refer to RFC 2459 for definitions of the X.509 certificate&#xA;extensions mentioned below.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;Unless otherwise specified, the methods defined in this class are not&#xA;thread-safe. Multiple threads that need to access a single&#xA;object concurrently should synchronize amongst themselves and&#xA;provide the necessary locking. Multiple threads each manipulating&#xA;separate objects need not synchronize.&#xA;&#xA;@see CertSelector&#xA;@see X509Certificate&#xA;&#xA;@version &#x9;1.20, 06/08/04&#xA;@since&#x9;1.4&#xA;@author&#x9;Steve Hanna&#xA;" annotatedElement="663439e2-ed68-4793-9e89-9cf66ea41e6c"/>
              <interfaceRealization xmi:id="e5e378c5-77df-4f5e-a33f-683d853bdc48" name="" supplier="970c4ecd-93d2-46f1-b3f4-2c6a7bea060e" client="663439e2-ed68-4793-9e89-9cf66ea41e6c" contract="970c4ecd-93d2-46f1-b3f4-2c6a7bea060e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7b3a078a-da08-4d4d-bc1f-859115e62f87" name="CertificateNotYetValidException">
              <ownedComment xmi:id="93788c82-afbb-45ff-8311-c8ffd236a482" body="Certificate is not yet valid exception. This is thrown whenever&#xA;the current &lt;code>Date&lt;/code> or the specified &lt;code>Date&lt;/code>&#xA;is before the &lt;code>notBefore&lt;/code> date/time in the Certificate&#xA;validity period.&#xA;&#xA;@author Hemma Prafullchandra&#xA;1.10&#xA;" annotatedElement="7b3a078a-da08-4d4d-bc1f-859115e62f87"/>
              <generalization xmi:id="af4cafb6-d097-416a-a667-98ab3045de84" isSubstitutable="true" general="0ad9f22a-c816-4a28-896f-eb864ee1eb4e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="aa4c61ac-f545-4e7c-8b42-4951d8c7f4eb" name="PKIXCertPathValidatorResult" clientDependency="3953feb2-1924-42b4-b51e-e94b8232bee1">
              <ownedComment xmi:id="ead03f59-faac-4281-bf31-1729677f8756" body="This class represents the successful result of the PKIX certification&#xA;path validation algorithm.&#xA;&#xA;&lt;p>Instances of &lt;code>PKIXCertPathValidatorResult&lt;/code> are returned by the&#xA;{@link CertPathValidator#validate validate} method of&#xA;&lt;code>CertPathValidator&lt;/code> objects implementing the PKIX algorithm.&#xA;&#xA;&lt;p> All &lt;code>PKIXCertPathValidatorResult&lt;/code> objects contain the&#xA;valid policy tree and subject public key resulting from the&#xA;validation algorithm, as well as a &lt;code>TrustAnchor&lt;/code> describing&#xA;the certification authority (CA) that served as a trust anchor for the&#xA;certification path.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;Unless otherwise specified, the methods defined in this class are not&#xA;thread-safe. Multiple threads that need to access a single&#xA;object concurrently should synchronize amongst themselves and&#xA;provide the necessary locking. Multiple threads each manipulating&#xA;separate objects need not synchronize.&#xA;&#xA;@see CertPathValidatorResult&#xA;&#xA;@version &#x9;1.9 12/19/03&#xA;@since&#x9;1.4&#xA;@author&#x9;Yassir Elley&#xA;@author&#x9;Sean Mullan&#xA;" annotatedElement="aa4c61ac-f545-4e7c-8b42-4951d8c7f4eb"/>
              <interfaceRealization xmi:id="3953feb2-1924-42b4-b51e-e94b8232bee1" name="" supplier="966c87d6-d11a-42dd-ba6a-f1f4edde9449" client="aa4c61ac-f545-4e7c-8b42-4951d8c7f4eb" contract="966c87d6-d11a-42dd-ba6a-f1f4edde9449"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="429aeb42-90c2-4261-ae78-4fd55b7c2985" name="CertPathValidator">
              <ownedComment xmi:id="9fb5541b-8c9c-4463-8310-ec13dba29e95" body="A class for validating certification paths (also known as certificate&#xA;chains).&#xA;&lt;p>&#xA;This class uses a provider-based architecture, as described in the Java&#xA;Cryptography Architecture. To create a &lt;code>CertPathValidator&lt;/code>,&#xA;call one of the static &lt;code>getInstance&lt;/code> methods, passing in the&#xA;algorithm name of the &lt;code>CertPathValidator&lt;/code> desired and&#xA;optionally the name of the provider desired.&#xA;&lt;p>&#xA;Once a &lt;code>CertPathValidator&lt;/code> object has been created, it can&#xA;be used to validate certification paths by calling the {@link #validate&#xA;validate} method and passing it the &lt;code>CertPath&lt;/code> to be validated&#xA;and an algorithm-specific set of parameters. If successful, the result is&#xA;returned in an object that implements the&#xA;&lt;code>CertPathValidatorResult&lt;/code> interface.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;The static methods of this class are guaranteed to be thread-safe.&#xA;Multiple threads may concurrently invoke the static methods defined in&#xA;this class with no ill effects.&#xA;&lt;p>&#xA;However, this is not true for the non-static methods defined by this class.&#xA;Unless otherwise documented by a specific provider, threads that need to&#xA;access a single &lt;code>CertPathValidator&lt;/code> instance concurrently should&#xA;synchronize amongst themselves and provide the necessary locking. Multiple&#xA;threads each manipulating a different &lt;code>CertPathValidator&lt;/code>&#xA;instance need not synchronize.&#xA;&#xA;@see CertPath&#xA;&#xA;@version &#x9;1.9 06/28/04&#xA;@since&#x9;1.4&#xA;@author&#x9;Yassir Elley&#xA;" annotatedElement="429aeb42-90c2-4261-ae78-4fd55b7c2985"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="74c46bd9-0c7a-4a1f-a786-b67c7ac00f94" name="CertPathBuilder">
              <ownedComment xmi:id="8c03b74c-4b0c-41de-9fc6-fd0eeaa039d3" body="A class for building certification paths (also known as certificate chains).&#xA;&lt;p>&#xA;This class uses a provider-based architecture, as described in the Java&#xA;Cryptography Architecture. To create a &lt;code>CertPathBuilder&lt;/code>, call&#xA;one of the static &lt;code>getInstance&lt;/code> methods, passing in the&#xA;algorithm name of the &lt;code>CertPathBuilder&lt;/code> desired and optionally&#xA;the name of the provider desired.&#xA;&lt;p>&#xA;Once a &lt;code>CertPathBuilder&lt;/code> object has been created, certification&#xA;paths can be constructed by calling the {@link #build build} method and&#xA;passing it an algorithm-specific set of parameters. If successful, the&#xA;result (including the &lt;code>CertPath&lt;/code> that was built) is returned&#xA;in an object that implements the &lt;code>CertPathBuilderResult&lt;/code>&#xA;interface.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;The static methods of this class are guaranteed to be thread-safe.&#xA;Multiple threads may concurrently invoke the static methods defined in&#xA;this class with no ill effects.&#xA;&lt;p>&#xA;However, this is not true for the non-static methods defined by this class.&#xA;Unless otherwise documented by a specific provider, threads that need to&#xA;access a single &lt;code>CertPathBuilder&lt;/code> instance concurrently should&#xA;synchronize amongst themselves and provide the necessary locking. Multiple&#xA;threads each manipulating a different &lt;code>CertPathBuilder&lt;/code> instance&#xA;need not synchronize.&#xA;&#xA;@see CertPath&#xA;&#xA;@version &#x9;1.9 06/28/04&#xA;@since&#x9;1.4&#xA;@author&#x9;Sean Mullan&#xA;@author&#x9;Yassir Elley&#xA;" annotatedElement="74c46bd9-0c7a-4a1f-a786-b67c7ac00f94"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5b5a1153-1656-439f-aa4a-3258600ed38a" name="X509CRL" clientDependency="02bd0b88-b0b8-46bf-91f7-591e83451a9d" isAbstract="true">
              <ownedComment xmi:id="629d5c4e-efc7-4850-8905-474e5fd0a48f" body="&lt;p>&#xA;Abstract class for an X.509 Certificate Revocation List (CRL).&#xA;A CRL is a time-stamped list identifying revoked certificates.&#xA;It is signed by a Certificate Authority (CA) and made freely&#xA;available in a public repository.&#xA;&#xA;&lt;p>Each revoked certificate is&#xA;identified in a CRL by its certificate serial number. When a&#xA;certificate-using system uses a certificate (e.g., for verifying a&#xA;remote user's digital signature), that system not only checks the&#xA;certificate signature and validity but also acquires a suitably-&#xA;recent CRL and checks that the certificate serial number is not on&#xA;that CRL.  The meaning of &quot;suitably-recent&quot; may vary with local&#xA;policy, but it usually means the most recently-issued CRL.  A CA&#xA;issues a new CRL on a regular periodic basis (e.g., hourly, daily, or&#xA;weekly).  Entries are added to CRLs as revocations occur, and an&#xA;entry may be removed when the certificate expiration date is reached.&#xA;&lt;p>&#xA;The X.509 v2 CRL format is described below in ASN.1:&#xA;&lt;pre>&#xA;CertificateList  ::=  SEQUENCE  {&#xA;tbsCertList          TBSCertList,&#xA;signatureAlgorithm   AlgorithmIdentifier,&#xA;signature            BIT STRING  }&#xA;&lt;/pre>&#xA;&lt;p>&#xA;More information can be found in RFC 2459,&#xA;&quot;Internet X.509 Public Key Infrastructure Certificate and CRL&#xA;Profile&quot; at &lt;A HREF=&quot;http://www.ietf.org/rfc/rfc2459.txt&quot;>&#xA;http://www.ietf.org/rfc/rfc2459.txt &lt;/A>.&#xA;&lt;p>&#xA;The ASN.1 definition of &lt;code>tbsCertList&lt;/code> is:&#xA;&lt;pre>&#xA;TBSCertList  ::=  SEQUENCE  {&#xA;version                 Version OPTIONAL,&#xA;-- if present, must be v2&#xA;signature               AlgorithmIdentifier,&#xA;issuer                  Name,&#xA;thisUpdate              ChoiceOfTime,&#xA;nextUpdate              ChoiceOfTime OPTIONAL,&#xA;revokedCertificates     SEQUENCE OF SEQUENCE  {&#xA;userCertificate         CertificateSerialNumber,&#xA;revocationDate          ChoiceOfTime,&#xA;crlEntryExtensions      Extensions OPTIONAL&#xA;-- if present, must be v2&#xA;}  OPTIONAL,&#xA;crlExtensions           [0]  EXPLICIT Extensions OPTIONAL&#xA;-- if present, must be v2&#xA;}&#xA;&lt;/pre>&#xA;&lt;p>&#xA;CRLs are instantiated using a certificate factory. The following is an&#xA;example of how to instantiate an X.509 CRL:&#xA;&lt;pre>&lt;code>&#xA;InputStream inStream = new FileInputStream(&quot;fileName-of-crl&quot;);&#xA;CertificateFactory cf = CertificateFactory.getInstance(&quot;X.509&quot;);&#xA;X509CRL crl = (X509CRL)cf.generateCRL(inStream);&#xA;inStream.close();&#xA;&lt;/code>&lt;/pre>&#xA;&#xA;@author Hemma Prafullchandra&#xA;&#xA;@version 1.29, 12/19/03&#xA;&#xA;@see CRL&#xA;@see CertificateFactory&#xA;@see X509Extension&#xA;" annotatedElement="5b5a1153-1656-439f-aa4a-3258600ed38a"/>
              <generalization xmi:id="e8b1e363-b977-49cb-af83-586a5e752860" isSubstitutable="true" general="4a1abb52-8d26-4456-8a92-50f8b6d3dd2a"/>
              <interfaceRealization xmi:id="02bd0b88-b0b8-46bf-91f7-591e83451a9d" name="" supplier="b97d37b3-5750-4b7c-af92-ef9331b73cab" client="5b5a1153-1656-439f-aa4a-3258600ed38a" contract="b97d37b3-5750-4b7c-af92-ef9331b73cab"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0ad9f22a-c816-4a28-896f-eb864ee1eb4e" name="CertificateException">
              <ownedComment xmi:id="a6b4627b-5062-4d1e-acbf-43dc03c0960a" body="This exception indicates one of a variety of certificate problems.&#xA;&#xA;@author Hemma Prafullchandra&#xA;@version 1.33&#xA;@see Certificate&#xA;" annotatedElement="0ad9f22a-c816-4a28-896f-eb864ee1eb4e"/>
              <generalization xmi:id="8f0d590b-fb41-4620-a3d7-13169ba61b74" isSubstitutable="true" general="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6fef96e3-61f5-48e8-b643-e9bf79716da0" name="CertificateParsingException">
              <ownedComment xmi:id="addfa701-7225-4dbc-ae2a-ebaf2b56116a" body="Certificate Parsing Exception. This is thrown whenever an&#xA;invalid DER-encoded certificate is parsed or unsupported DER features&#xA;are found in the Certificate.&#xA;&#xA;@author Hemma Prafullchandra&#xA;1.12&#xA;" annotatedElement="6fef96e3-61f5-48e8-b643-e9bf79716da0"/>
              <generalization xmi:id="e348d627-bb13-4736-8c8d-249d31aff1dd" isSubstitutable="true" general="0ad9f22a-c816-4a28-896f-eb864ee1eb4e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2bbea188-7ef2-47b2-9d35-054a63e4638a" name="CertificateFactory">
              <ownedComment xmi:id="7edb224e-e37e-4adc-86be-415e217ed77e" body="This class defines the functionality of a certificate factory, which is&#xA;used to generate certificate, certification path (&lt;code>CertPath&lt;/code>)&#xA;and certificate revocation list (CRL) objects from their encodings.&#xA;&#xA;&lt;p>For encodings consisting of multiple certificates, use&#xA;&lt;code>generateCertificates&lt;/code> when you want to&#xA;parse a collection of possibly unrelated certificates. Otherwise,&#xA;use &lt;code>generateCertPath&lt;/code> when you want to generate&#xA;a &lt;code>CertPath&lt;/code> (a certificate chain) and subsequently&#xA;validate it with a &lt;code>CertPathValidator&lt;/code>.&#xA;&#xA;&lt;p>A certificate factory for X.509 must return certificates that are an&#xA;instance of &lt;code>java.security.cert.X509Certificate&lt;/code>, and CRLs&#xA;that are an instance of &lt;code>java.security.cert.X509CRL&lt;/code>.&#xA;&#xA;&lt;p>The following example reads a file with Base64 encoded certificates,&#xA;which are each bounded at the beginning by -----BEGIN CERTIFICATE-----, and&#xA;bounded at the end by -----END CERTIFICATE-----. We convert the&#xA;&lt;code>FileInputStream&lt;/code> (which does not support &lt;code>mark&lt;/code>&#xA;and &lt;code>reset&lt;/code>) to a &lt;code>BufferedInputStream&lt;/code> (which&#xA;supports those methods), so that each call to&#xA;&lt;code>generateCertificate&lt;/code> consumes only one certificate, and the&#xA;read position of the input stream is positioned to the next certificate in&#xA;the file:&lt;p>&#xA;&#xA;&lt;pre>&#xA;FileInputStream fis = new FileInputStream(filename);&#xA;BufferedInputStream bis = new BufferedInputStream(fis);&#xA;&#xA;CertificateFactory cf = CertificateFactory.getInstance(&quot;X.509&quot;);&#xA;&#xA;while (bis.available() > 0) {&#xA;Certificate cert = cf.generateCertificate(bis);&#xA;System.out.println(cert.toString());&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p>The following example parses a PKCS#7-formatted certificate reply stored&#xA;in a file and extracts all the certificates from it:&lt;p>&#xA;&#xA;&lt;pre>&#xA;FileInputStream fis = new FileInputStream(filename);&#xA;CertificateFactory cf = CertificateFactory.getInstance(&quot;X.509&quot;);&#xA;Collection c = cf.generateCertificates(fis);&#xA;Iterator i = c.iterator();&#xA;while (i.hasNext()) {&#xA;Certificate cert = (Certificate)i.next();&#xA;System.out.println(cert);&#xA;}&#xA;&lt;/pre>&#xA;&#xA;@author Hemma Prafullchandra&#xA;@author Jan Luehe&#xA;@author Sean Mullan&#xA;&#xA;@version 1.28, 05/05/04&#xA;&#xA;@see Certificate&#xA;@see X509Certificate&#xA;@see CertPath&#xA;@see CRL&#xA;@see X509CRL&#xA;&#xA;@since 1.2&#xA;" annotatedElement="2bbea188-7ef2-47b2-9d35-054a63e4638a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2aca607a-83cf-4c2b-995e-779f94c295ab" name="LDAPCertStoreParameters" clientDependency="980cb8e2-2bdd-4e22-9ad8-d16d9b4da399">
              <ownedComment xmi:id="829b7562-bfe1-4ad6-b35f-66b328edfccc" body="Parameters used as input for the LDAP &lt;code>CertStore&lt;/code> algorithm.&#xA;&lt;p>&#xA;This class is used to provide necessary configuration parameters (server&#xA;name and port number) to implementations of the LDAP &lt;code>CertStore&lt;/code>&#xA;algorithm.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;Unless otherwise specified, the methods defined in this class are not&#xA;thread-safe. Multiple threads that need to access a single&#xA;object concurrently should synchronize amongst themselves and&#xA;provide the necessary locking. Multiple threads each manipulating&#xA;separate objects need not synchronize.&#xA;&#xA;@version &#x9;1.8 12/19/03&#xA;@since&#x9;1.4&#xA;@author&#x9;Steve Hanna&#xA;@see         CertStore&#xA;" annotatedElement="2aca607a-83cf-4c2b-995e-779f94c295ab"/>
              <interfaceRealization xmi:id="980cb8e2-2bdd-4e22-9ad8-d16d9b4da399" name="" supplier="1e1a8030-81f4-4048-9833-26f14c599749" client="2aca607a-83cf-4c2b-995e-779f94c295ab" contract="1e1a8030-81f4-4048-9833-26f14c599749"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4a1abb52-8d26-4456-8a92-50f8b6d3dd2a" name="CRL" isAbstract="true">
              <ownedComment xmi:id="67f84486-0665-4381-ae25-00e6557cc1bf" body="This class is an abstraction of certificate revocation lists (CRLs) that&#xA;have different formats but important common uses. For example, all CRLs&#xA;share the functionality of listing revoked certificates, and can be queried&#xA;on whether or not they list a given certificate.&#xA;&lt;p>&#xA;Specialized CRL types can be defined by subclassing off of this abstract&#xA;class.&#xA;&#xA;@author Hemma Prafullchandra&#xA;&#xA;@version 1.12, 12/19/03&#xA;&#xA;@see X509CRL&#xA;@see CertificateFactory&#xA;&#xA;@since 1.2&#xA;" annotatedElement="4a1abb52-8d26-4456-8a92-50f8b6d3dd2a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="885274c9-e151-4ac9-b49e-eef138428bce" name="CRLSelector" isAbstract="true">
              <ownedComment xmi:id="15e5a7fd-9a5c-409a-9e0f-9a9fa4b36f29" body="A selector that defines a set of criteria for selecting &lt;code>CRL&lt;/code>s.&#xA;Classes that implement this interface are often used to specify&#xA;which &lt;code>CRL&lt;/code>s should be retrieved from a &lt;code>CertStore&lt;/code>.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;Unless otherwise specified, the methods defined in this interface are not&#xA;thread-safe. Multiple threads that need to access a single&#xA;object concurrently should synchronize amongst themselves and&#xA;provide the necessary locking. Multiple threads each manipulating&#xA;separate objects need not synchronize.&#xA;&#xA;@see CRL&#xA;@see CertStore&#xA;@see CertStore#getCRLs&#xA;&#xA;@version &#x9;1.5 12/19/03&#xA;@author&#x9;Steve Hanna&#xA;@since&#x9;1.4&#xA;" annotatedElement="885274c9-e151-4ac9-b49e-eef138428bce"/>
              <generalization xmi:id="3f4bb24d-a301-4b65-9ad1-c3eac61151f0" isSubstitutable="true" general="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="95a97f24-5c8e-4fad-b8bd-15c957aae444" name="PKIXBuilderParameters">
              <ownedComment xmi:id="61af0809-7f1d-45fa-80d3-ec17416b8411" body="Parameters used as input for the PKIX &lt;code>CertPathBuilder&lt;/code>&#xA;algorithm.&#xA;&lt;p>&#xA;A PKIX &lt;code>CertPathBuilder&lt;/code> uses these parameters to {@link&#xA;CertPathBuilder#build build} a &lt;code>CertPath&lt;/code> which has been&#xA;validated according to the PKIX certification path validation algorithm.&#xA;&#xA;&lt;p>To instantiate a &lt;code>PKIXBuilderParameters&lt;/code> object, an&#xA;application must specify one or more &lt;i>most-trusted CAs&lt;/i> as defined by&#xA;the PKIX certification path validation algorithm. The most-trusted CA&#xA;can be specified using one of two constructors. An application&#xA;can call {@link #PKIXBuilderParameters(Set, CertSelector)&#xA;PKIXBuilderParameters(Set, CertSelector)}, specifying a&#xA;&lt;code>Set&lt;/code> of &lt;code>TrustAnchor&lt;/code> objects, each of which&#xA;identifies a most-trusted CA. Alternatively, an application can call&#xA;{@link #PKIXBuilderParameters(KeyStore, CertSelector)&#xA;PKIXBuilderParameters(KeyStore, CertSelector)}, specifying a&#xA;&lt;code>KeyStore&lt;/code> instance containing trusted certificate entries, each&#xA;of which will be considered as a most-trusted CA.&#xA;&#xA;&lt;p>In addition, an application must specify constraints on the target&#xA;certificate that the &lt;code>CertPathBuilder&lt;/code> will attempt&#xA;to build a path to. The constraints are specified as a&#xA;&lt;code>CertSelector&lt;/code> object. These constraints should provide the&#xA;&lt;code>CertPathBuilder&lt;/code> with enough search criteria to find the target&#xA;certificate. Minimal criteria for an &lt;code>X509Certificate&lt;/code> usually&#xA;include the subject name and/or one or more subject alternative names.&#xA;If enough criteria is not specified, the &lt;code>CertPathBuilder&lt;/code>&#xA;may throw a &lt;code>CertPathBuilderException&lt;/code>.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;Unless otherwise specified, the methods defined in this class are not&#xA;thread-safe. Multiple threads that need to access a single&#xA;object concurrently should synchronize amongst themselves and&#xA;provide the necessary locking. Multiple threads each manipulating&#xA;separate objects need not synchronize.&#xA;&#xA;@see CertPathBuilder&#xA;&#xA;@version &#x9;1.15 12/19/03&#xA;@since &#x9;1.4&#xA;@author&#x9;Sean Mullan&#xA;" annotatedElement="95a97f24-5c8e-4fad-b8bd-15c957aae444"/>
              <generalization xmi:id="517f0f4e-3bc8-4cec-9ac6-6e725213ef31" isSubstitutable="true" general="41189e81-f4ab-4539-acbd-052e940b4f1c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="65c0f0da-b579-4f07-b73e-56df74ae6ce3" name="CollectionCertStoreParameters" clientDependency="8df7aac5-6d89-46b9-ad84-2f647e97a286">
              <ownedComment xmi:id="6ee9d65a-51c2-4e3a-86d5-ef8ff85f35b9" body="Parameters used as input for the Collection &lt;code>CertStore&lt;/code>&#xA;algorithm.&#xA;&lt;p>&#xA;This class is used to provide necessary configuration parameters&#xA;to implementations of the Collection &lt;code>CertStore&lt;/code>&#xA;algorithm. The only parameter included in this class is the&#xA;&lt;code>Collection&lt;/code> from which the &lt;code>CertStore&lt;/code> will&#xA;retrieve certificates and CRLs.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;Unless otherwise specified, the methods defined in this class are not&#xA;thread-safe. Multiple threads that need to access a single&#xA;object concurrently should synchronize amongst themselves and&#xA;provide the necessary locking. Multiple threads each manipulating&#xA;separate objects need not synchronize.&#xA;&#xA;@version &#x9;1.8 05/05/04&#xA;@since&#x9;1.4&#xA;@author&#x9;Steve Hanna&#xA;@see         java.util.Collection&#xA;@see         CertStore&#xA;" annotatedElement="65c0f0da-b579-4f07-b73e-56df74ae6ce3"/>
              <interfaceRealization xmi:id="8df7aac5-6d89-46b9-ad84-2f647e97a286" name="" supplier="1e1a8030-81f4-4048-9833-26f14c599749" client="65c0f0da-b579-4f07-b73e-56df74ae6ce3" contract="1e1a8030-81f4-4048-9833-26f14c599749"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6adba2cb-2faa-44d9-89c2-338a36e1c031" name="CertStoreException">
              <ownedComment xmi:id="506e99d3-ba20-4fd4-94a3-bb3913ad8acb" body="An exception indicating one of a variety of problems retrieving&#xA;certificates and CRLs from a &lt;code>CertStore&lt;/code>.&#xA;&lt;p>&#xA;A &lt;code>CertStoreException&lt;/code> provides support for wrapping&#xA;exceptions. The {@link #getCause getCause} method returns the throwable,&#xA;if any, that caused this exception to be thrown.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;Unless otherwise specified, the methods defined in this class are not&#xA;thread-safe. Multiple threads that need to access a single&#xA;object concurrently should synchronize amongst themselves and&#xA;provide the necessary locking. Multiple threads each manipulating&#xA;separate objects need not synchronize.&#xA;&#xA;@see CertStore&#xA;&#xA;@version &#x9;1.7 12/19/03&#xA;@since&#x9;1.4&#xA;@author&#x9;Sean Mullan&#xA;" annotatedElement="6adba2cb-2faa-44d9-89c2-338a36e1c031"/>
              <generalization xmi:id="eba37da8-badd-41b6-ba8c-13bf3c387f2a" isSubstitutable="true" general="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="00ba2242-2af9-4e56-9bd7-0261b9067810" name="CertificateEncodingException">
              <ownedComment xmi:id="d409f72c-528a-4bb4-a695-3d8ca5a7598c" body="Certificate Encoding Exception. This is thrown whenever an error&#xA;occurs while attempting to encode a certificate.&#xA;&#xA;@author Hemma Prafullchandra&#xA;1.12&#xA;" annotatedElement="00ba2242-2af9-4e56-9bd7-0261b9067810"/>
              <generalization xmi:id="6a029dda-bdc2-4228-b3d2-8384dd59ce3d" isSubstitutable="true" general="0ad9f22a-c816-4a28-896f-eb864ee1eb4e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="742d3ee8-6344-40f2-9451-046a5e034c59" name="TrustAnchor">
              <ownedComment xmi:id="e1b9bbf6-92ef-4977-9598-54ae9b6c05f7" body="A trust anchor or most-trusted Certification Authority (CA).&#xA;&lt;p>&#xA;This class represents a &quot;most-trusted CA&quot;, which is used as a trust anchor&#xA;for validating X.509 certification paths. A most-trusted CA includes the&#xA;public key of the CA, the CA's name, and any constraints upon the set of&#xA;paths which may be validated using this key. These parameters can be&#xA;specified in the form of a trusted &lt;code>X509Certificate&lt;/code> or as&#xA;individual parameters.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;&lt;p>All &lt;code>TrustAnchor&lt;/code> objects must be immutable and&#xA;thread-safe. That is, multiple threads may concurrently invoke the&#xA;methods defined in this class on a single &lt;code>TrustAnchor&lt;/code>&#xA;object (or more than one) with no ill effects. Requiring&#xA;&lt;code>TrustAnchor&lt;/code> objects to be immutable and thread-safe&#xA;allows them to be passed around to various pieces of code without&#xA;worrying about coordinating access. This stipulation applies to all&#xA;public fields and methods of this class and any added or overridden&#xA;by subclasses.&#xA;&#xA;@see PKIXParameters#PKIXParameters(Set)&#xA;@see PKIXBuilderParameters#PKIXBuilderParameters(Set, CertSelector)&#xA;&#xA;@version     1.10 12/19/03&#xA;@since       1.4&#xA;@author      Sean Mullan&#xA;" annotatedElement="742d3ee8-6344-40f2-9451-046a5e034c59"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5df7e95e-4db8-48cb-a051-aa6f5411ac7a" name="CertPath" clientDependency="dd6f1f93-c8d7-45f8-9d25-47050fbe4196" isAbstract="true">
              <ownedComment xmi:id="496d2a0e-b002-4516-892c-4da509a37705" body="An immutable sequence of certificates (a certification path).&#xA;&lt;p>&#xA;This is an abstract class that defines the methods common to all&#xA;&lt;code>CertPath&lt;/code>s. Subclasses can handle different kinds of&#xA;certificates (X.509, PGP, etc.).&#xA;&lt;p>&#xA;All &lt;code>CertPath&lt;/code> objects have a type, a list of&#xA;&lt;code>Certificate&lt;/code>s, and one or more supported encodings. Because the&#xA;&lt;code>CertPath&lt;/code> class is immutable, a &lt;code>CertPath&lt;/code> cannot&#xA;change in any externally visible way after being constructed. This&#xA;stipulation applies to all public fields and methods of this class and any&#xA;added or overridden by subclasses.&#xA;&lt;p>&#xA;The type is a &lt;code>String&lt;/code> that identifies the type of&#xA;&lt;code>Certificate&lt;/code>s in the certification path. For each&#xA;certificate &lt;code>cert&lt;/code> in a certification path &lt;code>certPath&lt;/code>,&#xA;&lt;code>cert.getType().equals(certPath.getType())&lt;/code> must be&#xA;&lt;code>true&lt;/code>.&#xA;&lt;p>&#xA;The list of &lt;code>Certificate&lt;/code>s is an ordered &lt;code>List&lt;/code> of&#xA;zero or more &lt;code>Certificate&lt;/code>s. This &lt;code>List&lt;/code> and all&#xA;of the &lt;code>Certificate&lt;/code>s contained in it must be immutable.&#xA;&lt;p>&#xA;Each &lt;code>CertPath&lt;/code> object must support one or more encodings&#xA;so that the object can be translated into a byte array for storage or&#xA;transmission to other parties. Preferably, these encodings should be&#xA;well-documented standards (such as PKCS#7). One of the encodings supported&#xA;by a &lt;code>CertPath&lt;/code> is considered the default encoding. This&#xA;encoding is used if no encoding is explicitly requested (for the&#xA;{@link #getEncoded() getEncoded()} method, for instance).&#xA;&lt;p>&#xA;All &lt;code>CertPath&lt;/code> objects are also &lt;code>Serializable&lt;/code>.&#xA;&lt;code>CertPath&lt;/code> objects are resolved into an alternate&#xA;{@link CertPathRep CertPathRep} object during serialization. This allows&#xA;a &lt;code>CertPath&lt;/code> object to be serialized into an equivalent&#xA;representation regardless of its underlying implementation.&#xA;&lt;p>&#xA;&lt;code>CertPath&lt;/code> objects can be created with a&#xA;&lt;code>CertificateFactory&lt;/code> or they can be returned by other classes,&#xA;such as a &lt;code>CertPathBuilder&lt;/code>.&#xA;&lt;p>&#xA;By convention, X.509 &lt;code>CertPath&lt;/code>s (consisting of&#xA;&lt;code>X509Certificate&lt;/code>s), are ordered starting with the target&#xA;certificate and ending with a certificate issued by the trust anchor. That&#xA;is, the issuer of one certificate is the subject of the following one. The&#xA;certificate representing the {@link TrustAnchor TrustAnchor} should not be&#xA;included in the certification path. Unvalidated X.509 &lt;code>CertPath&lt;/code>s&#xA;may not follow these conventions. PKIX &lt;code>CertPathValidator&lt;/code>s will&#xA;detect any departure from these conventions that cause the certification&#xA;path to be invalid and throw a &lt;code>CertPathValidatorException&lt;/code>.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;All &lt;code>CertPath&lt;/code> objects must be thread-safe. That is, multiple&#xA;threads may concurrently invoke the methods defined in this class on a&#xA;single &lt;code>CertPath&lt;/code> object (or more than one) with no&#xA;ill effects. This is also true for the &lt;code>List&lt;/code> returned by&#xA;&lt;code>CertPath.getCertificates&lt;/code>.&#xA;&lt;p>&#xA;Requiring &lt;code>CertPath&lt;/code> objects to be immutable and thread-safe&#xA;allows them to be passed around to various pieces of code without worrying&#xA;about coordinating access.  Providing this thread-safety is&#xA;generally not difficult, since the &lt;code>CertPath&lt;/code> and&#xA;&lt;code>List&lt;/code> objects in question are immutable.&#xA;&#xA;@see CertificateFactory&#xA;@see CertPathBuilder&#xA;&#xA;@version 1.9 12/19/03&#xA;@author&#x9;Yassir Elley&#xA;@since&#x9;1.4&#xA;" annotatedElement="5df7e95e-4db8-48cb-a051-aa6f5411ac7a"/>
              <interfaceRealization xmi:id="dd6f1f93-c8d7-45f8-9d25-47050fbe4196" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="5df7e95e-4db8-48cb-a051-aa6f5411ac7a" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="fcd88c2b-d4ed-4567-be0c-49df4899e5da" name="CertPathRep" visibility="protected" clientDependency="90211d71-4f21-4a81-9d7f-d977a4246722">
                <ownedComment xmi:id="2a667050-f700-4235-9915-25204860a2cf" body="Alternate &lt;code>CertPath&lt;/code> class for serialization.&#xA;" annotatedElement="fcd88c2b-d4ed-4567-be0c-49df4899e5da"/>
                <interfaceRealization xmi:id="90211d71-4f21-4a81-9d7f-d977a4246722" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="fcd88c2b-d4ed-4567-be0c-49df4899e5da" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="cd8aa18b-4a5c-46ab-85c8-575998cc8410" name="X509Certificate" clientDependency="e828e18a-2767-4716-96c2-cdd76021ff4f" isAbstract="true">
              <ownedComment xmi:id="373fa617-9162-4414-b21a-43246353deaa" body="&lt;p>&#xA;Abstract class for X.509 certificates. This provides a standard&#xA;way to access all the attributes of an X.509 certificate.&#xA;&lt;p>&#xA;In June of 1996, the basic X.509 v3 format was completed by&#xA;ISO/IEC and ANSI X9, which is described below in ASN.1:&#xA;&lt;pre>&#xA;Certificate  ::=  SEQUENCE  {&#xA;tbsCertificate       TBSCertificate,&#xA;signatureAlgorithm   AlgorithmIdentifier,&#xA;signature            BIT STRING  }&#xA;&lt;/pre>&#xA;&lt;p>&#xA;These certificates are widely used to support authentication and&#xA;other functionality in Internet security systems. Common applications&#xA;include Privacy Enhanced Mail (PEM), Transport Layer Security (SSL),&#xA;code signing for trusted software distribution, and Secure Electronic&#xA;Transactions (SET).&#xA;&lt;p>&#xA;These certificates are managed and vouched for by &lt;em>Certificate&#xA;Authorities&lt;/em> (CAs). CAs are services which create certificates by&#xA;placing data in the X.509 standard format and then digitally signing&#xA;that data. CAs act as trusted third parties, making introductions&#xA;between principals who have no direct knowledge of each other.&#xA;CA certificates are either signed by themselves, or by some other&#xA;CA such as a &quot;root&quot; CA.&#xA;&lt;p>&#xA;More information can be found in RFC 2459,&#xA;&quot;Internet X.509 Public Key Infrastructure Certificate and CRL&#xA;Profile&quot; at &lt;A HREF=&quot;http://www.ietf.org/rfc/rfc2459.txt&quot;>&#xA;http://www.ietf.org/rfc/rfc2459.txt &lt;/A>.&#xA;&lt;p>&#xA;The ASN.1 definition of &lt;code>tbsCertificate&lt;/code> is:&#xA;&lt;pre>&#xA;TBSCertificate  ::=  SEQUENCE  {&#xA;version         [0]  EXPLICIT Version DEFAULT v1,&#xA;serialNumber         CertificateSerialNumber,&#xA;signature            AlgorithmIdentifier,&#xA;issuer               Name,&#xA;validity             Validity,&#xA;subject              Name,&#xA;subjectPublicKeyInfo SubjectPublicKeyInfo,&#xA;issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,&#xA;-- If present, version must be v2 or v3&#xA;subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,&#xA;-- If present, version must be v2 or v3&#xA;extensions      [3]  EXPLICIT Extensions OPTIONAL&#xA;-- If present, version must be v3&#xA;}&#xA;&lt;/pre>&#xA;&lt;p>&#xA;Certificates are instantiated using a certificate factory. The following is&#xA;an example of how to instantiate an X.509 certificate:&#xA;&lt;pre>&#xA;InputStream inStream = new FileInputStream(&quot;fileName-of-cert&quot;);&#xA;CertificateFactory cf = CertificateFactory.getInstance(&quot;X.509&quot;);&#xA;X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream);&#xA;inStream.close();&#xA;&lt;/pre>&#xA;&#xA;@author Hemma Prafullchandra&#xA;&#xA;@version 1.39&#xA;&#xA;@see Certificate&#xA;@see CertificateFactory&#xA;@see X509Extension&#xA;" annotatedElement="cd8aa18b-4a5c-46ab-85c8-575998cc8410"/>
              <generalization xmi:id="e0018541-d052-4821-8d6b-b43e92e3081c" isSubstitutable="true" general="10847259-217d-4d4c-ab8a-fbf8dbd50cd2"/>
              <interfaceRealization xmi:id="e828e18a-2767-4716-96c2-cdd76021ff4f" name="" supplier="b97d37b3-5750-4b7c-af92-ef9331b73cab" client="cd8aa18b-4a5c-46ab-85c8-575998cc8410" contract="b97d37b3-5750-4b7c-af92-ef9331b73cab"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="92658088-b0b8-46a0-95a9-ef39d83c1f03" name="CertPathBuilderResult" isAbstract="true">
              <ownedComment xmi:id="14aee5a4-29b0-443e-ade2-3794386ca086" body="A specification of the result of a certification path builder algorithm.&#xA;All results returned by the {@link CertPathBuilder#build&#xA;CertPathBuilder.build} method must implement this interface.&#xA;&lt;p>&#xA;At a minimum, a &lt;code>CertPathBuilderResult&lt;/code> contains the&#xA;&lt;code>CertPath&lt;/code> built by the &lt;code>CertPathBuilder&lt;/code> instance.&#xA;Implementations of this interface may add methods to return implementation&#xA;or algorithm specific information, such as debugging information or&#xA;certification path validation results.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;Unless otherwise specified, the methods defined in this interface are not&#xA;thread-safe. Multiple threads that need to access a single&#xA;object concurrently should synchronize amongst themselves and&#xA;provide the necessary locking. Multiple threads each manipulating&#xA;separate objects need not synchronize.&#xA;&#xA;@see CertPathBuilder&#xA;&#xA;@version &#x9;1.6 12/19/03&#xA;@since&#x9;1.4&#xA;@author&#x9;Sean Mullan&#xA;" annotatedElement="92658088-b0b8-46a0-95a9-ef39d83c1f03"/>
              <generalization xmi:id="bb0e4a12-e5c1-4b35-9c7e-70d6c552f6c9" isSubstitutable="true" general="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2363c2d6-5041-4415-9db2-4ac03dc80301" name="CertStoreSpi" isAbstract="true">
              <ownedComment xmi:id="0a226f2b-4be4-43e5-ab86-632dd20cbde9" body="The &lt;i>Service Provider Interface&lt;/i> (&lt;b>SPI&lt;/b>)&#xA;for the {@link CertStore CertStore} class. All &lt;code>CertStore&lt;/code>&#xA;implementations must include a class (the SPI class) that extends&#xA;this class (&lt;code>CertStoreSpi&lt;/code>), provides a constructor with&#xA;a single argument of type &lt;code>CertStoreParameters&lt;/code>, and implements&#xA;all of its methods. In general, instances of this class should only be&#xA;accessed through the &lt;code>CertStore&lt;/code> class.&#xA;For details, see the Java Cryptography Architecture.&#xA;&lt;p>&#xA;&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>&#xA;The public methods of all &lt;code>CertStoreSpi&lt;/code> objects must be&#xA;thread-safe. That is, multiple threads may concurrently invoke these&#xA;methods on a single &lt;code>CertStoreSpi&lt;/code> object (or more than one)&#xA;with no ill effects. This allows a &lt;code>CertPathBuilder&lt;/code> to search&#xA;for a CRL while simultaneously searching for further certificates, for&#xA;instance.&#xA;&lt;p>&#xA;Simple &lt;code>CertStoreSpi&lt;/code> implementations will probably ensure&#xA;thread safety by adding a &lt;code>synchronized&lt;/code> keyword to their&#xA;&lt;code>engineGetCertificates&lt;/code> and &lt;code>engineGetCRLs&lt;/code> methods.&#xA;More sophisticated ones may allow truly concurrent access.&#xA;&#xA;@version &#x9;1.7 12/19/03&#xA;@since&#x9;1.4&#xA;@author&#x9;Steve Hanna&#xA;" annotatedElement="2363c2d6-5041-4415-9db2-4ac03dc80301"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="1e1a8030-81f4-4048-9833-26f14c599749" name="CertStoreParameters" isAbstract="true">
              <ownedComment xmi:id="79cf4698-dbc0-47d3-ae53-5af5c0ccd02b" body="A specification of &lt;code>CertStore&lt;/code> parameters.&#xA;&lt;p>&#xA;The purpose of this interface is to group (and provide type safety for)&#xA;all &lt;code>CertStore&lt;/code> parameter specifications. All&#xA;&lt;code>CertStore&lt;/code> parameter specifications must implement this&#xA;interface.&#xA;&lt;p>&#xA;Typically, a &lt;code>CertStoreParameters&lt;/code> object is passed as a parameter&#xA;to one of the {@link CertStore#getInstance CertStore.getInstance} methods.&#xA;The &lt;code>getInstance&lt;/code> method returns a &lt;code>CertStore&lt;/code> that&#xA;is used for retrieving &lt;code>Certificate&lt;/code>s and &lt;code>CRL&lt;/code>s. The&#xA;&lt;code>CertStore&lt;/code> that is returned is initialized with the specified&#xA;parameters. The type of parameters needed may vary between different types&#xA;of &lt;code>CertStore&lt;/code>s.&#xA;&#xA;@see CertStore#getInstance&#xA;&#xA;@version &#x9;1.5 12/19/03&#xA;@since&#x9;1.4&#xA;@author&#x9;Steve Hanna&#xA;" annotatedElement="1e1a8030-81f4-4048-9833-26f14c599749"/>
              <generalization xmi:id="c82ff752-ac5a-4cb0-809b-c0d3abed8e99" isSubstitutable="true" general="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="dc6667a7-d917-4dca-8f37-81c8832e968d" name="CertPathParameters" isAbstract="true">
              <ownedComment xmi:id="d0d6132f-9f6e-4d57-bd30-ae3c999db571" body="A specification of certification path algorithm parameters.&#xA;The purpose of this interface is to group (and provide type safety for)&#xA;all &lt;code>CertPath&lt;/code> parameter specifications. All&#xA;&lt;code>CertPath&lt;/code> parameter specifications must implement this&#xA;interface.&#xA;&#xA;@version &#x9;1.5 12/19/03&#xA;@author&#x9;Yassir Elley&#xA;@see &#x9;CertPathValidator#validate(CertPath, CertPathParameters)&#xA;@see &#x9;CertPathBuilder#build(CertPathParameters)&#xA;@since&#x9;1.4&#xA;" annotatedElement="dc6667a7-d917-4dca-8f37-81c8832e968d"/>
              <generalization xmi:id="04a1a112-d3ca-4383-8f88-dd2f973a5c6c" isSubstitutable="true" general="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2093e783-a9bb-456a-83ad-cd3fbc0df3d6" name="CertificateFactorySpi" isAbstract="true">
              <ownedComment xmi:id="c41711ab-782e-4501-aca4-e24df5e820d7" body="This class defines the &lt;i>Service Provider Interface&lt;/i> (&lt;b>SPI&lt;/b>)&#xA;for the &lt;code>CertificateFactory&lt;/code> class.&#xA;All the abstract methods in this class must be implemented by each&#xA;cryptographic service provider who wishes to supply the implementation&#xA;of a certificate factory for a particular certificate type, e.g., X.509.&#xA;&#xA;&lt;p>Certificate factories are used to generate certificate, certification path&#xA;(&lt;code>CertPath&lt;/code>) and certificate revocation list (CRL) objects from&#xA;their encodings.&#xA;&#xA;&lt;p>A certificate factory for X.509 must return certificates that are an&#xA;instance of &lt;code>java.security.cert.X509Certificate&lt;/code>, and CRLs&#xA;that are an instance of &lt;code>java.security.cert.X509CRL&lt;/code>.&#xA;&#xA;@author Hemma Prafullchandra&#xA;@author Jan Luehe&#xA;@author Sean Mullan&#xA;&#xA;@version 1.19, 05/05/04&#xA;&#xA;@see CertificateFactory&#xA;@see Certificate&#xA;@see X509Certificate&#xA;@see CertPath&#xA;@see CRL&#xA;@see X509CRL&#xA;&#xA;@since 1.2&#xA;" annotatedElement="2093e783-a9bb-456a-83ad-cd3fbc0df3d6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8ae50f97-6a3d-4911-ae04-e6ca22e58db1" name="PolicyQualifierInfo">
              <ownedComment xmi:id="985d41ba-165f-4414-a5bf-681b1ca8a3ee" body="An immutable policy qualifier represented by the ASN.1 PolicyQualifierInfo&#xA;structure.&#xA;&#xA;&lt;p>The ASN.1 definition is as follows:&#xA;&lt;p>&lt;pre>&#xA;PolicyQualifierInfo ::= SEQUENCE {&#xA;policyQualifierId       PolicyQualifierId,&#xA;qualifier               ANY DEFINED BY policyQualifierId }&#xA;&lt;/pre>&#xA;&lt;p>&#xA;A certificate policies extension, if present in an X.509 version 3&#xA;certificate, contains a sequence of one or more policy information terms,&#xA;each of which consists of an object identifier (OID) and optional&#xA;qualifiers. In an end-entity certificate, these policy information terms&#xA;indicate the policy under which the certificate has been issued and the&#xA;purposes for which the certificate may be used. In a CA certificate, these&#xA;policy information terms limit the set of policies for certification paths&#xA;which include this certificate.&#xA;&lt;p>&#xA;A &lt;code>Set&lt;/code> of &lt;code>PolicyQualifierInfo&lt;/code> objects are returned&#xA;by the {@link PolicyNode#getPolicyQualifiers PolicyNode.getPolicyQualifiers}&#xA;method. This allows applications with specific policy requirements to&#xA;process and validate each policy qualifier. Applications that need to&#xA;process policy qualifiers should explicitly set the&#xA;&lt;code>policyQualifiersRejected&lt;/code> flag to false (by calling the&#xA;{@link PKIXParameters#setPolicyQualifiersRejected&#xA;PKIXParameters.setPolicyQualifiersRejected} method) before validating&#xA;a certification path.&#xA;&#xA;&lt;p>Note that the PKIX certification path validation algorithm specifies&#xA;that any policy qualifier in a certificate policies extension that is&#xA;marked critical must be processed and validated. Otherwise the&#xA;certification path must be rejected. If the&#xA;&lt;code>policyQualifiersRejected&lt;/code> flag is set to false, it is up to&#xA;the application to validate all policy qualifiers in this manner in order&#xA;to be PKIX compliant.&#xA;&#xA;&lt;p>&lt;b>Concurrent Access&lt;/b>&#xA;&#xA;&lt;p>All &lt;code>PolicyQualifierInfo&lt;/code> objects must be immutable and&#xA;thread-safe. That is, multiple threads may concurrently invoke the&#xA;methods defined in this class on a single &lt;code>PolicyQualifierInfo&lt;/code>&#xA;object (or more than one) with no ill effects. Requiring&#xA;&lt;code>PolicyQualifierInfo&lt;/code> objects to be immutable and thread-safe&#xA;allows them to be passed around to various pieces of code without&#xA;worrying about coordinating access.&#xA;&#xA;@author &#x9;seth proctor&#xA;@author &#x9;Sean Mullan&#xA;@version &#x9;1.11 12/19/03&#xA;@since &#x9;1.4&#xA;" annotatedElement="8ae50f97-6a3d-4911-ae04-e6ca22e58db1"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="c37f0f44-7e72-486e-94df-030a32f838f6" name="PolicyNode" isAbstract="true">
              <ownedComment xmi:id="1fbf9051-a215-43a6-80c9-bf445bdabd70" body="An immutable valid policy tree node as defined by the PKIX certification&#xA;path validation algorithm.&#xA;&#xA;&lt;p>One of the outputs of the PKIX certification path validation&#xA;algorithm is a valid policy tree, which includes the policies that&#xA;were determined to be valid, how this determination was reached,&#xA;and any policy qualifiers encountered. This tree is of depth&#xA;&lt;i>n&lt;/i>, where &lt;i>n&lt;/i> is the length of the certification&#xA;path that has been validated.&#xA;&#xA;&lt;p>Most applications will not need to examine the valid policy tree.&#xA;They can achieve their policy processing goals by setting the&#xA;policy-related parameters in &lt;code>PKIXParameters&lt;/code>. However,&#xA;the valid policy tree is available for more sophisticated applications,&#xA;especially those that process policy qualifiers.&#xA;&#xA;&lt;p>{@link PKIXCertPathValidatorResult#getPolicyTree()&#xA;PKIXCertPathValidatorResult.getPolicyTree} returns the root node of the&#xA;valid policy tree. The tree can be traversed using the&#xA;{@link #getChildren getChildren} and {@link #getParent getParent} methods.&#xA;Data about a particular node can be retrieved using other methods of&#xA;&lt;code>PolicyNode&lt;/code>.&#xA;&#xA;&lt;p>&lt;b>Concurrent Access&lt;/b>&#xA;&lt;p>All &lt;code>PolicyNode&lt;/code> objects must be immutable and&#xA;thread-safe. Multiple threads may concurrently invoke the methods defined&#xA;in this class on a single &lt;code>PolicyNode&lt;/code> object (or more than one)&#xA;with no ill effects. This stipulation applies to all public fields and&#xA;methods of this class and any added or overridden by subclasses.&#xA;&#xA;@version     1.9 12/19/03&#xA;@since       1.4&#xA;@author      Sean Mullan&#xA;" annotatedElement="c37f0f44-7e72-486e-94df-030a32f838f6"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a8ebe984-e833-474b-8ff1-248142c4877d" name="AlgorithmParametersSpi" isAbstract="true">
            <ownedComment xmi:id="85eac039-93de-400e-98d5-1718b1105bd9" body="This class defines the &lt;i>Service Provider Interface&lt;/i> (&lt;b>SPI&lt;/b>)&#xA;for the &lt;code>AlgorithmParameters&lt;/code> class, which is used to manage&#xA;algorithm parameters.&#xA;&#xA;&lt;p> All the abstract methods in this class must be implemented by each&#xA;cryptographic service provider who wishes to supply parameter management&#xA;for a particular algorithm.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.12, 05/05/04&#xA;&#xA;@see AlgorithmParameters&#xA;@see java.security.spec.AlgorithmParameterSpec&#xA;@see java.security.spec.DSAParameterSpec&#xA;&#xA;@since 1.2&#xA;" annotatedElement="a8ebe984-e833-474b-8ff1-248142c4877d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="752780c3-ed52-4379-826b-17bc1470f821" name="Enumeration&lt;Permission>">
            <templateBinding xmi:id="4e71c7af-95b5-43f3-bd78-00a9e423725f" signature="521c8bf5-b0b1-4a86-820c-0614950913b8">
              <parameterSubstitution xmi:id="16b74651-3e63-4412-9dac-74fed8a738aa" formal="0dc15cf5-0f68-454b-a4d7-227d89f2d0c5" actual="d9c6788c-6eda-4930-93b7-34c95c7c74cc"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6e99ca6b-53f7-4f04-8cd3-008453cae799" name="CodeSigner" clientDependency="db2986fb-3d3e-44d6-9235-a029fe8be377" isLeaf="true">
            <ownedComment xmi:id="628fe16c-a995-4fed-97e3-768848954703" body="This class encapsulates information about a code signer.&#xA;It is immutable.&#xA;&#xA;@since 1.5&#xA;@version 1.4, 04/26/04&#xA;@author Vincent Ryan&#xA;" annotatedElement="6e99ca6b-53f7-4f04-8cd3-008453cae799"/>
            <interfaceRealization xmi:id="db2986fb-3d3e-44d6-9235-a029fe8be377" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="6e99ca6b-53f7-4f04-8cd3-008453cae799" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b1e12390-25e4-4f3a-bba9-ce6bb607d2df" name="Security" isLeaf="true">
            <ownedComment xmi:id="6c982d06-4cd8-4908-a3a7-3c3aac2c4ce6" body="&lt;p>This class centralizes all security properties and common security&#xA;methods. One of its primary uses is to manage providers.&#xA;&#xA;@author Benjamin Renaud&#xA;@version 1.126, 05/18/04&#xA;" annotatedElement="b1e12390-25e4-4f3a-bba9-ce6bb607d2df"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c37627c7-5488-48e9-a278-d106aa5f30a5" name="ProviderProperty" visibility="private"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3839681e-40c2-41ff-969a-7b77059c0507" name="UnresolvedPermissionCollection" visibility="package" clientDependency="48e28416-0009-4241-b5fd-30c9bf41535d" isLeaf="true">
            <ownedComment xmi:id="9079283b-6007-474b-9ad5-f679d5dc81a5" body="A UnresolvedPermissionCollection stores a collection&#xA;of UnresolvedPermission permissions.&#xA;&#xA;@see java.security.Permission&#xA;@see java.security.Permissions&#xA;@see java.security.UnresolvedPermission&#xA;&#xA;@version 1.14 03/12/19&#xA;&#xA;@author Roland Schemers&#xA;&#xA;@serial include&#xA;" annotatedElement="3839681e-40c2-41ff-969a-7b77059c0507"/>
            <generalization xmi:id="7fc20d84-d232-4d9b-8f20-d3e6a1b1b04f" isSubstitutable="true" general="528e6ee9-bd4d-433a-b08d-a8e30fb7d9c7"/>
            <interfaceRealization xmi:id="48e28416-0009-4241-b5fd-30c9bf41535d" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="3839681e-40c2-41ff-969a-7b77059c0507" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="64a25e25-f99b-46ae-b3da-1543c0983182" name="NoSuchProviderException">
            <ownedComment xmi:id="e7e86070-eb00-49dc-8475-6247c92854d0" body="This exception is thrown when a particular security provider is&#xA;requested but is not available in the environment.&#xA;&#xA;@version 1.20 03/12/19&#xA;@author Benjamin Renaud&#xA;" annotatedElement="64a25e25-f99b-46ae-b3da-1543c0983182"/>
            <generalization xmi:id="8fa48f43-48a4-4664-b9f6-e2a197d4f175" isSubstitutable="true" general="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e7fb0314-4a8a-431c-b2c1-d36aba0319fa" name="AlgorithmParameters">
            <ownedComment xmi:id="539093a9-541c-48ab-be60-d943bdb1fa6e" body="This class is used as an opaque representation of cryptographic parameters.&#xA;&#xA;&lt;p>An &lt;code>AlgorithmParameters&lt;/code> object for managing the parameters&#xA;for a particular algorithm can be obtained by&#xA;calling one of the &lt;code>getInstance&lt;/code> factory methods&#xA;(static methods that return instances of a given class).&#xA;&#xA;&lt;p>There are two ways to request such an implementation: by&#xA;specifying either just an algorithm name, or both an algorithm name&#xA;and a package provider.&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>If just an algorithm name is specified, the system will&#xA;determine if there is an AlgorithmParameters&#xA;implementation for the algorithm requested&#xA;available in the environment, and if there is more than one, if&#xA;there is a preferred one.&#xA;&#xA;&lt;li>If both an algorithm name and a package provider are specified,&#xA;the system will determine if there is an implementation&#xA;in the package requested, and throw an exception if there&#xA;is not.&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p>Once an &lt;code>AlgorithmParameters&lt;/code> object is returned, it must be&#xA;initialized via a call to &lt;code>init&lt;/code>, using an appropriate parameter&#xA;specification or parameter encoding.&#xA;&#xA;&lt;p>A transparent parameter specification is obtained from an&#xA;&lt;code>AlgorithmParameters&lt;/code> object via a call to&#xA;&lt;code>getParameterSpec&lt;/code>, and a byte encoding of the parameters is&#xA;obtained via a call to &lt;code>getEncoded&lt;/code>.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.24, 05/05/04&#xA;&#xA;@see java.security.spec.AlgorithmParameterSpec&#xA;@see java.security.spec.DSAParameterSpec&#xA;@see KeyPairGenerator&#xA;&#xA;@since 1.2&#xA;" annotatedElement="e7fb0314-4a8a-431c-b2c1-d36aba0319fa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d20d439a-88d8-49d5-a59a-e35fd3eb6a1e" name="UnresolvedPermission" clientDependency="812570b2-a137-4452-a2fd-974000afe81e" isLeaf="true">
            <ownedComment xmi:id="d2d42bf1-14f3-4c61-8222-e85b0aec1134" body="The UnresolvedPermission class is used to hold Permissions that&#xA;were &quot;unresolved&quot; when the Policy was initialized.&#xA;An unresolved permission is one whose actual Permission class&#xA;does not yet exist at the time the Policy is initialized (see below).&#xA;&#xA;&lt;p>The policy for a Java runtime (specifying&#xA;which permissions are available for code from various principals)&#xA;is represented by a Policy object.&#xA;Whenever a Policy is initialized or refreshed, Permission objects of&#xA;appropriate classes are created for all permissions&#xA;allowed by the Policy.&#xA;&#xA;&lt;p>Many permission class types&#xA;referenced by the policy configuration are ones that exist&#xA;locally (i.e., ones that can be found on CLASSPATH).&#xA;Objects for such permissions can be instantiated during&#xA;Policy initialization. For example, it is always possible&#xA;to instantiate a java.io.FilePermission, since the&#xA;FilePermission class is found on the CLASSPATH.&#xA;&#xA;&lt;p>Other permission classes may not yet exist during Policy&#xA;initialization. For example, a referenced permission class may&#xA;be in a JAR file that will later be loaded.&#xA;For each such class, an UnresolvedPermission is instantiated.&#xA;Thus, an UnresolvedPermission is essentially a &quot;placeholder&quot;&#xA;containing information about the permission.&#xA;&#xA;&lt;p>Later, when code calls AccessController.checkPermission&#xA;on a permission of a type that was previously unresolved,&#xA;but whose class has since been loaded, previously-unresolved&#xA;permissions of that type are &quot;resolved&quot;. That is,&#xA;for each such UnresolvedPermission, a new object of&#xA;the appropriate class type is instantiated, based on the&#xA;information in the UnresolvedPermission.&#xA;&#xA;&lt;p> To instantiate the new class, UnresolvedPermission assumes&#xA;the class provides a zero, one, and/or two-argument constructor.&#xA;The zero-argument constructor would be used to instantiate&#xA;a permission without a name and without actions.&#xA;A one-arg constructor is assumed to take a &lt;code>String&lt;/code>&#xA;name as input, and a two-arg constructor is assumed to take a&#xA;&lt;code>String&lt;/code> name and &lt;code>String&lt;/code> actions&#xA;as input.  UnresolvedPermission may invoke a&#xA;constructor with a &lt;code>null&lt;/code> name and/or actions.&#xA;If an appropriate permission constructor is not available,&#xA;the UnresolvedPermission is ignored and the relevant permission&#xA;will not be granted to executing code.&#xA;&#xA;&lt;p> The newly created permission object replaces the&#xA;UnresolvedPermission, which is removed.&#xA;&#xA;&lt;p> Note that the &lt;code>getName&lt;/code> method for an&#xA;&lt;code>UnresolvedPermission&lt;/code> returns the&#xA;&lt;code>type&lt;/code> (class name) for the underlying permission&#xA;that has not been resolved.&#xA;&#xA;@see java.security.Permission&#xA;@see java.security.Permissions&#xA;@see java.security.PermissionCollection&#xA;@see java.security.Policy&#xA;&#xA;@version 1.29 04/02/03&#xA;&#xA;@author Roland Schemers&#xA;" annotatedElement="d20d439a-88d8-49d5-a59a-e35fd3eb6a1e"/>
            <generalization xmi:id="84693412-51ee-4e7d-8ff0-d1443eb34e8e" isSubstitutable="true" general="d9c6788c-6eda-4930-93b7-34c95c7c74cc"/>
            <interfaceRealization xmi:id="812570b2-a137-4452-a2fd-974000afe81e" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="d20d439a-88d8-49d5-a59a-e35fd3eb6a1e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="be28d5bf-af29-418f-88b6-41d86a2f05ba" name="interfaces">
            <packagedElement xmi:type="uml:Interface" xmi:id="dddfbf86-9e2b-4dff-83eb-1c5e7ca83765" name="RSAPrivateKey" isAbstract="true">
              <ownedComment xmi:id="2c2745c8-8c01-45cd-95b8-e106b58f3788" body="The interface to an RSA private key.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.11 03/12/19&#xA;&#xA;@see RSAPrivateCrtKey&#xA;" annotatedElement="dddfbf86-9e2b-4dff-83eb-1c5e7ca83765"/>
              <generalization xmi:id="0d762313-01a6-440e-8b03-a7d9abf960d7" isSubstitutable="true" general="a47b3e4b-5618-401f-a098-d0490c80d17e"/>
              <generalization xmi:id="562417cf-c99c-423f-8c7c-e7b222547704" isSubstitutable="true" general="03b54890-5089-4fd4-a221-3587e27dae62"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="1afae117-9808-4dc9-a371-84a3e6ae1ba9" name="ECKey" isAbstract="true">
              <ownedComment xmi:id="49cb6f43-6f94-4e67-86d6-3d7d6501f8af" body="The interface to an elliptic curve (EC) key.&#xA;&#xA;@author Valerie Peng&#xA;&#xA;@version 1.2, 12/19/03&#xA;@since 1.5&#xA;" annotatedElement="1afae117-9808-4dc9-a371-84a3e6ae1ba9"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="63b07deb-bf17-4003-b7cf-2ea363cf06a4" name="DSAParams" isAbstract="true">
              <ownedComment xmi:id="930631b7-085b-451d-a88f-edbb312e1241" body="Interface to a DSA-specific set of key parameters, which defines a&#xA;DSA &lt;em>key family&lt;/em>. DSA (Digital Signature Algorithm) is defined&#xA;in NIST's FIPS-186.&#xA;&#xA;@see DSAKey&#xA;@see java.security.Key&#xA;@see java.security.Signature&#xA;&#xA;@version 1.20 03/12/19&#xA;@author Benjamin Renaud&#xA;@author Josh Bloch&#xA;" annotatedElement="63b07deb-bf17-4003-b7cf-2ea363cf06a4"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="6a0f1f0f-506a-4a9c-b0a5-eceb0ca82e59" name="DSAPublicKey" isAbstract="true">
              <ownedComment xmi:id="ab2e263d-ded2-4401-a1f8-d71ab9c6abf6" body="The interface to a DSA public key. DSA (Digital Signature Algorithm)&#xA;is defined in NIST's FIPS-186.&#xA;&#xA;@see java.security.Key&#xA;@see java.security.Signature&#xA;@see DSAKey&#xA;@see DSAPrivateKey&#xA;&#xA;@version 1.21 03/12/19&#xA;@author Benjamin Renaud&#xA;" annotatedElement="6a0f1f0f-506a-4a9c-b0a5-eceb0ca82e59"/>
              <generalization xmi:id="1a9d2bd0-4d3b-4c4b-bf43-3bbe7319250a" isSubstitutable="true" general="92fa8aeb-50cf-4d86-9a22-26112aacedff"/>
              <generalization xmi:id="2f82095b-fdc7-418d-bbfa-a69ffb19fec4" isSubstitutable="true" general="19c8c10e-c3c6-43d1-918c-88f5aebfb4d6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="701bbeed-2593-4fbc-8f4e-742d63ad0a2e" name="RSAPublicKey" isAbstract="true">
              <ownedComment xmi:id="10ac3dbf-bdd3-4ee5-b756-fa11534c2ba9" body="The interface to an RSA public key.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.10 03/12/19&#xA;" annotatedElement="701bbeed-2593-4fbc-8f4e-742d63ad0a2e"/>
              <generalization xmi:id="578bbb16-b34b-46fd-81e9-54d50aa6d1eb" isSubstitutable="true" general="19c8c10e-c3c6-43d1-918c-88f5aebfb4d6"/>
              <generalization xmi:id="1604a3c9-0465-44b8-903f-00731f744a58" isSubstitutable="true" general="03b54890-5089-4fd4-a221-3587e27dae62"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="e090481a-bc43-4c31-9c25-ff1674821224" name="ECPrivateKey" isAbstract="true">
              <ownedComment xmi:id="8b8ea790-0522-49be-80d0-671aa91e6697" body="The interface to an elliptic curve (EC) private key.&#xA;&#xA;@author Valerie Peng&#xA;&#xA;@version 1.3, 12/19/03&#xA;&#xA;@see PrivateKey&#xA;@see ECKey&#xA;&#xA;@since 1.5&#xA;" annotatedElement="e090481a-bc43-4c31-9c25-ff1674821224"/>
              <generalization xmi:id="6f401320-dbb1-413e-b8a1-92954289a432" isSubstitutable="true" general="a47b3e4b-5618-401f-a098-d0490c80d17e"/>
              <generalization xmi:id="4225d25a-ea25-442a-903b-9b216457d938" isSubstitutable="true" general="1afae117-9808-4dc9-a371-84a3e6ae1ba9"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="448fa912-5450-4717-9b4e-cd6a588c7988" name="DSAKeyPairGenerator" isAbstract="true">
              <ownedComment xmi:id="ec9388ff-a70f-497d-b0a9-e00ace92b864" body="An interface to an object capable of generating DSA key pairs.&#xA;&#xA;&lt;p>The &lt;code>initialize&lt;/code> methods may each be called any number&#xA;of times. If no &lt;code>initialize&lt;/code> method is called on a&#xA;DSAKeyPairGenerator, the default is to generate 1024-bit keys, using&#xA;precomputed p, q and g parameters and an instance of SecureRandom as&#xA;the random bit source.&#xA;&#xA;&lt;p>Users wishing to indicate DSA-specific parameters, and to generate a key&#xA;pair suitable for use with the DSA algorithm typically&#xA;&#xA;&lt;ol>&#xA;&#xA;&lt;li>Get a key pair generator for the DSA algorithm by calling the&#xA;KeyPairGenerator &lt;code>getInstance&lt;/code> method with &quot;DSA&quot;&#xA;as its argument.&lt;p>&#xA;&#xA;&lt;li>Initialize the generator by casting the result to a DSAKeyPairGenerator&#xA;and calling one of the&#xA;&lt;code>initialize&lt;/code> methods from this DSAKeyPairGenerator interface.&lt;p>&#xA;&#xA;&lt;li>Generate a key pair by calling the &lt;code>generateKeyPair&lt;/code>&#xA;method from the KeyPairGenerator class.&#xA;&#xA;&lt;/ol>&#xA;&#xA;&lt;p>Note: it is not always necessary to do do algorithm-specific&#xA;initialization for a DSA key pair generator. That is, it is not always&#xA;necessary to call an &lt;code>initialize&lt;/code> method in this interface.&#xA;Algorithm-independent initialization using the &lt;code>initialize&lt;/code> method&#xA;in the KeyPairGenerator&#xA;interface is all that is needed when you accept defaults for algorithm-specific&#xA;parameters.&#xA;&#xA;@see java.security.KeyPairGenerator&#xA;" annotatedElement="448fa912-5450-4717-9b4e-cd6a588c7988"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="8cdb6042-0df5-4253-8d3d-66f1284c48de" name="RSAPrivateCrtKey" isAbstract="true">
              <ownedComment xmi:id="536a5688-2e08-4bd3-b53d-5a50f32c9489" body="The interface to an RSA private key, as defined in the PKCS#1 standard,&#xA;using the &lt;i>Chinese Remainder Theorem&lt;/i> (CRT) information values.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.12 03/12/19&#xA;&#xA;@see RSAPrivateKey&#xA;" annotatedElement="8cdb6042-0df5-4253-8d3d-66f1284c48de"/>
              <generalization xmi:id="dc542553-5072-4c19-8186-4e66fba49215" isSubstitutable="true" general="dddfbf86-9e2b-4dff-83eb-1c5e7ca83765"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="fa6d008d-3afe-4479-a857-194cf304de33" name="ECPublicKey" isAbstract="true">
              <ownedComment xmi:id="049d751f-f47b-45f7-9540-33b30ced2508" body="The interface to an elliptic curve (EC) public key.&#xA;&#xA;@author Valerie Peng&#xA;&#xA;@version 1.3, 12/19/03&#xA;&#xA;@see PublicKey&#xA;@see ECKey&#xA;@see java.security.spec.ECPoint&#xA;&#xA;@since 1.5&#xA;" annotatedElement="fa6d008d-3afe-4479-a857-194cf304de33"/>
              <generalization xmi:id="94e5b8bb-0b98-41fa-ae83-5959f405748b" isSubstitutable="true" general="19c8c10e-c3c6-43d1-918c-88f5aebfb4d6"/>
              <generalization xmi:id="3cdde0a7-7eb7-44d6-82aa-7bd757c91505" isSubstitutable="true" general="1afae117-9808-4dc9-a371-84a3e6ae1ba9"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="82e37d26-9e26-4825-ac12-0e9a6d9a897f" name="RSAMultiPrimePrivateCrtKey" isAbstract="true">
              <ownedComment xmi:id="268d8d69-b714-42d0-9b9c-35a189077b67" body="The interface to an RSA multi-prime private key, as defined in the&#xA;PKCS#1 v2.1, using the &lt;i>Chinese Remainder Theorem&lt;/i>&#xA;(CRT) information values.&#xA;&#xA;@author Valerie Peng&#xA;&#xA;@version 1.6 03/12/19&#xA;&#xA;@see java.security.spec.RSAPrivateKeySpec&#xA;@see java.security.spec.RSAMultiPrimePrivateCrtKeySpec&#xA;@see RSAPrivateKey&#xA;@see RSAPrivateCrtKey&#xA;&#xA;@since 1.4&#xA;" annotatedElement="82e37d26-9e26-4825-ac12-0e9a6d9a897f"/>
              <generalization xmi:id="e516730c-7fed-488e-9ed4-adc8224bf653" isSubstitutable="true" general="dddfbf86-9e2b-4dff-83eb-1c5e7ca83765"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="92fa8aeb-50cf-4d86-9a22-26112aacedff" name="DSAKey" isAbstract="true">
              <ownedComment xmi:id="7546f211-bfef-48aa-8127-6bcd5e802986" body="The interface to a DSA public or private key. DSA (Digital Signature&#xA;Algorithm) is defined in NIST's FIPS-186.&#xA;&#xA;@see DSAParams&#xA;@see java.security.Key&#xA;@see java.security.Signature&#xA;&#xA;@version 1.17 03/12/19&#xA;@author Benjamin Renaud&#xA;@author Josh Bloch&#xA;" annotatedElement="92fa8aeb-50cf-4d86-9a22-26112aacedff"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="03b54890-5089-4fd4-a221-3587e27dae62" name="RSAKey" isAbstract="true">
              <ownedComment xmi:id="fed5f7d7-1b05-42a6-b3b6-895029564163" body="The interface to an RSA public or private key.&#xA;&#xA;@author Jan Luehe&#xA;@version 1.6 12/19/03&#xA;&#xA;@see RSAPublicKey&#xA;@see RSAPrivateKey&#xA;&#xA;@since 1.3&#xA;" annotatedElement="03b54890-5089-4fd4-a221-3587e27dae62"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d403e59b-25c2-47a4-8ee2-e5da314045e6" name="DSAPrivateKey" isAbstract="true">
              <ownedComment xmi:id="fa475644-2f88-4e18-b46b-87fad01d1dcf" body="The standard interface to a DSA private key. DSA (Digital Signature&#xA;Algorithm) is defined in NIST's FIPS-186.&#xA;&#xA;@see java.security.Key&#xA;@see java.security.Signature&#xA;@see DSAKey&#xA;@see DSAPublicKey&#xA;&#xA;@version 1.19 03/12/19&#xA;@author Benjamin Renaud&#xA;" annotatedElement="d403e59b-25c2-47a4-8ee2-e5da314045e6"/>
              <generalization xmi:id="57db8ecf-b2fc-4f5f-944a-5a71a7e92830" isSubstitutable="true" general="92fa8aeb-50cf-4d86-9a22-26112aacedff"/>
              <generalization xmi:id="18adc004-2a5b-4378-890a-1b3ce283eca0" isSubstitutable="true" general="a47b3e4b-5618-401f-a098-d0490c80d17e"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c287881a-53f6-4e05-abce-2493b6351914" name="SecureRandomSpi" clientDependency="b5bd6456-0f09-479e-a6d7-d18f3c4095b9" isAbstract="true">
            <ownedComment xmi:id="463a6146-0b0a-4f29-8b9e-7fa5622104ef" body="This class defines the &lt;i>Service Provider Interface&lt;/i> (&lt;b>SPI&lt;/b>)&#xA;for the &lt;code>SecureRandom&lt;/code> class.&#xA;All the abstract methods in this class must be implemented by each&#xA;service provider who wishes to supply the implementation&#xA;of a cryptographically strong pseudo-random number generator.&#xA;&#xA;@version 1.11, 12/19/03&#xA;&#xA;@see SecureRandom&#xA;@since 1.2&#xA;" annotatedElement="c287881a-53f6-4e05-abce-2493b6351914"/>
            <interfaceRealization xmi:id="b5bd6456-0f09-479e-a6d7-d18f3c4095b9" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="c287881a-53f6-4e05-abce-2493b6351914" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="fe3665e0-00d8-4870-aaea-298b20a40025" name="Key" isAbstract="true">
            <ownedComment xmi:id="7c9fa9a0-b27c-4fda-9169-0eb76d5b61f8" body="The Key interface is the top-level interface for all keys. It&#xA;defines the functionality shared by all key objects. All keys&#xA;have three characteristics:&#xA;&#xA;&lt;UL>&#xA;&#xA;&lt;LI>An Algorithm&#xA;&#xA;&lt;P>This is the key algorithm for that key. The key algorithm is usually&#xA;an encryption or asymmetric operation algorithm (such as DSA or&#xA;RSA), which will work with those algorithms and with related&#xA;algorithms (such as MD5 with RSA, SHA-1 with RSA, Raw DSA, etc.)&#xA;The name of the algorithm of a key is obtained using the&#xA;{@link #getAlgorithm() getAlgorithm} method.&lt;P>&#xA;&#xA;&lt;LI>An Encoded Form&#xA;&#xA;&lt;P>This is an external encoded form for the key used when a standard&#xA;representation of the key is needed outside the Java Virtual Machine,&#xA;as when transmitting the key to some other party. The key&#xA;is encoded according to a standard format (such as&#xA;X.509 &lt;code>SubjectPublicKeyInfo&lt;/code> or PKCS#8), and&#xA;is returned using the {@link #getEncoded() getEncoded} method.&#xA;Note: The syntax of the ASN.1 type &lt;code>SubjectPublicKeyInfo&lt;/code>&#xA;is defined as follows:&#xA;&#xA;&lt;pre>&#xA;SubjectPublicKeyInfo ::= SEQUENCE {&#xA;algorithm AlgorithmIdentifier,&#xA;subjectPublicKey BIT STRING }&#xA;&#xA;AlgorithmIdentifier ::= SEQUENCE {&#xA;algorithm OBJECT IDENTIFIER,&#xA;parameters ANY DEFINED BY algorithm OPTIONAL }&#xA;&lt;/pre>&#xA;&#xA;For more information, see&#xA;&lt;a href=&quot;http://www.ietf.org/rfc/rfc2459.txt&quot;>RFC 2459:&#xA;Internet X.509 Public Key Infrastructure Certificate and CRL Profile&lt;/a>.&#xA;&lt;P>&#xA;&#xA;&lt;LI>A Format&#xA;&#xA;&lt;P>This is the name of the format of the encoded key. It is returned&#xA;by the {@link #getFormat() getFormat} method.&lt;P>&#xA;&#xA;&lt;/UL>&#xA;&#xA;Keys are generally obtained through key generators, certificates,&#xA;or various Identity classes used to manage keys.&#xA;Keys may also be obtained from key specifications (transparent&#xA;representations of the underlying key material) through the use of a key&#xA;factory (see {@link KeyFactory}).&#xA;&#xA;&lt;p> A Key should use KeyRep as its serialized representation.&#xA;Note that a serialized Key may contain sensitive information&#xA;which should not be exposed in untrusted environments.  See the&#xA;&lt;a href=&quot;../../../guide/serialization/spec/security.html&quot;>&#xA;Security Appendix&lt;/a>&#xA;of the Serialization Specification for more information.&#xA;&#xA;@see PublicKey&#xA;@see PrivateKey&#xA;@see KeyPair&#xA;@see KeyPairGenerator&#xA;@see KeyFactory&#xA;@see KeyRep&#xA;@see java.security.spec.KeySpec&#xA;@see Identity&#xA;@see Signer&#xA;&#xA;@version 1.54 03/12/19&#xA;@author Benjamin Renaud&#xA;" annotatedElement="fe3665e0-00d8-4870-aaea-298b20a40025"/>
            <generalization xmi:id="dc3d5bf6-9450-4504-a006-dd52ee3a7499" isSubstitutable="true" general="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="01eeb80d-32b5-45a3-a8f1-ece351778eb5" name="AllPermission" isLeaf="true">
            <ownedComment xmi:id="beae4352-2016-4187-82cf-338853b6c0a1" body="The AllPermission is a permission that implies all other permissions.&#xA;&lt;p>&#xA;&lt;b>Note:&lt;/b> Granting AllPermission should be done with extreme care,&#xA;as it implies all other permissions. Thus, it grants code the ability&#xA;to run with security&#xA;disabled.  Extreme caution should be taken before granting such&#xA;a permission to code.  This permission should be used only during testing,&#xA;or in extremely rare cases where an application or applet is&#xA;completely trusted and adding the necessary permissions to the policy&#xA;is prohibitively cumbersome.&#xA;&#xA;@see java.security.Permission&#xA;@see java.security.AccessController&#xA;@see java.security.Permissions&#xA;@see java.security.PermissionCollection&#xA;@see java.lang.SecurityManager&#xA;&#xA;@version 1.20 03/12/19&#xA;&#xA;@author Roland Schemers&#xA;&#xA;@serial exclude&#xA;" annotatedElement="01eeb80d-32b5-45a3-a8f1-ece351778eb5"/>
            <generalization xmi:id="cfb1152e-51ef-41cb-b41a-a173856423ac" isSubstitutable="true" general="d9c6788c-6eda-4930-93b7-34c95c7c74cc"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="1e15e1e9-71b8-43b8-af08-6b456cf98587" name="spec">
            <packagedElement xmi:type="uml:Class" xmi:id="71e9128b-52a1-463d-8524-a3adbe0789d9" name="RSAOtherPrimeInfo">
              <ownedComment xmi:id="9c921281-a1ca-4a98-b5b9-5ec1f889574e" body="This class represents the triplet (prime, exponent, and coefficient)&#xA;inside RSA's OtherPrimeInfo structure, as defined in the PKCS#1 v2.1.&#xA;The ASN.1 syntax of RSA's OtherPrimeInfo is as follows:&#xA;&#xA;&lt;pre>&#xA;OtherPrimeInfo ::= SEQUENCE {&#xA;prime INTEGER,&#xA;exponent INTEGER,&#xA;coefficient INTEGER&#xA;}&#xA;&#xA;&lt;/pre>&#xA;&#xA;@author Valerie Peng&#xA;&#xA;@version 1.6 03/12/19&#xA;&#xA;@see RSAPrivateCrtKeySpec&#xA;@see java.security.interfaces.RSAMultiPrimePrivateCrtKey&#xA;&#xA;@since 1.4&#xA;" annotatedElement="71e9128b-52a1-463d-8524-a3adbe0789d9"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5e060ef0-927a-4756-9c12-5642cc2947b4" name="DSAParameterSpec" clientDependency="bea0b241-5cb3-4093-8847-b318a5ea0770 3612899a-9a11-42b0-91b0-ec5fadba68f8">
              <ownedComment xmi:id="4d4719c1-85a1-42b3-878d-cf02a84f2d37" body="This class specifies the set of parameters used with the DSA algorithm.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.16, 12/19/03&#xA;&#xA;@see AlgorithmParameterSpec&#xA;&#xA;@since 1.2&#xA;" annotatedElement="5e060ef0-927a-4756-9c12-5642cc2947b4"/>
              <interfaceRealization xmi:id="3612899a-9a11-42b0-91b0-ec5fadba68f8" name="" supplier="23f0d13a-d7ac-430a-8db7-4f3387065b09" client="5e060ef0-927a-4756-9c12-5642cc2947b4" contract="23f0d13a-d7ac-430a-8db7-4f3387065b09"/>
              <interfaceRealization xmi:id="bea0b241-5cb3-4093-8847-b318a5ea0770" name="" supplier="63b07deb-bf17-4003-b7cf-2ea363cf06a4" client="5e060ef0-927a-4756-9c12-5642cc2947b4" contract="63b07deb-bf17-4003-b7cf-2ea363cf06a4"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ffc76997-e2aa-4871-bfa1-252326ec3791" name="X509EncodedKeySpec">
              <ownedComment xmi:id="e05d0915-f7b5-42d1-b7f5-cac6c03fd849" body="This class represents the ASN.1 encoding of a public key,&#xA;encoded according to the ASN.1 type &lt;code>SubjectPublicKeyInfo&lt;/code>.&#xA;The &lt;code>SubjectPublicKeyInfo&lt;/code> syntax is defined in the X.509&#xA;standard as follows:&#xA;&#xA;&lt;pre>&#xA;SubjectPublicKeyInfo ::= SEQUENCE {&#xA;algorithm AlgorithmIdentifier,&#xA;subjectPublicKey BIT STRING }&#xA;&lt;/pre>&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.19, 12/19/03&#xA;&#xA;@see java.security.Key&#xA;@see java.security.KeyFactory&#xA;@see KeySpec&#xA;@see EncodedKeySpec&#xA;@see PKCS8EncodedKeySpec&#xA;&#xA;@since 1.2&#xA;" annotatedElement="ffc76997-e2aa-4871-bfa1-252326ec3791"/>
              <generalization xmi:id="091fdc72-c7d3-467e-8eb4-82409399f8cb" isSubstitutable="true" general="bc6ada8c-f266-46a9-a134-25987be6f27f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="cceadccb-bef7-4ab9-aed3-efdd78fec9c6" name="InvalidKeySpecException">
              <ownedComment xmi:id="805ad1ae-b90e-42f2-ad65-98d7ba4aa5d2" body="This is the exception for invalid key specifications.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.16, 12/19/03&#xA;&#xA;@see KeySpec&#xA;&#xA;@since 1.2&#xA;" annotatedElement="cceadccb-bef7-4ab9-aed3-efdd78fec9c6"/>
              <generalization xmi:id="c6272a1d-edba-4710-82fd-76083263036a" isSubstitutable="true" general="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="153dcb94-afdd-41df-a390-3862fc4bee0e" name="ECFieldFp" clientDependency="d440552f-e7a0-49ae-9d38-7d2602c90402">
              <ownedComment xmi:id="d0bf3773-6bb3-43f7-8334-c78966a251b4" body="This immutable class defines an elliptic curve (EC) prime&#xA;finite field.&#xA;&#xA;@see ECField&#xA;&#xA;@author Valerie Peng&#xA;@version 1.3, 12/19/03&#xA;&#xA;@since 1.5&#xA;" annotatedElement="153dcb94-afdd-41df-a390-3862fc4bee0e"/>
              <interfaceRealization xmi:id="d440552f-e7a0-49ae-9d38-7d2602c90402" name="" supplier="d8ed5914-97b4-4da4-9cc6-ba6d5f1f9c02" client="153dcb94-afdd-41df-a390-3862fc4bee0e" contract="d8ed5914-97b4-4da4-9cc6-ba6d5f1f9c02"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="bf0aaaab-e004-4abf-9b5c-f374e7289bfc" name="ECPoint">
              <ownedComment xmi:id="a4ff0232-540a-4195-8b63-5e65288f2eed" body="This immutable class represents a point on an elliptic curve (EC)&#xA;in affine coordinates. Other coordinate systems can&#xA;extend this class to represent this point in other&#xA;coordinates.&#xA;&#xA;@author Valerie Peng&#xA;@version 1.3, 12/19/03&#xA;&#xA;@since 1.5&#xA;" annotatedElement="bf0aaaab-e004-4abf-9b5c-f374e7289bfc"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8da5cdfa-da8e-47f3-8a62-21592e5a5794" name="RSAMultiPrimePrivateCrtKeySpec">
              <ownedComment xmi:id="f4694f96-e1b0-4c49-9a9a-22de68cf64df" body="This class specifies an RSA multi-prime private key, as defined in the&#xA;PKCS#1 v2.1, using the Chinese Remainder Theorem (CRT) information&#xA;values for efficiency.&#xA;&#xA;@author Valerie Peng&#xA;&#xA;@version 1.8 03/12/19&#xA;&#xA;@see java.security.Key&#xA;@see java.security.KeyFactory&#xA;@see KeySpec&#xA;@see PKCS8EncodedKeySpec&#xA;@see RSAPrivateKeySpec&#xA;@see RSAPublicKeySpec&#xA;@see RSAOtherPrimeInfo&#xA;&#xA;@since 1.4&#xA;" annotatedElement="8da5cdfa-da8e-47f3-8a62-21592e5a5794"/>
              <generalization xmi:id="d0fef975-ed81-4ab4-9405-ac820465a724" isSubstitutable="true" general="45bf54dd-eabd-40f7-a2b3-0c4a1bbbcc33"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c6c4d078-88e3-4253-87ed-da97757f5f9a" name="DSAPublicKeySpec" clientDependency="139a3937-bee7-4107-a4f5-52d697290ab2">
              <ownedComment xmi:id="a0ddc577-7f5e-47b9-98fc-4c26f231fa3b" body="This class specifies a DSA public key with its associated parameters.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.18, 12/19/03&#xA;&#xA;@see java.security.Key&#xA;@see java.security.KeyFactory&#xA;@see KeySpec&#xA;@see DSAPrivateKeySpec&#xA;@see X509EncodedKeySpec&#xA;&#xA;@since 1.2&#xA;" annotatedElement="c6c4d078-88e3-4253-87ed-da97757f5f9a"/>
              <interfaceRealization xmi:id="139a3937-bee7-4107-a4f5-52d697290ab2" name="" supplier="7c7c2459-4de5-444f-9993-30ec85f80b71" client="c6c4d078-88e3-4253-87ed-da97757f5f9a" contract="7c7c2459-4de5-444f-9993-30ec85f80b71"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="eb1dbddc-8a93-4aa1-91b2-599781cf6b43" name="ECFieldF2m" clientDependency="9800319c-5f6e-424c-9fd8-ea9f1338aa3a">
              <ownedComment xmi:id="6beebb89-d843-4496-84e3-d09d6f538bfe" body="This immutable class defines an elliptic curve (EC)&#xA;characteristic 2 finite field.&#xA;&#xA;@see ECField&#xA;&#xA;@author Valerie Peng&#xA;@version 1.3, 12/19/03&#xA;&#xA;@since 1.5&#xA;" annotatedElement="eb1dbddc-8a93-4aa1-91b2-599781cf6b43"/>
              <interfaceRealization xmi:id="9800319c-5f6e-424c-9fd8-ea9f1338aa3a" name="" supplier="d8ed5914-97b4-4da4-9cc6-ba6d5f1f9c02" client="eb1dbddc-8a93-4aa1-91b2-599781cf6b43" contract="d8ed5914-97b4-4da4-9cc6-ba6d5f1f9c02"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="85318915-1285-449b-9472-0577af304086" name="InvalidParameterSpecException">
              <ownedComment xmi:id="d503709a-7cc5-4e44-8d24-f2785dd70a8d" body="This is the exception for invalid parameter specifications.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.15, 12/19/03&#xA;&#xA;@see java.security.AlgorithmParameters&#xA;@see AlgorithmParameterSpec&#xA;@see DSAParameterSpec&#xA;&#xA;@since 1.2&#xA;" annotatedElement="85318915-1285-449b-9472-0577af304086"/>
              <generalization xmi:id="4379563d-e8b1-421b-82a3-b533137b612f" isSubstitutable="true" general="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="3769a2b6-0b02-43b5-9122-5938f76c3880" name="ECParameterSpec" clientDependency="b1e1bbdc-b182-4a3e-b86b-c168bdc57527">
              <ownedComment xmi:id="2ebfe48c-efe7-4965-9758-f5cab744c2d6" body="This immutable class specifies the set of domain parameters&#xA;used with elliptic curve cryptography (ECC).&#xA;&#xA;@see AlgorithmParameterSpec&#xA;&#xA;@author Valerie Peng&#xA;@version 1.3, 12/19/03&#xA;&#xA;@since 1.5&#xA;" annotatedElement="3769a2b6-0b02-43b5-9122-5938f76c3880"/>
              <interfaceRealization xmi:id="b1e1bbdc-b182-4a3e-b86b-c168bdc57527" name="" supplier="23f0d13a-d7ac-430a-8db7-4f3387065b09" client="3769a2b6-0b02-43b5-9122-5938f76c3880" contract="23f0d13a-d7ac-430a-8db7-4f3387065b09"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="bc6ada8c-f266-46a9-a134-25987be6f27f" name="EncodedKeySpec" clientDependency="de21ed7a-5d75-4a94-81ed-30080e036e02" isAbstract="true">
              <ownedComment xmi:id="e0dbf67c-850b-4af5-8603-2b67a127683b" body="This class represents a public or private key in encoded format.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.20, 12/19/03&#xA;&#xA;@see java.security.Key&#xA;@see java.security.KeyFactory&#xA;@see KeySpec&#xA;@see X509EncodedKeySpec&#xA;@see PKCS8EncodedKeySpec&#xA;&#xA;@since 1.2&#xA;" annotatedElement="bc6ada8c-f266-46a9-a134-25987be6f27f"/>
              <interfaceRealization xmi:id="de21ed7a-5d75-4a94-81ed-30080e036e02" name="" supplier="7c7c2459-4de5-444f-9993-30ec85f80b71" client="bc6ada8c-f266-46a9-a134-25987be6f27f" contract="7c7c2459-4de5-444f-9993-30ec85f80b71"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="45bf54dd-eabd-40f7-a2b3-0c4a1bbbcc33" name="RSAPrivateKeySpec" clientDependency="9477aea8-49ce-4193-a8b1-730cea1aabe8">
              <ownedComment xmi:id="07f7d535-d4f5-4ab9-bd57-e428b268ef3b" body="This class specifies an RSA private key.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.10 03/12/19&#xA;&#xA;@see java.security.Key&#xA;@see java.security.KeyFactory&#xA;@see KeySpec&#xA;@see PKCS8EncodedKeySpec&#xA;@see RSAPublicKeySpec&#xA;@see RSAPrivateCrtKeySpec&#xA;" annotatedElement="45bf54dd-eabd-40f7-a2b3-0c4a1bbbcc33"/>
              <interfaceRealization xmi:id="9477aea8-49ce-4193-a8b1-730cea1aabe8" name="" supplier="7c7c2459-4de5-444f-9993-30ec85f80b71" client="45bf54dd-eabd-40f7-a2b3-0c4a1bbbcc33" contract="7c7c2459-4de5-444f-9993-30ec85f80b71"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b4b82d20-5484-4a72-9cfc-ac59383954f1" name="PSSParameterSpec" clientDependency="a26c4136-cf9b-4ab6-a55a-dbc020083df6">
              <ownedComment xmi:id="fa06c560-6b6c-4292-8e30-1cf767a5b6a7" body="This class specifies a parameter spec for RSA-PSS signature scheme,&#xA;as defined in the&#xA;&lt;a href=&quot;http://www.rsa.com/rsalabs/pubs/PKCS/html/pkcs-1.html&quot;>&#xA;PKCS#1 v2.1&lt;/a> standard.&#xA;&#xA;&lt;p>Its ASN.1 definition in PKCS#1 standard is described below:&#xA;&lt;pre>&#xA;RSASSA-PSS-params ::= SEQUENCE {&#xA;hashAlgorithm      [0] OAEP-PSSDigestAlgorithms  DEFAULT sha1,&#xA;maskGenAlgorithm   [1] PKCS1MGFAlgorithms  DEFAULT mgf1SHA1,&#xA;saltLength         [2] INTEGER  DEFAULT 20,&#xA;trailerField       [3] INTEGER  DEFAULT 1&#xA;}&#xA;&lt;/pre>&#xA;where&#xA;&lt;pre>&#xA;OAEP-PSSDigestAlgorithms    ALGORITHM-IDENTIFIER ::= {&#xA;{ OID id-sha1 PARAMETERS NULL   }|&#xA;{ OID id-sha256 PARAMETERS NULL }|&#xA;{ OID id-sha384 PARAMETERS NULL }|&#xA;{ OID id-sha512 PARAMETERS NULL },&#xA;...  -- Allows for future expansion --&#xA;}&#xA;&#xA;PKCS1MGFAlgorithms    ALGORITHM-IDENTIFIER ::= {&#xA;{ OID id-mgf1 PARAMETERS OAEP-PSSDigestAlgorithms },&#xA;...  -- Allows for future expansion --&#xA;}&#xA;&lt;/pre>&#xA;&lt;p>Note: the PSSParameterSpec.DEFAULT uses the following:&#xA;message digest  -- &quot;SHA-1&quot;&#xA;mask generation function (mgf) -- &quot;MGF1&quot;&#xA;parameters for mgf -- MGF1ParameterSpec.SHA1&#xA;SaltLength   -- 20&#xA;TrailerField -- 1&#xA;&#xA;@see MGF1ParameterSpec&#xA;@see AlgorithmParameterSpec&#xA;@see java.security.Signature&#xA;&#xA;@author Valerie Peng&#xA;&#xA;@version 1.6 04/01/27&#xA;&#xA;@since 1.4&#xA;" annotatedElement="b4b82d20-5484-4a72-9cfc-ac59383954f1"/>
              <interfaceRealization xmi:id="a26c4136-cf9b-4ab6-a55a-dbc020083df6" name="" supplier="23f0d13a-d7ac-430a-8db7-4f3387065b09" client="b4b82d20-5484-4a72-9cfc-ac59383954f1" contract="23f0d13a-d7ac-430a-8db7-4f3387065b09"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2694d52a-b50a-43fd-ad8d-f4cb46a45723" name="PKCS8EncodedKeySpec">
              <ownedComment xmi:id="2d588240-904d-49fd-9d0c-6cd308d13866" body="This class represents the ASN.1 encoding of a private key,&#xA;encoded according to the ASN.1 type &lt;code>PrivateKeyInfo&lt;/code>.&#xA;The &lt;code>PrivateKeyInfo&lt;/code> syntax is defined in the PKCS#8 standard&#xA;as follows:&#xA;&#xA;&lt;pre>&#xA;PrivateKeyInfo ::= SEQUENCE {&#xA;version Version,&#xA;privateKeyAlgorithm PrivateKeyAlgorithmIdentifier,&#xA;privateKey PrivateKey,&#xA;attributes [0] IMPLICIT Attributes OPTIONAL }&#xA;&#xA;Version ::= INTEGER&#xA;&#xA;PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier&#xA;&#xA;PrivateKey ::= OCTET STRING&#xA;&#xA;Attributes ::= SET OF Attribute&#xA;&lt;/pre>&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.19, 12/19/03&#xA;&#xA;@see java.security.Key&#xA;@see java.security.KeyFactory&#xA;@see KeySpec&#xA;@see EncodedKeySpec&#xA;@see X509EncodedKeySpec&#xA;&#xA;@since 1.2&#xA;" annotatedElement="2694d52a-b50a-43fd-ad8d-f4cb46a45723"/>
              <generalization xmi:id="209836db-5b29-46ba-934e-284f95018c59" isSubstitutable="true" general="bc6ada8c-f266-46a9-a134-25987be6f27f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0805e661-d340-4ceb-859c-fb52c521ef77" name="RSAPrivateCrtKeySpec">
              <ownedComment xmi:id="8c817373-0aa4-4138-9861-55b3753f1524" body="This class specifies an RSA private key, as defined in the PKCS#1&#xA;standard, using the Chinese Remainder Theorem (CRT) information values for&#xA;efficiency.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.12 03/12/19&#xA;&#xA;@see java.security.Key&#xA;@see java.security.KeyFactory&#xA;@see KeySpec&#xA;@see PKCS8EncodedKeySpec&#xA;@see RSAPrivateKeySpec&#xA;@see RSAPublicKeySpec&#xA;" annotatedElement="0805e661-d340-4ceb-859c-fb52c521ef77"/>
              <generalization xmi:id="de632df5-0d07-4612-a356-37fdfdc8f652" isSubstitutable="true" general="45bf54dd-eabd-40f7-a2b3-0c4a1bbbcc33"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="187224d5-7625-4b2c-9d4c-daf61b16edd0" name="DSAPrivateKeySpec" clientDependency="6ce03025-06fb-4ffa-aa84-61528db2b725">
              <ownedComment xmi:id="5091280a-0804-42ef-8dae-4b41cc4b32c9" body="This class specifies a DSA private key with its associated parameters.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.18, 12/19/03&#xA;&#xA;@see java.security.Key&#xA;@see java.security.KeyFactory&#xA;@see KeySpec&#xA;@see DSAPublicKeySpec&#xA;@see PKCS8EncodedKeySpec&#xA;&#xA;@since 1.2&#xA;" annotatedElement="187224d5-7625-4b2c-9d4c-daf61b16edd0"/>
              <interfaceRealization xmi:id="6ce03025-06fb-4ffa-aa84-61528db2b725" name="" supplier="7c7c2459-4de5-444f-9993-30ec85f80b71" client="187224d5-7625-4b2c-9d4c-daf61b16edd0" contract="7c7c2459-4de5-444f-9993-30ec85f80b71"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="025253be-633a-413e-82f9-fa98ee5defff" name="EllipticCurve">
              <ownedComment xmi:id="ff06b759-fd3c-4f58-80fe-09e5963daa39" body="This immutable class holds the necessary values needed to represent&#xA;an elliptic curve.&#xA;&#xA;@see ECField&#xA;@see ECFieldFp&#xA;@see ECFieldF2m&#xA;&#xA;@author Valerie Peng&#xA;@version 1.3, 12/19/03&#xA;&#xA;@since 1.5&#xA;" annotatedElement="025253be-633a-413e-82f9-fa98ee5defff"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5c0d12bb-4607-4c1b-b8dc-41e961577e1a" name="ECPublicKeySpec" clientDependency="f478c61d-72f4-4d7e-9e38-0b42e94b6624">
              <ownedComment xmi:id="9c70f441-0a41-4c23-be9e-93e01486282b" body="This immutable class specifies an elliptic curve public key with&#xA;its associated parameters.&#xA;&#xA;@see KeySpec&#xA;@see ECPoint&#xA;@see ECParameterSpec&#xA;&#xA;@author Valerie Peng&#xA;@version 1.3, 12/19/03&#xA;&#xA;@since 1.5&#xA;" annotatedElement="5c0d12bb-4607-4c1b-b8dc-41e961577e1a"/>
              <interfaceRealization xmi:id="f478c61d-72f4-4d7e-9e38-0b42e94b6624" name="" supplier="7c7c2459-4de5-444f-9993-30ec85f80b71" client="5c0d12bb-4607-4c1b-b8dc-41e961577e1a" contract="7c7c2459-4de5-444f-9993-30ec85f80b71"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="7c7c2459-4de5-444f-9993-30ec85f80b71" name="KeySpec" isAbstract="true">
              <ownedComment xmi:id="0312c773-0dcf-4342-8117-55846eda1889" body="A (transparent) specification of the key material&#xA;that constitutes a cryptographic key.&#xA;&#xA;&lt;p>If the key is stored on a hardware device, its&#xA;specification may contain information that helps identify the key on the&#xA;device.&#xA;&#xA;&lt;P> A key may be specified in an algorithm-specific way, or in an&#xA;algorithm-independent encoding format (such as ASN.1).&#xA;For example, a DSA private key may be specified by its components&#xA;&lt;code>x&lt;/code>, &lt;code>p&lt;/code>, &lt;code>q&lt;/code>, and &lt;code>g&lt;/code>&#xA;(see {@link DSAPrivateKeySpec}), or it may be&#xA;specified using its DER encoding&#xA;(see {@link PKCS8EncodedKeySpec}).&#xA;&#xA;&lt;P> This interface contains no methods or constants. Its only purpose&#xA;is to group (and provide type safety for) all key specifications.&#xA;All key specifications must implement this interface.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.17, 12/19/03&#xA;&#xA;@see java.security.Key&#xA;@see java.security.KeyFactory&#xA;@see EncodedKeySpec&#xA;@see X509EncodedKeySpec&#xA;@see PKCS8EncodedKeySpec&#xA;@see DSAPrivateKeySpec&#xA;@see DSAPublicKeySpec&#xA;&#xA;@since 1.2&#xA;" annotatedElement="7c7c2459-4de5-444f-9993-30ec85f80b71"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="cce80cbe-8a0c-4617-bef3-e162bc672b07" name="ECGenParameterSpec" clientDependency="24774d1c-49ab-4fe6-af71-5fec710c5b52">
              <ownedComment xmi:id="c4dc1f99-5123-49b5-9fc4-014c60d0fecd" body="This immutable class specifies the set of parameters used for&#xA;generating elliptic curve (EC) domain parameters.&#xA;&#xA;@see AlgorithmParameterSpec&#xA;&#xA;@author Valerie Peng&#xA;@version 1.3, 12/19/03&#xA;&#xA;@since 1.5&#xA;" annotatedElement="cce80cbe-8a0c-4617-bef3-e162bc672b07"/>
              <interfaceRealization xmi:id="24774d1c-49ab-4fe6-af71-5fec710c5b52" name="" supplier="23f0d13a-d7ac-430a-8db7-4f3387065b09" client="cce80cbe-8a0c-4617-bef3-e162bc672b07" contract="23f0d13a-d7ac-430a-8db7-4f3387065b09"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="23f0d13a-d7ac-430a-8db7-4f3387065b09" name="AlgorithmParameterSpec" isAbstract="true">
              <ownedComment xmi:id="0f5ef76d-2b4f-4b75-9c55-99733d5d12e8" body="A (transparent) specification of cryptographic parameters.&#xA;&#xA;&lt;P> This interface contains no methods or constants. Its only purpose&#xA;is to group (and provide type safety for) all parameter specifications.&#xA;All parameter specifications must implement this interface.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.14, 12/19/03&#xA;&#xA;@see java.security.AlgorithmParameters&#xA;@see DSAParameterSpec&#xA;&#xA;@since 1.2&#xA;" annotatedElement="23f0d13a-d7ac-430a-8db7-4f3387065b09"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="342fb987-84b8-4b45-95d2-e0b9626e7aab" name="MGF1ParameterSpec" clientDependency="1977377e-f89f-43c3-918c-ead580b6272f">
              <ownedComment xmi:id="d25b7cc0-bec0-4016-9c05-a75d808c478c" body="This class specifies the set of parameters used with mask generation&#xA;function MGF1 in OAEP Padding and RSA-PSS signature scheme, as&#xA;defined in the&#xA;&lt;a href=&quot;http://www.rsa.com/rsalabs/pubs/PKCS/html/pkcs-1.html&quot;>&#xA;PKCS #1 v2.1&lt;/a> standard.&#xA;&#xA;&lt;p>Its ASN.1 definition in PKCS#1 standard is described below:&#xA;&lt;pre>&#xA;MGF1Parameters ::= OAEP-PSSDigestAlgorthms&#xA;&lt;/pre>&#xA;where&#xA;&lt;pre>&#xA;OAEP-PSSDigestAlgorithms    ALGORITHM-IDENTIFIER ::= {&#xA;{ OID id-sha1 PARAMETERS NULL   }|&#xA;{ OID id-sha256 PARAMETERS NULL }|&#xA;{ OID id-sha384 PARAMETERS NULL }|&#xA;{ OID id-sha512 PARAMETERS NULL },&#xA;...  -- Allows for future expansion --&#xA;}&#xA;&lt;/pre>&#xA;@see PSSParameterSpec&#xA;@see javax.crypto.spec.OAEPParameterSpec&#xA;&#xA;@author Valerie Peng&#xA;&#xA;@version 1.3, 01/27/04&#xA;@since 1.5&#xA;" annotatedElement="342fb987-84b8-4b45-95d2-e0b9626e7aab"/>
              <interfaceRealization xmi:id="1977377e-f89f-43c3-918c-ead580b6272f" name="" supplier="23f0d13a-d7ac-430a-8db7-4f3387065b09" client="342fb987-84b8-4b45-95d2-e0b9626e7aab" contract="23f0d13a-d7ac-430a-8db7-4f3387065b09"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d8ed5914-97b4-4da4-9cc6-ba6d5f1f9c02" name="ECField" isAbstract="true">
              <ownedComment xmi:id="aaf567ae-c489-4858-a433-b85a188748e2" body="This interface represents an elliptic curve (EC) finite field.&#xA;All specialized EC fields must implements this interface.&#xA;&#xA;@see ECFieldFp&#xA;@see ECFieldF2m&#xA;&#xA;@author Valerie Peng&#xA;@version 1.4, 12/19/03&#xA;&#xA;@since 1.5&#xA;" annotatedElement="d8ed5914-97b4-4da4-9cc6-ba6d5f1f9c02"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4480c2cb-3026-4983-8fda-5be1691a3857" name="ECPrivateKeySpec" clientDependency="db59d1b0-ef35-4fba-aa09-e381528bd31c">
              <ownedComment xmi:id="d7a1ba6c-21a1-4172-b2f3-aa611c395e04" body="This immutable class specifies an elliptic curve private key with&#xA;its associated parameters.&#xA;&#xA;@see KeySpec&#xA;@see ECParameterSpec&#xA;&#xA;@author Valerie Peng&#xA;@version 1.3, 12/19/03&#xA;&#xA;@since 1.5&#xA;" annotatedElement="4480c2cb-3026-4983-8fda-5be1691a3857"/>
              <interfaceRealization xmi:id="db59d1b0-ef35-4fba-aa09-e381528bd31c" name="" supplier="7c7c2459-4de5-444f-9993-30ec85f80b71" client="4480c2cb-3026-4983-8fda-5be1691a3857" contract="7c7c2459-4de5-444f-9993-30ec85f80b71"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e5c2cacd-d969-419d-b586-12462624b26b" name="RSAPublicKeySpec" clientDependency="46604e5b-c65d-4dd3-8b91-bbfe59fafccb">
              <ownedComment xmi:id="4862d363-fc56-4f76-a4cc-34d1e5855e38" body="This class specifies an RSA public key.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.10 03/12/19&#xA;&#xA;@see java.security.Key&#xA;@see java.security.KeyFactory&#xA;@see KeySpec&#xA;@see X509EncodedKeySpec&#xA;@see RSAPrivateKeySpec&#xA;@see RSAPrivateCrtKeySpec&#xA;" annotatedElement="e5c2cacd-d969-419d-b586-12462624b26b"/>
              <interfaceRealization xmi:id="46604e5b-c65d-4dd3-8b91-bbfe59fafccb" name="" supplier="7c7c2459-4de5-444f-9993-30ec85f80b71" client="e5c2cacd-d969-419d-b586-12462624b26b" contract="7c7c2459-4de5-444f-9993-30ec85f80b71"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="cb71a29b-658f-469c-a5cb-5d66e12afbe4" name="RSAKeyGenParameterSpec" clientDependency="c2510fd5-6643-4ce3-9ef0-2fdfefde4f42">
              <ownedComment xmi:id="7ea96dfe-0ccd-4d03-9c1e-0b63186acecd" body="This class specifies the set of parameters used to generate an RSA&#xA;key pair.&#xA;&#xA;@author Jan Luehe&#xA;@version 1.8 12/19/03&#xA;&#xA;@see java.security.KeyPairGenerator#initialize(java.security.spec.AlgorithmParameterSpec)&#xA;&#xA;@since 1.3&#xA;" annotatedElement="cb71a29b-658f-469c-a5cb-5d66e12afbe4"/>
              <interfaceRealization xmi:id="c2510fd5-6643-4ce3-9ef0-2fdfefde4f42" name="" supplier="23f0d13a-d7ac-430a-8db7-4f3387065b09" client="cb71a29b-658f-469c-a5cb-5d66e12afbe4" contract="23f0d13a-d7ac-430a-8db7-4f3387065b09"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="dc912dbe-14b7-4906-a9bb-bfbb2e5b60a4" name="Timestamp" clientDependency="3bc16e54-d2f5-4aec-b389-55ca2eb51490" isLeaf="true">
            <ownedComment xmi:id="683c28a0-1aa8-4033-9a8c-bf09087f5dfe" body="This class encapsulates information about a signed timestamp.&#xA;It is immutable.&#xA;It includes the timestamp's date and time as well as information about the&#xA;Timestamping Authority (TSA) which generated and signed the timestamp.&#xA;&#xA;@since 1.5&#xA;@version 1.2, 12/19/03&#xA;@author Vincent Ryan&#xA;" annotatedElement="dc912dbe-14b7-4906-a9bb-bfbb2e5b60a4"/>
            <interfaceRealization xmi:id="3bc16e54-d2f5-4aec-b389-55ca2eb51490" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="dc912dbe-14b7-4906-a9bb-bfbb2e5b60a4" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="99561d08-1015-46e4-89dd-c7b5862ae4fc" name="DigestOutputStream">
            <ownedComment xmi:id="8e0dede3-9642-4630-be45-7b6f53a244c5" body="A transparent stream that updates the associated message digest using&#xA;the bits going through the stream.&#xA;&#xA;&lt;p>To complete the message digest computation, call one of the&#xA;&lt;code>digest&lt;/code> methods on the associated message&#xA;digest after your calls to one of this digest ouput stream's&#xA;{@link #write(int) write} methods.&#xA;&#xA;&lt;p>It is possible to turn this stream on or off (see&#xA;{@link #on(boolean) on}). When it is on, a call to one of the&#xA;&lt;code>write&lt;/code> methods results in&#xA;an update on the message digest.  But when it is off, the message&#xA;digest is not updated. The default is for the stream to be on.&#xA;&#xA;@see MessageDigest&#xA;@see DigestInputStream&#xA;&#xA;@version 1.31 03/12/19&#xA;@author Benjamin Renaud&#xA;" annotatedElement="99561d08-1015-46e4-89dd-c7b5862ae4fc"/>
            <generalization xmi:id="91635ae6-57b9-4004-81ce-9b126337e277" isSubstitutable="true" general="c01a0cc2-82be-41f9-973c-05c9c60bb7e8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e32c0701-7fcf-49c3-a9ff-a7a4041e953e" name="KeyPairGenerator" isAbstract="true">
            <ownedComment xmi:id="b06f1d5c-0c92-4615-b010-02c31269eff4" body="The KeyPairGenerator class is used to generate pairs of&#xA;public and private keys. Key pair generators are constructed using the&#xA;&lt;code>getInstance&lt;/code> factory methods (static methods that&#xA;return instances of a given class).&#xA;&#xA;&lt;p>A Key pair generator for a particular algorithm creates a public/private&#xA;key pair that can be used with this algorithm. It also associates&#xA;algorithm-specific parameters with each of the generated keys.&#xA;&#xA;&lt;p>There are two ways to generate a key pair: in an algorithm-independent&#xA;manner, and in an algorithm-specific manner.&#xA;The only difference between the two is the initialization of the object:&#xA;&#xA;&lt;ul>&#xA;&lt;li>&lt;b>Algorithm-Independent Initialization&lt;/b>&#xA;&lt;p>All key pair generators share the concepts of a keysize and a&#xA;source of randomness. The keysize is interpreted differently for different&#xA;algorithms (e.g., in the case of the &lt;i>DSA&lt;/i> algorithm, the keysize&#xA;corresponds to the length of the modulus).&#xA;There is an&#xA;{@link #initialize(int, java.security.SecureRandom) initialize}&#xA;method in this KeyPairGenerator class that takes these two universally&#xA;shared types of arguments. There is also one that takes just a&#xA;&lt;code>keysize&lt;/code> argument, and uses the &lt;code>SecureRandom&lt;/code>&#xA;implementation of the highest-priority installed provider as the source&#xA;of randomness. (If none of the installed providers supply an implementation&#xA;of &lt;code>SecureRandom&lt;/code>, a system-provided source of randomness is&#xA;used.)&#xA;&#xA;&lt;p>Since no other parameters are specified when you call the above&#xA;algorithm-independent &lt;code>initialize&lt;/code> methods, it is up to the&#xA;provider what to do about the algorithm-specific parameters (if any) to be&#xA;associated with each of the keys.&#xA;&#xA;&lt;p>If the algorithm is the &lt;i>DSA&lt;/i> algorithm, and the keysize (modulus&#xA;size) is 512, 768, or 1024, then the &lt;i>Sun&lt;/i> provider uses a set of&#xA;precomputed values for the &lt;code>p&lt;/code>, &lt;code>q&lt;/code>, and&#xA;&lt;code>g&lt;/code> parameters. If the modulus size is not one of the above&#xA;values, the &lt;i>Sun&lt;/i> provider creates a new set of parameters. Other&#xA;providers might have precomputed parameter sets for more than just the&#xA;three modulus sizes mentioned above. Still others might not have a list of&#xA;precomputed parameters at all and instead always create new parameter sets.&#xA;&lt;p>&#xA;&#xA;&lt;li>&lt;b>Algorithm-Specific Initialization&lt;/b>&#xA;&lt;p>For situations where a set of algorithm-specific parameters already&#xA;exists (e.g., so-called &lt;i>community parameters&lt;/i> in DSA), there are two&#xA;{@link #initialize(java.security.spec.AlgorithmParameterSpec)&#xA;initialize} methods that have an &lt;code>AlgorithmParameterSpec&lt;/code>&#xA;argument. One also has a &lt;code>SecureRandom&lt;/code> argument, while the&#xA;the other uses the &lt;code>SecureRandom&lt;/code>&#xA;implementation of the highest-priority installed provider as the source&#xA;of randomness. (If none of the installed providers supply an implementation&#xA;of &lt;code>SecureRandom&lt;/code>, a system-provided source of randomness is&#xA;used.)&#xA;&lt;/ul>&#xA;&#xA;&lt;p>In case the client does not explicitly initialize the KeyPairGenerator&#xA;(via a call to an &lt;code>initialize&lt;/code> method), each provider must&#xA;supply (and document) a default initialization.&#xA;For example, the &lt;i>Sun&lt;/i> provider uses a default modulus size (keysize)&#xA;of 1024 bits.&#xA;&#xA;&lt;p>Note that this class is abstract and extends from&#xA;&lt;code>KeyPairGeneratorSpi&lt;/code> for historical reasons.&#xA;Application developers should only take notice of the methods defined in&#xA;this &lt;code>KeyPairGenerator&lt;/code> class; all the methods in&#xA;the superclass are intended for cryptographic service providers who wish to&#xA;supply their own implementations of key pair generators.&#xA;&#xA;@author Benjamin Renaud&#xA;&#xA;@version 1.56, 01/28/04&#xA;&#xA;@see java.security.spec.AlgorithmParameterSpec&#xA;" annotatedElement="e32c0701-7fcf-49c3-a9ff-a7a4041e953e"/>
            <generalization xmi:id="911f310d-3acb-4af6-bf68-72013da49db5" isSubstitutable="true" general="73716b1f-eac3-438e-85f8-fed1d169cc94"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="b5d10f4f-7f68-4ffd-a568-91e1baa42e2f" name="Delegate" visibility="private" isLeaf="true">
              <generalization xmi:id="97fb7442-58ca-4884-a107-1472e7ef2a8e" isSubstitutable="true" general="e32c0701-7fcf-49c3-a9ff-a7a4041e953e"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="24850aa1-e3dd-4852-9702-1e0d34a6f490" name="AuthProvider" isAbstract="true">
            <ownedComment xmi:id="eb0fb1d2-9c5c-4e20-a8f1-6d03049ff77e" body="This class defines login and logout methods for a provider.&#xA;&#xA;&lt;p> While callers may invoke &lt;code>login&lt;/code> directly,&#xA;the provider may also invoke &lt;code>login&lt;/code> on behalf of callers&#xA;if it determines that a login must be performed&#xA;prior to certain operations.&#xA;&#xA;@version 1.3, 02/03/04&#xA;@since 1.5&#xA;" annotatedElement="24850aa1-e3dd-4852-9702-1e0d34a6f490"/>
            <generalization xmi:id="d455e0e0-6137-4a45-8a8d-bdb446130a0e" isSubstitutable="true" general="9bf0ef1c-5877-4732-9c22-2fd11c574f2c"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="87fd49a9-256f-4292-841a-727a0d369e46" name="Signature" isAbstract="true">
            <ownedComment xmi:id="148b5256-88b4-4958-b6bd-60057840ccb9" body="This Signature class is used to provide applications the functionality&#xA;of a digital signature algorithm. Digital signatures are used for&#xA;authentication and integrity assurance of digital data.&#xA;&#xA;&lt;p> The signature algorithm can be, among others, the NIST standard&#xA;DSA, using DSA and SHA-1. The DSA algorithm using the&#xA;SHA-1 message digest algorithm can be specified as &lt;tt>SHA1withDSA&lt;/tt>.&#xA;In the case of RSA, there are multiple choices for the message digest&#xA;algorithm, so the signing algorithm could be specified as, for example,&#xA;&lt;tt>MD2withRSA&lt;/tt>, &lt;tt>MD5withRSA&lt;/tt>, or &lt;tt>SHA1withRSA&lt;/tt>.&#xA;The algorithm name must be specified, as there is no default.&#xA;&#xA;&lt;p>Like other algorithm-based classes in Java Security, Signature&#xA;provides implementation-independent algorithms, whereby a caller&#xA;(application code) requests a particular signature algorithm&#xA;and is handed back a properly initialized Signature object. It is&#xA;also possible, if desired, to request a particular algorithm from a&#xA;particular provider. See the &lt;code>getInstance &lt;/code> methods.&#xA;&#xA;&lt;p>Thus, there are two ways to request a Signature algorithm object: by&#xA;specifying either just an algorithm name, or both an algorithm name&#xA;and a package provider. &lt;ul>&#xA;&#xA;&lt;li>If just an algorithm name is specified, the system will&#xA;determine if there is an implementation of the algorithm requested&#xA;available in the environment, and if there is more than one, if&#xA;there is a preferred one.&lt;p>&#xA;&#xA;&lt;li>If both an algorithm name and a package provider are specified,&#xA;the system will determine if there is an implementation of the&#xA;algorithm in the package requested, and throw an exception if there&#xA;is not.&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p>A Signature object can be used to generate and verify digital&#xA;signatures.&#xA;&#xA;&lt;p>There are three phases to the use of a Signature object for&#xA;either signing data or verifying a signature:&lt;ol>&#xA;&#xA;&lt;li>Initialization, with either&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>a public key, which initializes the signature for&#xA;verification (see {@link #initVerify(PublicKey) initVerify}), or&#xA;&#xA;&lt;li>a private key (and optionally a Secure Random Number Generator),&#xA;which initializes the signature for signing&#xA;(see {@link #initSign(PrivateKey)}&#xA;and {@link #initSign(PrivateKey, SecureRandom)}).&#xA;&#xA;&lt;/ul>&lt;p>&#xA;&#xA;&lt;li>Updating&lt;p>&#xA;&#xA;&lt;p>Depending on the type of initialization, this will update the&#xA;bytes to be signed or verified. See the&#xA;{@link #update(byte) update} methods.&lt;p>&#xA;&#xA;&lt;li>Signing or Verifying a signature on all updated bytes. See the&#xA;{@link #sign() sign} methods and the {@link #verify(byte[]) verify}&#xA;method.&#xA;&#xA;&lt;/ol>&#xA;&#xA;&lt;p>Note that this class is abstract and extends from&#xA;&lt;code>SignatureSpi&lt;/code> for historical reasons.&#xA;Application developers should only take notice of the methods defined in&#xA;this &lt;code>Signature&lt;/code> class; all the methods in&#xA;the superclass are intended for cryptographic service providers who wish to&#xA;supply their own implementations of digital signature algorithms.&#xA;&#xA;@author Benjamin Renaud&#xA;&#xA;@version 1.99, 05/18/04&#xA;" annotatedElement="87fd49a9-256f-4292-841a-727a0d369e46"/>
            <generalization xmi:id="be790dbe-cead-4c79-b574-f85332647822" isSubstitutable="true" general="7330b57b-c99c-4eb1-8261-c79ed3dad5d8"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a09263f7-2721-4180-b6c4-3919501e679a" name="Delegate" visibility="private">
              <generalization xmi:id="8fb076c3-5305-4fe5-96df-938f423588b2" isSubstitutable="true" general="87fd49a9-256f-4292-841a-727a0d369e46"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8f9e38f6-0751-4887-a3b2-f2ad8b870c6c" name="CipherAdapter" visibility="private">
              <generalization xmi:id="74718fd2-6936-476c-a8af-bb70dbd13af4" isSubstitutable="true" general="7330b57b-c99c-4eb1-8261-c79ed3dad5d8"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="acb68b38-ad52-4f37-ad61-5e0497b290ec" name="GuardedObject" clientDependency="bc219ec9-e381-46fb-88ca-071c7d978921">
            <ownedComment xmi:id="7ba46b46-2155-488b-8813-fb584787af7e" body="A GuardedObject is an object that is used to protect access to&#xA;another object.&#xA;&#xA;&lt;p>A GuardedObject encapsulates a target object and a Guard object,&#xA;such that access to the target object is possible&#xA;only if the Guard object allows it.&#xA;Once an object is encapsulated by a GuardedObject,&#xA;access to that object is controlled by the &lt;code>getObject&lt;/code>&#xA;method, which invokes the&#xA;&lt;code>checkGuard&lt;/code> method on the Guard object that is&#xA;guarding access. If access is not allowed,&#xA;an exception is thrown.&#xA;&#xA;@see Guard&#xA;@see Permission&#xA;&#xA;@version 1.15 03/12/19&#xA;@author Roland Schemers&#xA;@author Li Gong&#xA;" annotatedElement="acb68b38-ad52-4f37-ad61-5e0497b290ec"/>
            <interfaceRealization xmi:id="bc219ec9-e381-46fb-88ca-071c7d978921" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="acb68b38-ad52-4f37-ad61-5e0497b290ec" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e53d7d05-7b08-46a7-97e9-7311f039f877" name="Signer" isAbstract="true">
            <ownedComment xmi:id="a7efe0d7-e421-4c6a-98ce-6c1fced41c44" body="This class is used to represent an Identity that can also digitally&#xA;sign data.&#xA;&#xA;&lt;p>The management of a signer's private keys is an important and&#xA;sensitive issue that should be handled by subclasses as appropriate&#xA;to their intended use.&#xA;&#xA;@see Identity&#xA;&#xA;@version 1.42 04/05/18&#xA;@author Benjamin Renaud&#xA;&#xA;@deprecated This class is no longer used. Its functionality has been&#xA;replaced by &lt;code>java.security.KeyStore&lt;/code>, the&#xA;&lt;code>java.security.cert&lt;/code> package, and&#xA;&lt;code>java.security.Principal&lt;/code>.&#xA;" annotatedElement="e53d7d05-7b08-46a7-97e9-7311f039f877"/>
            <generalization xmi:id="84d9d14f-f95e-46af-9620-88c79dfb9afb" isSubstitutable="true" general="7902076f-9f68-439e-98a5-9035ed9c990b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="11e876ef-6f43-4d79-a4f7-8efc58e9637d" name="Guard" isAbstract="true">
            <ownedComment xmi:id="b846d990-80c5-43ea-9a7e-c8cedd925359" body="&lt;p> This interface represents a guard, which is an object that is used&#xA;to protect access to another object.&#xA;&#xA;&lt;p>This interface contains a single method, &lt;code>checkGuard&lt;/code>,&#xA;with a single &lt;code>object&lt;/code> argument. &lt;code>checkGuard&lt;/code> is&#xA;invoked (by the GuardedObject &lt;code>getObject&lt;/code> method)&#xA;to determine whether or not to allow access to the object.&#xA;&#xA;@see GuardedObject&#xA;&#xA;@version 1.12 03/12/19&#xA;@author Roland Schemers&#xA;@author Li Gong&#xA;" annotatedElement="11e876ef-6f43-4d79-a4f7-8efc58e9637d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9e9e42fb-27b6-4102-8671-a20f81cf693f" name="AlgorithmParameterGenerator">
            <ownedComment xmi:id="8e1ac9b2-da7b-4a34-933c-893b75fd0623" body="The &lt;code>AlgorithmParameterGenerator&lt;/code> class is used to generate a&#xA;set of&#xA;parameters to be used with a certain algorithm. Parameter generators&#xA;are constructed using the &lt;code>getInstance&lt;/code> factory methods&#xA;(static methods that return instances of a given class).&#xA;&#xA;&lt;P>The object that will generate the parameters can be initialized&#xA;in two different ways: in an algorithm-independent manner, or in an&#xA;algorithm-specific manner:&#xA;&#xA;&lt;ul>&#xA;&lt;li>The algorithm-independent approach uses the fact that all parameter&#xA;generators share the concept of a &quot;size&quot; and a&#xA;source of randomness. The measure of size is universally shared&#xA;by all algorithm parameters, though it is interpreted differently&#xA;for different algorithms. For example, in the case of parameters for&#xA;the &lt;i>DSA&lt;/i> algorithm, &quot;size&quot; corresponds to the size&#xA;of the prime modulus (in bits).&#xA;When using this approach, algorithm-specific parameter generation&#xA;values - if any - default to some standard values, unless they can be&#xA;derived from the specified size.&lt;P>&#xA;&#xA;&lt;li>The other approach initializes a parameter generator object&#xA;using algorithm-specific semantics, which are represented by a set of&#xA;algorithm-specific parameter generation values. To generate&#xA;Diffie-Hellman system parameters, for example, the parameter generation&#xA;values usually&#xA;consist of the size of the prime modulus and the size of the&#xA;random exponent, both specified in number of bits.&#xA;&lt;/ul>&#xA;&#xA;&lt;P>In case the client does not explicitly initialize the&#xA;AlgorithmParameterGenerator&#xA;(via a call to an &lt;code>init&lt;/code> method), each provider must supply (and&#xA;document) a default initialization. For example, the Sun provider uses a&#xA;default modulus prime size of 1024 bits for the generation of DSA&#xA;parameters.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.40, 12/19/03&#xA;&#xA;@see AlgorithmParameters&#xA;@see java.security.spec.AlgorithmParameterSpec&#xA;&#xA;@since 1.2&#xA;" annotatedElement="9e9e42fb-27b6-4102-8671-a20f81cf693f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="97ec08b2-c33b-4340-b7f2-6874410cc351" name="AccessController" isLeaf="true">
            <ownedComment xmi:id="5deae26a-7d76-4e96-b7b3-26b6a79d54f5" body="&lt;p> The AccessController class is used for access control operations&#xA;and decisions.&#xA;&#xA;&lt;p> More specifically, the AccessController class is used for&#xA;three purposes:&#xA;&#xA;&lt;ul>&#xA;&lt;li> to decide whether an access to a critical system&#xA;resource is to be allowed or denied, based on the security policy&#xA;currently in effect,&lt;p>&#xA;&lt;li>to mark code as being &quot;privileged&quot;, thus affecting subsequent&#xA;access determinations, and&lt;p>&#xA;&lt;li>to obtain a &quot;snapshot&quot; of the current calling context so&#xA;access-control decisions from a different context can be made with&#xA;respect to the saved context. &lt;/ul>&#xA;&#xA;&lt;p> The {@link #checkPermission(Permission) checkPermission} method&#xA;determines whether the access request indicated by a specified&#xA;permission should be granted or denied. A sample call appears&#xA;below. In this example, &lt;code>checkPermission&lt;/code> will determine&#xA;whether or not to grant &quot;read&quot; access to the file named &quot;testFile&quot; in&#xA;the &quot;/temp&quot; directory.&#xA;&#xA;&lt;pre>&#xA;&#xA;FilePermission perm = new FilePermission(&quot;/temp/testFile&quot;, &quot;read&quot;);&#xA;AccessController.checkPermission(perm);&#xA;&#xA;&lt;/pre>&#xA;&#xA;&lt;p> If a requested access is allowed,&#xA;&lt;code>checkPermission&lt;/code> returns quietly. If denied, an&#xA;AccessControlException is&#xA;thrown. AccessControlException can also be thrown if the requested&#xA;permission is of an incorrect type or contains an invalid value.&#xA;Such information is given whenever possible.&#xA;&#xA;Suppose the current thread traversed m callers, in the order of caller 1&#xA;to caller 2 to caller m. Then caller m invoked the&#xA;&lt;code>checkPermission&lt;/code> method.&#xA;The &lt;code>checkPermission &lt;/code>method determines whether access&#xA;is granted or denied based on the following algorithm:&#xA;&#xA;&lt;pre>&#xA;i = m;&#xA;&#xA;while (i > 0) {&#xA;&#xA;if (caller i's domain does not have the permission)&#xA;throw AccessControlException&#xA;&#xA;else if (caller i is marked as privileged) {&#xA;if (a context was specified in the call to doPrivileged)&#xA;context.checkPermission(permission)&#xA;return;&#xA;}&#xA;i = i - 1;&#xA;};&#xA;&#xA;Next, check the context inherited when&#xA;the thread was created. Whenever a new thread is created, the&#xA;AccessControlContext at that time is&#xA;stored and associated with the new thread, as the &quot;inherited&quot;&#xA;context.&#xA;&#xA;inheritedContext.checkPermission(permission);&#xA;&lt;/pre>&#xA;&#xA;&lt;p> A caller can be marked as being &quot;privileged&quot;&#xA;(see {@link #doPrivileged(PrivilegedAction) doPrivileged} and below).&#xA;When making access control decisions, the &lt;code>checkPermission&lt;/code>&#xA;method stops checking if it reaches a caller that&#xA;was marked as &quot;privileged&quot; via a &lt;code>doPrivileged&lt;/code>&#xA;call without a context argument (see below for information about a&#xA;context argument). If that caller's domain has the&#xA;specified permission, no further checking is done and&#xA;&lt;code>checkPermission&lt;/code>&#xA;returns quietly, indicating that the requested access is allowed.&#xA;If that domain does not have the specified permission, an exception&#xA;is thrown, as usual.&#xA;&#xA;&lt;p> The normal use of the &quot;privileged&quot; feature is as follows. If you&#xA;don't need to return a value from within the &quot;privileged&quot; block, do&#xA;the following:&#xA;&#xA;&lt;pre>&#xA;somemethod() {&#xA;...normal code here...&#xA;AccessController.doPrivileged(new PrivilegedAction() {&#xA;public Object run() {&#xA;privileged code goes here, for example:&#xA;System.loadLibrary(&quot;awt&quot;);&#xA;return null; // nothing to return&#xA;}&#xA;});&#xA;...normal code here...&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p>&#xA;PrivilegedAction is an interface with a single method, named&#xA;&lt;code>run&lt;/code>, that returns an Object.&#xA;The above example shows creation of an implementation&#xA;of that interface; a concrete implementation of the&#xA;&lt;code>run&lt;/code> method is supplied.&#xA;When the call to &lt;code>doPrivileged&lt;/code> is made, an&#xA;instance of the PrivilegedAction implementation is passed&#xA;to it. The &lt;code>doPrivileged&lt;/code> method calls the&#xA;&lt;code>run&lt;/code> method from the PrivilegedAction&#xA;implementation after enabling privileges, and returns the&#xA;&lt;code>run&lt;/code> method's return value as the&#xA;&lt;code>doPrivileged&lt;/code> return value (which is&#xA;ignored in this example).&#xA;&#xA;&lt;p> If you need to return a value, you can do something like the following:&#xA;&#xA;&lt;pre>&#xA;somemethod() {&#xA;...normal code here...&#xA;String user = (String) AccessController.doPrivileged(&#xA;new PrivilegedAction() {&#xA;public Object run() {&#xA;return System.getProperty(&quot;user.name&quot;);&#xA;}&#xA;}&#xA;);&#xA;...normal code here...&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p>If the action performed in your &lt;code>run&lt;/code> method could&#xA;throw a &quot;checked&quot; exception (those listed in the &lt;code>throws&lt;/code> clause&#xA;of a method), then you need to use the&#xA;&lt;code>PrivilegedExceptionAction&lt;/code> interface instead of the&#xA;&lt;code>PrivilegedAction&lt;/code> interface:&#xA;&#xA;&lt;pre>&#xA;somemethod() throws FileNotFoundException {&#xA;...normal code here...&#xA;try {&#xA;FileInputStream fis = (FileInputStream) AccessController.doPrivileged(&#xA;new PrivilegedExceptionAction() {&#xA;public Object run() throws FileNotFoundException {&#xA;return new FileInputStream(&quot;someFile&quot;);&#xA;}&#xA;}&#xA;);&#xA;} catch (PrivilegedActionException e) {&#xA;e.getException() should be an instance of FileNotFoundException,&#xA;as only &quot;checked&quot; exceptions will be &quot;wrapped&quot; in a&#xA;&lt;code>PrivilegedActionException&lt;/code>.&#xA;throw (FileNotFoundException) e.getException();&#xA;}&#xA;...normal code here...&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p> Be *very* careful in your use of the &quot;privileged&quot; construct, and&#xA;always remember to make the privileged code section as small as possible.&#xA;&#xA;&lt;p> Note that &lt;code>checkPermission&lt;/code> always performs security checks&#xA;within the context of the currently executing thread.&#xA;Sometimes a security check that should be made within a given context&#xA;will actually need to be done from within a&#xA;&lt;i>different&lt;/i> context (for example, from within a worker thread).&#xA;The {@link #getContext() getContext} method and&#xA;AccessControlContext class are provided&#xA;for this situation. The &lt;code>getContext&lt;/code> method takes a &quot;snapshot&quot;&#xA;of the current calling context, and places&#xA;it in an AccessControlContext object, which it returns. A sample call is&#xA;the following:&#xA;&#xA;&lt;pre>&#xA;&#xA;AccessControlContext acc = AccessController.getContext()&#xA;&#xA;&lt;/pre>&#xA;&#xA;&lt;p>&#xA;AccessControlContext itself has a &lt;code>checkPermission&lt;/code> method&#xA;that makes access decisions based on the context &lt;i>it&lt;/i> encapsulates,&#xA;rather than that of the current execution thread.&#xA;Code within a different context can thus call that method on the&#xA;previously-saved AccessControlContext object. A sample call is the&#xA;following:&#xA;&#xA;&lt;pre>&#xA;&#xA;acc.checkPermission(permission)&#xA;&#xA;&lt;/pre>&#xA;&#xA;&lt;p> There are also times where you don't know a priori which permissions&#xA;to check the context against. In these cases you can use the&#xA;doPrivileged method that takes a context:&#xA;&#xA;&lt;pre>&#xA;somemethod() {&#xA;AccessController.doPrivileged(new PrivilegedAction() {&#xA;public Object run() {&#xA;Code goes here. Any permission checks within this&#xA;run method will require that the intersection of the&#xA;callers protection domain and the snapshot's&#xA;context have the desired permission.&#xA;}&#xA;}, acc);&#xA;...normal code here...&#xA;}&#xA;&lt;/pre>&#xA;&#xA;@see AccessControlContext&#xA;&#xA;@version 1.55 04/05/05&#xA;@author Li Gong&#xA;@author Roland Schemers&#xA;" annotatedElement="97ec08b2-c33b-4340-b7f2-6874410cc351"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c58fb831-0ce3-4230-afbc-e8ecbd12742e" name="InvalidKeyException">
            <ownedComment xmi:id="14054342-daf2-4491-b11b-9febb067d808" body="This is the exception for invalid Keys (invalid encoding, wrong&#xA;length, uninitialized, etc).&#xA;&#xA;@version 1.16, 12/19/03&#xA;@author Benjamin Renaud&#xA;" annotatedElement="c58fb831-0ce3-4230-afbc-e8ecbd12742e"/>
            <generalization xmi:id="57b82ca6-3522-45e6-80d9-43d6f7819c82" isSubstitutable="true" general="9dfa5238-222b-4a84-bf32-2fe4cf9b8487"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="208eb0f1-3432-41a5-ba57-25627523012b" name="DigestException">
            <ownedComment xmi:id="6ef5b0ca-7084-4346-8585-4b1335a5f551" body="This is the generic Message Digest exception.&#xA;&#xA;@version 1.17, 03/12/19&#xA;@author Benjamin Renaud&#xA;" annotatedElement="208eb0f1-3432-41a5-ba57-25627523012b"/>
            <generalization xmi:id="737cada3-e0ae-49d9-81cf-c30617031f8b" isSubstitutable="true" general="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd" name="GeneralSecurityException">
            <ownedComment xmi:id="81491bc4-e75f-4906-9b35-66f40d4c3c87" body="The &lt;code>GeneralSecurityException&lt;/code> class is a generic&#xA;security exception class that provides type safety for all the&#xA;security-related exception classes that extend from it.&#xA;&#xA;@version 1.16, 03/12/19&#xA;@author Jan Luehe&#xA;" annotatedElement="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd"/>
            <generalization xmi:id="98dc9bdf-886d-4533-a47e-0abf9494f289" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7e1ec1e5-d424-42db-9cc1-db476794f5b3" name="AccessControlException">
            <ownedComment xmi:id="333e0703-63a3-4db5-afe6-cee8393ff605" body="&lt;p> This exception is thrown by the AccessController to indicate&#xA;that a requested access (to a critical system resource such as the&#xA;file system or the network) is denied.&#xA;&#xA;&lt;p> The reason to deny access can vary.  For example, the requested&#xA;permission might be of an incorrect type,  contain an invalid&#xA;value, or request access that is not allowed according to the&#xA;security policy.  Such information should be given whenever&#xA;possible at the time the exception is thrown.&#xA;&#xA;@version &#x9;1.13, 12/19/03&#xA;@author Li Gong&#xA;@author Roland Schemers&#xA;" annotatedElement="7e1ec1e5-d424-42db-9cc1-db476794f5b3"/>
            <generalization xmi:id="1231cc2a-55b5-4365-813c-d296170e509c" isSubstitutable="true" general="2cdf2d4e-57d3-44d3-8567-22c714490e9a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="05d81a41-22af-4c53-bf70-f2e48e839903" name="Certificate" isAbstract="true">
            <ownedComment xmi:id="a10a2355-ce40-406c-a773-92998c350b18" body="&lt;p>This is an interface of abstract methods for managing a&#xA;variety of identity certificates.&#xA;An identity certificate is a guarantee by a principal that&#xA;a public key is that of another principal.  (A principal represents&#xA;an entity such as an individual user, a group, or a corporation.)&#xA;&#xA;&lt;p>In particular, this interface is intended to be a common&#xA;abstraction for constructs that have different formats but&#xA;important common uses.  For example, different types of&#xA;certificates, such as X.509 certificates and PGP certificates,&#xA;share general certificate functionality (the need to encode and&#xA;decode certificates) and some types of information, such as a&#xA;public key, the principal whose key it is, and the guarantor&#xA;guaranteeing that the public key is that of the specified&#xA;principal. So an implementation of X.509 certificates and an&#xA;implementation of PGP certificates can both utilize the Certificate&#xA;interface, even though their formats and additional types and&#xA;amounts of information stored are different.&#xA;&#xA;&lt;p>&lt;b>Important&lt;/b>: This interface is useful for cataloging and&#xA;grouping objects sharing certain common uses. It does not have any&#xA;semantics of its own. In particular, a Certificate object does not&#xA;make any statement as to the &lt;i>validity&lt;/i> of the binding. It is&#xA;the duty of the application implementing this interface to verify&#xA;the certificate and satisfy itself of its validity.&#xA;&#xA;@version &#x9;1.37, 05/18/04&#xA;@author Benjamin Renaud&#xA;@deprecated A new certificate handling package is created in the Java 2 platform.&#xA;This Certificate interface is entirely deprecated and&#xA;is here to allow for a smooth transition to the new&#xA;package.&#xA;@see java.security.cert.Certificate&#xA;" annotatedElement="05d81a41-22af-4c53-bf70-f2e48e839903"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9a5f7694-528b-49d5-8e1d-2d253bb2c132" name="NoSuchAlgorithmException">
            <ownedComment xmi:id="e2a0970e-a685-494f-b130-b98145c5669d" body="This exception is thrown when a particular cryptographic algorithm is&#xA;requested but is not available in the environment.&#xA;&#xA;@version 1.25, 03/12/19&#xA;@author Benjamin Renaud&#xA;" annotatedElement="9a5f7694-528b-49d5-8e1d-2d253bb2c132"/>
            <generalization xmi:id="ff6abce0-baf4-4092-b111-5dda6d389f8d" isSubstitutable="true" general="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2e152103-7e38-4067-adcc-d1d161b4eb7c" name="CodeSource" clientDependency="3bbe7d1f-f7bb-4c63-8268-2725ceba0a8d">
            <ownedComment xmi:id="34272990-9487-4afb-882a-376017863931" body="&lt;p>This class extends the concept of a codebase to&#xA;encapsulate not only the location (URL) but also the certificate chains&#xA;that were used to verify signed code originating from that location.&#xA;&#xA;@version &#x9;1.38, 12/19/03&#xA;@author Li Gong&#xA;@author Roland Schemers&#xA;" annotatedElement="2e152103-7e38-4067-adcc-d1d161b4eb7c"/>
            <interfaceRealization xmi:id="3bbe7d1f-f7bb-4c63-8268-2725ceba0a8d" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="2e152103-7e38-4067-adcc-d1d161b4eb7c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4831e368-c670-40b4-87bd-a8a910a528fa" name="BasicPermission" clientDependency="03c2ea7f-64d9-4cc4-abfa-85ee6bd946f5" isAbstract="true">
            <ownedComment xmi:id="4b97ecd9-675f-497d-b687-252d0cca8af9" body="The BasicPermission class extends the Permission class, and&#xA;can be used as the base class for permissions that want to&#xA;follow the same naming convention as BasicPermission.&#xA;&lt;P>&#xA;The name for a BasicPermission is the name of the given permission&#xA;(for example, &quot;exit&quot;,&#xA;&quot;setFactory&quot;, &quot;print.queueJob&quot;, etc). The naming&#xA;convention follows the  hierarchical property naming convention.&#xA;An asterisk may appear by itself, or if immediately preceded by a &quot;.&quot;&#xA;may appear at the end of the name, to signify a wildcard match.&#xA;For example, &quot;*&quot; and &quot;java.*&quot; are valid, while &quot;*java&quot;, &quot;a*b&quot;,&#xA;and &quot;java*&quot; are not valid.&#xA;&lt;P>&#xA;The action string (inherited from Permission) is unused.&#xA;Thus, BasicPermission is commonly used as the base class for&#xA;&quot;named&quot; permissions&#xA;(ones that contain a name but no actions list; you either have the&#xA;named permission or you don't.)&#xA;Subclasses may implement actions on top of BasicPermission,&#xA;if desired.&#xA;&lt;p>&#xA;&lt;P>&#xA;@see java.security.Permission&#xA;@see java.security.Permissions&#xA;@see java.security.PermissionCollection&#xA;@see java.lang.RuntimePermission&#xA;@see java.security.SecurityPermission&#xA;@see java.util.PropertyPermission&#xA;@see java.awt.AWTPermission&#xA;@see java.net.NetPermission&#xA;@see java.lang.SecurityManager&#xA;&#xA;@version 1.40 03/12/19&#xA;&#xA;@author Marianne Mueller&#xA;@author Roland Schemers&#xA;" annotatedElement="4831e368-c670-40b4-87bd-a8a910a528fa"/>
            <generalization xmi:id="2a5a6aa6-7b84-4736-9634-1b224753809b" isSubstitutable="true" general="d9c6788c-6eda-4930-93b7-34c95c7c74cc"/>
            <interfaceRealization xmi:id="03c2ea7f-64d9-4cc4-abfa-85ee6bd946f5" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4831e368-c670-40b4-87bd-a8a910a528fa" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f7130333-470f-4fab-ae8a-a00d0f30d07f" name="Permissions" clientDependency="114b7c51-e68f-463e-8d89-04a74c25082f" isLeaf="true">
            <ownedComment xmi:id="64b6c2ee-e8f8-463b-ada1-0fb1c2e807df" body="This class represents a heterogeneous collection of Permissions. That is,&#xA;it contains different types of Permission objects, organized into&#xA;PermissionCollections. For example, if any&#xA;&lt;code>java.io.FilePermission&lt;/code> objects are added to an instance of&#xA;this class, they are all stored in a single&#xA;PermissionCollection. It is the PermissionCollection returned by a call to&#xA;the &lt;code>newPermissionCollection&lt;/code> method in the FilePermission class.&#xA;Similarly, any &lt;code>java.lang.RuntimePermission&lt;/code> objects are&#xA;stored in the PermissionCollection returned by a call to the&#xA;&lt;code>newPermissionCollection&lt;/code> method in the&#xA;RuntimePermission class. Thus, this class represents a collection of&#xA;PermissionCollections.&#xA;&#xA;&lt;p>When the &lt;code>add&lt;/code> method is called to add a Permission, the&#xA;Permission is stored in the appropriate PermissionCollection. If no such&#xA;collection exists yet, the Permission object's class is determined and the&#xA;&lt;code>newPermissionCollection&lt;/code> method is called on that class to create&#xA;the PermissionCollection and add it to the Permissions object. If&#xA;&lt;code>newPermissionCollection&lt;/code> returns null, then a default&#xA;PermissionCollection that uses a hashtable will be created and used. Each&#xA;hashtable entry stores a Permission object as both the key and the value.&#xA;&#xA;&lt;p> Enumerations returned via the &lt;code>elements&lt;/code> method are&#xA;not &lt;em>fail-fast&lt;/em>.  Modifications to a collection should not be&#xA;performed while enumerating over that collection.&#xA;&#xA;@see Permission&#xA;@see PermissionCollection&#xA;@see AllPermission&#xA;&#xA;@version 1.58, 04/05/05&#xA;&#xA;@author Marianne Mueller&#xA;@author Roland Schemers&#xA;&#xA;@serial exclude&#xA;" annotatedElement="f7130333-470f-4fab-ae8a-a00d0f30d07f"/>
            <generalization xmi:id="45c0e07d-a802-4751-ae1a-ee21dc57817b" isSubstitutable="true" general="528e6ee9-bd4d-433a-b08d-a8e30fb7d9c7"/>
            <interfaceRealization xmi:id="114b7c51-e68f-463e-8d89-04a74c25082f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f7130333-470f-4fab-ae8a-a00d0f30d07f" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="fd1450b9-d700-4b64-8029-0f44d9e4dae1" name="SignedObject" clientDependency="697e9db8-b18e-4592-84ec-8ca7b43783d3" isLeaf="true">
            <ownedComment xmi:id="fdea4e94-f418-41ad-9320-420f92fba2f1" body="&lt;p> SignedObject is a class for the purpose of creating authentic&#xA;runtime objects whose integrity cannot be compromised without being&#xA;detected.&#xA;&#xA;&lt;p> More specifically, a SignedObject contains another Serializable&#xA;object, the (to-be-)signed object and its signature.&#xA;&#xA;&lt;p> The signed object is a &quot;deep copy&quot; (in serialized form) of an&#xA;original object.  Once the copy is made, further manipulation of&#xA;the original object has no side effect on the copy.&#xA;&#xA;&lt;p> The underlying signing algorithm is designated by the Signature&#xA;object passed to the constructor and the &lt;code>verify&lt;/code> method.&#xA;A typical usage for signing is the following:&#xA;&#xA;&lt;p> &lt;code> &lt;pre>&#xA;Signature signingEngine = Signature.getInstance(algorithm,&#xA;provider);&#xA;SignedObject so = new SignedObject(myobject, signingKey,&#xA;signingEngine);&#xA;&lt;/pre> &lt;/code>&#xA;&#xA;&lt;p> A typical usage for verification is the following (having&#xA;received SignedObject &lt;code>so&lt;/code>):&#xA;&#xA;&lt;p> &lt;code> &lt;pre>&#xA;Signature verificationEngine =&#xA;Signature.getInstance(algorithm, provider);&#xA;if (so.verify(publickey, verificationEngine))&#xA;try {&#xA;Object myobj = so.getObject();&#xA;} catch (java.lang.ClassNotFoundException e) {};&#xA;&lt;/pre> &lt;/code>&#xA;&#xA;&lt;p> Several points are worth noting.  First, there is no need to&#xA;initialize the signing or verification engine, as it will be&#xA;re-initialized inside the constructor and the &lt;code>verify&lt;/code>&#xA;method. Secondly, for verification to succeed, the specified&#xA;public key must be the public key corresponding to the private key&#xA;used to generate the SignedObject.&#xA;&#xA;&lt;p> More importantly, for flexibility reasons, the&#xA;constructor and &lt;code>verify&lt;/code> method allow for&#xA;customized signature engines, which can implement signature&#xA;algorithms that are not installed formally as part of a crypto&#xA;provider.  However, it is crucial that the programmer writing the&#xA;verifier code be aware what &lt;code>Signature&lt;/code> engine is being&#xA;used, as its own implementation of the &lt;code>verify&lt;/code> method&#xA;is invoked to verify a signature.  In other words, a malicious&#xA;&lt;code>Signature&lt;/code> may choose to always return true on&#xA;verification in an attempt to bypass a security check.&#xA;&#xA;&lt;p> The signature algorithm can be, among others, the NIST standard&#xA;DSA, using DSA and SHA-1.  The algorithm is specified using the&#xA;same convention as that for signatures. The DSA algorithm using the&#xA;SHA-1 message digest algorithm can be specified, for example, as&#xA;&quot;SHA/DSA&quot; or &quot;SHA-1/DSA&quot; (they are equivalent).  In the case of&#xA;RSA, there are multiple choices for the message digest algorithm,&#xA;so the signing algorithm could be specified as, for example,&#xA;&quot;MD2/RSA&quot;, &quot;MD5/RSA&quot; or &quot;SHA-1/RSA&quot;.  The algorithm name must be&#xA;specified, as there is no default.&#xA;&#xA;&lt;p> The name of the Cryptography Package Provider is designated&#xA;also by the Signature parameter to the constructor and the&#xA;&lt;code>verify&lt;/code> method.  If the provider is not&#xA;specified, the default provider is used.  Each installation can&#xA;be configured to use a particular provider as default.&#xA;&#xA;&lt;p> Potential applications of SignedObject include:&#xA;&lt;ul>&#xA;&lt;li> It can be used&#xA;internally to any Java runtime as an unforgeable authorization&#xA;token -- one that can be passed around without the fear that the&#xA;token can be maliciously modified without being detected.&#xA;&lt;li> It&#xA;can be used to sign and serialize data/object for storage outside&#xA;the Java runtime (e.g., storing critical access control data on&#xA;disk).&#xA;&lt;li> Nested SignedObjects can be used to construct a logical&#xA;sequence of signatures, resembling a chain of authorization and&#xA;delegation.&#xA;&lt;/ul>&#xA;&#xA;@see Signature&#xA;&#xA;@version &#x9;1.43, 12/19/03&#xA;@author Li Gong&#xA;" annotatedElement="fd1450b9-d700-4b64-8029-0f44d9e4dae1"/>
            <interfaceRealization xmi:id="697e9db8-b18e-4592-84ec-8ca7b43783d3" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="fd1450b9-d700-4b64-8029-0f44d9e4dae1" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d09eb81c-9b57-4e66-ae85-d03f3a716fa9" name="KeyFactory">
            <ownedComment xmi:id="f0acb167-b0b9-4660-a1af-031df4235047" body="Key factories are used to convert &lt;I>keys&lt;/I> (opaque&#xA;cryptographic keys of type &lt;code>Key&lt;/code>) into &lt;I>key specifications&lt;/I>&#xA;(transparent representations of the underlying key material), and vice&#xA;versa.&#xA;&#xA;&lt;P> Key factories are bi-directional. That is, they allow you to build an&#xA;opaque key object from a given key specification (key material), or to&#xA;retrieve the underlying key material of a key object in a suitable format.&#xA;&#xA;&lt;P> Multiple compatible key specifications may exist for the same key.&#xA;For example, a DSA public key may be specified using&#xA;&lt;code>DSAPublicKeySpec&lt;/code> or&#xA;&lt;code>X509EncodedKeySpec&lt;/code>. A key factory can be used to translate&#xA;between compatible key specifications.&#xA;&#xA;&lt;P> The following is an example of how to use a key factory in order to&#xA;instantiate a DSA public key from its encoding.&#xA;Assume Alice has received a digital signature from Bob.&#xA;Bob also sent her his public key (in encoded format) to verify&#xA;his signature. Alice then performs the following actions:&#xA;&#xA;&lt;pre>&#xA;X509EncodedKeySpec bobPubKeySpec = new X509EncodedKeySpec(bobEncodedPubKey);&#xA;KeyFactory keyFactory = KeyFactory.getInstance(&quot;DSA&quot;);&#xA;PublicKey bobPubKey = keyFactory.generatePublic(bobPubKeySpec);&#xA;Signature sig = Signature.getInstance(&quot;DSA&quot;);&#xA;sig.initVerify(bobPubKey);&#xA;sig.update(data);&#xA;sig.verify(signature);&#xA;&lt;/pre>&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.32, 05/05/04&#xA;&#xA;@see Key&#xA;@see PublicKey&#xA;@see PrivateKey&#xA;@see java.security.spec.KeySpec&#xA;@see java.security.spec.DSAPublicKeySpec&#xA;@see java.security.spec.X509EncodedKeySpec&#xA;&#xA;@since 1.2&#xA;" annotatedElement="d09eb81c-9b57-4e66-ae85-d03f3a716fa9"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="07e8d460-ecf2-48a3-93a2-4d82d071461a" name="MessageDigest" isAbstract="true">
            <ownedComment xmi:id="4557f4ee-c4a8-4662-9e12-45ff8287013b" body="This MessageDigest class provides applications the functionality of a&#xA;message digest algorithm, such as MD5 or SHA.&#xA;Message digests are secure one-way hash functions that take arbitrary-sized&#xA;data and output a fixed-length hash value.&#xA;&#xA;&lt;p>A MessageDigest object starts out initialized. The data is&#xA;processed through it using the {@link #update(byte) update}&#xA;methods. At any point {@link #reset() reset} can be called&#xA;to reset the digest. Once all the data to be updated has been&#xA;updated, one of the {@link #digest() digest} methods should&#xA;be called to complete the hash computation.&#xA;&#xA;&lt;p>The &lt;code>digest&lt;/code> method can be called once for a given number&#xA;of updates. After &lt;code>digest&lt;/code> has been called, the MessageDigest&#xA;object is reset to its initialized state.&#xA;&#xA;&lt;p>Implementations are free to implement the Cloneable interface.&#xA;Client applications can test cloneability by attempting cloning&#xA;and catching the CloneNotSupportedException: &lt;p>&#xA;&#xA;&lt;pre>&#xA;MessageDigest md = MessageDigest.getInstance(&quot;SHA&quot;);&#xA;&#xA;try {&#xA;md.update(toChapter1);&#xA;MessageDigest tc1 = md.clone();&#xA;byte[] toChapter1Digest = tc1.digest();&#xA;md.update(toChapter2);&#xA;...etc.&#xA;} catch (CloneNotSupportedException cnse) {&#xA;throw new DigestException(&quot;couldn't make digest of partial content&quot;);&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p>Note that if a given implementation is not cloneable, it is&#xA;still possible to compute intermediate digests by instantiating&#xA;several instances, if the number of digests is known in advance.&#xA;&#xA;&lt;p>Note that this class is abstract and extends from&#xA;&lt;code>MessageDigestSpi&lt;/code> for historical reasons.&#xA;Application developers should only take notice of the methods defined in&#xA;this &lt;code>MessageDigest&lt;/code> class; all the methods in&#xA;the superclass are intended for cryptographic service providers who wish to&#xA;supply their own implementations of message digest algorithms.&#xA;&#xA;@author Benjamin Renaud&#xA;&#xA;@version 1.77, 12/19/03&#xA;&#xA;@see DigestInputStream&#xA;@see DigestOutputStream&#xA;" annotatedElement="07e8d460-ecf2-48a3-93a2-4d82d071461a"/>
            <generalization xmi:id="5ac23a37-3467-4978-97e5-cde231fb3943" isSubstitutable="true" general="23b7a3b0-3320-4277-98d5-05f5399b1a3c"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="2f14d8f1-5cf9-4e75-bcdc-f4cf833037bf" name="Delegate" visibility="package">
              <generalization xmi:id="7c55eafd-171f-4be2-a35f-8765a3162856" isSubstitutable="true" general="07e8d460-ecf2-48a3-93a2-4d82d071461a"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="94eda08a-29ea-42ce-8863-b14cdafa3cfd" name="InvalidAlgorithmParameterException">
            <ownedComment xmi:id="41d03d35-0611-45ea-909e-2ca194f447db" body="This is the exception for invalid or inappropriate algorithm parameters.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.14, 12/19/03&#xA;&#xA;@see AlgorithmParameters&#xA;@see java.security.spec.AlgorithmParameterSpec&#xA;&#xA;@since 1.2&#xA;" annotatedElement="94eda08a-29ea-42ce-8863-b14cdafa3cfd"/>
            <generalization xmi:id="89a419d3-9d7c-4f8d-8175-093ed420010d" isSubstitutable="true" general="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="8b2ccfb2-c497-4b3f-92b1-3a2f7b7eb727" name="PrivilegedExceptionAction" isAbstract="true">
            <ownedComment xmi:id="3fe8632f-4bd7-44f0-8c48-7279199029b0" body="A computation to be performed with privileges enabled, that throws one or&#xA;more checked exceptions.  The computation is performed by invoking&#xA;&lt;code>AccessController.doPrivileged&lt;/code> on the&#xA;&lt;code>PrivilegedExceptionAction&lt;/code> object.  This interface is&#xA;used only for computations that throw checked exceptions;&#xA;computations that do not throw&#xA;checked exceptions should use &lt;code>PrivilegedAction&lt;/code> instead.&#xA;&#xA;@see AccessController&#xA;@see AccessController#doPrivileged(PrivilegedExceptionAction)&#xA;@see AccessController#doPrivileged(PrivilegedExceptionAction,&#xA;AccessControlContext)&#xA;@see PrivilegedAction&#xA;" annotatedElement="8b2ccfb2-c497-4b3f-92b1-3a2f7b7eb727"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="e171f9d1-1846-49e4-a1de-6bc162ca3097" name="" parameter="2c3801a1-6a40-42c2-a3d2-6c3378177298">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="2c3801a1-6a40-42c2-a3d2-6c3378177298" parameteredElement="538eb008-dc86-4eb7-aea9-23058370580b">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="538eb008-dc86-4eb7-aea9-23058370580b" name="T" templateParameter="2c3801a1-6a40-42c2-a3d2-6c3378177298"/>
              </ownedParameter>
            </ownedTemplateSignature>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="fd978cdc-faa1-46ec-a8c6-469b92f94cac" name="AccessControlContext" isLeaf="true">
            <ownedComment xmi:id="eecbe7af-858e-4fbb-9c93-36a6d893df6a" body="An AccessControlContext is used to make system resource access decisions&#xA;based on the context it encapsulates.&#xA;&#xA;&lt;p>More specifically, it encapsulates a context and&#xA;has a single method, &lt;code>checkPermission&lt;/code>,&#xA;that is equivalent to the &lt;code>checkPermission&lt;/code> method&#xA;in the AccessController class, with one difference: The AccessControlContext&#xA;&lt;code>checkPermission&lt;/code> method makes access decisions based on the&#xA;context it encapsulates,&#xA;rather than that of the current execution thread.&#xA;&#xA;&lt;p>Thus, the purpose of AccessControlContext is for those situations where&#xA;a security check that should be made within a given context&#xA;actually needs to be done from within a&#xA;&lt;i>different&lt;/i> context (for example, from within a worker thread).&#xA;&#xA;&lt;p> An AccessControlContext is created by calling the&#xA;&lt;code>AccessController.getContext&lt;/code> method.&#xA;The &lt;code>getContext&lt;/code> method takes a &quot;snapshot&quot;&#xA;of the current calling context, and places&#xA;it in an AccessControlContext object, which it returns. A sample call is&#xA;the following:&#xA;&#xA;&lt;pre>&#xA;&#xA;AccessControlContext acc = AccessController.getContext()&#xA;&#xA;&lt;/pre>&#xA;&#xA;&lt;p>&#xA;Code within a different context can subsequently call the&#xA;&lt;code>checkPermission&lt;/code> method on the&#xA;previously-saved AccessControlContext object. A sample call is the&#xA;following:&#xA;&#xA;&lt;pre>&#xA;&#xA;acc.checkPermission(permission)&#xA;&#xA;&lt;/pre>&#xA;&#xA;@see AccessController&#xA;&#xA;@author Roland Schemers&#xA;" annotatedElement="fd978cdc-faa1-46ec-a8c6-469b92f94cac"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="89086177-cb0a-4c16-8b2c-11f9f477e479" name="ProviderException">
            <ownedComment xmi:id="59a5dc97-e5df-4980-9372-ecd58b69e325" body="A runtime exception for Provider exceptions (such as&#xA;misconfiguration errors or unrecoverable internal errors),&#xA;which may be subclassed by Providers to&#xA;throw specialized, provider-specific runtime errors.&#xA;&#xA;@version 1.16, 12/19/03&#xA;@author Benjamin Renaud&#xA;" annotatedElement="89086177-cb0a-4c16-8b2c-11f9f477e479"/>
            <generalization xmi:id="0dd4b93b-7e50-483b-9be6-5637583ad479" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3d2fb7f3-bf51-409a-b19b-e504a32ba53b" name="SecureClassLoader">
            <ownedComment xmi:id="89ddf0a6-73b4-4f45-9330-063086b19442" body="This class extends ClassLoader with additional support for defining&#xA;classes with an associated code source and permissions which are&#xA;retrieved by the system policy by default.&#xA;&#xA;@version 1.85, 05/05/04&#xA;@author  Li Gong&#xA;@author  Roland Schemers&#xA;" annotatedElement="3d2fb7f3-bf51-409a-b19b-e504a32ba53b"/>
            <generalization xmi:id="8f3aca1b-a076-465d-8da7-4997bfec77cc" isSubstitutable="true" general="3f933483-0042-4439-b6a6-958ad9d81d2d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="adf02c87-cdad-45df-87f7-b0a6423063fa" name="SecureRandom">
            <ownedComment xmi:id="6bdef164-cb39-4dab-9a8a-9f89545e4d8d" body="&lt;p>This class provides a cryptographically strong random number&#xA;generator (RNG).  Many implementations are in the form of a pseudo-random&#xA;number generator (PRNG), which means they use a deterministic algorithm&#xA;to produce a pseudo-random sequence from a true random seed.&#xA;Other implementations may produce true random numbers&#xA;and yet others may use a combination of both techniques.&#xA;&#xA;&lt;p>A cryptographically strong random number&#xA;minimally complies with the statistical random number generator tests&#xA;specified in &lt;a href=&quot;http://csrc.nist.gov/cryptval/140-2.htm&quot;>&#xA;&lt;i>FIPS 140-2, Security Requirements for Cryptographic Modules&lt;/i>&lt;/a>,&#xA;section 4.9.1.&#xA;Additionally, SecureRandom must produce non-deterministic&#xA;output and therefore it is required that the seed material be unpredictable&#xA;and that output of SecureRandom be cryptographically strong sequences as&#xA;described in &lt;a href=&quot;http://www.ietf.org/rfc/rfc1750.txt&quot;>&#xA;&lt;i>RFC 1750: Randomness Recommendations for Security&lt;/i>&lt;/a>.&#xA;&#xA;&lt;p>Like other algorithm-based classes in Java Security, SecureRandom&#xA;provides implementation-independent algorithms, whereby a caller&#xA;(application code) requests a particular RNG algorithm&#xA;and is handed back a SecureRandom object for that algorithm. It is&#xA;also possible, if desired, to request a particular algorithm from a&#xA;particular provider. See the &lt;code>getInstance&lt;/code> methods.&#xA;&#xA;&lt;p>Thus, there are two ways to request a SecureRandom object: by&#xA;specifying either just an algorithm name, or both an algorithm name&#xA;and a package provider.&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>If just an algorithm name is specified, as in:&#xA;&lt;pre>&#xA;SecureRandom random = SecureRandom.getInstance(&quot;SHA1PRNG&quot;);&#xA;&lt;/pre>&#xA;the system will determine if there is an implementation of the algorithm&#xA;requested available in the environment, and if there is more than one, if&#xA;there is a preferred one.&lt;p>&#xA;&#xA;&lt;li>If both an algorithm name and a package provider are specified, as in:&#xA;&lt;pre>&#xA;SecureRandom random = SecureRandom.getInstance(&quot;SHA1PRNG&quot;, &quot;SUN&quot;);&#xA;&lt;/pre>&#xA;the system will determine if there is an implementation of the&#xA;algorithm in the package requested, and throw an exception if there&#xA;is not.&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p>The SecureRandom implementation attempts to completely&#xA;randomize the internal state of the generator itself unless&#xA;the caller follows the call to a &lt;code>getInstance&lt;/code> method&#xA;with a call to the &lt;code>setSeed&lt;/code> method:&#xA;&lt;pre>&#xA;SecureRandom random = SecureRandom.getInstance(&quot;SHA1PRNG&quot;);&#xA;random.setSeed(seed);&#xA;&lt;/pre>&#xA;&#xA;&lt;p>After the caller obtains the SecureRandom object from the&#xA;&lt;code>getInstance&lt;/code> call, it can call &lt;code>nextBytes&lt;/code>&#xA;to generate random bytes:&#xA;&lt;pre>&#xA;byte bytes[] = new byte[20];&#xA;random.nextBytes(bytes);&#xA;&lt;/pre>&#xA;&#xA;&lt;p>The caller may also invoke the &lt;code>generateSeed&lt;/code> method&#xA;to generate a given number of seed bytes (to seed other random number&#xA;generators, for example):&#xA;&lt;pre>&#xA;byte seed[] = random.generateSeed(20);&#xA;&lt;/pre>&#xA;&#xA;@see java.security.SecureRandomSpi&#xA;@see java.util.Random&#xA;&#xA;@version 1.47, 12/19/03&#xA;@author Benjamin Renaud&#xA;@author Josh Bloch&#xA;" annotatedElement="adf02c87-cdad-45df-87f7-b0a6423063fa"/>
            <generalization xmi:id="fafe82ea-0111-484a-abd0-0a10c8baf1a4" isSubstitutable="true" general="f866a8c6-9a8f-4eee-b100-ff87e5fdb430"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="41a20365-6096-4cde-9b30-6ee027793bec" name="InvalidParameterException">
            <ownedComment xmi:id="67a29d6b-6482-44f5-9c63-2c67f77eb589" body="This exception, designed for use by the JCA/JCE engine classes,&#xA;is thrown when an invalid parameter is passed&#xA;to a method.&#xA;&#xA;@author Benjamin Renaud&#xA;@version 1.20, 03/12/19&#xA;" annotatedElement="41a20365-6096-4cde-9b30-6ee027793bec"/>
            <generalization xmi:id="b645f086-8f1d-49f7-82ed-6b32d90d48c8" isSubstitutable="true" general="015b8627-f5b5-477f-8717-4d7c48152015"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2b221bc8-5feb-4199-b0df-22bcafd455a8" name="SecurityPermission" isLeaf="true">
            <ownedComment xmi:id="5064d8e5-83b7-4d58-adf7-3135ebbedd1f" body="This class is for security permissions.&#xA;A SecurityPermission contains a name (also referred to as a &quot;target name&quot;)&#xA;but no actions list; you either have the named permission&#xA;or you don't.&#xA;&lt;P>&#xA;The target name is the name of a security configuration parameter (see below).&#xA;Currently the SecurityPermission object is used to guard access&#xA;to the Policy, Security, Provider, Signer, and Identity&#xA;objects.&#xA;&lt;P>&#xA;The following table lists all the possible SecurityPermission target names,&#xA;and for each provides a description of what the permission allows&#xA;and a discussion of the risks of granting code the permission.&#xA;&lt;P>&#xA;&#xA;&lt;table border=1 cellpadding=5 summary=&quot;target name,what the permission allows, and associated risks&quot;>&#xA;&lt;tr>&#xA;&lt;th>Permission Target Name&lt;/th>&#xA;&lt;th>What the Permission Allows&lt;/th>&#xA;&lt;th>Risks of Allowing this Permission&lt;/th>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>createAccessControlContext&lt;/td>&#xA;&lt;td>Creation of an AccessControlContext&lt;/td>&#xA;&lt;td>This allows someone to instantiate an AccessControlContext&#xA;with a &lt;code>DomainCombiner&lt;/code>.  Since DomainCombiners are given&#xA;a reference to the ProtectionDomains currently on the stack,&#xA;this could potentially lead to a privacy leak if the DomainCombiner&#xA;is malicious.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>getDomainCombiner&lt;/td>&#xA;&lt;td>Retrieval of an AccessControlContext's DomainCombiner&lt;/td>&#xA;&lt;td>This allows someone to retrieve an AccessControlContext's&#xA;&lt;code>DomainCombiner&lt;/code>.  Since DomainCombiners may contain&#xA;sensitive information, this could potentially lead to a privacy leak.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>getPolicy&lt;/td>&#xA;&lt;td>Retrieval of the system-wide security policy (specifically, of the&#xA;currently-installed Policy object)&lt;/td>&#xA;&lt;td>This allows someone to query the policy via the&#xA;&lt;code>getPermissions&lt;/code> call,&#xA;which discloses which permissions would be granted to a given CodeSource.&#xA;While revealing the policy does not compromise the security of&#xA;the system, it does provide malicious code with additional information&#xA;which it may use to better aim an attack. It is wise&#xA;not to divulge more information than necessary.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>setPolicy&lt;/td>&#xA;&lt;td>Setting of the system-wide security policy (specifically,&#xA;the Policy object)&lt;/td>&#xA;&lt;td>Granting this permission is extremely dangerous, as malicious&#xA;code may grant itself all the necessary permissions it needs&#xA;to successfully mount an attack on the system.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>getProperty.{key}&lt;/td>&#xA;&lt;td>Retrieval of the security property with the specified key&lt;/td>&#xA;&lt;td>Depending on the particular key for which access has&#xA;been granted, the code may have access to the list of security&#xA;providers, as well as the location of the system-wide and user&#xA;security policies.  while revealing this information does not&#xA;compromise the security of the system, it does provide malicious&#xA;code with additional information which it may use to better aim&#xA;an attack.&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>setProperty.{key}&lt;/td>&#xA;&lt;td>Setting of the security property with the specified key&lt;/td>&#xA;&lt;td>This could include setting a security provider or defining&#xA;the location of the the system-wide security policy.  Malicious&#xA;code that has permission to set a new security provider may&#xA;set a rogue provider that steals confidential information such&#xA;as cryptographic private keys. In addition, malicious code with&#xA;permission to set the location of the system-wide security policy&#xA;may point it to a security policy that grants the attacker&#xA;all the necessary permissions it requires to successfully mount&#xA;an attack on the system.&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>insertProvider.{provider name}&lt;/td>&#xA;&lt;td>Addition of a new provider, with the specified name&lt;/td>&#xA;&lt;td>This would allow somebody to introduce a possibly&#xA;malicious provider (e.g., one that discloses the private keys passed&#xA;to it) as the highest-priority provider. This would be possible&#xA;because the Security object (which manages the installed providers)&#xA;currently does not check the integrity or authenticity of a provider&#xA;before attaching it.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>removeProvider.{provider name}&lt;/td>&#xA;&lt;td>Removal of the specified provider&lt;/td>&#xA;&lt;td>This may change the behavior or disable execution of other&#xA;parts of the program. If a provider subsequently requested by the&#xA;program has been removed, execution may fail. Also, if the removed&#xA;provider is not explicitly requested by the rest of the program, but&#xA;it would normally be the provider chosen when a cryptography service&#xA;is requested (due to its previous order in the list of providers),&#xA;a different provider will be chosen instead, or no suitable provider&#xA;will be found, thereby resulting in program failure.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>setSystemScope&lt;/td>&#xA;&lt;td>Setting of the system identity scope&lt;/td>&#xA;&lt;td>This would allow an attacker to configure the system identity scope with&#xA;certificates that should not be trusted, thereby granting applet or&#xA;application code signed with those certificates privileges that&#xA;would have been denied by the system's original identity scope&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>setIdentityPublicKey&lt;/td>&#xA;&lt;td>Setting of the public key for an Identity&lt;/td>&#xA;&lt;td>If the identity is marked as &quot;trusted&quot;, this allows an attacker to&#xA;introduce a different public key (e.g., its own) that is not trusted&#xA;by the system's identity scope, thereby granting applet or&#xA;application code signed with that public key privileges that&#xA;would have been denied otherwise.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>setIdentityInfo&lt;/td>&#xA;&lt;td>Setting of a general information string for an Identity&lt;/td>&#xA;&lt;td>This allows attackers to set the general description for&#xA;an identity.  This may trick applications into using a different&#xA;identity than intended or may prevent applications from finding a&#xA;particular identity.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>addIdentityCertificate&lt;/td>&#xA;&lt;td>Addition of a certificate for an Identity&lt;/td>&#xA;&lt;td>This allows attackers to set a certificate for&#xA;an identity's public key.  This is dangerous because it affects&#xA;the trust relationship across the system. This public key suddenly&#xA;becomes trusted to a wider audience than it otherwise would be.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>removeIdentityCertificate&lt;/td>&#xA;&lt;td>Removal of a certificate for an Identity&lt;/td>&#xA;&lt;td>This allows attackers to remove a certificate for&#xA;an identity's public key. This is dangerous because it affects&#xA;the trust relationship across the system. This public key suddenly&#xA;becomes considered less trustworthy than it otherwise would be.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>printIdentity&lt;/td>&#xA;&lt;td>Viewing the name of a principal&#xA;and optionally the scope in which it is used, and whether&#xA;or not it is considered &quot;trusted&quot; in that scope&lt;/td>&#xA;&lt;td>The scope that is printed out may be a filename, in which case&#xA;it may convey local system information. For example, here's a sample&#xA;printout of an identity named &quot;carol&quot;, who is&#xA;marked not trusted in the user's identity database:&lt;br>&#xA;carol[/home/luehe/identitydb.obj][not trusted]&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>clearProviderProperties.{provider name}&lt;/td>&#xA;&lt;td>&quot;Clearing&quot; of a Provider so that it no longer contains the properties&#xA;used to look up services implemented by the provider&lt;/td>&#xA;&lt;td>This disables the lookup of services implemented by the provider.&#xA;This may thus change the behavior or disable execution of other&#xA;parts of the program that would normally utilize the Provider, as&#xA;described under the &quot;removeProvider.{provider name}&quot; permission.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>putProviderProperty.{provider name}&lt;/td>&#xA;&lt;td>Setting of properties for the specified Provider&lt;/td>&#xA;&lt;td>The provider properties each specify the name and location&#xA;of a particular service implemented by the provider. By granting&#xA;this permission, you let code replace the service specification&#xA;with another one, thereby specifying a different implementation.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>removeProviderProperty.{provider name}&lt;/td>&#xA;&lt;td>Removal of properties from the specified Provider&lt;/td>&#xA;&lt;td>This disables the lookup of services implemented by the&#xA;provider. They are no longer accessible due to removal of the properties&#xA;specifying their names and locations. This&#xA;may change the behavior or disable execution of other&#xA;parts of the program that would normally utilize the Provider, as&#xA;described under the &quot;removeProvider.{provider name}&quot; permission.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>getSignerPrivateKey&lt;/td>&#xA;&lt;td>Retrieval of a Signer's private key&lt;/td>&#xA;&lt;td>It is very dangerous to allow access to a private key; private&#xA;keys are supposed to be kept secret. Otherwise, code can use the&#xA;private key to sign various files and claim the signature came from&#xA;the Signer.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>setSignerKeyPair&lt;/td>&#xA;&lt;td>Setting of the key pair (public key and private key) for a Signer&lt;/td>&#xA;&lt;td>This would allow an attacker to replace somebody else's (the &quot;target's&quot;)&#xA;keypair with a possibly weaker keypair (e.g., a keypair of a smaller&#xA;keysize).  This also would allow the attacker to listen in on encrypted&#xA;communication between the target and its peers. The target's peers&#xA;might wrap an encryption session key under the target's &quot;new&quot; public&#xA;key, which would allow the attacker (who possesses the corresponding&#xA;private key) to unwrap the session key and decipher the communication&#xA;data encrypted under that session key.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;/table>&#xA;&#xA;@see java.security.BasicPermission&#xA;@see java.security.Permission&#xA;@see java.security.Permissions&#xA;@see java.security.PermissionCollection&#xA;@see java.lang.SecurityManager&#xA;&#xA;@version 1.27 03/12/19&#xA;&#xA;@author Marianne Mueller&#xA;@author Roland Schemers&#xA;" annotatedElement="2b221bc8-5feb-4199-b0df-22bcafd455a8"/>
            <generalization xmi:id="e52d6585-e357-4780-b698-2595a7ef6eb0" isSubstitutable="true" general="4831e368-c670-40b4-87bd-a8a910a528fa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d593e2de-fb63-40b2-b17e-066fb8a62a30" name="UnrecoverableKeyException">
            <ownedComment xmi:id="e8a9a21e-a5e6-449b-99fa-d2b364496de0" body="This exception is thrown if a key in the keystore cannot be recovered.&#xA;&#xA;@version 1.10, 12/19/03&#xA;&#xA;@since 1.2&#xA;" annotatedElement="d593e2de-fb63-40b2-b17e-066fb8a62a30"/>
            <generalization xmi:id="946b0177-1267-4ce7-9b85-98ee6c5b5498" isSubstitutable="true" general="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="5646b95f-c8d5-4f70-8c2b-9996e66b63ce" name="PrivilegedAction" isAbstract="true">
            <ownedComment xmi:id="9af35bed-d963-40c2-9e00-b59266353688" body="A computation to be performed with privileges enabled.  The computation is&#xA;performed by invoking &lt;code>AccessController.doPrivileged&lt;/code> on the&#xA;&lt;code>PrivilegedAction&lt;/code> object.  This interface is used only for&#xA;computations that do not throw checked exceptions; computations that&#xA;throw checked exceptions must use &lt;code>PrivilegedExceptionAction&lt;/code>&#xA;instead.&#xA;&#xA;@see AccessController&#xA;@see AccessController#doPrivileged(PrivilegedAction)&#xA;@see PrivilegedExceptionAction&#xA;" annotatedElement="5646b95f-c8d5-4f70-8c2b-9996e66b63ce"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="e4a0fe85-d095-45ab-9524-89cd59c0c082" name="" parameter="e31c4b70-257f-4e6c-902e-d50caf67ff12">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="e31c4b70-257f-4e6c-902e-d50caf67ff12" parameteredElement="a0c85ef3-5c40-4cd8-842b-8883906a77e9">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="a0c85ef3-5c40-4cd8-842b-8883906a77e9" name="T" templateParameter="e31c4b70-257f-4e6c-902e-d50caf67ff12"/>
              </ownedParameter>
            </ownedTemplateSignature>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9bf0ef1c-5877-4732-9c22-2fd11c574f2c" name="Provider" isAbstract="true">
            <ownedComment xmi:id="01a60bf7-4c70-4578-8eca-fcde39855610" body="This class represents a &quot;provider&quot; for the&#xA;Java Security API, where a provider implements some or all parts of&#xA;Java Security. Services that a provider may implement include:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>Algorithms (such as DSA, RSA, MD5 or SHA-1).&#xA;&#xA;&lt;li>Key generation, conversion, and management facilities (such as for&#xA;algorithm-specific keys).&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p>Each provider has a name and a version number, and is configured&#xA;in each runtime it is installed in.&#xA;&#xA;&lt;p>See &lt;a href =&#xA;&quot;../../../guide/security/CryptoSpec.html#Provider&quot;>The Provider Class&lt;/a>&#xA;in the &quot;Java Cryptography Architecture API Specification &amp; Reference&quot;&#xA;for information about how a particular type of provider, the&#xA;cryptographic service provider, works and is installed. However,&#xA;please note that a provider can be used to implement any security&#xA;service in Java that uses a pluggable architecture with a choice&#xA;of implementations that fit underneath.&#xA;&#xA;&lt;p>Some provider implementations may encounter unrecoverable internal&#xA;errors during their operation, for example a failure to communicate with a&#xA;security token. A {@link ProviderException} should be used to indicate&#xA;such errors.&#xA;&#xA;&lt;p>The service type &lt;code>Provider&lt;/code> is reserved for use by the&#xA;security framework. Services of this type cannot be added, removed,&#xA;or modified by applications.&#xA;The following attributes are automatically placed in each Provider object:&#xA;&lt;table cellspacing=4>&#xA;&lt;tr>&lt;th>Name&lt;/th>&lt;th>Value&lt;/th>&#xA;&lt;tr>&lt;td>&lt;code>Provider.id name&lt;/code>&lt;/td>&#xA;&lt;td>&lt;code>String.valueOf(provider.getName())&lt;/code>&lt;/td>&#xA;&lt;tr>&lt;td>&lt;code>Provider.id version&lt;/code>&lt;/td>&#xA;&lt;td>&lt;code>String.valueOf(provider.getVersion())&lt;/code>&lt;/td>&#xA;&lt;tr>&lt;td>&lt;code>Provider.id info&lt;/code>&lt;/td>&#xA;&lt;td>&lt;code>String.valueOf(provider.getInfo())&lt;/code>&lt;/td>&#xA;&lt;tr>&lt;td>&lt;code>Provider.id className&lt;/code>&lt;/td>&#xA;&lt;td>&lt;code>provider.getClass().getName()&lt;/code>&lt;/td>&#xA;&lt;/table>&#xA;&#xA;@version 1.61, 05/05/04&#xA;@author Benjamin Renaud&#xA;@author Andreas Sterbenz&#xA;" annotatedElement="9bf0ef1c-5877-4732-9c22-2fd11c574f2c"/>
            <generalization xmi:id="c4bca211-e414-40be-ae3e-e98ce631040f" isSubstitutable="true" general="9564dcd8-2477-4f2a-9aa7-acbab5b7de79"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="09b5b28c-22ea-4fe6-a9b8-169c11c2bed6" name="ServiceKey" visibility="private"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c6aaf25d-d9fa-4ecc-b3c6-f47445c9a5e6" name="Service">
              <ownedComment xmi:id="bf610f1e-f08f-4869-af2d-5c50a4420c3e" body="The description of a security service. It encapsulates the properties&#xA;of a service and contains a factory method to obtain new implementation&#xA;instances of this service.&#xA;&#xA;&lt;p>Each service has a provider that offers the service, a type,&#xA;an algorithm name, and the name of the class that implements the&#xA;service. Optionally, it also includes a list of alternate algorithm&#xA;names for this service (aliases) and attributes, which are a map of&#xA;(name, value) String pairs.&#xA;&#xA;&lt;p>This class defines the methods {@link #supportsParameter&#xA;supportsParameter()} and {@link #newInstance newInstance()}&#xA;which are used by the Java security framework when it searches for&#xA;suitable services and instantes them. The valid arguments to those&#xA;methods depend on the type of service. For the service types defined&#xA;within J2SE, see the&#xA;&lt;a href=&quot;../../../guide/security/CryptoSpec.html&quot;>&#xA;Java Cryptography Architecture API Specification &amp; Reference &lt;/a>&#xA;for the valid values.&#xA;Note that components outside of J2SE can define additional types of&#xA;services and their behavior.&#xA;&#xA;&lt;p>Instances of this class are immutable.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="c6aaf25d-d9fa-4ecc-b3c6-f47445c9a5e6"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="19c8c10e-c3c6-43d1-918c-88f5aebfb4d6" name="PublicKey" isAbstract="true">
            <ownedComment xmi:id="94f06490-0543-4150-877d-10ca74ec0542" body="&lt;p>A public key. This interface contains no methods or constants.&#xA;It merely serves to group (and provide type safety for) all public key&#xA;interfaces.&#xA;&#xA;Note: The specialized public key interfaces extend this interface.&#xA;See, for example, the DSAPublicKey interface in&#xA;&lt;code>java.security.interfaces&lt;/code>.&#xA;&#xA;@see Key&#xA;@see PrivateKey&#xA;@see Certificate&#xA;@see Signature#initVerify&#xA;@see java.security.interfaces.DSAPublicKey&#xA;@see java.security.interfaces.RSAPublicKey&#xA;&#xA;@version 1.32 03/12/19&#xA;" annotatedElement="19c8c10e-c3c6-43d1-918c-88f5aebfb4d6"/>
            <generalization xmi:id="98e40745-21e2-4e55-b596-556de3829ed5" isSubstitutable="true" general="fe3665e0-00d8-4870-aaea-298b20a40025"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7902076f-9f68-439e-98a5-9035ed9c990b" name="Identity" clientDependency="c5d61686-8147-458d-abce-fa2eb33559f8 6fda933a-03a2-4512-9f9f-d2cdd504737e" isAbstract="true">
            <ownedComment xmi:id="1d7153c5-59e8-4a6d-bd58-b3062d9d77d2" body="&lt;p>This class represents identities: real-world objects such as people,&#xA;companies or organizations whose identities can be authenticated using&#xA;their public keys. Identities may also be more abstract (or concrete)&#xA;constructs, such as daemon threads or smart cards.&#xA;&#xA;&lt;p>All Identity objects have a name and a public key. Names are&#xA;immutable. Identities may also be scoped. That is, if an Identity is&#xA;specified to have a particular scope, then the name and public&#xA;key of the Identity are unique within that scope.&#xA;&#xA;&lt;p>An Identity also has a set of certificates (all certifying its own&#xA;public key). The Principal names specified in these certificates need&#xA;not be the same, only the key.&#xA;&#xA;&lt;p>An Identity can be subclassed, to include postal and email addresses,&#xA;telephone numbers, images of faces and logos, and so on.&#xA;&#xA;@see IdentityScope&#xA;@see Signer&#xA;@see Principal&#xA;&#xA;@version 1.61&#xA;@author Benjamin Renaud&#xA;@deprecated This class is no longer used. Its functionality has been&#xA;replaced by &lt;code>java.security.KeyStore&lt;/code>, the&#xA;&lt;code>java.security.cert&lt;/code> package, and&#xA;&lt;code>java.security.Principal&lt;/code>.&#xA;" annotatedElement="7902076f-9f68-439e-98a5-9035ed9c990b"/>
            <interfaceRealization xmi:id="c5d61686-8147-458d-abce-fa2eb33559f8" name="" supplier="516530d1-1bf1-40f1-8619-f08f8811875d" client="7902076f-9f68-439e-98a5-9035ed9c990b" contract="516530d1-1bf1-40f1-8619-f08f8811875d"/>
            <interfaceRealization xmi:id="6fda933a-03a2-4512-9f9f-d2cdd504737e" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="7902076f-9f68-439e-98a5-9035ed9c990b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="72dab376-628a-40d9-8079-5a3e8cdc7cbe" name="PrivilegedActionException">
            <ownedComment xmi:id="1a58ba7b-d37f-4a69-a53b-59b2eef5d2a5" body="This exception is thrown by&#xA;&lt;code>doPrivileged(PrivilegedExceptionAction)&lt;/code> and&#xA;&lt;code>doPrivileged(PrivilegedExceptionAction,&#xA;AccessControlContext context)&lt;/code> to indicate&#xA;that the action being performed threw a checked exception.  The exception&#xA;thrown by the action can be obtained by calling the&#xA;&lt;code>getException&lt;/code> method.  In effect, an&#xA;&lt;code>PrivilegedActionException&lt;/code> is a &quot;wrapper&quot;&#xA;for an exception thrown by a privileged action.&#xA;&#xA;&lt;p>As of release 1.4, this exception has been retrofitted to conform to&#xA;the general purpose exception-chaining mechanism.  The &quot;exception thrown&#xA;by the privileged computation&quot; that is provided at construction time and&#xA;accessed via the {@link #getException()} method is now known as the&#xA;&lt;i>cause&lt;/i>, and may be accessed via the {@link Throwable#getCause()}&#xA;method, as well as the aforementioned &quot;legacy method.&quot;&#xA;&#xA;@see PrivilegedExceptionAction&#xA;@see AccessController#doPrivileged(PrivilegedExceptionAction)&#xA;@see AccessController#doPrivileged(PrivilegedExceptionAction,AccessControlContext)&#xA;" annotatedElement="72dab376-628a-40d9-8079-5a3e8cdc7cbe"/>
            <generalization xmi:id="4e410da6-8328-458b-a788-0a17eda4ac89" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="528e6ee9-bd4d-433a-b08d-a8e30fb7d9c7" name="PermissionCollection" clientDependency="e235c99b-feff-4e9d-9ab5-6989347c4f97" isAbstract="true">
            <ownedComment xmi:id="382d335e-ecee-4bcf-bf90-70d3c56a75d1" body="Abstract class representing a collection of Permission objects.&#xA;&#xA;&lt;p>With a PermissionCollection, you can:&#xA;&lt;UL>&#xA;&lt;LI> add a permission to the collection using the &lt;code>add&lt;/code> method.&#xA;&lt;LI> check to see if a particular permission is implied in the&#xA;collection, using the &lt;code>implies&lt;/code> method.&#xA;&lt;LI> enumerate all the permissions, using the &lt;code>elements&lt;/code> method.&#xA;&lt;/UL>&#xA;&lt;P>&#xA;&#xA;&lt;p>When it is desirable to group together a number of Permission objects&#xA;of the same type, the &lt;code>newPermissionCollection&lt;/code> method on that&#xA;particular type of Permission object should first be called. The default&#xA;behavior (from the Permission class) is to simply return null.&#xA;Subclasses of class Permission override the method if they need to store&#xA;their permissions in a particular PermissionCollection object in order&#xA;to provide the correct semantics when the&#xA;&lt;code>PermissionCollection.implies&lt;/code> method is called.&#xA;If a non-null value is returned, that PermissionCollection must be used.&#xA;If null is returned, then the caller of &lt;code>newPermissionCollection&lt;/code>&#xA;is free to store permissions of the&#xA;given type in any PermissionCollection they choose&#xA;(one that uses a Hashtable, one that uses a Vector, etc).&#xA;&#xA;&lt;p>The PermissionCollection returned by the&#xA;&lt;code>Permission.newPermissionCollection&lt;/code>&#xA;method is a homogeneous collection, which stores only Permission objects&#xA;for a given Permission type.  A PermissionCollection may also be&#xA;heterogeneous.  For example, Permissions is a PermissionCollection&#xA;subclass that represents a collection of PermissionCollections.&#xA;That is, its members are each a homogeneous PermissionCollection.&#xA;For example, a Permissions object might have a FilePermissionCollection&#xA;for all the FilePermission objects, a SocketPermissionCollection for all the&#xA;SocketPermission objects, and so on. Its &lt;code>add&lt;/code> method adds a&#xA;permission to the appropriate collection.&#xA;&#xA;&lt;p>Whenever a permission is added to a heterogeneous PermissionCollection&#xA;such as Permissions, and the PermissionCollection doesn't yet contain a&#xA;PermissionCollection of the specified permission's type, the&#xA;PermissionCollection should call&#xA;the &lt;code>newPermissionCollection&lt;/code> method on the permission's class&#xA;to see if it requires a special PermissionCollection. If&#xA;&lt;code>newPermissionCollection&lt;/code>&#xA;returns null, the PermissionCollection&#xA;is free to store the permission in any type of PermissionCollection it&#xA;desires (one using a Hashtable, one using a Vector, etc.). For example,&#xA;the Permissions object uses a default PermissionCollection implementation&#xA;that stores the permission objects in a Hashtable.&#xA;&#xA;&lt;p> Subclass implementations of PermissionCollection should assume&#xA;that they may be called simultaneously from multiple threads,&#xA;and therefore should be synchronized properly.  Furthermore,&#xA;Enumerations returned via the &lt;code>elements&lt;/code> method are&#xA;not &lt;em>fail-fast&lt;/em>.  Modifications to a collection should not be&#xA;performed while enumerating over that collection.&#xA;&#xA;@see Permission&#xA;@see Permissions&#xA;&#xA;@version 1.35 04/05/05&#xA;&#xA;@author Roland Schemers&#xA;" annotatedElement="528e6ee9-bd4d-433a-b08d-a8e30fb7d9c7"/>
            <interfaceRealization xmi:id="e235c99b-feff-4e9d-9ab5-6989347c4f97" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="528e6ee9-bd4d-433a-b08d-a8e30fb7d9c7" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="32b86a83-cfcf-42be-baa2-68c6ed10a41b" name="DomainCombiner" isAbstract="true">
            <ownedComment xmi:id="8d75efa4-39d5-4111-b26d-bdbac4988849" body="A &lt;code>DomainCombiner&lt;/code> provides a means to dynamically&#xA;update the ProtectionDomains associated with the current&#xA;&lt;code>AccessControlContext&lt;/code>.&#xA;&#xA;&lt;p> A &lt;code>DomainCombiner&lt;/code> is passed as a parameter to the&#xA;appropriate constructor for &lt;code>AccessControlContext&lt;/code>.&#xA;The newly constructed context is then passed to the&#xA;&lt;code>AccessController.doPrivileged(..., context)&lt;/code> method&#xA;to bind the provided context (and associated &lt;code>DomainCombiner&lt;/code>)&#xA;with the current execution Thread.  Subsequent calls to&#xA;&lt;code>AccessController.getContext&lt;/code> or&#xA;&lt;code>AccessController.checkPermission&lt;/code>&#xA;cause the &lt;code>DomainCombiner.combine&lt;/code> to get invoked.&#xA;&#xA;&lt;p> The combine method takes two arguments.  The first argument represents&#xA;an array of ProtectionDomains from the current execution Thread,&#xA;since the most recent call to &lt;code>AccessController.doPrivileged&lt;/code>.&#xA;If no call to doPrivileged was made, then the first argument will contain&#xA;all the ProtectionDomains from the current execution Thread.&#xA;The second argument represents an array of inherited ProtectionDomains,&#xA;which may be &lt;code>null&lt;/code>.  ProtectionDomains may be inherited&#xA;from a parent Thread, or from a privileged context.  If no call to&#xA;doPrivileged was made, then the second argument will contain the&#xA;ProtectionDomains inherited from the parent Thread.  If one or more calls&#xA;to doPrivileged were made, and the most recent call was to&#xA;doPrivileged(action, context), then the second argument will contain the&#xA;ProtectionDomains from the privileged context.  If the most recent call&#xA;was to doPrivileged(action), then there is no privileged context,&#xA;and the second argument will be &lt;code>null&lt;/code>.&#xA;&#xA;&lt;p> The &lt;code>combine&lt;/code> method investigates the two input arrays&#xA;of ProtectionDomains and returns a single array containing the updated&#xA;ProtectionDomains.  In the simplest case, the &lt;code>combine&lt;/code>&#xA;method merges the two stacks into one.  In more complex cases,&#xA;the &lt;code>combine&lt;/code> method returns a modified&#xA;stack of ProtectionDomains.  The modification may have added new&#xA;ProtectionDomains, removed certain ProtectionDomains, or simply&#xA;updated existing ProtectionDomains.  Re-ordering and other optimizations&#xA;to the ProtectionDomains are also permitted.  Typically the&#xA;&lt;code>combine&lt;/code> method bases its updates on the information&#xA;encapsulated in the &lt;code>DomainCombiner&lt;/code>.&#xA;&#xA;&lt;p> After the &lt;code>AccessController.getContext&lt;/code> method&#xA;receives the combined stack of ProtectionDomains back from&#xA;the &lt;code>DomainCombiner&lt;/code>, it returns a new&#xA;AccessControlContext that has both the combined ProtectionDomains&#xA;as well as the &lt;code>DomainCombiner&lt;/code>.&#xA;&#xA;@see AccessController&#xA;@see AccessControlContext&#xA;@version 1.7, 12/19/03&#xA;" annotatedElement="32b86a83-cfcf-42be-baa2-68c6ed10a41b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b2f2c590-82c9-4600-9789-4aeebbb9e95c" name="KeyManagementException">
            <ownedComment xmi:id="9b3f6338-4fde-4f1f-9365-92323a353aa0" body="This is the general key management exception for all operations&#xA;dealing with key management. Examples of subclasses of&#xA;KeyManagementException that developers might create for&#xA;giving more detailed information could include:&#xA;&#xA;&lt;ul>&#xA;&lt;li>KeyIDConflictException&#xA;&lt;li>KeyAuthorizationFailureException&#xA;&lt;li>ExpiredKeyException&#xA;&lt;/ul>&#xA;&#xA;@version 1.18 03/12/19&#xA;@author Benjamin Renaud&#xA;&#xA;@see Key&#xA;@see KeyException&#xA;" annotatedElement="b2f2c590-82c9-4600-9789-4aeebbb9e95c"/>
            <generalization xmi:id="991be91a-aa72-4fad-bdc5-3108f3bd3eec" isSubstitutable="true" general="9dfa5238-222b-4a84-bf32-2fe4cf9b8487"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7330b57b-c99c-4eb1-8261-c79ed3dad5d8" name="SignatureSpi" isAbstract="true">
            <ownedComment xmi:id="e8f38c1d-fee5-45ae-8cd4-51555c1e5a95" body="This class defines the &lt;i>Service Provider Interface&lt;/i> (&lt;b>SPI&lt;/b>)&#xA;for the &lt;code>Signature&lt;/code> class, which is used to provide the&#xA;functionality of a digital signature algorithm. Digital signatures are used&#xA;for authentication and integrity assurance of digital data.&#xA;.&#xA;&lt;p> All the abstract methods in this class must be implemented by each&#xA;cryptographic service provider who wishes to supply the implementation&#xA;of a particular signature algorithm.&#xA;&#xA;@author Benjamin Renaud&#xA;&#xA;@version 1.24, 05/18/04&#xA;&#xA;@see Signature&#xA;" annotatedElement="7330b57b-c99c-4eb1-8261-c79ed3dad5d8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f9a0d942-e621-4bb4-9560-c3b5eeaec006" name="AlgorithmParameterGeneratorSpi" isAbstract="true">
            <ownedComment xmi:id="4b60a4cc-dfba-4253-ba3d-ce783d890785" body="This class defines the &lt;i>Service Provider Interface&lt;/i> (&lt;b>SPI&lt;/b>)&#xA;for the &lt;code>AlgorithmParameterGenerator&lt;/code> class, which&#xA;is used to generate a set of parameters to be used with a certain algorithm.&#xA;&#xA;&lt;p> All the abstract methods in this class must be implemented by each&#xA;cryptographic service provider who wishes to supply the implementation&#xA;of a parameter generator for a particular algorithm.&#xA;&#xA;&lt;p> In case the client does not explicitly initialize the&#xA;AlgorithmParameterGenerator (via a call to an &lt;code>engineInit&lt;/code>&#xA;method), each provider must supply (and document) a default initialization.&#xA;For example, the Sun provider uses a default modulus prime size of 1024&#xA;bits for the generation of DSA parameters.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.14, 12/19/03&#xA;&#xA;@see AlgorithmParameterGenerator&#xA;@see AlgorithmParameters&#xA;@see java.security.spec.AlgorithmParameterSpec&#xA;&#xA;@since 1.2&#xA;" annotatedElement="f9a0d942-e621-4bb4-9560-c3b5eeaec006"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="00ec51e1-ca10-4ddb-9f86-a67bd4276b60" name="ProtectionDomain">
            <ownedComment xmi:id="64703755-c615-4386-acc5-414e77dd6631" body="&lt;p>&#xA;This ProtectionDomain class encapsulates the characteristics of a domain,&#xA;which encloses a set of classes whose instances are granted a set&#xA;of permissions when being executed on behalf of a given set of Principals.&#xA;&lt;p>&#xA;A static set of permissions can be bound to a ProtectionDomain when it is&#xA;constructed; such permissions are granted to the domain regardless of the&#xA;Policy in force. However, to support dynamic security policies, a&#xA;ProtectionDomain can also be constructed such that it is dynamically&#xA;mapped to a set of permissions by the current Policy whenever a permission&#xA;is checked.&#xA;&lt;p>&#xA;&#xA;@version &#x9;1.45, 12/19/03&#xA;@author Li Gong&#xA;@author Roland Schemers&#xA;@author Gary Ellison&#xA;" annotatedElement="00ec51e1-ca10-4ddb-9f86-a67bd4276b60"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d19f9d91-e377-4608-a18c-1892e48fd9cb" name="KeyPair" clientDependency="96063fd5-a457-4697-9ad9-c20cc73a06b0" isLeaf="true">
            <ownedComment xmi:id="d711a33d-d5f2-428c-a896-3d0f5a5e70ce" body="This class is a simple holder for a key pair (a public key and a&#xA;private key). It does not enforce any security, and, when initialized,&#xA;should be treated like a PrivateKey.&#xA;&#xA;@see PublicKey&#xA;@see PrivateKey&#xA;&#xA;@version 1.15 03/12/19&#xA;@author Benjamin Renaud&#xA;" annotatedElement="d19f9d91-e377-4608-a18c-1892e48fd9cb"/>
            <interfaceRealization xmi:id="96063fd5-a457-4697-9ad9-c20cc73a06b0" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="d19f9d91-e377-4608-a18c-1892e48fd9cb" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="21b3f7ff-b4e5-4a06-8016-da89c1d404aa" name="KeyStoreException">
            <ownedComment xmi:id="1914d797-a4e5-43d0-a4c0-bd7cf438c866" body="This is the generic KeyStore exception.&#xA;&#xA;@author Jan Luehe&#xA;&#xA;@version 1.12, 12/19/03&#xA;&#xA;@since 1.2&#xA;" annotatedElement="21b3f7ff-b4e5-4a06-8016-da89c1d404aa"/>
            <generalization xmi:id="233b6ceb-5e06-4d03-a7b3-5d2b9126b742" isSubstitutable="true" general="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d9c6788c-6eda-4930-93b7-34c95c7c74cc" name="Permission" clientDependency="e8cabbc9-7efc-49f0-95fa-1fcc0fba9ce2 d84df552-d240-4a6d-b01c-82cf7df26373" isAbstract="true">
            <ownedComment xmi:id="439fc3cb-52cf-4a0b-b76c-f75c2a3c5ada" body="Abstract class for representing access to a system resource.&#xA;All permissions have a name (whose interpretation depends on the subclass),&#xA;as well as abstract functions for defining the semantics of the&#xA;particular Permission subclass.&#xA;&#xA;&lt;p>Most Permission objects also include an &quot;actions&quot; list that tells the actions&#xA;that are permitted for the object.  For example,&#xA;for a &lt;code>java.io.FilePermission&lt;/code> object, the permission name is&#xA;the pathname of a file (or directory), and the actions list&#xA;(such as &quot;read, write&quot;) specifies which actions are granted for the&#xA;specified file (or for files in the specified directory).&#xA;The actions list is optional for Permission objects, such as&#xA;&lt;code>java.lang.RuntimePermission&lt;/code>,&#xA;that don't need such a list; you either have the named permission (such&#xA;as &quot;system.exit&quot;) or you don't.&#xA;&#xA;&lt;p>An important method that must be implemented by each subclass is&#xA;the &lt;code>implies&lt;/code> method to compare Permissions. Basically,&#xA;&quot;permission p1 implies permission p2&quot; means that&#xA;if one is granted permission p1, one is naturally granted permission p2.&#xA;Thus, this is not an equality test, but rather more of a&#xA;subset test.&#xA;&#xA;&lt;P> Permission objects are similar to String objects in that they&#xA;are immutable once they have been created. Subclasses should not&#xA;provide methods that can change the state of a permission&#xA;once it has been created.&#xA;&#xA;@see Permissions&#xA;@see PermissionCollection&#xA;&#xA;@version 1.39 03/12/19&#xA;&#xA;@author Marianne Mueller&#xA;@author Roland Schemers&#xA;" annotatedElement="d9c6788c-6eda-4930-93b7-34c95c7c74cc"/>
            <interfaceRealization xmi:id="e8cabbc9-7efc-49f0-95fa-1fcc0fba9ce2" name="" supplier="11e876ef-6f43-4d79-a4f7-8efc58e9637d" client="d9c6788c-6eda-4930-93b7-34c95c7c74cc" contract="11e876ef-6f43-4d79-a4f7-8efc58e9637d"/>
            <interfaceRealization xmi:id="d84df552-d240-4a6d-b01c-82cf7df26373" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="d9c6788c-6eda-4930-93b7-34c95c7c74cc" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="12f06f83-9cc8-4e29-a2f3-cb4070fe50bb" name="sql">
          <packagedElement xmi:type="uml:Class" xmi:id="017faea4-6082-44dc-9364-dd618ad5d648" name="DriverInfo" visibility="package"/>
          <packagedElement xmi:type="uml:Class" xmi:id="9c8e52a6-a87b-425b-8824-99198fff353f" name="SQLException">
            <ownedComment xmi:id="714c2934-b9ab-43fc-9170-f1f712ef23ff" body="&lt;P>An exception that provides information on a database access&#xA;error or other errors.&#xA;&#xA;&lt;P>Each &lt;code>SQLException&lt;/code> provides several kinds of information:&#xA;&lt;UL>&#xA;&lt;LI> a string describing the error.  This is used as the Java Exception&#xA;message, available via the method &lt;code>getMesage&lt;/code>.&#xA;&lt;LI> a &quot;SQLstate&quot; string, which follows either the XOPEN SQLstate conventions&#xA;or the SQL 99 conventions.&#xA;The values of the SQLState string are described in the appropriate spec.&#xA;The &lt;code>DatabaseMetaData&lt;/code> method &lt;code>getSQLStateType&lt;/code>&#xA;can be used to discover whether the driver returns the XOPEN type or&#xA;the SQL 99 type.&#xA;&lt;LI> an integer error code that is specific to each vendor.  Normally this will&#xA;be the actual error code returned by the underlying database.&#xA;&lt;LI> a chain to a next Exception.  This can be used to provide additional&#xA;error information.&#xA;&lt;/UL>&#xA;" annotatedElement="9c8e52a6-a87b-425b-8824-99198fff353f"/>
            <generalization xmi:id="69f34c93-2245-40b0-802c-e5acdc29fc01" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="bcaa1fcc-14f5-46a2-a93c-d8edcd557829" name="SQLData" isAbstract="true">
            <ownedComment xmi:id="e0f00835-8ee7-48bc-91bb-60b1d1475a78" body="The interface used for the custom mapping of an SQL user-defined type (UDT) to&#xA;a class in the Java programming language. The class object for a class&#xA;implementing the &lt;code>SQLData&lt;/code> interface will be entered in the&#xA;appropriate &lt;code>Connection&lt;/code> object's type map along with the SQL&#xA;name of the UDT for which it is a custom mapping.&#xA;&lt;P>&#xA;Typically, a &lt;code>SQLData&lt;/code> implementation&#xA;will define a field for each attribute of an SQL structured type or a&#xA;single field for an SQL &lt;code>DISTINCT&lt;/code> type. When the UDT is&#xA;retrieved from a data source with the &lt;code>ResultSet.getObject&lt;/code>&#xA;method, it will be mapped as an instance of this class.  A programmer&#xA;can operate on this class instance just as on any other object in the&#xA;Java programming language and then store any changes made to it by&#xA;calling the &lt;code>PreparedStatement.setObject&lt;/code> method,&#xA;which will map it back to the SQL type.&#xA;&lt;p>&#xA;It is expected that the implementation of the class for a custom&#xA;mapping will be done by a tool.  In a typical implementation, the&#xA;programmer would simply supply the name of the SQL UDT, the name of&#xA;the class to which it is being mapped, and the names of the fields to&#xA;which each of the attributes of the UDT is to be mapped.  The tool will use&#xA;this information to implement the &lt;code>SQLData.readSQL&lt;/code> and&#xA;&lt;code>SQLData.writeSQL&lt;/code> methods.  The &lt;code>readSQL&lt;/code> method&#xA;calls the appropriate &lt;code>SQLInput&lt;/code> methods to read&#xA;each attribute from an &lt;code>SQLInput&lt;/code> object, and the&#xA;&lt;code>writeSQL&lt;/code> method calls &lt;code>SQLOutput&lt;/code> methods&#xA;to write each attribute back to the data source via an&#xA;&lt;code>SQLOutput&lt;/code> object.&#xA;&lt;P>&#xA;An application programmer will not normally call &lt;code>SQLData&lt;/code> methods&#xA;directly, and the &lt;code>SQLInput&lt;/code> and &lt;code>SQLOutput&lt;/code> methods&#xA;are called internally by &lt;code>SQLData&lt;/code> methods, not by application code.&#xA;&#xA;@since 1.2&#xA;" annotatedElement="bcaa1fcc-14f5-46a2-a93c-d8edcd557829"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="6c886c35-6a6a-4479-82a3-6f21ee71976a" name="Blob" isAbstract="true">
            <ownedComment xmi:id="3281b22a-e16d-456d-b682-88fb2b5b2352" body="The representation (mapping) in&#xA;the Java&lt;sup>&lt;font size=-2>TM&lt;/font>&lt;/sup> programming&#xA;language of an SQL&#xA;&lt;code>BLOB&lt;/code> value.  An SQL &lt;code>BLOB&lt;/code> is a built-in type&#xA;that stores a Binary Large Object as a column value in a row of&#xA;a database table. By default drivers implement &lt;code>Blob&lt;/code> using&#xA;an SQL &lt;code>locator(BLOB)&lt;/code>, which means that a&#xA;&lt;code>Blob&lt;/code> object contains a logical pointer to the&#xA;SQL &lt;code>BLOB&lt;/code> data rather than the data itself.&#xA;A &lt;code>Blob&lt;/code> object is valid for the duration of the&#xA;transaction in which is was created.&#xA;&#xA;&lt;P>Methods in the interfaces {@link ResultSet},&#xA;{@link CallableStatement}, and {@link PreparedStatement}, such as&#xA;&lt;code>getBlob&lt;/code> and &lt;code>setBlob&lt;/code> allow a programmer to&#xA;access an SQL &lt;code>BLOB&lt;/code> value.&#xA;The &lt;code>Blob&lt;/code> interface provides methods for getting the&#xA;length of an SQL &lt;code>BLOB&lt;/code> (Binary Large Object) value,&#xA;for materializing a &lt;code>BLOB&lt;/code> value on the client, and for&#xA;determining the position of a pattern of bytes within a&#xA;&lt;code>BLOB&lt;/code> value. In addition, this interface has methods for updating&#xA;a &lt;code>BLOB&lt;/code> value.&#xA;&#xA;@since 1.2&#xA;" annotatedElement="6c886c35-6a6a-4479-82a3-6f21ee71976a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5c18bed8-4604-4c9a-86b8-3db4cccbbbaf" name="Date">
            <ownedComment xmi:id="a19091cb-9f09-4cf1-9b41-314f28a23d25" body="&lt;P>A thin wrapper around a millisecond value that allows&#xA;JDBC to identify this as an SQL &lt;code>DATE&lt;/code> value.  A&#xA;milliseconds value represents the number of milliseconds that&#xA;have passed since January 1, 1970 00:00:00.000 GMT.&#xA;&lt;p>&#xA;To conform with the definition of SQL &lt;code>DATE&lt;/code>, the&#xA;millisecond values wrapped by a &lt;code>java.sql.Date&lt;/code> instance&#xA;must be 'normalized' by setting the&#xA;hours, minutes, seconds, and milliseconds to zero in the particular&#xA;time zone with which the instance is associated.&#xA;" annotatedElement="5c18bed8-4604-4c9a-86b8-3db4cccbbbaf"/>
            <generalization xmi:id="3f608200-b7fa-483c-abb4-b80fda509dcd" isSubstitutable="true" general="66f22d5f-389b-4eb1-852a-78904751a116"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ee5f926b-8153-405e-879c-c1150adc1f77" name="Time">
            <ownedComment xmi:id="ba85ee9e-cceb-40bc-9551-7902192c1e93" body="&lt;P>A thin wrapper around the &lt;code>java.util.Date&lt;/code> class that allows the JDBC&#xA;API to identify this as an SQL &lt;code>TIME&lt;/code> value. The &lt;code>Time&lt;/code>&#xA;class adds formatting and&#xA;parsing operations to support the JDBC escape syntax for time&#xA;values.&#xA;&lt;p>The date components should be set to the &quot;zero epoch&quot;&#xA;value of January 1, 1970 and should not be accessed.&#xA;" annotatedElement="ee5f926b-8153-405e-879c-c1150adc1f77"/>
            <generalization xmi:id="9457254f-be53-480f-96d4-fc27515fa476" isSubstitutable="true" general="66f22d5f-389b-4eb1-852a-78904751a116"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="f555bc17-937a-4121-b5d9-bbf806cc660c" name="CallableStatement" isAbstract="true">
            <ownedComment xmi:id="812a5be1-9b93-480e-88d3-ecfe4077c2fe" body="The interface used to execute SQL stored procedures.  The JDBC API&#xA;provides a stored procedure SQL escape syntax that allows stored procedures&#xA;to be called in a standard way for all RDBMSs. This escape syntax has one&#xA;form that includes a result parameter and one that does not. If used, the result&#xA;parameter must be registered as an OUT parameter. The other parameters&#xA;can be used for input, output or both. Parameters are referred to&#xA;sequentially, by number, with the first parameter being 1.&#xA;&lt;PRE>&#xA;{?= call &lt;procedure-name>[&lt;arg1>,&lt;arg2>, ...]}&#xA;{call &lt;procedure-name>[&lt;arg1>,&lt;arg2>, ...]}&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;IN parameter values are set using the &lt;code>set&lt;/code> methods inherited from&#xA;{@link PreparedStatement}.  The type of all OUT parameters must be&#xA;registered prior to executing the stored procedure; their values&#xA;are retrieved after execution via the &lt;code>get&lt;/code> methods provided here.&#xA;&lt;P>&#xA;A &lt;code>CallableStatement&lt;/code> can return one {@link ResultSet} object or&#xA;multiple &lt;code>ResultSet&lt;/code> objects.  Multiple&#xA;&lt;code>ResultSet&lt;/code> objects are handled using operations&#xA;inherited from {@link Statement}.&#xA;&lt;P>&#xA;For maximum portability, a call's &lt;code>ResultSet&lt;/code> objects and&#xA;update counts should be processed prior to getting the values of output&#xA;parameters.&#xA;&lt;P>&#xA;&#xA;@see Connection#prepareCall&#xA;@see ResultSet&#xA;" annotatedElement="f555bc17-937a-4121-b5d9-bbf806cc660c"/>
            <generalization xmi:id="4ae8a2ea-a136-4a8f-8982-f16d3d0f71b9" isSubstitutable="true" general="988ba3de-6b80-4b90-931f-d4d8a3dce04e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="5e22bcb8-d64d-461d-82ae-c9b2eb35661c" name="SQLInput" isAbstract="true">
            <ownedComment xmi:id="4ebc9132-d8f7-4f71-b6fb-634411b07e6f" body="An input stream that contains a stream of values representing an&#xA;instance of an SQL structured type or an SQL distinct type.&#xA;This interface, used only for custom mapping, is used by the driver&#xA;behind the scenes, and a programmer never directly invokes&#xA;&lt;code>SQLInput&lt;/code> methods. The &lt;i>reader&lt;/i> methods&#xA;(&lt;code>readLong&lt;/code>, &lt;code>readBytes&lt;/code>, and so on)&#xA;provide a way to read the values in an &lt;code>SQLInput&lt;/code> object.&#xA;The method &lt;code>wasNull&lt;/code> is used to determine whether the&#xA;the last value read was SQL &lt;code>NULL&lt;/code>.&#xA;&lt;P>When the method &lt;code>getObject&lt;/code> is called with an&#xA;object of a class implementing the interface &lt;code>SQLData&lt;/code>,&#xA;the JDBC driver calls the method &lt;code>SQLData.getSQLType&lt;/code>&#xA;to determine the SQL type of the user-defined type (UDT)&#xA;being custom mapped. The driver&#xA;creates an instance of &lt;code>SQLInput&lt;/code>, populating it with the&#xA;attributes of the UDT.  The driver then passes the input&#xA;stream to the method &lt;code>SQLData.readSQL&lt;/code>, which in turn&#xA;calls the &lt;code>SQLInput&lt;/code> reader methods&#xA;in its implementation for reading the&#xA;attributes from the input stream.&#xA;@since 1.2&#xA;" annotatedElement="5e22bcb8-d64d-461d-82ae-c9b2eb35661c"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="da600e70-8060-4da5-8357-8fbc9c0318cf" name="DatabaseMetaData" isAbstract="true">
            <ownedComment xmi:id="14ed013a-1dc0-42a5-ad69-1ebd378302d5" body="Comprehensive information about the database as a whole.&#xA;&lt;P>&#xA;This interface is implemented by driver vendors to let users know the capabilities&#xA;of a Database Management System (DBMS) in combination with&#xA;the driver based on JDBC&lt;sup>&lt;font size=-2>TM&lt;/font>&lt;/sup> technology&#xA;(&quot;JDBC driver&quot;) that is used with it.  Different relational DBMSs often support&#xA;different features, implement features in different ways, and use different&#xA;data types.  In addition, a driver may implement a feature on top of what the&#xA;DBMS offers.  Information returned by methods in this interface applies&#xA;to the capabilities of a particular driver and a particular DBMS working&#xA;together. Note that as used in this documentation, the term &quot;database&quot; is&#xA;used generically to refer to both the driver and DBMS.&#xA;&lt;P>&#xA;A user for this interface is commonly a tool that needs to discover how to&#xA;deal with the underlying DBMS.  This is especially true for applications&#xA;that are intended to be used with more than one DBMS. For example, a tool might use the method&#xA;&lt;code>getTypeInfo&lt;/code> to find out what data types can be used in a&#xA;&lt;code>CREATE TABLE&lt;/code> statement.  Or a user might call the method&#xA;&lt;code>supportsCorrelatedSubqueries&lt;/code> to see if it is possible to use&#xA;a correlated subquery or &lt;code>supportsBatchUpdates&lt;/code> to see if it is&#xA;possible to use batch updates.&#xA;&lt;P>&#xA;Some &lt;code>DatabaseMetaData&lt;/code> methods return lists of information&#xA;in the form of &lt;code>ResultSet&lt;/code> objects.&#xA;Regular &lt;code>ResultSet&lt;/code> methods, such as&#xA;&lt;code>getString&lt;/code> and &lt;code>getInt&lt;/code>, can be used&#xA;to retrieve the data from these &lt;code>ResultSet&lt;/code> objects.  If&#xA;a given form of metadata is not available, the &lt;code>ResultSet&lt;/code>&#xA;getter methods throw an &lt;code>SQLException&lt;/code>.&#xA;&lt;P>&#xA;Some &lt;code>DatabaseMetaData&lt;/code> methods take arguments that are&#xA;String patterns.  These arguments all have names such as fooPattern.&#xA;Within a pattern String, &quot;%&quot; means match any substring of 0 or more&#xA;characters, and &quot;_&quot; means match any one character. Only metadata&#xA;entries matching the search pattern are returned. If a search pattern&#xA;argument is set to &lt;code>null&lt;/code>, that argument's criterion will&#xA;be dropped from the search.&#xA;&lt;P>&#xA;A method that gets information about a feature that the driver does not&#xA;support will throw an &lt;code>SQLException&lt;/code>.&#xA;In the case of methods that return a &lt;code>ResultSet&lt;/code>&#xA;object, either a &lt;code>ResultSet&lt;/code> object (which may be empty) is&#xA;returned or an &lt;code>SQLException&lt;/code> is thrown.&#xA;" annotatedElement="da600e70-8060-4da5-8357-8fbc9c0318cf"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="64178a80-7b63-4675-8e00-dd5346622b06" name="Types">
            <ownedComment xmi:id="8ec62ee5-ace4-4182-a007-a3afb6e3d1ef" body="&lt;P>The class that defines the constants that are used to identify generic&#xA;SQL types, called JDBC types.&#xA;The actual type constant values are equivalent to those in XOPEN.&#xA;&lt;p>&#xA;This class is never instantiated.&#xA;" annotatedElement="64178a80-7b63-4675-8e00-dd5346622b06"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="26b4216f-0279-4b4a-aa2a-2d6fd1c81c48" name="Array" isAbstract="true">
            <ownedComment xmi:id="25055c6d-94c7-4acb-a2d0-c2d939f1c4b1" body="The mapping in the Java programming language for the SQL type&#xA;&lt;code>ARRAY&lt;/code>.&#xA;By default, an &lt;code>Array&lt;/code> value is a transaction-duration&#xA;reference to an SQL &lt;code>ARRAY&lt;/code> value.  By default, an &lt;code>Array&lt;/code>&#xA;object is implemented using an SQL LOCATOR(array) internally, which&#xA;means that an &lt;code>Array&lt;/code> object contains a logical pointer&#xA;to the data in the SQL &lt;code>ARRAY&lt;/code> value rather&#xA;than containing the &lt;code>ARRAY&lt;/code> value's data.&#xA;&lt;p>&#xA;The &lt;code>Array&lt;/code> interface provides methods for bringing an SQL&#xA;&lt;code>ARRAY&lt;/code> value's data to the client as either an array or a&#xA;&lt;code>ResultSet&lt;/code> object.&#xA;If the elements of the SQL &lt;code>ARRAY&lt;/code>&#xA;are a UDT, they may be custom mapped.  To create a custom mapping,&#xA;a programmer must do two things:&#xA;&lt;ul>&#xA;&lt;li>create a class that implements the {@link SQLData}&#xA;interface for the UDT to be custom mapped.&#xA;&lt;li>make an entry in a type map that contains&#xA;&lt;ul>&#xA;&lt;li>the fully-qualified SQL type name of the UDT&#xA;&lt;li>the &lt;code>Class&lt;/code> object for the class implementing&#xA;&lt;code>SQLData&lt;/code>&#xA;&lt;/ul>&#xA;&lt;/ul>&#xA;&lt;p>&#xA;When a type map with an entry for&#xA;the base type is supplied to the methods &lt;code>getArray&lt;/code>&#xA;and &lt;code>getResultSet&lt;/code>, the mapping&#xA;it contains will be used to map the elements of the &lt;code>ARRAY&lt;/code> value.&#xA;If no type map is supplied, which would typically be the case,&#xA;the connection's type map is used by default.&#xA;If the connection's type map or a type map supplied to a method has no entry&#xA;for the base type, the elements are mapped according to the standard mapping.&#xA;&lt;p>&#xA;@since 1.2&#xA;" annotatedElement="26b4216f-0279-4b4a-aa2a-2d6fd1c81c48"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="94008cf8-444e-408b-9bc6-c5000dadbf6a" name="Struct" isAbstract="true">
            <ownedComment xmi:id="5c7fed20-934f-44d9-9e7d-0d303b99469e" body="&lt;p>The standard mapping in the Java programming language for an SQL&#xA;structured type. A &lt;code>Struct&lt;/code> object contains a&#xA;value for each attribute of the SQL structured type that&#xA;it represents.&#xA;By default, an instance of&lt;code>Struct&lt;/code> is valid as long as the&#xA;application has a reference to it.&#xA;@since 1.2&#xA;" annotatedElement="94008cf8-444e-408b-9bc6-c5000dadbf6a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="07f603e8-bc09-4ab6-9628-64677d40d161" name="SQLWarning">
            <ownedComment xmi:id="c44d53b0-7285-4743-8436-1027d595aa2d" body="&lt;P>An exception that provides information on  database access&#xA;warnings. Warnings are silently chained to the object whose method&#xA;caused it to be reported.&#xA;&lt;P>&#xA;Warnings may be retrieved from &lt;code>Connection&lt;/code>, &lt;code>Statement&lt;/code>,&#xA;and &lt;code>ResultSet&lt;/code> objects.  Trying to retrieve a warning on a&#xA;connection after it has been closed will cause an exception to be thrown.&#xA;Similarly, trying to retrieve a warning on a statement after it has been&#xA;closed or on a result set after it has been closed will cause&#xA;an exception to be thrown. Note that closing a statement also&#xA;closes a result set that it might have produced.&#xA;&#xA;@see Connection#getWarnings&#xA;@see Statement#getWarnings&#xA;@see ResultSet#getWarnings&#xA;" annotatedElement="07f603e8-bc09-4ab6-9628-64677d40d161"/>
            <generalization xmi:id="2140fa1b-5a72-4b9e-a034-52339cab77c0" isSubstitutable="true" general="9c8e52a6-a87b-425b-8824-99198fff353f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="82d078ad-44b0-4d42-8c7f-162d2a0a1a13" name="ResultSetMetaData" isAbstract="true">
            <ownedComment xmi:id="94954bf7-c817-401b-923b-a8648a17e301" body="An object that can be used to get information about the types&#xA;and properties of the columns in a &lt;code>ResultSet&lt;/code> object.&#xA;The following code fragment creates the &lt;code>ResultSet&lt;/code> object rs,&#xA;creates the &lt;code>ResultSetMetaData&lt;/code> object rsmd, and uses rsmd&#xA;to find out how many columns rs has and whether the first column in rs&#xA;can be used in a &lt;code>WHERE&lt;/code> clause.&#xA;&lt;PRE>&#xA;&#xA;ResultSet rs = stmt.executeQuery(&quot;SELECT a, b, c FROM TABLE2&quot;);&#xA;ResultSetMetaData rsmd = rs.getMetaData();&#xA;int numberOfColumns = rsmd.getColumnCount();&#xA;boolean b = rsmd.isSearchable(1);&#xA;&#xA;&lt;/PRE>&#xA;" annotatedElement="82d078ad-44b0-4d42-8c7f-162d2a0a1a13"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="f681ef77-1796-4996-a44c-c9ed08b5ee78" name="Statement" isAbstract="true">
            <ownedComment xmi:id="4c59f92e-6f8b-4456-83de-32a18d595cc6" body="&lt;P>The object used for executing a static SQL statement&#xA;and returning the results it produces.&#xA;&lt;P>&#xA;By default, only one &lt;code>ResultSet&lt;/code> object per &lt;code>Statement&lt;/code>&#xA;object can be open at the same time. Therefore, if the reading of one&#xA;&lt;code>ResultSet&lt;/code> object is interleaved&#xA;with the reading of another, each must have been generated by&#xA;different &lt;code>Statement&lt;/code> objects. All execution methods in the&#xA;&lt;code>Statement&lt;/code> interface implicitly close a statment's current&#xA;&lt;code>ResultSet&lt;/code> object if an open one exists.&#xA;&#xA;@see Connection#createStatement&#xA;@see ResultSet&#xA;" annotatedElement="f681ef77-1796-4996-a44c-c9ed08b5ee78"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="1d8cac2f-4b02-4600-b358-7b5a490c40b0" name="Connection" isAbstract="true">
            <ownedComment xmi:id="29bb30bd-1858-4782-b17f-90d3b28e5448" body="&lt;P>A connection (session) with a specific&#xA;database. SQL statements are executed and results are returned&#xA;within the context of a connection.&#xA;&lt;P>&#xA;A &lt;code>Connection&lt;/code> object's database is able to provide information&#xA;describing its tables, its supported SQL grammar, its stored&#xA;procedures, the capabilities of this connection, and so on. This&#xA;information is obtained with the &lt;code>getMetaData&lt;/code> method.&#xA;&#xA;&lt;P>&lt;B>Note:&lt;/B> By default a &lt;code>Connection&lt;/code> object is in&#xA;auto-commit mode, which means that it automatically commits changes&#xA;after executing each statement. If auto-commit mode has been&#xA;disabled, the method &lt;code>commit&lt;/code> must be called explicitly in&#xA;order to commit changes; otherwise, database changes will not be saved.&#xA;&lt;P>&#xA;A new &lt;code>Connection&lt;/code> object created using the JDBC 2.1 core API&#xA;has an initially empty type map associated with it. A user may enter a&#xA;custom mapping for a UDT in this type map.&#xA;When a UDT is retrieved from a data source with the&#xA;method &lt;code>ResultSet.getObject&lt;/code>, the &lt;code>getObject&lt;/code> method&#xA;will check the connection's type map to see if there is an entry for that&#xA;UDT.  If so, the &lt;code>getObject&lt;/code> method will map the UDT to the&#xA;class indicated.  If there is no entry, the UDT will be mapped using the&#xA;standard mapping.&#xA;&lt;p>&#xA;A user may create a new type map, which is a &lt;code>java.util.Map&lt;/code>&#xA;object, make an entry in it, and pass it to the &lt;code>java.sql&lt;/code>&#xA;methods that can perform custom mapping.  In this case, the method&#xA;will use the given type map instead of the one associated with&#xA;the connection.&#xA;&lt;p>&#xA;For example, the following code fragment specifies that the SQL&#xA;type &lt;code>ATHLETES&lt;/code> will be mapped to the class&#xA;&lt;code>Athletes&lt;/code> in the Java programming language.&#xA;The code fragment retrieves the type map for the &lt;code>Connection&#xA;&lt;/code> object &lt;code>con&lt;/code>, inserts the entry into it, and then sets&#xA;the type map with the new entry as the connection's type map.&#xA;&lt;pre>&#xA;java.util.Map map = con.getTypeMap();&#xA;map.put(&quot;mySchemaName.ATHLETES&quot;, Class.forName(&quot;Athletes&quot;));&#xA;con.setTypeMap(map);&#xA;&lt;/pre>&#xA;&#xA;@see DriverManager#getConnection&#xA;@see Statement&#xA;@see ResultSet&#xA;@see DatabaseMetaData&#xA;" annotatedElement="1d8cac2f-4b02-4600-b358-7b5a490c40b0"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="c87632a7-7da1-4291-9a12-9084eeb7552f" name="Savepoint" isAbstract="true">
            <ownedComment xmi:id="138c78a6-dcf9-4fa8-b14c-e4641e7f6d74" body="The representation of a savepoint, which is a point within&#xA;the current transaction that can be referenced from the&#xA;&lt;code>Connection.rollback&lt;/code> method. When a transaction&#xA;is rolled back to a savepoint all changes made after that&#xA;savepoint are undone.&#xA;&lt;p>&#xA;Savepoints can be either named or unnamed. Unnamed savepoints&#xA;are identified by an ID generated by the underlying data source.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="c87632a7-7da1-4291-9a12-9084eeb7552f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="988ba3de-6b80-4b90-931f-d4d8a3dce04e" name="PreparedStatement" isAbstract="true">
            <ownedComment xmi:id="bc416eeb-b3ac-46ac-ac9e-07daa643b227" body="An object that represents a precompiled SQL statement.&#xA;&lt;P>A SQL statement is precompiled and stored in a&#xA;&lt;code>PreparedStatement&lt;/code> object. This object can then be used to&#xA;efficiently execute this statement multiple times.&#xA;&#xA;&lt;P>&lt;B>Note:&lt;/B> The setter methods (&lt;code>setShort&lt;/code>, &lt;code>setString&lt;/code>,&#xA;and so on) for setting IN parameter values&#xA;must specify types that are compatible with the defined SQL type of&#xA;the input parameter. For instance, if the IN parameter has SQL type&#xA;&lt;code>INTEGER&lt;/code>, then the method &lt;code>setInt&lt;/code> should be used.&#xA;&#xA;&lt;p>If arbitrary parameter type conversions are required, the method&#xA;&lt;code>setObject&lt;/code> should be used with a target SQL type.&#xA;&lt;P>&#xA;In the following example of setting a parameter, &lt;code>con&lt;/code> represents&#xA;an active connection:&#xA;&lt;PRE>&#xA;PreparedStatement pstmt = con.prepareStatement(&quot;UPDATE EMPLOYEES&#xA;SET SALARY = ? WHERE ID = ?&quot;);&#xA;pstmt.setBigDecimal(1, 153833.00)&#xA;pstmt.setInt(2, 110592)&#xA;&lt;/PRE>&#xA;&#xA;@see Connection#prepareStatement&#xA;@see ResultSet&#xA;" annotatedElement="988ba3de-6b80-4b90-931f-d4d8a3dce04e"/>
            <generalization xmi:id="3283e7f1-f769-4cb1-b018-6900848a0ef7" isSubstitutable="true" general="f681ef77-1796-4996-a44c-c9ed08b5ee78"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="ca578bcb-922b-44b5-b011-e16452f5fe82" name="Ref" isAbstract="true">
            <ownedComment xmi:id="7cf59c39-2ca5-4743-a031-1362ce9df8d0" body="The mapping in the Java programming language of an SQL &lt;code>REF&lt;/code>&#xA;value, which is a reference to an SQL structured type value in the database.&#xA;&lt;P>&#xA;SQL &lt;code>REF&lt;/code> values are stored in a table that contains&#xA;instances of a referenceable SQL structured type, and each &lt;code>REF&lt;/code>&#xA;value is a unique identifier for one instance in that table.&#xA;An SQL &lt;code>REF&lt;/code> value may be used in place of the&#xA;SQL structured type it references, either as a column value in a&#xA;table or an attribute value in a structured type.&#xA;&lt;P>&#xA;Because an SQL &lt;code>REF&lt;/code> value is a logical pointer to an&#xA;SQL structured type, a &lt;code>Ref&lt;/code> object is by default also a logical&#xA;pointer. Thus, retrieving an SQL &lt;code>REF&lt;/code> value as&#xA;a &lt;code>Ref&lt;/code> object does not materialize&#xA;the attributes of the structured type on the client.&#xA;&lt;P>&#xA;A &lt;code>Ref&lt;/code> object can be stored in the database using the&#xA;&lt;code>PreparedStatement.setRef&lt;/code> method.&#xA;&#xA;@see Struct&#xA;@since 1.2&#xA;" annotatedElement="ca578bcb-922b-44b5-b011-e16452f5fe82"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="793e2741-7cd6-420f-b8c9-30aabd12f37d" name="ParameterMetaData" isAbstract="true">
            <ownedComment xmi:id="fdb0d2a5-f24b-464e-967f-669e3cd3bfa5" body="An object that can be used to get information about the types&#xA;and properties of the parameters in a &lt;code>PreparedStatement&lt;/code> object.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="793e2741-7cd6-420f-b8c9-30aabd12f37d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="fce59589-58ac-4064-b872-079441b58b6f" name="ResultSet" isAbstract="true">
            <ownedComment xmi:id="8d304a05-87d3-44f8-8584-3d28a8cd99d4" body="A table of data representing a database result set, which&#xA;is usually generated by executing a statement that queries the database.&#xA;&#xA;&lt;P>A &lt;code>ResultSet&lt;/code> object  maintains a cursor pointing&#xA;to its current row of data.  Initially the cursor is positioned&#xA;before the first row. The &lt;code>next&lt;/code> method moves the&#xA;cursor to the next row, and because it returns &lt;code>false&lt;/code>&#xA;when there are no more rows in the &lt;code>ResultSet&lt;/code> object,&#xA;it can be used in a &lt;code>while&lt;/code> loop to iterate through&#xA;the result set.&#xA;&lt;P>&#xA;A default &lt;code>ResultSet&lt;/code> object is not updatable and&#xA;has a cursor that moves forward only.  Thus, you can&#xA;iterate through it only once and only from the first row to the&#xA;last row. It is possible to&#xA;produce &lt;code>ResultSet&lt;/code> objects that are scrollable and/or&#xA;updatable.  The following code fragment, in which &lt;code>con&lt;/code>&#xA;is a valid &lt;code>Connection&lt;/code> object, illustrates how to make&#xA;a result set that is scrollable and insensitive to updates by others, and&#xA;that is updatable. See &lt;code>ResultSet&lt;/code> fields for other&#xA;options.&#xA;&lt;PRE>&#xA;&#xA;Statement stmt = con.createStatement(&#xA;ResultSet.TYPE_SCROLL_INSENSITIVE,&#xA;ResultSet.CONCUR_UPDATABLE);&#xA;ResultSet rs = stmt.executeQuery(&quot;SELECT a, b FROM TABLE2&quot;);&#xA;rs will be scrollable, will not show changes made by others,&#xA;and will be updatable&#xA;&#xA;&lt;/PRE>&#xA;The &lt;code>ResultSet&lt;/code> interface provides&#xA;&lt;i>getter&lt;/i> methods (&lt;code>getBoolean&lt;/code>, &lt;code>getLong&lt;/code>, and so on)&#xA;for retrieving column values from the current row.&#xA;Values can be retrieved using either the index number of the&#xA;column or the name of the column.  In general, using the&#xA;column index will be more efficient.  Columns are numbered from 1.&#xA;For maximum portability, result set columns within each row should be&#xA;read in left-to-right order, and each column should be read only once.&#xA;&#xA;&lt;P>For the getter methods, a JDBC driver attempts&#xA;to convert the underlying data to the Java type specified in the&#xA;getter method and returns a suitable Java value.  The JDBC specification&#xA;has a table showing the allowable mappings from SQL types to Java types&#xA;that can be used by the &lt;code>ResultSet&lt;/code> getter methods.&#xA;&lt;P>&#xA;&lt;P>Column names used as input to getter methods are case&#xA;insensitive.  When a getter method is called  with&#xA;a column name and several columns have the same name,&#xA;the value of the first matching column will be returned.&#xA;The column name option is&#xA;designed to be used when column names are used in the SQL&#xA;query that generated the result set.&#xA;For columns that are NOT explicitly named in the query, it&#xA;is best to use column numbers. If column names are used, there is&#xA;no way for the programmer to guarantee that they actually refer to&#xA;the intended columns.&#xA;&lt;P>&#xA;A set of updater methods were added to this interface&#xA;in the JDBC 2.0 API (JDK 1.2).&#xA;The comments regarding parameters&#xA;to the getter methods also apply to parameters to the&#xA;updater methods.&#xA;&lt;P>&#xA;The updater methods may be used in two ways:&#xA;&lt;ol>&#xA;&lt;LI>to update a column value in the current row.  In a scrollable&#xA;&lt;code>ResultSet&lt;/code> object, the cursor can be moved backwards&#xA;and forwards, to an absolute position, or to a position&#xA;relative to the current row.&#xA;The following code fragment updates the &lt;code>NAME&lt;/code> column&#xA;in the fifth row of the &lt;code>ResultSet&lt;/code> object&#xA;&lt;code>rs&lt;/code> and then uses the method &lt;code>updateRow&lt;/code>&#xA;to update the data source table from which &lt;code>rs&lt;/code> was derived.&#xA;&lt;PRE>&#xA;&#xA;rs.absolute(5); // moves the cursor to the fifth row of rs&#xA;rs.updateString(&quot;NAME&quot;, &quot;AINSWORTH&quot;); // updates the&#xA;&lt;code>NAME&lt;/code> column of row 5 to be &lt;code>AINSWORTH&lt;/code>&#xA;rs.updateRow(); // updates the row in the data source&#xA;&#xA;&lt;/PRE>&#xA;&lt;LI>to insert column values into the insert row.  An updatable&#xA;&lt;code>ResultSet&lt;/code> object has a special row associated with&#xA;it that serves as a staging area for building a row to be inserted.&#xA;The following code fragment moves the cursor to the insert row, builds&#xA;a three-column row, and inserts it into &lt;code>rs&lt;/code> and into&#xA;the data source table using the method &lt;code>insertRow&lt;/code>.&#xA;&lt;PRE>&#xA;&#xA;rs.moveToInsertRow(); // moves cursor to the insert row&#xA;rs.updateString(1, &quot;AINSWORTH&quot;); // updates the&#xA;first column of the insert row to be &lt;code>AINSWORTH&lt;/code>&#xA;rs.updateInt(2,35); // updates the second column to be &lt;code>35&lt;/code>&#xA;rs.updateBoolean(3, true); // updates the third column to &lt;code>true&lt;/code>&#xA;rs.insertRow();&#xA;rs.moveToCurrentRow();&#xA;&#xA;&lt;/PRE>&#xA;&lt;/ol>&#xA;&lt;P>A &lt;code>ResultSet&lt;/code> object is automatically closed when the&#xA;&lt;code>Statement&lt;/code> object that&#xA;generated it is closed, re-executed, or used&#xA;to retrieve the next result from a sequence of multiple results.&#xA;&#xA;&lt;P>The number, types and properties of a &lt;code>ResultSet&lt;/code>&#xA;object's columns are provided by the &lt;code>ResulSetMetaData&lt;/code>&#xA;object returned by the &lt;code>ResultSet.getMetaData&lt;/code> method.&#xA;&#xA;@see Statement#executeQuery&#xA;@see Statement#getResultSet&#xA;@see ResultSetMetaData&#xA;" annotatedElement="fce59589-58ac-4064-b872-079441b58b6f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6eec4cad-863c-4c2d-b391-6276544126fd" name="SQLPermission" isLeaf="true">
            <ownedComment xmi:id="2d1a7035-d82a-4735-9cc2-9a77eca29a7c" body="The permission for which the &lt;code>SecurityManager&lt;/code> will check&#xA;when code that is running in an applet calls the&#xA;&lt;code>DriverManager.setLogWriter&lt;/code> method or the&#xA;&lt;code>DriverManager.setLogStream&lt;/code> (deprecated) method.&#xA;If there is no &lt;code>SQLPermission&lt;/code> object, these methods&#xA;throw a &lt;code>java.lang.SecurityException&lt;/code> as a runtime exception.&#xA;&lt;P>&#xA;A &lt;code>SQLPermission&lt;/code> object contains&#xA;a name (also referred to as a &quot;target name&quot;) but no actions&#xA;list; there is either a named permission or there is not.&#xA;The target name is the name of the permission (see below). The&#xA;naming convention follows the  hierarchical property naming convention.&#xA;In addition, an asterisk&#xA;may appear at the end of the name, following a &quot;.&quot;, or by itself, to&#xA;signify a wildcard match. For example: &lt;code>loadLibrary.*&lt;/code>&#xA;or &lt;code>*&lt;/code> is valid,&#xA;but &lt;code>*loadLibrary&lt;/code> or &lt;code>a*b&lt;/code> is not valid.&#xA;&lt;P>&#xA;The following table lists all the possible &lt;code>SQLPermission&lt;/code> target names.&#xA;Currently, the only name allowed is &lt;code>setLog&lt;/code>.&#xA;The table gives a description of what the permission allows&#xA;and a discussion of the risks of granting code the permission.&#xA;&lt;P>&#xA;&#xA;&lt;table border=1 cellpadding=5 summary=&quot;permission target name, what the permission allows, and associated risks&quot;>&#xA;&lt;tr>&#xA;&lt;th>Permission Target Name&lt;/th>&#xA;&lt;th>What the Permission Allows&lt;/th>&#xA;&lt;th>Risks of Allowing this Permission&lt;/th>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>setLog&lt;/td>&#xA;&lt;td>Setting of the logging stream&lt;/td>&#xA;&lt;td>This is a dangerous permission to grant.&#xA;The contents of the log may contain usernames and passwords,&#xA;SQL statements, and SQL data.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;/table>&#xA;&#xA;The person running an applet decides what permissions to allow&#xA;and will run the &lt;code>Policy Tool&lt;/code> to create an&#xA;&lt;code>SQLPermission&lt;/code> in a policy file.  A programmer does&#xA;not use a constructor directly to create an instance of &lt;code>SQLPermission&lt;/code>&#xA;but rather uses a tool.&#xA;@since 1.3&#xA;@see java.security.BasicPermission&#xA;@see java.security.Permission&#xA;@see java.security.Permissions&#xA;@see java.security.PermissionCollection&#xA;@see java.lang.SecurityManager&#xA;&#xA;" annotatedElement="6eec4cad-863c-4c2d-b391-6276544126fd"/>
            <generalization xmi:id="5335a466-8006-48a3-9f5b-42753ecaa1d2" isSubstitutable="true" general="4831e368-c670-40b4-87bd-a8a910a528fa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3855e2db-1937-4a4d-99a4-fb22694c8775" name="DriverManager">
            <ownedComment xmi:id="5b2ffb8c-cabf-4ec1-ab48-5d012c3c03b0" body="&lt;P>The basic service for managing a set of JDBC drivers.&lt;br>&#xA;&lt;B>NOTE:&lt;/B> The {@link &lt;code>DataSource&lt;/code>} interface, new in the&#xA;JDBC 2.0 API, provides another way to connect to a data source.&#xA;The use of a &lt;code>DataSource&lt;/code> object is the preferred means of&#xA;connecting to a data source.&#xA;&#xA;&lt;P>As part of its initialization, the &lt;code>DriverManager&lt;/code> class will&#xA;attempt to load the driver classes referenced in the &quot;jdbc.drivers&quot;&#xA;system property. This allows a user to customize the JDBC Drivers&#xA;used by their applications. For example in your&#xA;~/.hotjava/properties file you might specify:&#xA;&lt;pre>&#xA;&lt;CODE>jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.taste.ourDriver&lt;/CODE>&#xA;&lt;/pre>&#xA;&#xA;A program can also explicitly load JDBC drivers at any time. For&#xA;example, the my.sql.Driver is loaded with the following statement:&#xA;&lt;pre>&#xA;&lt;CODE>Class.forName(&quot;my.sql.Driver&quot;);&lt;/CODE>&#xA;&lt;/pre>&#xA;&#xA;&lt;P>When the method &lt;code>getConnection&lt;/code> is called,&#xA;the &lt;code>DriverManager&lt;/code> will attempt to&#xA;locate a suitable driver from amongst those loaded at&#xA;initialization and those loaded explicitly using the same classloader&#xA;as the current applet or application.&#xA;&lt;P>&#xA;Starting with the Java 2 SDK, Standard Edition, version 1.3, a&#xA;logging stream can be set only if the proper&#xA;permission has been granted.  Normally this will be done with&#xA;the tool PolicyTool, which can be used to grant &lt;code>permission&#xA;java.sql.SQLPermission &quot;setLog&quot;&lt;/code>.&#xA;@see Driver&#xA;@see Connection&#xA;" annotatedElement="3855e2db-1937-4a4d-99a4-fb22694c8775"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="154e0014-868e-4c50-8149-712ad5eee1c6" name="SQLOutput" isAbstract="true">
            <ownedComment xmi:id="9426f939-6d95-4cda-81a1-6f454dc05bfe" body="The output stream for writing the attributes of a user-defined&#xA;type back to the database.  This interface, used&#xA;only for custom mapping, is used by the driver, and its&#xA;methods are never directly invoked by a programmer.&#xA;&lt;p>When an object of a class implementing the interface&#xA;&lt;code>SQLData&lt;/code> is passed as an argument to an SQL statement, the&#xA;JDBC driver calls the method &lt;code>SQLData.getSQLType&lt;/code> to&#xA;determine the  kind of SQL&#xA;datum being passed to the database.&#xA;The driver then creates an instance of &lt;code>SQLOutput&lt;/code> and&#xA;passes it to the method &lt;code>SQLData.writeSQL&lt;/code>.&#xA;The method &lt;code>writeSQL&lt;/code> in turn calls the&#xA;appropriate &lt;code>SQLOutput&lt;/code> &lt;i>writer&lt;/i> methods&#xA;&lt;code>writeBoolean&lt;/code>, &lt;code>writeCharacterStream&lt;/code>, and so on)&#xA;to write data from the &lt;code>SQLData&lt;/code> object to&#xA;the &lt;code>SQLOutput&lt;/code> output stream as the&#xA;representation of an SQL user-defined type.&#xA;@since 1.2&#xA;" annotatedElement="154e0014-868e-4c50-8149-712ad5eee1c6"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="061a6ead-925b-4538-841c-954338dd0e44" name="BatchUpdateException">
            <ownedComment xmi:id="6004641a-9722-42ba-800d-8649c442c177" body="An exception thrown when an error&#xA;occurs during a batch update operation.  In addition to the&#xA;information provided by {@link SQLException}, a&#xA;&lt;code>BatchUpdateException&lt;/code> provides the update&#xA;counts for all commands that were executed successfully during the&#xA;batch update, that is, all commands that were executed before the error&#xA;occurred.  The order of elements in an array of update counts&#xA;corresponds to the order in which commands were added to the batch.&#xA;&lt;P>&#xA;After a command in a batch update fails to execute properly&#xA;and a &lt;code>BatchUpdateException&lt;/code> is thrown, the driver&#xA;may or may not continue to process the remaining commands in&#xA;the batch.  If the driver continues processing after a failure,&#xA;the array returned by the method&#xA;&lt;code>BatchUpdateException.getUpdateCounts&lt;/code> will have&#xA;an element for every command in the batch rather than only&#xA;elements for the commands that executed successfully before&#xA;the error.  In the case where the driver continues processing&#xA;commands, the array element for any command&#xA;that failed is &lt;code>Statement.EXECUTE_FAILED&lt;/code>.&#xA;&lt;P>&#xA;@since 1.2&#xA;" annotatedElement="061a6ead-925b-4538-841c-954338dd0e44"/>
            <generalization xmi:id="347ae0e1-9442-4d2e-8b78-e3cd0916c00a" isSubstitutable="true" general="9c8e52a6-a87b-425b-8824-99198fff353f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d90961da-0b24-4ca0-a857-fcffd430352c" name="DataTruncation">
            <ownedComment xmi:id="78631f37-4293-4b79-95e4-1f0fb2f6d439" body="An exception that reports a&#xA;DataTruncation warning (on reads) or throws a DataTruncation exception&#xA;(on writes) when JDBC unexpectedly truncates a data value.&#xA;&#xA;&lt;P>The SQLstate for a &lt;code>DataTruncation&lt;/code> is &lt;code>01004&lt;/code>.&#xA;" annotatedElement="d90961da-0b24-4ca0-a857-fcffd430352c"/>
            <generalization xmi:id="9ba62822-8732-474f-97f1-0732ff05a0d1" isSubstitutable="true" general="07f603e8-bc09-4ab6-9628-64677d40d161"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="53e9781a-178a-47fb-92dc-267516c81563" name="Driver" isAbstract="true">
            <ownedComment xmi:id="1a479c8d-7717-4ab5-86bb-cc99a6765a91" body="The interface that every driver class must implement.&#xA;&lt;P>The Java SQL framework allows for multiple database drivers.&#xA;&#xA;&lt;P>Each driver should supply a class that implements&#xA;the Driver interface.&#xA;&#xA;&lt;P>The DriverManager will try to load as many drivers as it can&#xA;find and then for any given connection request, it will ask each&#xA;driver in turn to try to connect to the target URL.&#xA;&#xA;&lt;P>It is strongly recommended that each Driver class should be&#xA;small and standalone so that the Driver class can be loaded and&#xA;queried without bringing in vast quantities of supporting code.&#xA;&#xA;&lt;P>When a Driver class is loaded, it should create an instance of&#xA;itself and register it with the DriverManager. This means that a&#xA;user can load and register a driver by calling&#xA;&lt;pre>&#xA;&lt;code>Class.forName(&quot;foo.bah.Driver&quot;)&lt;/code>&#xA;&lt;/pre>&#xA;&#xA;@see DriverManager&#xA;@see Connection&#xA;" annotatedElement="53e9781a-178a-47fb-92dc-267516c81563"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5fecf7b1-5582-44da-8b89-23d1d131801f" name="Timestamp">
            <ownedComment xmi:id="51d0bd66-4ada-4cf5-86ea-4991400e2687" body="&lt;P>A thin wrapper around &lt;code>java.util.Date&lt;/code> that allows&#xA;the JDBC API to identify this as an SQL &lt;code>TIMESTAMP&lt;/code> value.&#xA;It adds the ability&#xA;to hold the SQL &lt;code>TIMESTAMP&lt;/code> nanos value and provides formatting and&#xA;parsing operations to support the JDBC escape syntax for timestamp values.&#xA;&#xA;&lt;P>&lt;B>Note:&lt;/B> This type is a composite of a &lt;code>java.util.Date&lt;/code> and a&#xA;separate nanoseconds value. Only integral seconds are stored in the&#xA;&lt;code>java.util.Date&lt;/code> component. The fractional seconds - the nanos - are&#xA;separate.  The &lt;code>Timestamp.equals(Object)&lt;/code> method never returns&#xA;&lt;code>true&lt;/code> when passed a value of type &lt;code>java.util.Date&lt;/code>&#xA;because the nanos component of a date is unknown.&#xA;As a result, the &lt;code>Timestamp.equals(Object)&lt;/code>&#xA;method is not symmetric with respect to the&#xA;&lt;code>java.util.Date.equals(Object)&lt;/code>&#xA;method.  Also, the &lt;code>hashcode&lt;/code> method uses the underlying&#xA;&lt;code>java.util.Date&lt;/code>&#xA;implementation and therefore does not include nanos in its computation.&#xA;&lt;P>&#xA;Due to the differences between the &lt;code>Timestamp&lt;/code> class&#xA;and the &lt;code>java.util.Date&lt;/code>&#xA;class mentioned above, it is recommended that code not view&#xA;&lt;code>Timestamp&lt;/code> values generically as an instance of&#xA;&lt;code>java.util.Date&lt;/code>.  The&#xA;inheritance relationship between &lt;code>Timestamp&lt;/code>&#xA;and &lt;code>java.util.Date&lt;/code> really&#xA;denotes implementation inheritance, and not type inheritance.&#xA;" annotatedElement="5fecf7b1-5582-44da-8b89-23d1d131801f"/>
            <generalization xmi:id="f48363be-8e9f-4f57-bfd0-f0c9de109dc8" isSubstitutable="true" general="66f22d5f-389b-4eb1-852a-78904751a116"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="260cdc40-c178-4e9d-9fa8-32d490b2300e" name="DriverPropertyInfo">
            <ownedComment xmi:id="65382cfd-e62f-458a-b0a7-5d22612dbafc" body="&lt;p>Driver properties for making a connection. The&#xA;&lt;code>DriverPropertyInfo&lt;/code> class is of interest only to advanced programmers&#xA;who need to interact with a Driver via the method&#xA;&lt;code>getDriverProperties&lt;/code> to discover&#xA;and supply properties for connections.&#xA;" annotatedElement="260cdc40-c178-4e9d-9fa8-32d490b2300e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="43489fcf-a0c2-4829-a3aa-2f9ba4a4ef1f" name="Clob" isAbstract="true">
            <ownedComment xmi:id="34567356-966b-47ad-937f-ae432ad82001" body="The mapping in the Java&lt;sup>&lt;font size=-2>TM&lt;/font>&lt;/sup> programming language&#xA;for the SQL &lt;code>CLOB&lt;/code> type.&#xA;An SQL &lt;code>CLOB&lt;/code> is a built-in type&#xA;that stores a Character Large Object as a column value in a row of&#xA;a database table.&#xA;By default drivers implement a &lt;code>Clob&lt;/code> object using an SQL&#xA;&lt;code>locator(CLOB)&lt;/code>, which means that a &lt;code>Clob&lt;/code> object&#xA;contains a logical pointer to the SQL &lt;code>CLOB&lt;/code> data rather than&#xA;the data itself. A &lt;code>Clob&lt;/code> object is valid for the duration&#xA;of the transaction in which it was created.&#xA;&lt;P>The &lt;code>Clob&lt;/code> interface provides methods for getting the&#xA;length of an SQL &lt;code>CLOB&lt;/code> (Character Large Object) value,&#xA;for materializing a &lt;code>CLOB&lt;/code> value on the client, and for&#xA;searching for a substring or &lt;code>CLOB&lt;/code> object within a&#xA;&lt;code>CLOB&lt;/code> value.&#xA;Methods in the interfaces {@link ResultSet},&#xA;{@link CallableStatement}, and {@link PreparedStatement}, such as&#xA;&lt;code>getClob&lt;/code> and &lt;code>setClob&lt;/code> allow a programmer to&#xA;access an SQL &lt;code>CLOB&lt;/code> value.  In addition, this interface&#xA;has methods for updating a &lt;code>CLOB&lt;/code> value.&#xA;&#xA;@since 1.2&#xA;" annotatedElement="43489fcf-a0c2-4829-a3aa-2f9ba4a4ef1f"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="c9ba6907-8f36-46a0-8582-c3773d50c60d" name="lang">
          <packagedElement xmi:type="uml:Class" xmi:id="c9830202-c9c4-48c6-a18c-376520128934" name="Thread" clientDependency="a0c48eae-1cc4-4a09-85b2-349f999476a4">
            <ownedComment xmi:id="3a0b6214-92b0-412f-8b05-712238bf6c60" body="A &lt;i>thread&lt;/i> is a thread of execution in a program. The Java&#xA;Virtual Machine allows an application to have multiple threads of&#xA;execution running concurrently.&#xA;&lt;p>&#xA;Every thread has a priority. Threads with higher priority are&#xA;executed in preference to threads with lower priority. Each thread&#xA;may or may not also be marked as a daemon. When code running in&#xA;some thread creates a new &lt;code>Thread&lt;/code> object, the new&#xA;thread has its priority initially set equal to the priority of the&#xA;creating thread, and is a daemon thread if and only if the&#xA;creating thread is a daemon.&#xA;&lt;p>&#xA;When a Java Virtual Machine starts up, there is usually a single&#xA;non-daemon thread (which typically calls the method named&#xA;&lt;code>main&lt;/code> of some designated class). The Java Virtual&#xA;Machine continues to execute threads until either of the following&#xA;occurs:&#xA;&lt;ul>&#xA;&lt;li>The &lt;code>exit&lt;/code> method of class &lt;code>Runtime&lt;/code> has been&#xA;called and the security manager has permitted the exit operation&#xA;to take place.&#xA;&lt;li>All threads that are not daemon threads have died, either by&#xA;returning from the call to the &lt;code>run&lt;/code> method or by&#xA;throwing an exception that propagates beyond the &lt;code>run&lt;/code>&#xA;method.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;There are two ways to create a new thread of execution. One is to&#xA;declare a class to be a subclass of &lt;code>Thread&lt;/code>. This&#xA;subclass should override the &lt;code>run&lt;/code> method of class&#xA;&lt;code>Thread&lt;/code>. An instance of the subclass can then be&#xA;allocated and started. For example, a thread that computes primes&#xA;larger than a stated value could be written as follows:&#xA;&lt;p>&lt;hr>&lt;blockquote>&lt;pre>&#xA;class PrimeThread extends Thread {&#xA;long minPrime;&#xA;PrimeThread(long minPrime) {&#xA;this.minPrime = minPrime;&#xA;}&#xA;&#xA;public void run() {&#xA;compute primes larger than minPrime&#xA;&amp;nbsp;.&amp;nbsp;.&amp;nbsp;.&#xA;}&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&lt;hr>&#xA;&lt;p>&#xA;The following code would then create a thread and start it running:&#xA;&lt;p>&lt;blockquote>&lt;pre>&#xA;PrimeThread p = new PrimeThread(143);&#xA;p.start();&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;The other way to create a thread is to declare a class that&#xA;implements the &lt;code>Runnable&lt;/code> interface. That class then&#xA;implements the &lt;code>run&lt;/code> method. An instance of the class can&#xA;then be allocated, passed as an argument when creating&#xA;&lt;code>Thread&lt;/code>, and started. The same example in this other&#xA;style looks like the following:&#xA;&lt;p>&lt;hr>&lt;blockquote>&lt;pre>&#xA;class PrimeRun implements Runnable {&#xA;long minPrime;&#xA;PrimeRun(long minPrime) {&#xA;this.minPrime = minPrime;&#xA;}&#xA;&#xA;public void run() {&#xA;compute primes larger than minPrime&#xA;&amp;nbsp;.&amp;nbsp;.&amp;nbsp;.&#xA;}&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&lt;hr>&#xA;&lt;p>&#xA;The following code would then create a thread and start it running:&#xA;&lt;p>&lt;blockquote>&lt;pre>&#xA;PrimeRun p = new PrimeRun(143);&#xA;new Thread(p).start();&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;Every thread has a name for identification purposes. More than&#xA;one thread may have the same name. If a name is not specified when&#xA;a thread is created, a new name is generated for it.&#xA;&#xA;@author  unascribed&#xA;@version 1.155, 06/26/04&#xA;@see     java.lang.Runnable&#xA;@see     java.lang.Runtime#exit(int)&#xA;@see     java.lang.Thread#run()&#xA;@see     java.lang.Thread#stop()&#xA;@since   JDK1.0&#xA;" annotatedElement="c9830202-c9c4-48c6-a18c-376520128934"/>
            <interfaceRealization xmi:id="a0c48eae-1cc4-4a09-85b2-349f999476a4" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="c9830202-c9c4-48c6-a18c-376520128934" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="67040b55-6793-494f-b59f-b53e5f5bd8d7" name="State">
              <ownedComment xmi:id="7e31f2bb-b0fb-4b2d-a629-b677a02b3498" body="A thread state.  A thread can be in one of the following states:&#xA;&lt;ul>&#xA;&lt;li>{@link #NEW}&lt;br>&#xA;A thread that has not yet started is in this state.&#xA;&lt;/li>&#xA;&lt;li>{@link #RUNNABLE}&lt;br>&#xA;A thread executing in the Java virtual machine is in this state.&#xA;&lt;/li>&#xA;&lt;li>{@link #BLOCKED}&lt;br>&#xA;A thread that is blocked waiting for a monitor lock&#xA;is in this state.&#xA;&lt;/li>&#xA;&lt;li>{@link #WAITING}&lt;br>&#xA;A thread that is waiting indefinitely for another thread to&#xA;perform a particular action is in this state.&#xA;&lt;/li>&#xA;&lt;li>{@link #TIMED_WAITING}&lt;br>&#xA;A thread that is waiting for another thread to perform an action&#xA;for up to a specified waiting time is in this state.&#xA;&lt;/li>&#xA;&lt;li>{@link #TERMINATED}&lt;br>&#xA;A thread that has exited is in this state.&#xA;&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;&lt;p>&#xA;A thread can be in only one state at a given point in time.&#xA;These states are virtual machine states which do not reflect&#xA;any operating system thread states.&#xA;&#xA;@since   1.5&#xA;@see Thread#getState&#xA;" annotatedElement="67040b55-6793-494f-b59f-b53e5f5bd8d7"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Interface" xmi:id="c9105393-716c-475a-8109-408dd222b7e6" name="UncaughtExceptionHandler" isAbstract="true">
              <ownedComment xmi:id="05ebb06e-2ccc-4348-9ca3-1579591ecec6" body="Interface for handlers invoked when a &lt;tt>Thread&lt;/tt> abruptly&#xA;terminates due to an uncaught exception.&#xA;&lt;p>When a thread is about to terminate due to an uncaught exception&#xA;the Java Virtual Machine will query the thread for its&#xA;&lt;tt>UncaughtExceptionHandler&lt;/tt> using&#xA;{@link Thread#getUncaughtExceptionHandler} and will invoke the handler's&#xA;&lt;tt>uncaughtException&lt;/tt> method, passing the thread and the&#xA;exception as arguments.&#xA;If a thread has not had its &lt;tt>UncaughtExceptionHandler&lt;/tt>&#xA;explicitly set, then its &lt;tt>ThreadGroup&lt;/tt> object acts as its&#xA;&lt;tt>UncaughtExceptionHandler&lt;/tt>. If the &lt;tt>ThreadGroup&lt;/tt> object&#xA;has no&#xA;special requirements for dealing with the exception, it can forward&#xA;the invocation to the {@linkplain #getDefaultUncaughtExceptionHandler&#xA;default uncaught exception handler}.&#xA;&#xA;@see #setDefaultUncaughtExceptionHandler&#xA;@see #setUncaughtExceptionHandler&#xA;@see ThreadGroup#uncaughtException&#xA;@since 1.5&#xA;" annotatedElement="c9105393-716c-475a-8109-408dd222b7e6"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9e820b8d-4d70-4ca1-8fd7-b54d6244ef4a" name="ArrayStoreException">
            <ownedComment xmi:id="716c2151-654e-41c3-808e-2b758a1e06e7" body="Thrown to indicate that an attempt has been made to store the&#xA;wrong type of object into an array of objects. For example, the&#xA;following code generates an &lt;code>ArrayStoreException&lt;/code>:&#xA;&lt;p>&lt;blockquote>&lt;pre>&#xA;Object x[] = new String[3];&#xA;x[0] = new Integer(0);&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;@author  unascribed&#xA;@version 1.11, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="9e820b8d-4d70-4ca1-8fd7-b54d6244ef4a"/>
            <generalization xmi:id="8509bdae-6632-45ba-a0df-7ab81cca6677" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="147b73f7-0754-4e49-8020-1956e6ec3429" name="Double" clientDependency="c46bcf0f-c596-42d0-baab-7e871ae11c06" isLeaf="true">
            <ownedComment xmi:id="63bed913-31cb-42cb-b6ad-570279453b1d" body="The &lt;code>Double&lt;/code> class wraps a value of the primitive type&#xA;&lt;code>double&lt;/code> in an object. An object of type&#xA;&lt;code>Double&lt;/code> contains a single field whose type is&#xA;&lt;code>double&lt;/code>.&#xA;&lt;p>&#xA;In addition, this class provides several methods for converting a&#xA;&lt;code>double&lt;/code> to a &lt;code>String&lt;/code> and a&#xA;&lt;code>String&lt;/code> to a &lt;code>double&lt;/code>, as well as other&#xA;constants and methods useful when dealing with a&#xA;&lt;code>double&lt;/code>.&#xA;&#xA;@author  Lee Boynton&#xA;@author  Arthur van Hoff&#xA;@author  Joseph D. Darcy&#xA;@version 1.94, 05/11/04&#xA;@since JDK1.0&#xA;" annotatedElement="147b73f7-0754-4e49-8020-1956e6ec3429"/>
            <generalization xmi:id="348b69a6-44df-4977-8bb7-b8bb3a66a981" isSubstitutable="true" general="86595613-8e64-4702-a472-32dc7405cc46"/>
            <interfaceRealization xmi:id="c46bcf0f-c596-42d0-baab-7e871ae11c06" name="" supplier="da6936b4-ecde-4432-9077-6992cd1e029c" client="147b73f7-0754-4e49-8020-1956e6ec3429" contract="da6936b4-ecde-4432-9077-6992cd1e029c"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="18d9da13-c95a-4efa-b475-b90ce15dac77" name="AbstractMethodError">
            <ownedComment xmi:id="548db2a4-5d40-4c07-ab79-753132e27e31" body="Thrown when an application tries to call an abstract method.&#xA;Normally, this error is caught by the compiler; this error can&#xA;only occur at run time if the definition of some class has&#xA;incompatibly changed since the currently executing method was last&#xA;compiled.&#xA;&#xA;@author  unascribed&#xA;@version 1.18, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="18d9da13-c95a-4efa-b475-b90ce15dac77"/>
            <generalization xmi:id="e2bce1f1-ac6b-4948-a21a-986961d5522e" isSubstitutable="true" general="699de52b-659b-433f-833d-c4524675626e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2cdf2d4e-57d3-44d3-8567-22c714490e9a" name="SecurityException">
            <ownedComment xmi:id="01edd9e3-042b-4246-b273-a9f0e6342e73" body="Thrown by the security manager to indicate a security violation.&#xA;&#xA;@author  unascribed&#xA;@version 1.16, 12/19/03&#xA;@see     java.lang.SecurityManager&#xA;@since   JDK1.0&#xA;" annotatedElement="2cdf2d4e-57d3-44d3-8567-22c714490e9a"/>
            <generalization xmi:id="9fe8ed42-4c32-4251-8941-a9ea496f9248" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="add26864-681f-4efa-930b-32e7f66a5186" name="CharSequence" isAbstract="true">
            <ownedComment xmi:id="ecb5e7d9-d84e-4529-aeaa-5a76b000edc9" body="A &lt;tt>CharSequence&lt;/tt> is a readable sequence of &lt;code>char&lt;/code> values. This&#xA;interface provides uniform, read-only access to many different kinds of&#xA;&lt;code>char&lt;/code> sequences.&#xA;A &lt;code>char&lt;/code> value represents a character in the &lt;i>Basic&#xA;Multilingual Plane (BMP)&lt;/i> or a surrogate. Refer to &lt;a&#xA;href=&quot;Character.html#unicode&quot;>Unicode Character Representation&lt;/a> for details.&#xA;&#xA;&lt;p> This interface does not refine the general contracts of the {@link&#xA;java.lang.Object#equals(java.lang.Object) equals} and {@link&#xA;java.lang.Object#hashCode() hashCode} methods.  The result of comparing two&#xA;objects that implement &lt;tt>CharSequence&lt;/tt> is therefore, in general,&#xA;undefined.  Each object may be implemented by a different class, and there&#xA;is no guarantee that each class will be capable of testing its instances&#xA;for equality with those of the other.  It is therefore inappropriate to use&#xA;arbitrary &lt;tt>CharSequence&lt;/tt> instances as elements in a set or as keys in&#xA;a map. &lt;/p>&#xA;&#xA;@author Mike McCloskey&#xA;@version 1.8 03/12/19&#xA;@since 1.4&#xA;@spec JSR-51&#xA;" annotatedElement="add26864-681f-4efa-930b-32e7f66a5186"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="46f09612-5621-479e-90ab-e39c3400c6ed" name="ThreadLocal">
            <ownedComment xmi:id="6b58d979-8290-462d-b296-558a981b0331" body="This class provides thread-local variables.  These variables differ from&#xA;their normal counterparts in that each thread that accesses one (via its&#xA;&lt;tt>get&lt;/tt> or &lt;tt>set&lt;/tt> method) has its own, independently initialized&#xA;copy of the variable.  &lt;tt>ThreadLocal&lt;/tt> instances are typically private&#xA;static fields in classes that wish to associate state with a thread (e.g.,&#xA;a user ID or Transaction ID).&#xA;&#xA;&lt;p>For example, in the class below, the private static &lt;tt>ThreadLocal&lt;/tt>&#xA;instance (&lt;tt>serialNum&lt;/tt>) maintains a &quot;serial number&quot; for each thread&#xA;that invokes the class's static &lt;tt>SerialNum.get()&lt;/tt> method, which&#xA;returns the current thread's serial number.  (A thread's serial number is&#xA;assigned the first time it invokes &lt;tt>SerialNum.get()&lt;/tt>, and remains&#xA;unchanged on subsequent calls.)&#xA;&lt;pre>&#xA;public class SerialNum {&#xA;The next serial number to be assigned&#xA;private static int nextSerialNum = 0;&#xA;&#xA;private static ThreadLocal serialNum = new ThreadLocal() {&#xA;protected synchronized Object initialValue() {&#xA;return new Integer(nextSerialNum++);&#xA;}&#xA;};&#xA;&#xA;public static int get() {&#xA;return ((Integer) (serialNum.get())).intValue();&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p>Each thread holds an implicit reference to its copy of a thread-local&#xA;variable as long as the thread is alive and the &lt;tt>ThreadLocal&lt;/tt>&#xA;instance is accessible; after a thread goes away, all of its copies of&#xA;thread-local instances are subject to garbage collection (unless other&#xA;references to these copies exist).&#xA;&#xA;@author  Josh Bloch and Doug Lea&#xA;@version 1.33, 02/19/04&#xA;@since   1.2&#xA;" annotatedElement="46f09612-5621-479e-90ab-e39c3400c6ed"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="27c960b9-40ea-4a9e-a94f-ee770c4e6956" name="" parameter="3dfe61f5-8a48-4907-be98-70e632f75c29">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="3dfe61f5-8a48-4907-be98-70e632f75c29" parameteredElement="60a28240-3716-4365-abc2-8a8ea16da503">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="60a28240-3716-4365-abc2-8a8ea16da503" name="T" templateParameter="3dfe61f5-8a48-4907-be98-70e632f75c29"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c49fef46-1b8c-45f3-af7b-309886dc69d9" name="ThreadLocalMap" visibility="package">
              <ownedComment xmi:id="ba8afb61-e65b-4c7e-a9a3-fe678273138c" body="ThreadLocalMap is a customized hash map suitable only for&#xA;maintaining thread local values. No operations are exported&#xA;outside of the ThreadLocal class. The class is package private to&#xA;allow declaration of fields in class Thread.  To help deal with&#xA;very large and long-lived usages, the hash table entries use&#xA;WeakReferences for keys. However, since reference queues are not&#xA;used, stale entries are guaranteed to be removed only when&#xA;the table starts running out of space.&#xA;" annotatedElement="c49fef46-1b8c-45f3-af7b-309886dc69d9"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="5f15521a-68ad-4d10-af98-ca476789636c" name="Entry" visibility="private">
                <ownedComment xmi:id="5a6f2b30-fe4b-4815-b159-5183f6283b1c" body="The entries in this hash map extend WeakReference, using&#xA;its main ref field as the key (which is always a&#xA;ThreadLocal object).  Note that null keys (i.e. entry.get()&#xA;== null) mean that the key is no longer referenced, so the&#xA;entry can be expunged from table.  Such entries are referred to&#xA;as &quot;stale entries&quot; in the code that follows.&#xA;" annotatedElement="5f15521a-68ad-4d10-af98-ca476789636c"/>
                <generalization xmi:id="57222286-c84b-4e6c-a67e-060f370e59b5" isSubstitutable="true" general="c1c7cc2e-cf38-48a9-8cea-5c98c23841ff"/>
              </nestedClassifier>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b9dfcba3-b1f6-4892-b319-7259d05ae9f8" name="NoSuchFieldException">
            <ownedComment xmi:id="75f2c500-ad7e-4dac-a8b2-f47d6ac7c4b7" body="Signals that the class doesn't have a field of a specified name.&#xA;&#xA;@author  unascribed&#xA;@version 1.14, 12/19/03&#xA;@since   JDK1.1&#xA;" annotatedElement="b9dfcba3-b1f6-4892-b319-7259d05ae9f8"/>
            <generalization xmi:id="4cc925d6-fa9b-49c1-a44d-1135fb76f944" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="712d220f-47d5-4e08-99da-8329cb18a01b" name="reflect">
            <packagedElement xmi:type="uml:Interface" xmi:id="dd5f4489-1c3d-4937-9283-abc26bde7be0" name="TypeVariable" isAbstract="true">
              <ownedComment xmi:id="b403bdf3-ca47-4d35-a950-fd5dbd131a68" body="TypeVariable is the common superinterface for type variables of kinds.&#xA;A type variable is created the first time it is needed by a reflective&#xA;method, as specified in this package.  If a type variable t is referenced&#xA;by a type (i.e, class, interface or annotation type) T, and T is declared&#xA;by the nth enclosing class of T (see JLS 8.1.2), then the creation of t&#xA;requires the resolution (see JVMS 5) of the ith enclosing class of T,&#xA;for i = 0 to n, inclusive. Creating a type variable must not cause the&#xA;creation of its bounds. Repeated creation of a type variable has no effect.&#xA;&#xA;&lt;p>Multiple objects may be instantiated at run-time to&#xA;represent a given type variable. Even though a type variable is&#xA;created only once, this does not imply any requirement to cache&#xA;instances representing the type variable. However, all instances&#xA;representing a type variable must be equal() to each other.&#xA;As a consequence, users of type variables must not rely on the identity&#xA;of instances of classes implementing this interface.&#xA;&#xA;&lt;p>The type parameter D represents the type of generic declaration&#xA;that declared the underlying type variable.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="dd5f4489-1c3d-4937-9283-abc26bde7be0"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="3c7827a1-0174-4c5c-8c59-59ec05acb6c5" name="" parameter="2c4ca66b-a8b9-408a-a25f-d8b4e8b88172">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="2c4ca66b-a8b9-408a-a25f-d8b4e8b88172" parameteredElement="301f8002-e5af-4e1a-a325-cef913f600bf">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="301f8002-e5af-4e1a-a325-cef913f600bf" name="D" clientDependency="6b50ae18-89c0-4cb6-a336-8f6ed5aae1c1" templateParameter="2c4ca66b-a8b9-408a-a25f-d8b4e8b88172">
                    <interfaceRealization xmi:id="6b50ae18-89c0-4cb6-a336-8f6ed5aae1c1" name="" supplier="f76c51aa-c159-493b-8263-733b72f0638c" client="301f8002-e5af-4e1a-a325-cef913f600bf" contract="f76c51aa-c159-493b-8263-733b72f0638c"/>
                  </ownedParameteredElement>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="146d81e5-45c6-467c-8af4-3ee034c408bc" isSubstitutable="true" general="2c4aa31c-ddd1-4652-8dae-3d674c31f07c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b9dcb751-7cac-4e68-bf6b-eb375aa1bf10" name="Modifier">
              <ownedComment xmi:id="985dc2b1-0bc0-440c-a814-d309812c36e5" body="The Modifier class provides &lt;code>static&lt;/code> methods and&#xA;constants to decode class and member access modifiers.  The sets of&#xA;modifiers are represented as integers with distinct bit positions&#xA;representing different modifiers.  The values for the constants&#xA;representing the modifiers are taken from &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html&quot;>&lt;i>The&#xA;Java&lt;/i>&lt;sup>&lt;small>TM&lt;/small>&lt;/sup> &lt;i>Virtual Machine Specification, Second&#xA;edition&lt;/i>&lt;/a> tables&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#75734&quot;>4.1&lt;/a>,&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#88358&quot;>4.4&lt;/a>,&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#75568&quot;>4.5&lt;/a>, and&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#88478&quot;>4.7&lt;/a>.&#xA;&#xA;@see Class#getModifiers()&#xA;@see Member#getModifiers()&#xA;&#xA;@author Nakul Saraiya&#xA;@author Kenneth Russell&#xA;" annotatedElement="b9dcb751-7cac-4e68-bf6b-eb375aa1bf10"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e9e7399c-8572-4f69-b20f-8358bf077f0a" name="AccessibleObject" clientDependency="9c033bf3-6c11-4b9a-9c65-cac26c8878ba">
              <ownedComment xmi:id="c5fcb905-b2b9-477f-b958-8bc1c338b4b5" body="The AccessibleObject class is the base class for Field, Method and&#xA;Constructor objects.  It provides the ability to flag a reflected&#xA;object as suppressing default Java language access control checks&#xA;when it is used.  The access checks--for public, default (package)&#xA;access, protected, and private members--are performed when Fields,&#xA;Methods or Constructors are used to set or get fields, to invoke&#xA;methods, or to create and initialize new instances of classes,&#xA;respectively.&#xA;&#xA;&lt;p>Setting the &lt;tt>accessible&lt;/tt> flag in a reflected object&#xA;permits sophisticated applications with sufficient privilege, such&#xA;as Java Object Serialization or other persistence mechanisms, to&#xA;manipulate objects in a manner that would normally be prohibited.&#xA;&#xA;@see Field&#xA;@see Method&#xA;@see Constructor&#xA;@see ReflectPermission&#xA;&#xA;@since 1.2&#xA;" annotatedElement="e9e7399c-8572-4f69-b20f-8358bf077f0a"/>
              <interfaceRealization xmi:id="9c033bf3-6c11-4b9a-9c65-cac26c8878ba" name="" supplier="4da33703-8c3c-4d01-8eb0-6be845fe5f17" client="e9e7399c-8572-4f69-b20f-8358bf077f0a" contract="4da33703-8c3c-4d01-8eb0-6be845fe5f17"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="60847aae-c149-43fa-833b-dc19948dfe03" name="Method" clientDependency="f6717c28-3f16-4c70-a1fd-843fdbe27672 af9baac6-5494-428b-bec2-0ef852236e1b" isLeaf="true">
              <ownedComment xmi:id="d3e3d045-c1d8-4f33-8b8c-549855bb960c" body="A &lt;code>Method&lt;/code> provides information about, and access to, a single method&#xA;on a class or interface.  The reflected method may be a class method&#xA;or an instance method (including an abstract method).&#xA;&#xA;&lt;p>A &lt;code>Method&lt;/code> permits widening conversions to occur when matching the&#xA;actual parameters to invoke with the underlying method's formal&#xA;parameters, but it throws an &lt;code>IllegalArgumentException&lt;/code> if a&#xA;narrowing conversion would occur.&#xA;&#xA;@see Member&#xA;@see java.lang.Class&#xA;@see java.lang.Class#getMethods()&#xA;@see java.lang.Class#getMethod(String, Class[])&#xA;@see java.lang.Class#getDeclaredMethods()&#xA;@see java.lang.Class#getDeclaredMethod(String, Class[])&#xA;&#xA;@author Kenneth Russell&#xA;@author Nakul Saraiya&#xA;" annotatedElement="60847aae-c149-43fa-833b-dc19948dfe03"/>
              <generalization xmi:id="5d840ddc-78fb-4673-a5ab-81e1581cdc05" isSubstitutable="true" general="e9e7399c-8572-4f69-b20f-8358bf077f0a"/>
              <interfaceRealization xmi:id="af9baac6-5494-428b-bec2-0ef852236e1b" name="" supplier="f76c51aa-c159-493b-8263-733b72f0638c" client="60847aae-c149-43fa-833b-dc19948dfe03" contract="f76c51aa-c159-493b-8263-733b72f0638c"/>
              <interfaceRealization xmi:id="f6717c28-3f16-4c70-a1fd-843fdbe27672" name="" supplier="19374eea-07bd-46c5-9b6f-8e8867021694" client="60847aae-c149-43fa-833b-dc19948dfe03" contract="19374eea-07bd-46c5-9b6f-8e8867021694"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="8444b814-35f0-4e51-99e6-10057d7665f0" name="ParameterizedType" isAbstract="true">
              <ownedComment xmi:id="ff706cbe-91ec-4743-928a-1aaeea9c51d0" body="ParameterizedType represents a parameterized type such as&#xA;Collection&lt;String>.&#xA;&#xA;&lt;p>A parameterized type is created the first time it is needed by a&#xA;reflective method, as specified in this package. When a&#xA;parameterized type p is created, the generic type declaration that&#xA;p instantiates is resolved, and all type arguments of p are created&#xA;recursively. See {@link java.lang.reflect.TypeVariable&#xA;TypeVariable} for details on the creation process for type&#xA;variables. Repeated creation of a parameterized type has no effect.&#xA;&#xA;&lt;p>Instances of classes that implement this interface must implement&#xA;an equals() method that equates any two instances that share the&#xA;same generic type declaration and have equal type parameters.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="8444b814-35f0-4e51-99e6-10057d7665f0"/>
              <generalization xmi:id="50988f55-d8c6-41d0-8b98-8043e204b824" isSubstitutable="true" general="2c4aa31c-ddd1-4652-8dae-3d674c31f07c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="dfd2e625-60fa-4f16-a76f-54277f7f6e22" name="ReflectAccess" visibility="package">
              <ownedComment xmi:id="1708bbe0-f57a-4217-b05e-a10b886b70f7" body="Package-private class implementing the&#xA;sun.reflect.LangReflectAccess interface, allowing the java.lang&#xA;package to instantiate objects in this package." annotatedElement="dfd2e625-60fa-4f16-a76f-54277f7f6e22"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="f76c51aa-c159-493b-8263-733b72f0638c" name="GenericDeclaration" isAbstract="true">
              <ownedComment xmi:id="8695e2c8-5462-450f-ab04-0a06a8901879" body="A common interface for all entities that declare type variables.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="f76c51aa-c159-493b-8263-733b72f0638c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f9810eb2-238d-4d00-a613-405c1050af09" name="UndeclaredThrowableException">
              <ownedComment xmi:id="82674cc4-c9df-4738-9448-0d7926e471da" body="Thrown by a method invocation on a proxy instance if its invocation&#xA;handler's {@link InvocationHandler#invoke invoke} method throws a&#xA;checked exception (a &lt;code>Throwable&lt;/code> that is not assignable&#xA;to &lt;code>RuntimeException&lt;/code> or &lt;code>Error&lt;/code>) that&#xA;is not assignable to any of the exception types declared in the&#xA;&lt;code>throws&lt;/code> clause of the method that was invoked on the&#xA;proxy instance and dispatched to the invocation handler.&#xA;&#xA;&lt;p>An &lt;code>UndeclaredThrowableException&lt;/code> instance contains&#xA;the undeclared checked exception that was thrown by the invocation&#xA;handler, and it can be retrieved with the&#xA;&lt;code>getUndeclaredThrowable()&lt;/code> method.&#xA;&lt;code>UndeclaredThrowableException&lt;/code> extends&#xA;&lt;code>RuntimeException&lt;/code>, so it is an unchecked exception&#xA;that wraps a checked exception.&#xA;&#xA;&lt;p>As of release 1.4, this exception has been retrofitted to&#xA;conform to the general purpose exception-chaining mechanism.  The&#xA;&quot;undeclared checked exception that was thrown by the invocation&#xA;handler&quot; that may be provided at construction time and accessed via&#xA;the {@link #getUndeclaredThrowable()} method is now known as the&#xA;&lt;i>cause&lt;/i>, and may be accessed via the {@link&#xA;Throwable#getCause()} method, as well as the aforementioned &quot;legacy&#xA;method.&quot;&#xA;&#xA;@author&#x9;Peter Jones&#xA;@version&#x9;1.13, 04/02/19&#xA;@see&#x9;&#x9;InvocationHandler&#xA;@since&#x9;JDK1.3&#xA;" annotatedElement="f9810eb2-238d-4d00-a613-405c1050af09"/>
              <generalization xmi:id="1722d712-cd5e-407d-b275-72a54058c171" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="19374eea-07bd-46c5-9b6f-8e8867021694" name="Member" isAbstract="true">
              <ownedComment xmi:id="b3d085c5-bf51-4937-b59a-087be1cda00f" body="Member is an interface that reflects identifying information about&#xA;a single member (a field or a method) or a constructor.&#xA;&#xA;@see&#x9;java.lang.Class&#xA;@see&#x9;Field&#xA;@see&#x9;Method&#xA;@see&#x9;Constructor&#xA;&#xA;@author Nakul Saraiya&#xA;" annotatedElement="19374eea-07bd-46c5-9b6f-8e8867021694"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="c708d253-208f-4db5-96ce-32f3de207ea8" name="GenericArrayType" isAbstract="true">
              <ownedComment xmi:id="ffbb6fbc-ca83-493a-b83f-be56a0d63224" body="&lt;tt>GenericArrayType&lt;/tt> represents an array type whose component&#xA;type is either a parameterized type or a type variable.&#xA;@since 1.5&#xA;" annotatedElement="c708d253-208f-4db5-96ce-32f3de207ea8"/>
              <generalization xmi:id="d9497bd0-7681-42e2-a66c-547ee5164796" isSubstitutable="true" general="2c4aa31c-ddd1-4652-8dae-3d674c31f07c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8cf2eb1c-c1c6-44e3-9d43-eafdb341ec5c" name="Constructor" clientDependency="8a47a44e-2c10-45fe-971f-d0875f02d85e da5df3b4-7513-402e-bb34-aebe68cf7248" isLeaf="true">
              <ownedComment xmi:id="5b4630c7-6434-439a-b91d-436f16bde352" body="&lt;code>Constructor&lt;/code> provides information about, and access to, a single&#xA;constructor for a class.&#xA;&#xA;&lt;p>&lt;code>Constructor&lt;/code> permits widening conversions to occur when matching the&#xA;actual parameters to newInstance() with the underlying&#xA;constructor's formal parameters, but throws an&#xA;&lt;code>IllegalArgumentException&lt;/code> if a narrowing conversion would occur.&#xA;&#xA;@see Member&#xA;@see java.lang.Class&#xA;@see java.lang.Class#getConstructors()&#xA;@see java.lang.Class#getConstructor(Class[])&#xA;@see java.lang.Class#getDeclaredConstructors()&#xA;&#xA;@author&#x9;Kenneth Russell&#xA;@author&#x9;Nakul Saraiya&#xA;" annotatedElement="8cf2eb1c-c1c6-44e3-9d43-eafdb341ec5c"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="3f075d63-76fc-45c6-bfa6-84ac208ab39a" name="" parameter="23553508-077b-4515-95a2-4cd09ef01692">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="23553508-077b-4515-95a2-4cd09ef01692" parameteredElement="90d7d7ba-371e-434d-8f6b-be9258813c49">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="90d7d7ba-371e-434d-8f6b-be9258813c49" name="T" templateParameter="23553508-077b-4515-95a2-4cd09ef01692"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="83a1f1fd-c35b-48db-85a2-db1520a5f887" isSubstitutable="true" general="e9e7399c-8572-4f69-b20f-8358bf077f0a"/>
              <interfaceRealization xmi:id="da5df3b4-7513-402e-bb34-aebe68cf7248" name="" supplier="f76c51aa-c159-493b-8263-733b72f0638c" client="8cf2eb1c-c1c6-44e3-9d43-eafdb341ec5c" contract="f76c51aa-c159-493b-8263-733b72f0638c"/>
              <interfaceRealization xmi:id="8a47a44e-2c10-45fe-971f-d0875f02d85e" name="" supplier="19374eea-07bd-46c5-9b6f-8e8867021694" client="8cf2eb1c-c1c6-44e3-9d43-eafdb341ec5c" contract="19374eea-07bd-46c5-9b6f-8e8867021694"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9ce289d8-5e5d-407a-9566-e5606df190e8" name="Proxy" clientDependency="c897d46b-178a-441d-a3a6-7aadb53ab7af">
              <ownedComment xmi:id="55cdab88-c00a-4bbd-9971-7263c431152a" body="&lt;code>Proxy&lt;/code> provides static methods for creating dynamic proxy&#xA;classes and instances, and it is also the superclass of all&#xA;dynamic proxy classes created by those methods.&#xA;&#xA;&lt;p>To create a proxy for some interface &lt;code>Foo&lt;/code>:&#xA;&lt;pre>&#xA;InvocationHandler handler = new MyInvocationHandler(...);&#xA;Class proxyClass = Proxy.getProxyClass(&#xA;Foo.class.getClassLoader(), new Class[] { Foo.class });&#xA;Foo f = (Foo) proxyClass.&#xA;getConstructor(new Class[] { InvocationHandler.class }).&#xA;newInstance(new Object[] { handler });&#xA;&lt;/pre>&#xA;or more simply:&#xA;&lt;pre>&#xA;Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(),&#xA;new Class[] { Foo.class },&#xA;handler);&#xA;&lt;/pre>&#xA;&#xA;&lt;p>A &lt;i>dynamic proxy class&lt;/i> (simply referred to as a &lt;i>proxy&#xA;class&lt;/i> below) is a class that implements a list of interfaces&#xA;specified at runtime when the class is created, with behavior as&#xA;described below.&#xA;&#xA;A &lt;i>proxy interface&lt;/i> is such an interface that is implemented&#xA;by a proxy class.&#xA;&#xA;A &lt;i>proxy instance&lt;/i> is an instance of a proxy class.&#xA;&#xA;Each proxy instance has an associated &lt;i>invocation handler&lt;/i>&#xA;object, which implements the interface {@link InvocationHandler}.&#xA;A method invocation on a proxy instance through one of its proxy&#xA;interfaces will be dispatched to the {@link InvocationHandler#invoke&#xA;invoke} method of the instance's invocation handler, passing the proxy&#xA;instance, a &lt;code>java.lang.reflect.Method&lt;/code> object identifying&#xA;the method that was invoked, and an array of type &lt;code>Object&lt;/code>&#xA;containing the arguments.  The invocation handler processes the&#xA;encoded method invocation as appropriate and the result that it&#xA;returns will be returned as the result of the method invocation on&#xA;the proxy instance.&#xA;&#xA;&lt;p>A proxy class has the following properties:&#xA;&#xA;&lt;ul>&#xA;&lt;li>Proxy classes are public, final, and not abstract.&#xA;&#xA;&lt;li>The unqualified name of a proxy class is unspecified.  The space&#xA;of class names that begin with the string &lt;code>&quot;$Proxy&quot;&lt;/code>&#xA;should be, however, reserved for proxy classes.&#xA;&#xA;&lt;li>A proxy class extends &lt;code>java.lang.reflect.Proxy&lt;/code>.&#xA;&#xA;&lt;li>A proxy class implements exactly the interfaces specified at its&#xA;creation, in the same order.&#xA;&#xA;&lt;li>If a proxy class implements a non-public interface, then it will&#xA;be defined in the same package as that interface.  Otherwise, the&#xA;package of a proxy class is also unspecified.  Note that package&#xA;sealing will not prevent a proxy class from being successfully defined&#xA;in a particular package at runtime, and neither will classes already&#xA;defined by the same class loader and the same package with particular&#xA;signers.&#xA;&#xA;&lt;li>Since a proxy class implements all of the interfaces specified at&#xA;its creation, invoking &lt;code>getInterfaces&lt;/code> on its&#xA;&lt;code>Class&lt;/code> object will return an array containing the same&#xA;list of interfaces (in the order specified at its creation), invoking&#xA;&lt;code>getMethods&lt;/code> on its &lt;code>Class&lt;/code> object will return&#xA;an array of &lt;code>Method&lt;/code> objects that include all of the&#xA;methods in those interfaces, and invoking &lt;code>getMethod&lt;/code> will&#xA;find methods in the proxy interfaces as would be expected.&#xA;&#xA;&lt;li>The {@link Proxy#isProxyClass Proxy.isProxyClass} method will&#xA;return true if it is passed a proxy class-- a class returned by&#xA;&lt;code>Proxy.getProxyClass&lt;/code> or the class of an object returned by&#xA;&lt;code>Proxy.newProxyInstance&lt;/code>-- and false otherwise.&#xA;&#xA;&lt;li>The &lt;code>java.security.ProtectionDomain&lt;/code> of a proxy class&#xA;is the same as that of system classes loaded by the bootstrap class&#xA;loader, such as &lt;code>java.lang.Object&lt;/code>, because the code for a&#xA;proxy class is generated by trusted system code.  This protection&#xA;domain will typically be granted&#xA;&lt;code>java.security.AllPermission&lt;/code>.&#xA;&#xA;&lt;li>Each proxy class has one public constructor that takes one argument,&#xA;an implementation of the interface {@link InvocationHandler}, to set&#xA;the invocation handler for a proxy instance.  Rather than having to use&#xA;the reflection API to access the public constructor, a proxy instance&#xA;can be also be created by calling the {@link Proxy#newProxyInstance&#xA;Proxy.newInstance} method, which combines the actions of calling&#xA;{@link Proxy#getProxyClass Proxy.getProxyClass} with invoking the&#xA;constructor with an invocation handler.&#xA;&lt;/ul>&#xA;&#xA;&lt;p>A proxy instance has the following properties:&#xA;&#xA;&lt;ul>&#xA;&lt;li>Given a proxy instance &lt;code>proxy&lt;/code> and one of the&#xA;interfaces implemented by its proxy class &lt;code>Foo&lt;/code>, the&#xA;following expression will return true:&#xA;&lt;pre>&#xA;&lt;code>proxy instanceof Foo&lt;/code>&#xA;&lt;/pre>&#xA;and the following cast operation will succeed (rather than throwing&#xA;a &lt;code>ClassCastException&lt;/code>):&#xA;&lt;pre>&#xA;&lt;code>(Foo) proxy&lt;/code>&#xA;&lt;/pre>&#xA;&#xA;&lt;li>Each proxy instance has an associated invocation handler, the one&#xA;that was passed to its constructor.  The static&#xA;{@link Proxy#getInvocationHandler Proxy.getInvocationHandler} method&#xA;will return the invocation handler associated with the proxy instance&#xA;passed as its argument.&#xA;&#xA;&lt;li>An interface method invocation on a proxy instance will be&#xA;encoded and dispatched to the invocation handler's {@link&#xA;InvocationHandler#invoke invoke} method as described in the&#xA;documentation for that method.&#xA;&#xA;&lt;li>An invocation of the &lt;code>hashCode&lt;/code>,&#xA;&lt;code>equals&lt;/code>, or &lt;code>toString&lt;/code> methods declared in&#xA;&lt;code>java.lang.Object&lt;/code> on a proxy instance will be encoded and&#xA;dispatched to the invocation handler's &lt;code>invoke&lt;/code> method in&#xA;the same manner as interface method invocations are encoded and&#xA;dispatched, as described above.  The declaring class of the&#xA;&lt;code>Method&lt;/code> object passed to &lt;code>invoke&lt;/code> will be&#xA;&lt;code>java.lang.Object&lt;/code>.  Other public methods of a proxy&#xA;instance inherited from &lt;code>java.lang.Object&lt;/code> are not&#xA;overridden by a proxy class, so invocations of those methods behave&#xA;like they do for instances of &lt;code>java.lang.Object&lt;/code>.&#xA;&lt;/ul>&#xA;&#xA;&lt;h3>Methods Duplicated in Multiple Proxy Interfaces&lt;/h3>&#xA;&#xA;&lt;p>When two or more interfaces of a proxy class contain a method with&#xA;the same name and parameter signature, the order of the proxy class's&#xA;interfaces becomes significant.  When such a &lt;i>duplicate method&lt;/i>&#xA;is invoked on a proxy instance, the &lt;code>Method&lt;/code> object passed&#xA;to the invocation handler will not necessarily be the one whose&#xA;declaring class is assignable from the reference type of the interface&#xA;that the proxy's method was invoked through.  This limitation exists&#xA;because the corresponding method implementation in the generated proxy&#xA;class cannot determine which interface it was invoked through.&#xA;Therefore, when a duplicate method is invoked on a proxy instance,&#xA;the &lt;code>Method&lt;/code> object for the method in the foremost interface&#xA;that contains the method (either directly or inherited through a&#xA;superinterface) in the proxy class's list of interfaces is passed to&#xA;the invocation handler's &lt;code>invoke&lt;/code> method, regardless of the&#xA;reference type through which the method invocation occurred.&#xA;&#xA;&lt;p>If a proxy interface contains a method with the same name and&#xA;parameter signature as the &lt;code>hashCode&lt;/code>, &lt;code>equals&lt;/code>,&#xA;or &lt;code>toString&lt;/code> methods of &lt;code>java.lang.Object&lt;/code>,&#xA;when such a method is invoked on a proxy instance, the&#xA;&lt;code>Method&lt;/code> object passed to the invocation handler will have&#xA;&lt;code>java.lang.Object&lt;/code> as its declaring class.  In other words,&#xA;the public, non-final methods of &lt;code>java.lang.Object&lt;/code>&#xA;logically precede all of the proxy interfaces for the determination of&#xA;which &lt;code>Method&lt;/code> object to pass to the invocation handler.&#xA;&#xA;&lt;p>Note also that when a duplicate method is dispatched to an&#xA;invocation handler, the &lt;code>invoke&lt;/code> method may only throw&#xA;checked exception types that are assignable to one of the exception&#xA;types in the &lt;code>throws&lt;/code> clause of the method in &lt;i>all&lt;/i> of&#xA;the proxy interfaces that it can be invoked through.  If the&#xA;&lt;code>invoke&lt;/code> method throws a checked exception that is not&#xA;assignable to any of the exception types declared by the method in one&#xA;of the proxy interfaces that it can be invoked through, then an&#xA;unchecked &lt;code>UndeclaredThrowableException&lt;/code> will be thrown by&#xA;the invocation on the proxy instance.  This restriction means that not&#xA;all of the exception types returned by invoking&#xA;&lt;code>getExceptionTypes&lt;/code> on the &lt;code>Method&lt;/code> object&#xA;passed to the &lt;code>invoke&lt;/code> method can necessarily be thrown&#xA;successfully by the &lt;code>invoke&lt;/code> method.&#xA;&#xA;@author&#x9;Peter Jones&#xA;@version&#x9;1.20, 04/04/20&#xA;@see&#x9;&#x9;InvocationHandler&#xA;@since&#x9;1.3&#xA;" annotatedElement="9ce289d8-5e5d-407a-9566-e5606df190e8"/>
              <interfaceRealization xmi:id="c897d46b-178a-441d-a3a6-7aadb53ab7af" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="9ce289d8-5e5d-407a-9566-e5606df190e8" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="db16cb55-6a36-40ec-b9b3-5607bf908b29" name="InvocationHandler" isAbstract="true">
              <ownedComment xmi:id="b7f33622-8cab-4858-83c0-02a3221878b3" body="&lt;code>InvocationHandler&lt;/code> is the interface implemented by&#xA;the &lt;i>invocation handler&lt;/i> of a proxy instance.&#xA;&#xA;&lt;p>Each proxy instance has an associated invocation handler.&#xA;When a method is invoked on a proxy instance, the method&#xA;invocation is encoded and dispatched to the &lt;code>invoke&lt;/code>&#xA;method of its invocation handler.&#xA;&#xA;@author&#x9;Peter Jones&#xA;@version&#x9;1.9, 03/12/19&#xA;@see&#x9;&#x9;Proxy&#xA;@since&#x9;JDK1.3&#xA;" annotatedElement="db16cb55-6a36-40ec-b9b3-5607bf908b29"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="63905188-0826-4448-8e4b-1682404d050c" name="GenericSignatureFormatError">
              <ownedComment xmi:id="2688d4d7-2141-471b-a9ff-8e348a1b1f54" body="Thrown when a syntactically malformed signature attribute is&#xA;encountered by a reflective method that needs to interpret the&#xA;generic signature information for a type, method or constructor.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="63905188-0826-4448-8e4b-1682404d050c"/>
              <generalization xmi:id="e9cc58c4-c290-4cc5-8714-edaeb12f9a33" isSubstitutable="true" general="b09d7543-2888-4970-a315-8a0625905d71"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="4da33703-8c3c-4d01-8eb0-6be845fe5f17" name="AnnotatedElement" isAbstract="true">
              <ownedComment xmi:id="80287725-8fa8-40d5-b4cd-d24e480481f1" body="Represents an annotated element of the program currently running in this&#xA;VM.  This interface allows annotations to be read reflectively.  All&#xA;annotations returned by methods in this interface are immutable and&#xA;serializable.  It is permissible for the caller to modify the&#xA;arrays returned by accessors for array-valued enum members; it will&#xA;have no affect on the arrays returned to other callers.&#xA;&#xA;&lt;p>If an annotation returned by a method in this interface contains&#xA;(directly or indirectly) a {@link Class}-valued member referring to&#xA;a class that is not accessible in this VM, attempting to read the class&#xA;by calling the relevant Class-returning method on the returned annotation&#xA;will result in a {@link TypeNotPresentException}.&#xA;&#xA;&lt;p>Similarly, attempting to read an enum-valued member will result in&#xA;a {@link EnumConstantNotPresentException} if the enum constant in the&#xA;annotation is no longer present in the enum type.&#xA;&#xA;&lt;p>Finally, Attempting to read a member whose definition has evolved&#xA;incompatibly will result in a {@link&#xA;java.lang.annotation.AnnotationTypeMismatchException} or an&#xA;{@link java.lang.annotation.IncompleteAnnotationException}.&#xA;&#xA;@since 1.5&#xA;@author Josh Bloch&#xA;" annotatedElement="4da33703-8c3c-4d01-8eb0-6be845fe5f17"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7acd16d7-d7fe-4f2c-9cdd-6db4ada3ade9" name="MalformedParameterizedTypeException">
              <ownedComment xmi:id="b3b2ec61-0bf0-49d7-ae3f-6d10ca07a8b1" body="Thrown when a semantically malformed parameterized type is&#xA;encountered by a reflective method that needs to instantiate it.&#xA;For example, if the number of type arguments to a parameterized type&#xA;is wrong.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="7acd16d7-d7fe-4f2c-9cdd-6db4ada3ade9"/>
              <generalization xmi:id="a0b2181d-df73-46ac-b92e-a077c43785cb" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d482bb76-8d7d-4a2a-9ae8-0a32db0723dd" name="WildcardType" isAbstract="true">
              <ownedComment xmi:id="295d2fff-91be-430a-aa83-873d7ad184a9" body="WildcardType represents a wildcard type expression, such as&#xA;&lt;tt>?&lt;/tt>, &lt;tt>? extends Number&lt;/tt>, or &lt;tt>? super Integer&lt;/tt>.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="d482bb76-8d7d-4a2a-9ae8-0a32db0723dd"/>
              <generalization xmi:id="69dec99c-2121-44c7-8af8-779d3754c46e" isSubstitutable="true" general="2c4aa31c-ddd1-4652-8dae-3d674c31f07c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="fb5600d8-045c-40cb-8d7c-2ecea5a09896" name="Array" isLeaf="true">
              <ownedComment xmi:id="46f9afba-33ef-4487-9177-40913c15b6f9" body="The &lt;code>Array&lt;/code> class provides static methods to dynamically create and&#xA;access Java arrays.&#xA;&#xA;&lt;p>&lt;code>Array&lt;/code> permits widening conversions to occur during a get or set&#xA;operation, but throws an &lt;code>IllegalArgumentException&lt;/code> if a narrowing&#xA;conversion would occur.&#xA;&#xA;@author Nakul Saraiya&#xA;" annotatedElement="fb5600d8-045c-40cb-8d7c-2ecea5a09896"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d89bdc10-87f0-4018-91f6-b577c269dcc2" name="ReflectPermission" isLeaf="true">
              <ownedComment xmi:id="c411d089-b212-43c9-a48c-10b63aaf3292" body="The Permission class for reflective operations.  A&#xA;ReflectPermission is a &lt;em>named permission&lt;/em> and has no&#xA;actions.  The only name currently defined is &lt;tt>suppressAccessChecks&lt;/tt>,&#xA;which allows suppressing the standard Java language access checks&#xA;-- for public, default (package) access, protected, and private&#xA;members -- performed by reflected objects at their point of use.&#xA;&lt;P>&#xA;The following table&#xA;provides a summary description of what the permission allows,&#xA;and discusses the risks of granting code the permission.&#xA;&lt;P>&#xA;&#xA;&lt;table border=1 cellpadding=5 summary=&quot;Table shows permission target name, what the permission allows, and associated risks&quot;>&#xA;&lt;tr>&#xA;&lt;th>Permission Target Name&lt;/th>&#xA;&lt;th>What the Permission Allows&lt;/th>&#xA;&lt;th>Risks of Allowing this Permission&lt;/th>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>suppressAccessChecks&lt;/td>&#xA;&lt;td>ability to access&#xA;fields and invoke methods in a class. Note that this includes&#xA;not only public, but protected and private fields and methods as well.&lt;/td>&#xA;&lt;td>This is dangerous in that information (possibly confidential) and&#xA;methods normally unavailable would be accessible to malicious code.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;/table>&#xA;&#xA;@see java.security.Permission&#xA;@see java.security.BasicPermission&#xA;@see AccessibleObject&#xA;@see Field#get&#xA;@see Field#set&#xA;@see Method#invoke&#xA;@see Constructor#newInstance&#xA;&#xA;@since 1.2&#xA;" annotatedElement="d89bdc10-87f0-4018-91f6-b577c269dcc2"/>
              <generalization xmi:id="54faef4b-d1bd-4205-a5b7-dae6548287dc" isSubstitutable="true" general="4831e368-c670-40b4-87bd-a8a910a528fa"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="2c4aa31c-ddd1-4652-8dae-3d674c31f07c" name="Type" isAbstract="true">
              <ownedComment xmi:id="f14991af-f66a-43bd-b0e0-40b33ca25c65" body="Type is the common superinterface for all types in the Java&#xA;programming language. These include raw types, parameterized types,&#xA;array types, type variables and primitive types.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="2c4aa31c-ddd1-4652-8dae-3d674c31f07c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e2622186-7832-482a-a11e-46a42e804e25" name="InvocationTargetException">
              <ownedComment xmi:id="a5b17988-2b53-40c4-af68-36eb1ec8340f" body="InvocationTargetException is a checked exception that wraps&#xA;an exception thrown by an invoked method or constructor.&#xA;&#xA;&lt;p>As of release 1.4, this exception has been retrofitted to conform to&#xA;the general purpose exception-chaining mechanism.  The &quot;target exception&quot;&#xA;that is provided at construction time and accessed via the&#xA;{@link #getTargetException()} method is now known as the &lt;i>cause&lt;/i>,&#xA;and may be accessed via the {@link Throwable#getCause()} method,&#xA;as well as the aforementioned &quot;legacy method.&quot;&#xA;&#xA;@see Method&#xA;@see Constructor&#xA;" annotatedElement="e2622186-7832-482a-a11e-46a42e804e25"/>
              <generalization xmi:id="df072844-749f-4564-873a-828da37987dd" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="62dd949e-4384-4052-bd77-a4b5d8c161d8" name="Field" clientDependency="69fe0faf-fbfb-45be-8a74-ffcdf4560f43" isLeaf="true">
              <ownedComment xmi:id="81f9093a-3484-49ab-ad2d-015a491b940b" body="A &lt;code>Field&lt;/code> provides information about, and dynamic access to, a&#xA;single field of a class or an interface.  The reflected field may&#xA;be a class (static) field or an instance field.&#xA;&#xA;&lt;p>A &lt;code>Field&lt;/code> permits widening conversions to occur during a get or&#xA;set access operation, but throws an &lt;code>IllegalArgumentException&lt;/code> if a&#xA;narrowing conversion would occur.&#xA;&#xA;@see Member&#xA;@see java.lang.Class&#xA;@see java.lang.Class#getFields()&#xA;@see java.lang.Class#getField(String)&#xA;@see java.lang.Class#getDeclaredFields()&#xA;@see java.lang.Class#getDeclaredField(String)&#xA;&#xA;@author Kenneth Russell&#xA;@author Nakul Saraiya&#xA;" annotatedElement="62dd949e-4384-4052-bd77-a4b5d8c161d8"/>
              <generalization xmi:id="40c5db20-4acc-4d9f-b196-45432772a7ff" isSubstitutable="true" general="e9e7399c-8572-4f69-b20f-8358bf077f0a"/>
              <interfaceRealization xmi:id="69fe0faf-fbfb-45be-8a74-ffcdf4560f43" name="" supplier="19374eea-07bd-46c5-9b6f-8e8867021694" client="62dd949e-4384-4052-bd77-a4b5d8c161d8" contract="19374eea-07bd-46c5-9b6f-8e8867021694"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="38d42338-ed92-4bd7-9634-e4b50bcbaff6" name="Throwable" clientDependency="48a436d8-5c35-403c-a006-aad98898089d">
            <ownedComment xmi:id="13391763-e59a-47f7-9eb7-d79be56e1e7e" body="The &lt;code>Throwable&lt;/code> class is the superclass of all errors and&#xA;exceptions in the Java language. Only objects that are instances of this&#xA;class (or one of its subclasses) are thrown by the Java Virtual Machine or&#xA;can be thrown by the Java &lt;code>throw&lt;/code> statement. Similarly, only&#xA;this class or one of its subclasses can be the argument type in a&#xA;&lt;code>catch&lt;/code> clause.&#xA;&#xA;&lt;p>Instances of two subclasses, {@link java.lang.Error} and&#xA;{@link java.lang.Exception}, are conventionally used to indicate&#xA;that exceptional situations have occurred. Typically, these instances&#xA;are freshly created in the context of the exceptional situation so&#xA;as to include relevant information (such as stack trace data).&#xA;&#xA;&lt;p>A throwable contains a snapshot of the execution stack of its thread at&#xA;the time it was created. It can also contain a message string that gives&#xA;more information about the error. Finally, it can contain a &lt;i>cause&lt;/i>:&#xA;another throwable that caused this throwable to get thrown.  The cause&#xA;facility is new in release 1.4.  It is also known as the &lt;i>chained&#xA;exception&lt;/i> facility, as the cause can, itself, have a cause, and so on,&#xA;leading to a &quot;chain&quot; of exceptions, each caused by another.&#xA;&#xA;&lt;p>One reason that a throwable may have a cause is that the class that&#xA;throws it is built atop a lower layered abstraction, and an operation on&#xA;the upper layer fails due to a failure in the lower layer.  It would be bad&#xA;design to let the throwable thrown by the lower layer propagate outward, as&#xA;it is generally unrelated to the abstraction provided by the upper layer.&#xA;Further, doing so would tie the API of the upper layer to the details of&#xA;its implementation, assuming the lower layer's exception was a checked&#xA;exception.  Throwing a &quot;wrapped exception&quot; (i.e., an exception containing a&#xA;cause) allows the upper layer to communicate the details of the failure to&#xA;its caller without incurring either of these shortcomings.  It preserves&#xA;the flexibility to change the implementation of the upper layer without&#xA;changing its API (in particular, the set of exceptions thrown by its&#xA;methods).&#xA;&#xA;&lt;p>A second reason that a throwable may have a cause is that the method&#xA;that throws it must conform to a general-purpose interface that does not&#xA;permit the method to throw the cause directly.  For example, suppose&#xA;a persistent collection conforms to the {@link java.util.Collection&#xA;Collection} interface, and that its persistence is implemented atop&#xA;&lt;tt>java.io&lt;/tt>.  Suppose the internals of the &lt;tt>put&lt;/tt> method&#xA;can throw an {@link java.io.IOException IOException}.  The implementation&#xA;can communicate the details of the &lt;tt>IOException&lt;/tt> to its caller&#xA;while conforming to the &lt;tt>Collection&lt;/tt> interface by wrapping the&#xA;&lt;tt>IOException&lt;/tt> in an appropriate unchecked exception.  (The&#xA;specification for the persistent collection should indicate that it is&#xA;capable of throwing such exceptions.)&#xA;&#xA;&lt;p>A cause can be associated with a throwable in two ways: via a&#xA;constructor that takes the cause as an argument, or via the&#xA;{@link #initCause(Throwable)} method.  New throwable classes that&#xA;wish to allow causes to be associated with them should provide constructors&#xA;that take a cause and delegate (perhaps indirectly) to one of the&#xA;&lt;tt>Throwable&lt;/tt> constructors that takes a cause.  For example:&#xA;&lt;pre>&#xA;try {&#xA;lowLevelOp();&#xA;} catch (LowLevelException le) {&#xA;throw new HighLevelException(le);  // Chaining-aware constructor&#xA;}&#xA;&lt;/pre>&#xA;Because the &lt;tt>initCause&lt;/tt> method is public, it allows a cause to be&#xA;associated with any throwable, even a &quot;legacy throwable&quot; whose&#xA;implementation predates the addition of the exception chaining mechanism to&#xA;&lt;tt>Throwable&lt;/tt>. For example:&#xA;&lt;pre>&#xA;try {&#xA;lowLevelOp();&#xA;} catch (LowLevelException le) {&#xA;throw (HighLevelException)&#xA;new HighLevelException().initCause(le);  // Legacy constructor&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p>Prior to release 1.4, there were many throwables that had their own&#xA;non-standard exception chaining mechanisms (&#xA;{@link ExceptionInInitializerError}, {@link ClassNotFoundException},&#xA;{@link java.lang.reflect.UndeclaredThrowableException},&#xA;{@link java.lang.reflect.InvocationTargetException},&#xA;{@link java.io.WriteAbortedException},&#xA;{@link java.security.PrivilegedActionException},&#xA;{@link java.awt.print.PrinterIOException},&#xA;{@link java.rmi.RemoteException} and&#xA;{@link javax.naming.NamingException}).&#xA;All of these throwables have been retrofitted to&#xA;use the standard exception chaining mechanism, while continuing to&#xA;implement their &quot;legacy&quot; chaining mechanisms for compatibility.&#xA;&#xA;&lt;p>Further, as of release 1.4, many general purpose &lt;tt>Throwable&lt;/tt>&#xA;classes (for example {@link Exception}, {@link RuntimeException},&#xA;{@link Error}) have been retrofitted with constructors that take&#xA;a cause.  This was not strictly necessary, due to the existence of the&#xA;&lt;tt>initCause&lt;/tt> method, but it is more convenient and expressive to&#xA;delegate to a constructor that takes a cause.&#xA;&#xA;&lt;p>By convention, class &lt;code>Throwable&lt;/code> and its subclasses have two&#xA;constructors, one that takes no arguments and one that takes a&#xA;&lt;code>String&lt;/code> argument that can be used to produce a detail message.&#xA;Further, those subclasses that might likely have a cause associated with&#xA;them should have two more constructors, one that takes a&#xA;&lt;code>Throwable&lt;/code> (the cause), and one that takes a&#xA;&lt;code>String&lt;/code> (the detail message) and a &lt;code>Throwable&lt;/code> (the&#xA;cause).&#xA;&#xA;&lt;p>Also introduced in release 1.4 is the {@link #getStackTrace()} method,&#xA;which allows programmatic access to the stack trace information that was&#xA;previously available only in text form, via the various forms of the&#xA;{@link #printStackTrace()} method.  This information has been added to the&#xA;&lt;i>serialized representation&lt;/i> of this class so &lt;tt>getStackTrace&lt;/tt>&#xA;and &lt;tt>printStackTrace&lt;/tt> will operate properly on a throwable that&#xA;was obtained by deserialization.&#xA;&#xA;@author  unascribed&#xA;@author  Josh Bloch (Added exception chaining and programmatic access to&#xA;stack trace in 1.4.)&#xA;@version 1.53, 12/19/03&#xA;@since JDK1.0&#xA;" annotatedElement="38d42338-ed92-4bd7-9634-e4b50bcbaff6"/>
            <interfaceRealization xmi:id="48a436d8-5c35-403c-a006-aad98898089d" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="38d42338-ed92-4bd7-9634-e4b50bcbaff6" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="06d78ae3-c195-4e2a-9c4e-16efd5c521f9" name="InstantiationException">
            <ownedComment xmi:id="324fde03-2a62-49b8-9162-c0c0e21356bc" body="Thrown when an application tries to create an instance of a class&#xA;using the &lt;code>newInstance&lt;/code> method in class&#xA;&lt;code>Class&lt;/code>, but the specified class object cannot be&#xA;instantiated because it is an interface or is an abstract class.&#xA;&#xA;@author  unascribed&#xA;@version 1.17, 12/19/03&#xA;@see     java.lang.Class#newInstance()&#xA;@since   JDK1.0&#xA;" annotatedElement="06d78ae3-c195-4e2a-9c4e-16efd5c521f9"/>
            <generalization xmi:id="b549b9f8-c861-4386-8c06-1f553c5f79e0" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9724f3aa-f9a5-409b-8da4-f8677ea24133" name="CharacterDataUndefined" visibility="package">
            <ownedComment xmi:id="19cca84c-133a-4b57-9802-bcfc87cb9bf5" body="The CharacterData class encapsulates the large tables found in&#xA;Java.lang.Character." annotatedElement="9724f3aa-f9a5-409b-8da4-f8677ea24133"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="da6936b4-ecde-4432-9077-6992cd1e029c" name="Comparable&lt;Double>">
            <templateBinding xmi:id="5d7b48a9-2152-4879-8492-5aadf6ffba8b" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="1f8c02b1-72da-4bd9-b440-824b1290f73f" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="147b73f7-0754-4e49-8020-1956e6ec3429"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5330b051-0cf5-4f74-80f7-4a80c81c5bc1" name="AssertionError">
            <ownedComment xmi:id="0f421675-ee24-4518-a93d-8f03bf66a721" body="Thrown to indicate that an assertion has failed.&#xA;&#xA;&lt;p>The seven one-argument public constructors provided by this&#xA;class ensure that the assertion error returned by the invocation:&#xA;&lt;pre>&#xA;new AssertionError(&lt;i>expression&lt;/i>)&#xA;&lt;/pre>&#xA;has as its detail message the &lt;i>string conversion&lt;/i> of&#xA;&lt;i>expression&lt;/i> (as defined in &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/jls/second_edition/html/j.title.doc.html&quot;>&#xA;&lt;i>The Java Language Specification, Second Edition&lt;/i>&lt;/a>,&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#40220&quot;>&#xA;Section  15.18.1.1&lt;/a>), regardless of the type of &lt;i>expression&lt;/i>.&#xA;&#xA;@version 1.7, 12/19/03&#xA;@since   JDK1.4&#xA;" annotatedElement="5330b051-0cf5-4f74-80f7-4a80c81c5bc1"/>
            <generalization xmi:id="dc459ce6-8cf1-4690-a05f-2496124c9987" isSubstitutable="true" general="4e4110b0-dae3-4d54-846c-b32f5eb17a30"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e5822ec6-ac2b-4107-8ac1-afc07f2ea5fa" name="LinkageError">
            <ownedComment xmi:id="ef67aaed-2791-4ba1-a1e5-a43f4b8dae0b" body="Subclasses of &lt;code>LinkageError&lt;/code> indicate that a class has&#xA;some dependency on another class; however, the latter class has&#xA;incompatibly changed after the compilation of the former class.&#xA;&#xA;&#xA;@author  Frank Yellin&#xA;@version 1.13, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="e5822ec6-ac2b-4107-8ac1-afc07f2ea5fa"/>
            <generalization xmi:id="c0c984ff-e8bd-4768-9916-5cb83705d1f8" isSubstitutable="true" general="4e4110b0-dae3-4d54-846c-b32f5eb17a30"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="19435cb8-ef1e-4352-aa5f-36cf8e88591f" name="Short" clientDependency="b5d7a481-02aa-46a1-b395-f3fc0985c1bc" isLeaf="true">
            <ownedComment xmi:id="72564439-1588-4f41-826b-28d39bc00a95" body="The &lt;code>Short&lt;/code> class wraps a value of primitive type&#xA;&lt;code>short&lt;/code> in an object.  An object of type&#xA;&lt;code>Short&lt;/code> contains a single field whose type is&#xA;&lt;code>short&lt;/code>.&#xA;&#xA;&lt;p>&#xA;&#xA;In addition, this class provides several methods for converting a&#xA;&lt;code>short&lt;/code> to a &lt;code>String&lt;/code> and a&#xA;&lt;code>String&lt;/code> to a &lt;code>short&lt;/code>, as well as other&#xA;constants and methods useful when dealing with a &lt;code>short&lt;/code>.&#xA;&#xA;@author  Nakul Saraiya&#xA;@version 1.43, 05/11/04&#xA;@see     java.lang.Number&#xA;@since   JDK1.1&#xA;" annotatedElement="19435cb8-ef1e-4352-aa5f-36cf8e88591f"/>
            <generalization xmi:id="5743caa0-a558-4745-950f-4e5eb8d5aa49" isSubstitutable="true" general="86595613-8e64-4702-a472-32dc7405cc46"/>
            <interfaceRealization xmi:id="b5d7a481-02aa-46a1-b395-f3fc0985c1bc" name="" supplier="3c6eb85a-f497-43a9-bf00-e88685d637c9" client="19435cb8-ef1e-4352-aa5f-36cf8e88591f" contract="3c6eb85a-f497-43a9-bf00-e88685d637c9"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="3ff4613f-7aac-4dda-b9f3-f89113e073f1" name="ShortCache" visibility="private"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="cac5ac53-16ed-4e3b-8f14-5174e728e81f" name="Comparator&lt;Entry&lt;String, String>>">
            <templateBinding xmi:id="813d0469-bfed-46b9-9475-e720c4b9aaab" signature="5ca0174c-f6a2-499c-8047-b28b014e167d">
              <parameterSubstitution xmi:id="4e90d5d4-ea89-4698-b897-c82d3bee289d" formal="778d8bc4-7722-4223-9041-c33432cd4640" actual="248f580f-fc64-48af-939f-df4f44cd7cfd"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5c0d4f79-b565-425b-8918-c830691d9e6b" name="Math" isLeaf="true">
            <ownedComment xmi:id="62cad87e-59b9-41a3-8941-b89340118baf" body="The class &lt;code>Math&lt;/code> contains methods for performing basic&#xA;numeric operations such as the elementary exponential, logarithm,&#xA;square root, and trigonometric functions.&#xA;&#xA;&lt;p>Unlike some of the numeric methods of class&#xA;&lt;code>StrictMath&lt;/code>, all implementations of the equivalent&#xA;functions of class &lt;code>Math&lt;/code> are not defined to return the&#xA;bit-for-bit same results.  This relaxation permits&#xA;better-performing implementations where strict reproducibility is&#xA;not required.&#xA;&#xA;&lt;p>By default many of the &lt;code>Math&lt;/code> methods simply call&#xA;the equivalent method in &lt;code>StrictMath&lt;/code> for their&#xA;implementation.  Code generators are encouraged to use&#xA;platform-specific native libraries or microprocessor instructions,&#xA;where available, to provide higher-performance implementations of&#xA;&lt;code>Math&lt;/code> methods.  Such higher-performance&#xA;implementations still must conform to the specification for&#xA;&lt;code>Math&lt;/code>.&#xA;&#xA;&lt;p>The quality of implementation specifications concern two&#xA;properties, accuracy of the returned result and monotonicity of the&#xA;method.  Accuracy of the floating-point &lt;code>Math&lt;/code> methods&#xA;is measured in terms of &lt;i>ulps&lt;/i>, units in the last place.  For&#xA;a given floating-point format, an ulp of a specific real number&#xA;value is the distance between the two floating-point values&#xA;bracketing that numerical value.  When discussing the accuracy of a&#xA;method as a whole rather than at a specific argument, the number of&#xA;ulps cited is for the worst-case error at any argument.  If a&#xA;method always has an error less than 0.5 ulps, the method always&#xA;returns the floating-point number nearest the exact result; such a&#xA;method is &lt;i>correctly rounded&lt;/i>.  A correctly rounded method is&#xA;generally the best a floating-point approximation can be; however,&#xA;it is impractical for many floating-point methods to be correctly&#xA;rounded.  Instead, for the &lt;code>Math&lt;/code> class, a larger error&#xA;bound of 1 or 2 ulps is allowed for certain methods.  Informally,&#xA;with a 1 ulp error bound, when the exact result is a representable&#xA;number, the exact result should be returned as the computed result;&#xA;otherwise, either of the two floating-point values which bracket&#xA;the exact result may be returned.  For exact results large in&#xA;magnitude, one of the endpoints of the bracket may be infinite.&#xA;Besides accuracy at individual arguments, maintaining proper&#xA;relations between the method at different arguments is also&#xA;important.  Therefore, most methods with more than 0.5 ulp errors&#xA;are required to be &lt;i>semi-monotonic&lt;/i>: whenever the mathematical&#xA;function is non-decreasing, so is the floating-point approximation,&#xA;likewise, whenever the mathematical function is non-increasing, so&#xA;is the floating-point approximation.  Not all approximations that&#xA;have 1 ulp accuracy will automatically meet the monotonicity&#xA;requirements.&#xA;&#xA;@author  unascribed&#xA;@author  Joseph D. Darcy&#xA;@version 1.69, 06/14/04&#xA;@since   JDK1.0&#xA;" annotatedElement="5c0d4f79-b565-425b-8918-c830691d9e6b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4e4110b0-dae3-4d54-846c-b32f5eb17a30" name="Error">
            <ownedComment xmi:id="09148471-456f-4fd0-bf07-55381ba7ee07" body="An &lt;code>Error&lt;/code> is a subclass of &lt;code>Throwable&lt;/code>&#xA;that indicates serious problems that a reasonable application&#xA;should not try to catch. Most such errors are abnormal conditions.&#xA;The &lt;code>ThreadDeath&lt;/code> error, though a &quot;normal&quot; condition,&#xA;is also a subclass of &lt;code>Error&lt;/code> because most applications&#xA;should not try to catch it.&#xA;&lt;p>&#xA;A method is not required to declare in its &lt;code>throws&lt;/code>&#xA;clause any subclasses of &lt;code>Error&lt;/code> that might be thrown&#xA;during the execution of the method but not caught, since these&#xA;errors are abnormal conditions that should never occur.&#xA;&#xA;@author  Frank Yellin&#xA;@version 1.16, 12/19/03&#xA;@see     java.lang.ThreadDeath&#xA;@since   JDK1.0&#xA;" annotatedElement="4e4110b0-dae3-4d54-846c-b32f5eb17a30"/>
            <generalization xmi:id="619b6199-9bdb-42ab-a132-9fcf19c8cb66" isSubstitutable="true" general="38d42338-ed92-4bd7-9634-e4b50bcbaff6"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a3125d3e-035a-4449-be8c-4483aaade07b" name="FDBigInt" visibility="package"/>
          <packagedElement xmi:type="uml:Class" xmi:id="592068d6-ea56-459d-b154-992b90a9abf6" name="ThreadDeath">
            <ownedComment xmi:id="9156468f-1845-4fdd-bee7-f59f0b36cf8a" body="An instance of &lt;code>ThreadDeath&lt;/code> is thrown in the victim&#xA;thread when the &lt;code>stop&lt;/code> method with zero arguments in&#xA;class &lt;code>Thread&lt;/code> is called.&#xA;&lt;p>&#xA;An application should catch instances of this class only if it&#xA;must clean up after being terminated asynchronously. If&#xA;&lt;code>ThreadDeath&lt;/code> is caught by a method, it is important&#xA;that it be rethrown so that the thread actually dies.&#xA;&lt;p>&#xA;The top-level error handler does not print out a message if&#xA;&lt;code>ThreadDeath&lt;/code> is never caught.&#xA;&lt;p>&#xA;The class &lt;code>ThreadDeath&lt;/code> is specifically a subclass of&#xA;&lt;code>Error&lt;/code> rather than &lt;code>Exception&lt;/code>, even though&#xA;it is a &quot;normal occurrence&quot;, because many applications&#xA;catch all occurrences of &lt;code>Exception&lt;/code> and then discard&#xA;the exception.&#xA;&#xA;@author unascribed&#xA;@version 1.15, 12/19/03&#xA;@see     java.lang.Thread#stop()&#xA;@since   JDK1.0&#xA;" annotatedElement="592068d6-ea56-459d-b154-992b90a9abf6"/>
            <generalization xmi:id="8eb11db0-b9e6-4f4c-a53e-29bd0e8c484b" isSubstitutable="true" general="4e4110b0-dae3-4d54-846c-b32f5eb17a30"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="fd06e241-d286-40fb-9e29-48c90c292673" name="ConditionalSpecialCasing" visibility="package" isLeaf="true">
            <ownedComment xmi:id="eec7dc49-ae07-40d2-95e6-435a3749e2a9" body="This is a utility class for &lt;code>String.toLowerCase()&lt;/code> and&#xA;&lt;code>String.toUpperCase()&lt;/code>, that handles special casing with&#xA;conditions.  In other words, it handles the mappings with conditions&#xA;that are defined in&#xA;&lt;a href=&quot;http://www.unicode.org/Public/UNIDATA/SpecialCasing.txt&quot;>Special&#xA;Casing Properties&lt;/a> file.&#xA;&lt;p>&#xA;Note that the unconditional case mappings (including 1:M mappings)&#xA;are handled in &lt;code>Character.toLower/UpperCase()&lt;/code>.&#xA;" annotatedElement="fd06e241-d286-40fb-9e29-48c90c292673"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="dc722edb-5cb8-46ee-a469-131627acef3c" name="Entry" visibility="package">
              <ownedComment xmi:id="47530efb-d5f3-4a4d-bbb4-19228b5ccca7" body="An internal class that represents an entry in the Special Casing Properties.&#xA;" annotatedElement="dc722edb-5cb8-46ee-a469-131627acef3c"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="88253cb4-a643-4155-a974-f295fd36af7f" name="ClassNotFoundException">
            <ownedComment xmi:id="5c7f9ed8-a562-44f3-bde0-e74fdc1947f7" body="Thrown when an application tries to load in a class through its&#xA;string name using:&#xA;&lt;ul>&#xA;&lt;li>The &lt;code>forName&lt;/code> method in class &lt;code>Class&lt;/code>.&#xA;&lt;li>The &lt;code>findSystemClass&lt;/code> method in class&#xA;&lt;code>ClassLoader&lt;/code> .&#xA;&lt;li>The &lt;code>loadClass&lt;/code> method in class &lt;code>ClassLoader&lt;/code>.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;but no definition for the class with the specified name could be found.&#xA;&#xA;&lt;p>As of release 1.4, this exception has been retrofitted to conform to&#xA;the general purpose exception-chaining mechanism.  The &quot;optional exception&#xA;that was raised while loading the class&quot; that may be provided at&#xA;construction time and accessed via the {@link #getException()} method is&#xA;now known as the &lt;i>cause&lt;/i>, and may be accessed via the {@link&#xA;Throwable#getCause()} method, as well as the aforementioned &quot;legacy method.&quot;&#xA;&#xA;@author  unascribed&#xA;@version 1.20, 02/19/04&#xA;@see     java.lang.Class#forName(java.lang.String)&#xA;@see     java.lang.ClassLoader#findSystemClass(java.lang.String)&#xA;@see     java.lang.ClassLoader#loadClass(java.lang.String, boolean)&#xA;@since   JDK1.0&#xA;" annotatedElement="88253cb4-a643-4155-a974-f295fd36af7f"/>
            <generalization xmi:id="c03c9746-d662-4216-94ef-a8bedf83add0" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="89850299-e146-4c7f-aabd-a6957bfdf58e" name="NoSuchMethodException">
            <ownedComment xmi:id="66a8c4f3-e0fc-4eb4-af21-7268ce2e3404" body="Thrown when a particular method cannot be found.&#xA;&#xA;@author     unascribed&#xA;@version    1.13, 12/19/03&#xA;@since      JDK1.0&#xA;" annotatedElement="89850299-e146-4c7f-aabd-a6957bfdf58e"/>
            <generalization xmi:id="8c2e4b2a-1e9a-4342-9d4e-e83d208f2eaf" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="db049923-7343-4a01-b9e4-fb5e2d3dd072" name="ExceptionInInitializerError">
            <ownedComment xmi:id="a1c265e5-baef-40ac-9321-eb64b94a35cf" body="Signals that an unexpected exception has occurred in a static initializer.&#xA;An &lt;code>ExceptionInInitializerError&lt;/code> is thrown to indicate that an&#xA;exception occurred during evaluation of a static initializer or the&#xA;initializer for a static variable.&#xA;&#xA;&lt;p>As of release 1.4, this exception has been retrofitted to conform to&#xA;the general purpose exception-chaining mechanism.  The &quot;saved throwable&#xA;object&quot; that may be provided at construction time and accessed via&#xA;the {@link #getException()} method is now known as the &lt;i>cause&lt;/i>,&#xA;and may be accessed via the {@link Throwable#getCause()} method, as well&#xA;as the aforementioned &quot;legacy method.&quot;&#xA;&#xA;@author  Frank Yellin&#xA;@version 1.17, 12/19/03&#xA;@since   JDK1.1&#xA;" annotatedElement="db049923-7343-4a01-b9e4-fb5e2d3dd072"/>
            <generalization xmi:id="0ba47713-7c78-4517-9ffd-23690a1730db" isSubstitutable="true" general="e5822ec6-ac2b-4107-8ac1-afc07f2ea5fa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3697b44c-a7a1-43b5-8a4d-5219f85bdb44" name="NegativeArraySizeException">
            <ownedComment xmi:id="a5425121-0a10-4bbf-898e-6ac46ff4cbc9" body="Thrown if an application tries to create an array with negative size.&#xA;&#xA;@author  unascribed&#xA;@version 1.19, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="3697b44c-a7a1-43b5-8a4d-5219f85bdb44"/>
            <generalization xmi:id="74f2d263-2391-4bb9-9b43-4384cc0076be" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7f6a40d4-5c73-418c-8771-3997f65ad4ed" name="NoSuchMethodError">
            <ownedComment xmi:id="7d7a9328-faf5-4840-850e-7828bf172758" body="Thrown if an application tries to call a specified method of a&#xA;class (either static or instance), and that class no longer has a&#xA;definition of that method.&#xA;&lt;p>&#xA;Normally, this error is caught by the compiler; this error can&#xA;only occur at run time if the definition of a class has&#xA;incompatibly changed.&#xA;&#xA;@author  unascribed&#xA;@version 1.21, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="7f6a40d4-5c73-418c-8771-3997f65ad4ed"/>
            <generalization xmi:id="70197a66-c54d-4af1-a69f-6b3428c0825a" isSubstitutable="true" general="699de52b-659b-433f-833d-c4524675626e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8e6d06cf-c5dc-49c1-b3d1-7d34fc5f10ab" name="AssertionStatusDirectives" visibility="package">
            <ownedComment xmi:id="8ea8602e-049b-46df-8464-7d5597137604" body="A collection of assertion status directives (such as &quot;enable assertions&#xA;in package p&quot; or &quot;disable assertions in class c&quot;).  This class is used by&#xA;the JVM to communicate the assertion status directives implied by&#xA;the &lt;tt>java&lt;/tt> command line flags &lt;tt>-enableassertions&lt;/tt>&#xA;(&lt;tt>-ea&lt;/tt>) and &lt;tt>-disableassertions&lt;/tt> (&lt;tt>-da&lt;/tt>).&#xA;&#xA;@since  1.4&#xA;@author Josh Bloch&#xA;" annotatedElement="8e6d06cf-c5dc-49c1-b3d1-7d34fc5f10ab"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8d507840-0689-43a1-af5d-92da8e7ac7e4" name="Enum&lt;E>">
            <templateBinding xmi:id="8e5116e3-0889-41f8-8892-0cfcfccd5cdb" signature="4048ca4e-4525-4785-9487-f316f3bd243a">
              <parameterSubstitution xmi:id="1ea16564-edaf-423d-8ca6-356f734dd7f2" formal="5c1313ab-11c4-4089-a4f2-47d12569be3c" actual="f6b64015-bccd-491f-9f7d-8237a8f83387"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4035e4e9-dfa9-48c0-93b1-b08f100bebad" name="IllegalAccessException">
            <ownedComment xmi:id="b3aeb934-86ca-4f67-896b-091ae60a03dd" body="An IllegalAccessException is thrown when an application tries&#xA;to reflectively create an instance (other than an array),&#xA;set or get a field, or invoke a method, but the currently&#xA;executing method does not have access to the definition of&#xA;the specified class, field, method or constructor.&#xA;&#xA;@author  unascribed&#xA;@version 1.14, 12/19/03&#xA;@see     Class#newInstance()&#xA;@see     java.lang.reflect.Field#set(Object, Object)&#xA;@see     java.lang.reflect.Field#setBoolean(Object, boolean)&#xA;@see     java.lang.reflect.Field#setByte(Object, byte)&#xA;@see     java.lang.reflect.Field#setShort(Object, short)&#xA;@see     java.lang.reflect.Field#setChar(Object, char)&#xA;@see     java.lang.reflect.Field#setInt(Object, int)&#xA;@see     java.lang.reflect.Field#setLong(Object, long)&#xA;@see     java.lang.reflect.Field#setFloat(Object, float)&#xA;@see     java.lang.reflect.Field#setDouble(Object, double)&#xA;@see     java.lang.reflect.Field#get(Object)&#xA;@see     java.lang.reflect.Field#getBoolean(Object)&#xA;@see     java.lang.reflect.Field#getByte(Object)&#xA;@see     java.lang.reflect.Field#getShort(Object)&#xA;@see     java.lang.reflect.Field#getChar(Object)&#xA;@see     java.lang.reflect.Field#getInt(Object)&#xA;@see     java.lang.reflect.Field#getLong(Object)&#xA;@see     java.lang.reflect.Field#getFloat(Object)&#xA;@see     java.lang.reflect.Field#getDouble(Object)&#xA;@see     java.lang.reflect.Method#invoke(Object, Object[])&#xA;@see     java.lang.reflect.Constructor#newInstance(Object[])&#xA;@since   JDK1.0&#xA;" annotatedElement="4035e4e9-dfa9-48c0-93b1-b08f100bebad"/>
            <generalization xmi:id="70df2367-aebc-4b97-89e2-e6494e7d6590" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="d45a4eeb-6bb1-4dd6-838c-567de1f6839b" name="Comparable&lt;Boolean>">
            <templateBinding xmi:id="de6bd86d-80b2-45b1-98a4-eb0bcafa309d" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="44588fc0-c9d5-4c36-9261-0ba45ad81bd4" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="b1fbf137-7daf-4a41-b492-ce602a7a77eb"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="292237bf-8feb-4f97-96c3-f2b1d2b04893" name="CharacterData00" visibility="package">
            <ownedComment xmi:id="c5f5a094-2b98-4e9d-93ff-e3db092ed7da" body="The CharacterData00 class encapsulates the large tables once found in&#xA;java.lang.Character&#xA;" annotatedElement="292237bf-8feb-4f97-96c3-f2b1d2b04893"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9cb78e89-79f6-409b-9b74-6dabd25d521a" name="StringCoding" visibility="package">
            <ownedComment xmi:id="b8474b74-b3c5-44b8-a0b4-643ef46ffda1" body="Utility class for string encoding and decoding.&#xA;" annotatedElement="9cb78e89-79f6-409b-9b74-6dabd25d521a"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="99f66b70-62ad-4ef8-8817-5be47e1ac131" name="StringDecoder" visibility="private" isAbstract="true"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="9ab1bed3-f252-4170-901e-802db1673492" name="ConverterSD" visibility="private">
              <generalization xmi:id="c2bf551a-0397-4717-a151-b1bad8805305" isSubstitutable="true" general="99f66b70-62ad-4ef8-8817-5be47e1ac131"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="4fbbc888-4826-4194-9a82-fe8efef6b54e" name="CharsetSD" visibility="private">
              <generalization xmi:id="365fd68f-1b07-4436-8df3-da90326d3db0" isSubstitutable="true" general="99f66b70-62ad-4ef8-8817-5be47e1ac131"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="4713a805-54e2-423d-885b-7e1ad0196894" name="StringEncoder" visibility="private" isAbstract="true"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="bbb194cb-fddd-4c44-aece-5f8a5dc41cf8" name="ConverterSE" visibility="private">
              <generalization xmi:id="37624554-ac0f-4ac3-b8c0-ea0811b7a83d" isSubstitutable="true" general="4713a805-54e2-423d-885b-7e1ad0196894"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="d4d1456c-e75a-4774-baa6-fb066d4968a7" name="CharsetSE" visibility="private">
              <generalization xmi:id="cc2d4841-1f58-4640-80fa-78bc214b974f" isSubstitutable="true" general="4713a805-54e2-423d-885b-7e1ad0196894"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c1c7cc2e-cf38-48a9-8cea-5c98c23841ff" name="WeakReference&lt;ThreadLocal>">
            <templateBinding xmi:id="b552228b-d1fb-4415-b0e5-a3b105649886" signature="c513cd2a-d023-4eff-bbed-adbdc5759f8d">
              <parameterSubstitution xmi:id="cb813b55-9276-46b5-bc3c-24b59c2867aa" formal="3b3bffe1-bb6e-4040-b601-12240c09fafa" actual="46f09612-5621-479e-90ab-e39c3400c6ed"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="552f7f23-1ee3-4222-89fc-39e7cfd3d8a7" name="ProcessImpl" visibility="package" isLeaf="true">
            <generalization xmi:id="eb2fecd9-9165-4095-b4d8-d2e1014e3e5b" isSubstitutable="true" general="73f38a63-ea3f-414b-9fe4-6cd53ec01bca"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="610eda03-25c5-4fed-bb94-24607107ea32" name="FloatingDecimal" visibility="package"/>
          <packagedElement xmi:type="uml:Class" xmi:id="21b5df94-9db6-490d-a0b1-52fcdb0efd8d" name="Character" clientDependency="c56cd14c-0181-4452-965e-925a4b9210dc b8d234a1-4b3d-4e60-8589-b89689425f91" isLeaf="true">
            <ownedComment xmi:id="b5ddd473-80a1-427c-bdf1-68fa1cbf5a04" body="The &lt;code>Character&lt;/code> class wraps a value of the primitive&#xA;type &lt;code>char&lt;/code> in an object. An object of type&#xA;&lt;code>Character&lt;/code> contains a single field whose type is&#xA;&lt;code>char&lt;/code>.&#xA;&lt;p>&#xA;In addition, this class provides several methods for determining&#xA;a character's category (lowercase letter, digit, etc.) and for converting&#xA;characters from uppercase to lowercase and vice versa.&#xA;&lt;p>&#xA;Character information is based on the Unicode Standard, version 4.0.&#xA;&lt;p>&#xA;The methods and data of class &lt;code>Character&lt;/code> are defined by&#xA;the information in the &lt;i>UnicodeData&lt;/i> file that is part of the&#xA;Unicode Character Database maintained by the Unicode&#xA;Consortium. This file specifies various properties including name&#xA;and general category for every defined Unicode code point or&#xA;character range.&#xA;&lt;p>&#xA;The file and its description are available from the Unicode Consortium at:&#xA;&lt;ul>&#xA;&lt;li>&lt;a href=&quot;http://www.unicode.org&quot;>http://www.unicode.org&lt;/a>&#xA;&lt;/ul>&#xA;&#xA;&lt;h4>&lt;a name=&quot;unicode&quot;>Unicode Character Representations&lt;/a>&lt;/h4>&#xA;&#xA;&lt;p>The &lt;code>char&lt;/code> data type (and therefore the value that a&#xA;&lt;code>Character&lt;/code> object encapsulates) are based on the&#xA;original Unicode specification, which defined characters as&#xA;fixed-width 16-bit entities. The Unicode standard has since been&#xA;changed to allow for characters whose representation requires more&#xA;than 16 bits.  The range of legal &lt;em>code point&lt;/em>s is now&#xA;U+0000 to U+10FFFF, known as &lt;em>Unicode scalar value&lt;/em>.&#xA;(Refer to the &lt;a&#xA;href=&quot;http://www.unicode.org/reports/tr27/#notation&quot;>&lt;i>&#xA;definition&lt;/i>&lt;/a> of the U+&lt;i>n&lt;/i> notation in the Unicode&#xA;standard.)&#xA;&#xA;&lt;p>The set of characters from U+0000 to U+FFFF is sometimes&#xA;referred to as the &lt;em>Basic Multilingual Plane (BMP)&lt;/em>. &lt;a&#xA;name=&quot;supplementary&quot;>Characters&lt;/a> whose code points are greater&#xA;than U+FFFF are called &lt;em>supplementary character&lt;/em>s.  The Java&#xA;2 platform uses the UTF-16 representation in &lt;code>char&lt;/code>&#xA;arrays and in the &lt;code>String&lt;/code> and &lt;code>StringBuffer&lt;/code>&#xA;classes. In this representation, supplementary characters are&#xA;represented as a pair of &lt;code>char&lt;/code> values, the first from&#xA;the &lt;em>high-surrogates&lt;/em> range, (&amp;#92;uD800-&amp;#92;uDBFF), the&#xA;second from the &lt;em>low-surrogates&lt;/em> range&#xA;(&amp;#92;uDC00-&amp;#92;uDFFF).&#xA;&#xA;&lt;p>A &lt;code>char&lt;/code> value, therefore, represents Basic&#xA;Multilingual Plane (BMP) code points, including the surrogate&#xA;code points, or code units of the UTF-16 encoding. An&#xA;&lt;code>int&lt;/code> value represents all Unicode code points,&#xA;including supplementary code points. The lower (least significant)&#xA;21 bits of &lt;code>int&lt;/code> are used to represent Unicode code&#xA;points and the upper (most significant) 11 bits must be zero.&#xA;Unless otherwise specified, the behavior with respect to&#xA;supplementary characters and surrogate &lt;code>char&lt;/code> values is&#xA;as follows:&#xA;&#xA;&lt;ul>&#xA;&lt;li>The methods that only accept a &lt;code>char&lt;/code> value cannot support&#xA;supplementary characters. They treat &lt;code>char&lt;/code> values from the&#xA;surrogate ranges as undefined characters. For example,&#xA;&lt;code>Character.isLetter('&amp;#92;uD840')&lt;/code> returns &lt;code>false&lt;/code>, even though&#xA;this specific value if followed by any low-surrogate value in a string&#xA;would represent a letter.&#xA;&#xA;&lt;li>The methods that accept an &lt;code>int&lt;/code> value support all&#xA;Unicode characters, including supplementary characters. For&#xA;example, &lt;code>Character.isLetter(0x2F81A)&lt;/code> returns&#xA;&lt;code>true&lt;/code> because the code point value represents a letter&#xA;(a CJK ideograph).&#xA;&lt;/ul>&#xA;&#xA;&lt;p>In the J2SE API documentation, &lt;em>Unicode code point&lt;/em> is&#xA;used for character values in the range between U+0000 and U+10FFFF,&#xA;and &lt;em>Unicode code unit&lt;/em> is used for 16-bit&#xA;&lt;code>char&lt;/code> values that are code units of the &lt;em>UTF-16&lt;/em>&#xA;encoding. For more information on Unicode terminology, refer to the&#xA;&lt;a href=&quot;http://www.unicode.org/glossary/&quot;>Unicode Glossary&lt;/a>.&#xA;&#xA;@author  Lee Boynton&#xA;@author  Guy Steele&#xA;@author  Akira Tanaka&#xA;@since   1.0&#xA;" annotatedElement="21b5df94-9db6-490d-a0b1-52fcdb0efd8d"/>
            <generalization xmi:id="e68245b6-844c-4433-a9f0-2004092ba827" isSubstitutable="true" general="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
            <interfaceRealization xmi:id="c56cd14c-0181-4452-965e-925a4b9210dc" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="21b5df94-9db6-490d-a0b1-52fcdb0efd8d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="b8d234a1-4b3d-4e60-8589-b89689425f91" name="" supplier="2a895999-2897-4661-9adc-c08be565c09a" client="21b5df94-9db6-490d-a0b1-52fcdb0efd8d" contract="2a895999-2897-4661-9adc-c08be565c09a"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="6a3b105f-fe8e-492e-a46b-64379c2a4852" name="Subset">
              <ownedComment xmi:id="22990c24-61bd-46af-9869-924eb584262a" body="Instances of this class represent particular subsets of the Unicode&#xA;character set.  The only family of subsets defined in the&#xA;&lt;code>Character&lt;/code> class is &lt;code>{@link Character.UnicodeBlock&#xA;UnicodeBlock}&lt;/code>.  Other portions of the Java API may define other&#xA;subsets for their own purposes.&#xA;&#xA;@since 1.2&#xA;" annotatedElement="6a3b105f-fe8e-492e-a46b-64379c2a4852"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="959ae141-ee80-42cc-8e89-c373fd74e505" name="UnicodeBlock" isLeaf="true">
              <ownedComment xmi:id="619280a8-4527-454c-8d3a-c2730fc6b4b7" body="A family of character subsets representing the character blocks in the&#xA;Unicode specification. Character blocks generally define characters&#xA;used for a specific script or purpose. A character is contained by&#xA;at most one Unicode block.&#xA;&#xA;@since 1.2&#xA;" annotatedElement="959ae141-ee80-42cc-8e89-c373fd74e505"/>
              <generalization xmi:id="c098c680-fc8c-4506-a563-9e07fe814627" isSubstitutable="true" general="6a3b105f-fe8e-492e-a46b-64379c2a4852"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a8639344-b539-4c74-a2f0-073fa8e74c7e" name="CharacterCache" visibility="private"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="34b3b266-cc47-4733-99e6-e6af2638dc56" name="ProcessBuilder" isLeaf="true">
            <ownedComment xmi:id="77200f0b-dc1b-4aff-8488-163c9bd14e0c" body="This class is used to create operating system processes.&#xA;&#xA;&lt;p>Each &lt;code>ProcessBuilder&lt;/code> instance manages a collection&#xA;of process attributes.  The {@link #start()} method creates a new&#xA;{@link Process} instance with those attributes.  The {@link&#xA;#start()} method can be invoked repeatedly from the same instance&#xA;to create new subprocesses with identical or related attributes.&#xA;&#xA;&lt;p>Each process builder manages these process attributes:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>a &lt;i>command&lt;/i>, a list of strings which signifies the&#xA;external program file to be invoked and its arguments, if any.&#xA;Which string lists represent a valid operating system command is&#xA;system-dependent.  For example, it is common for each conceptual&#xA;argument to be an element in this list, but there are operating&#xA;systems where programs are expected to tokenize command line&#xA;strings themselves - on such a system a Java implementation might&#xA;require commands to contain exactly two elements.&#xA;&#xA;&lt;li>an &lt;i>environment&lt;/i>, which is a system-dependent mapping from&#xA;&lt;i>variables&lt;/i> to &lt;i>values&lt;/i>.  The initial value is a copy of&#xA;the environment of the current process (see {@link System#getenv()}).&#xA;&#xA;&lt;li>a &lt;i>working directory&lt;/i>.  The default value is the current&#xA;working directory of the current process, usually the directory&#xA;named by the system property &lt;code>user.dir&lt;/code>.&#xA;&#xA;&lt;li>a &lt;i>redirectErrorStream&lt;/i> property.  Initially, this property&#xA;is &lt;code>false&lt;/code>, meaning that the standard output and error&#xA;output of a subprocess are sent to two separate streams, which can&#xA;be accessed using the {@link Process#getInputStream()} and {@link&#xA;Process#getErrorStream()} methods.  If the value is set to&#xA;&lt;code>true&lt;/code>, the standard error is merged with the standard&#xA;output.  This makes it easier to correlate error messages with the&#xA;corresponding output.  In this case, the merged data can be read&#xA;from the stream returned by {@link Process#getInputStream()}, while&#xA;reading from the stream returned by {@link&#xA;Process#getErrorStream()} will get an immediate end of file.&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p>Modifying a process builder's attributes will affect processes&#xA;subsequently started by that object's {@link #start()} method, but&#xA;will never affect previously started processes or the Java process&#xA;itself.&#xA;&#xA;&lt;p>Most error checking is performed by the {@link #start()} method.&#xA;It is possible to modify the state of an object so that {@link&#xA;#start()} will fail.  For example, setting the command attribute to&#xA;an empty list will not throw an exception unless {@link #start()}&#xA;is invoked.&#xA;&#xA;&lt;p>&lt;strong>Note that this class is not synchronized.&lt;/strong>&#xA;If multiple threads access a &lt;code>ProcessBuilder&lt;/code> instance&#xA;concurrently, and at least one of the threads modifies one of the&#xA;attributes structurally, it &lt;i>must&lt;/i> be synchronized externally.&#xA;&#xA;&lt;p>Starting a new process which uses the default working directory&#xA;and environment is easy:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;Process p = new ProcessBuilder(&quot;myCommand&quot;, &quot;myArg&quot;).start();&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p>Here is an example that starts a process with a modified working&#xA;directory and environment:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;ProcessBuilder pb = new ProcessBuilder(&quot;myCommand&quot;, &quot;myArg1&quot;, &quot;myArg2&quot;);&#xA;Map&lt;String, String> env = pb.environment();&#xA;env.put(&quot;VAR1&quot;, &quot;myValue&quot;);&#xA;env.remove(&quot;OTHERVAR&quot;);&#xA;env.put(&quot;VAR2&quot;, env.get(&quot;VAR1&quot;) + &quot;suffix&quot;);&#xA;pb.directory(&quot;myDir&quot;);&#xA;Process p = pb.start();&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p>To start a process with an explicit set of environment&#xA;variables, first call {@link java.util.Map#clear() Map.clear()}&#xA;before adding environment variables.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="34b3b266-cc47-4733-99e6-e6af2638dc56"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b09d7543-2888-4970-a315-8a0625905d71" name="ClassFormatError">
            <ownedComment xmi:id="f9bf3e89-ac70-428b-8d50-e289da7d2c4d" body="Thrown when the Java Virtual Machine attempts to read a class&#xA;file and determines that the file is malformed or otherwise cannot&#xA;be interpreted as a class file.&#xA;&#xA;@author  unascribed&#xA;@version 1.20, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="b09d7543-2888-4970-a315-8a0625905d71"/>
            <generalization xmi:id="bce55652-a35a-4087-9374-dd9002d82925" isSubstitutable="true" general="e5822ec6-ac2b-4107-8ac1-afc07f2ea5fa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="55a51e20-5987-4ce7-b966-75da1b359abb" name="VirtualMachineError" isAbstract="true">
            <ownedComment xmi:id="f5b292fa-c7eb-408f-b995-a954ecdceffd" body="Thrown to indicate that the Java Virtual Machine is broken or has&#xA;run out of resources necessary for it to continue operating.&#xA;&#xA;&#xA;@author  Frank Yellin&#xA;@version 1.14, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="55a51e20-5987-4ce7-b966-75da1b359abb"/>
            <generalization xmi:id="1063578e-e6ee-4c5a-8a3d-84fb10dfff69" isSubstitutable="true" general="4e4110b0-dae3-4d54-846c-b32f5eb17a30"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3f933483-0042-4439-b6a6-958ad9d81d2d" name="ClassLoader" isAbstract="true">
            <ownedComment xmi:id="6a5a83dc-a891-4971-8751-97eac988dc1c" body="A class loader is an object that is responsible for loading classes. The&#xA;class &lt;tt>ClassLoader&lt;/tt> is an abstract class.  Given the &lt;a&#xA;href=&quot;#name&quot;>binary name&lt;/a> of a class, a class loader should attempt to&#xA;locate or generate data that constitutes a definition for the class.  A&#xA;typical strategy is to transform the name into a file name and then read a&#xA;&quot;class file&quot; of that name from a file system.&#xA;&#xA;&lt;p> Every {@link Class &lt;tt>Class&lt;/tt>} object contains a {@link&#xA;Class#getClassLoader() reference} to the &lt;tt>ClassLoader&lt;/tt> that defined&#xA;it.&#xA;&#xA;&lt;p> &lt;tt>Class&lt;/tt> objects for array classes are not created by class&#xA;loaders, but are created automatically as required by the Java runtime.&#xA;The class loader for an array class, as returned by {@link&#xA;Class#getClassLoader()} is the same as the class loader for its element&#xA;type; if the element type is a primitive type, then the array class has no&#xA;class loader.&#xA;&#xA;&lt;p> Applications implement subclasses of &lt;tt>ClassLoader&lt;/tt> in order to&#xA;extend the manner in which the Java virtual machine dynamically loads&#xA;classes.&#xA;&#xA;&lt;p> Class loaders may typically be used by security managers to indicate&#xA;security domains.&#xA;&#xA;&lt;p> The &lt;tt>ClassLoader&lt;/tt> class uses a delegation model to search for&#xA;classes and resources.  Each instance of &lt;tt>ClassLoader&lt;/tt> has an&#xA;associated parent class loader.  When requested to find a class or&#xA;resource, a &lt;tt>ClassLoader&lt;/tt> instance will delegate the search for the&#xA;class or resource to its parent class loader before attempting to find the&#xA;class or resource itself.  The virtual machine's built-in class loader,&#xA;called the &quot;bootstrap class loader&quot;, does not itself have a parent but may&#xA;serve as the parent of a &lt;tt>ClassLoader&lt;/tt> instance.&#xA;&#xA;&lt;p> Normally, the Java virtual machine loads classes from the local file&#xA;system in a platform-dependent manner.  For example, on UNIX systems, the&#xA;virtual machine loads classes from the directory defined by the&#xA;&lt;tt>CLASSPATH&lt;/tt> environment variable.&#xA;&#xA;&lt;p> However, some classes may not originate from a file; they may originate&#xA;from other sources, such as the network, or they could be constructed by an&#xA;application.  The method {@link #defineClass(String, byte[], int, int)&#xA;&lt;tt>defineClass&lt;/tt>} converts an array of bytes into an instance of class&#xA;&lt;tt>Class&lt;/tt>. Instances of this newly defined class can be created using&#xA;{@link Class#newInstance &lt;tt>Class.newInstance&lt;/tt>}.&#xA;&#xA;&lt;p> The methods and constructors of objects created by a class loader may&#xA;reference other classes.  To determine the class(es) referred to, the Java&#xA;virtual machine invokes the {@link #loadClass &lt;tt>loadClass&lt;/tt>} method of&#xA;the class loader that originally created the class.&#xA;&#xA;&lt;p> For example, an application could create a network class loader to&#xA;download class files from a server.  Sample code might look like:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;ClassLoader loader&amp;nbsp;= new NetworkClassLoader(host,&amp;nbsp;port);&#xA;Object main&amp;nbsp;= loader.loadClass(&quot;Main&quot;, true).newInstance();&#xA;&amp;nbsp;.&amp;nbsp;.&amp;nbsp;.&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p> The network class loader subclass must define the methods {@link&#xA;#findClass &lt;tt>findClass&lt;/tt>} and &lt;tt>loadClassData&lt;/tt> to load a class&#xA;from the network.  Once it has downloaded the bytes that make up the class,&#xA;it should use the method {@link #defineClass &lt;tt>defineClass&lt;/tt>} to&#xA;create a class instance.  A sample implementation is:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;class NetworkClassLoader extends ClassLoader {&#xA;String host;&#xA;int port;&#xA;&#xA;public Class findClass(String name) {&#xA;byte[] b = loadClassData(name);&#xA;return defineClass(name, b, 0, b.length);&#xA;}&#xA;&#xA;private byte[] loadClassData(String name) {&#xA;load the class data from the connection&#xA;&amp;nbsp;.&amp;nbsp;.&amp;nbsp;.&#xA;}&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;h4> &lt;a name=&quot;name&quot;>Binary names&lt;/a> &lt;/h4>&#xA;&#xA;&lt;p> Any class name provided as a {@link String} parameter to methods in&#xA;&lt;tt>ClassLoader&lt;/tt> must be a binary name as defined by the &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/jls/&quot;>Java Language Specification&lt;/a>.&#xA;&#xA;&lt;p> Examples of valid class names include:&#xA;&lt;blockquote>&lt;pre>&#xA;&quot;java.lang.String&quot;&#xA;&quot;javax.swing.JSpinner$DefaultEditor&quot;&#xA;&quot;java.security.KeyStore$Builder$FileBuilder$1&quot;&#xA;&quot;java.net.URLClassLoader$3$1&quot;&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;@version  1.186, 08/02/04&#xA;@see      #resolveClass(Class)&#xA;@since 1.0&#xA;" annotatedElement="3f933483-0042-4439-b6a6-958ad9d81d2d"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="79212f01-c89b-44a1-8444-97a9cb3665f4" name="NativeLibrary" visibility="package">
              <ownedComment xmi:id="1aaf5399-cb99-4bc1-8ede-3744aeccb030" body="The inner class NativeLibrary denotes a loaded native library instance.&#xA;Every classloader contains a vector of loaded native libraries in the&#xA;private field &lt;tt>nativeLibraries&lt;/tt>.  The native libraries loaded&#xA;into the system are entered into the &lt;tt>systemNativeLibraries&lt;/tt>&#xA;vector.&#xA;&#xA;&lt;p> Every native library requires a particular version of JNI. This is&#xA;denoted by the private &lt;tt>jniVersion&lt;/tt> field.  This field is set by&#xA;the VM when it loads the library, and used by the VM to pass the correct&#xA;version of JNI to the native methods.  &lt;/p>&#xA;&#xA;@version  1.186 08/02/04&#xA;@see      ClassLoader&#xA;@since    1.2&#xA;" annotatedElement="79212f01-c89b-44a1-8444-97a9cb3665f4"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="42fa6fd4-a856-40d6-a5d2-0fede5fc0368" name="Comparable&lt;Byte>">
            <templateBinding xmi:id="fff25796-6531-47d0-a727-09a950ea7f48" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="14661e55-def6-4b59-9fa6-9d427860b3b0" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="cc509c4d-0242-4749-adf9-b905a39454ae"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="4cccc5db-a8b5-42ff-9c38-719555e42fad" name="Comparable&lt;String>">
            <templateBinding xmi:id="f738ed92-390c-48d9-a022-c7c34beb6688" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="50316832-d303-480e-8f9a-ac639e76b38e" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="44c739ae-2460-4446-b06e-bab4190d37f4"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="e1b0e7ce-3e7f-4c85-be61-5b3588027acb" name="Appendable" isAbstract="true">
            <ownedComment xmi:id="b16e432f-87a8-40ae-8396-adae30b15c78" body="An object to which &lt;tt>char&lt;/tt> sequences and values can be appended.  The&#xA;&lt;tt>Appendable&lt;/tt> interface must be implemented by any class whose&#xA;instances are intended to receive formatted output from a {@link&#xA;java.util.Formatter}.&#xA;&#xA;&lt;p> The characters to be appended should be valid Unicode characters as&#xA;described in &lt;a href=&quot;Character.html#unicode&quot;>Unicode Character&#xA;Representation&lt;/a>.  Note that supplementary characters may be composed of&#xA;multiple 16-bit &lt;tt>char&lt;/tt> values.&#xA;&#xA;&lt;p> Appendables are not necessarily safe for multithreaded access.  Thread&#xA;safety is the responsibility of classes that extend and implement this&#xA;interface.&#xA;&#xA;&lt;p> Since this interface may be implemented by existing classes&#xA;with different styles of error handling there is no guarantee that&#xA;errors will be propagated to the invoker.&#xA;&#xA;@version &#x9;1.3, 07/16/04&#xA;@since 1.5&#xA;" annotatedElement="e1b0e7ce-3e7f-4c85-be61-5b3588027acb"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9844b98b-cf19-4183-9cc1-ab9d47f92e18" name="HashMap&lt;String, String>">
            <templateBinding xmi:id="965e8b1c-3b3e-49af-b54c-7a6fd78ea905" signature="728ca417-c96f-45a1-8e42-8731b30e61ee">
              <parameterSubstitution xmi:id="7b8ae658-6a21-4660-8670-abf3b6ccd78b" formal="941bb1e1-6bf3-431a-9e39-f73396ea1874" actual="44c739ae-2460-4446-b06e-bab4190d37f4"/>
              <parameterSubstitution xmi:id="63187b70-700f-4030-be2b-1cad571284f9" formal="3e4536b5-4534-4015-85ed-a0cb7c4d8ff9" actual="44c739ae-2460-4446-b06e-bab4190d37f4"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="53475451-1942-4ff6-9dd9-4d0e2a35ed62" name="RuntimePermission" isLeaf="true">
            <ownedComment xmi:id="b7efc048-1237-4aed-b790-742c576dec4c" body="This class is for runtime permissions. A RuntimePermission&#xA;contains a name (also referred to as a &quot;target name&quot;) but&#xA;no actions list; you either have the named permission&#xA;or you don't.&#xA;&#xA;&lt;P>&#xA;The target name is the name of the runtime permission (see below). The&#xA;naming convention follows the  hierarchical property naming convention.&#xA;Also, an asterisk&#xA;may appear at the end of the name, following a &quot;.&quot;, or by itself, to&#xA;signify a wildcard match. For example: &quot;loadLibrary.*&quot; or &quot;*&quot; is valid,&#xA;&quot;*loadLibrary&quot; or &quot;a*b&quot; is not valid.&#xA;&lt;P>&#xA;The following table lists all the possible RuntimePermission target names,&#xA;and for each provides a description of what the permission allows&#xA;and a discussion of the risks of granting code the permission.&#xA;&lt;P>&#xA;&#xA;&lt;table border=1 cellpadding=5 summary=&quot;permission target name,&#xA;what the target allows,and associated risks&quot;>&#xA;&lt;tr>&#xA;&lt;th>Permission Target Name&lt;/th>&#xA;&lt;th>What the Permission Allows&lt;/th>&#xA;&lt;th>Risks of Allowing this Permission&lt;/th>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>createClassLoader&lt;/td>&#xA;&lt;td>Creation of a class loader&lt;/td>&#xA;&lt;td>This is an extremely dangerous permission to grant.&#xA;Malicious applications that can instantiate their own class&#xA;loaders could then load their own rogue classes into the system.&#xA;These newly loaded classes could be placed into any protection&#xA;domain by the class loader, thereby automatically granting the&#xA;classes the permissions for that domain.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>getClassLoader&lt;/td>&#xA;&lt;td>Retrieval of a class loader (e.g., the class loader for the calling&#xA;class)&lt;/td>&#xA;&lt;td>This would grant an attacker permission to get the&#xA;class loader for a particular class. This is dangerous because&#xA;having access to a class's class loader allows the attacker to&#xA;load other classes available to that class loader. The attacker&#xA;would typically otherwise not have access to those classes.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>setContextClassLoader&lt;/td>&#xA;&lt;td>Setting of the context class loader used by a thread&lt;/td>&#xA;&lt;td>The context class loader is used by system code and extensions&#xA;when they need to lookup resources that might not exist in the system&#xA;class loader. Granting setContextClassLoader permission would allow&#xA;code to change which context class loader is used&#xA;for a particular thread, including system threads.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>enableContextClassLoaderOverride&lt;/td>&#xA;&lt;td>Subclass implementation of the thread context class loader methods&lt;/td>&#xA;&lt;td>The context class loader is used by system code and extensions&#xA;when they need to lookup resources that might not exist in the system&#xA;class loader. Granting enableContextClassLoaderOverride permission would allow&#xA;a subclass of Thread to override the methods that are used&#xA;to get or set the context class loader for a particular thread.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>setSecurityManager&lt;/td>&#xA;&lt;td>Setting of the security manager (possibly replacing an existing one)&#xA;&lt;/td>&#xA;&lt;td>The security manager is a class that allows&#xA;applications to implement a security policy. Granting the setSecurityManager&#xA;permission would allow code to change which security manager is used by&#xA;installing a different, possibly less restrictive security manager,&#xA;thereby bypassing checks that would have been enforced by the original&#xA;security manager.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>createSecurityManager&lt;/td>&#xA;&lt;td>Creation of a new security manager&lt;/td>&#xA;&lt;td>This gives code access to protected, sensitive methods that may&#xA;disclose information about other classes or the execution stack.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>getenv.{variable name}&lt;/td>&#xA;&lt;td>Reading of the value of the specified environment variable&lt;/td>&#xA;&lt;td>This would allow code to read the value, or determine the&#xA;existence, of a particular environment variable.  This is&#xA;dangerous if the variable contains confidential data.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>exitVM&lt;/td>&#xA;&lt;td>Halting of the Java Virtual Machine&lt;/td>&#xA;&lt;td>This allows an attacker to mount a denial-of-service attack&#xA;by automatically forcing the virtual machine to halt.&#xA;Note: The &quot;exitVM&quot; permission is automatically granted to all code&#xA;loaded from the application class path, thus enabling applications&#xA;to terminate themselves.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>shutdownHooks&lt;/td>&#xA;&lt;td>Registration and cancellation of virtual-machine shutdown hooks&lt;/td>&#xA;&lt;td>This allows an attacker to register a malicious shutdown&#xA;hook that interferes with the clean shutdown of the virtual machine.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>setFactory&lt;/td>&#xA;&lt;td>Setting of the socket factory used by ServerSocket or Socket,&#xA;or of the stream handler factory used by URL&lt;/td>&#xA;&lt;td>This allows code to set the actual implementation&#xA;for the socket, server socket, stream handler, or RMI socket factory.&#xA;An attacker may set a faulty implementation which mangles the data&#xA;stream.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>setIO&lt;/td>&#xA;&lt;td>Setting of System.out, System.in, and System.err&lt;/td>&#xA;&lt;td>This allows changing the value of the standard system streams.&#xA;An attacker may change System.in to monitor and&#xA;steal user input, or may set System.err to a &quot;null&quot; OutputStream,&#xA;which would hide any error messages sent to System.err. &lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>modifyThread&lt;/td>&#xA;&lt;td>Modification of threads, e.g., via calls to Thread&#xA;&lt;tt>interrupt&lt;/tt>, &lt;tt>stop&lt;/tt>, &lt;tt>suspend&lt;/tt>,&#xA;&lt;tt>resume&lt;/tt>, &lt;tt>setDaemon&lt;/tt>, &lt;tt>setPriority&lt;/tt>,&#xA;&lt;tt>setName&lt;/tt> and &lt;tt>setUncaughtExceptionHandler&lt;/tt>&#xA;methods&lt;/td>&#xA;&lt;td>This allows an attacker to modify the behaviour of&#xA;any thread in the system.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>stopThread&lt;/td>&#xA;&lt;td>Stopping of threads via calls to the Thread &lt;code>stop&lt;/code>&#xA;method&lt;/td>&#xA;&lt;td>This allows code to stop any thread in the system provided that it is&#xA;already granted permission to access that thread.&#xA;This poses as a threat, because that code may corrupt the system by&#xA;killing existing threads.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>modifyThreadGroup&lt;/td>&#xA;&lt;td>modification of thread groups, e.g., via calls to ThreadGroup&#xA;&lt;code>destroy&lt;/code>, &lt;code>getParent&lt;/code>, &lt;code>resume&lt;/code>,&#xA;&lt;code>setDaemon&lt;/code>, &lt;code>setMaxPriority&lt;/code>, &lt;code>stop&lt;/code>,&#xA;and &lt;code>suspend&lt;/code> methods&lt;/td>&#xA;&lt;td>This allows an attacker to create thread groups and&#xA;set their run priority.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>getProtectionDomain&lt;/td>&#xA;&lt;td>Retrieval of the ProtectionDomain for a class&lt;/td>&#xA;&lt;td>This allows code to obtain policy information&#xA;for a particular code source. While obtaining policy information&#xA;does not compromise the security of the system, it does give&#xA;attackers additional information, such as local file names for&#xA;example, to better aim an attack.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>readFileDescriptor&lt;/td>&#xA;&lt;td>Reading of file descriptors&lt;/td>&#xA;&lt;td>This would allow code to read the particular file associated&#xA;with the file descriptor read. This is dangerous if the file&#xA;contains confidential data.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>writeFileDescriptor&lt;/td>&#xA;&lt;td>Writing to file descriptors&lt;/td>&#xA;&lt;td>This allows code to write to a particular file associated&#xA;with the descriptor. This is dangerous because it may allow&#xA;malicious code to plant viruses or at the very least, fill up&#xA;your entire disk.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>loadLibrary.{library name}&lt;/td>&#xA;&lt;td>Dynamic linking of the specified library&lt;/td>&#xA;&lt;td>It is dangerous to allow an applet permission to load native code&#xA;libraries, because the Java security architecture is not designed to and&#xA;does not prevent malicious behavior at the level of native code.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>accessClassInPackage.{package name}&lt;/td>&#xA;&lt;td>Access to the specified package via a class loader's&#xA;&lt;code>loadClass&lt;/code> method when that class loader calls&#xA;the SecurityManager &lt;code>checkPackageAccess&lt;/code> method&lt;/td>&#xA;&lt;td>This gives code access to classes in packages&#xA;to which it normally does not have access. Malicious code&#xA;may use these classes to help in its attempt to compromise&#xA;security in the system.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>defineClassInPackage.{package name}&lt;/td>&#xA;&lt;td>Definition of classes in the specified package, via a class&#xA;loader's &lt;code>defineClass&lt;/code> method when that class loader calls&#xA;the SecurityManager &lt;code>checkPackageDefinition&lt;/code> method.&lt;/td>&#xA;&lt;td>This grants code permission to define a class&#xA;in a particular package. This is dangerous because malicious&#xA;code with this permission may define rogue classes in&#xA;trusted packages like &lt;code>java.security&lt;/code> or &lt;code>java.lang&lt;/code>,&#xA;for example.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>accessDeclaredMembers&lt;/td>&#xA;&lt;td>Access to the declared members of a class&lt;/td>&#xA;&lt;td>This grants code permission to query a class for its public,&#xA;protected, default (package) access, and private fields and/or&#xA;methods. Although the code would have&#xA;access to the private and protected field and method names, it would not&#xA;have access to the private/protected field data and would not be able&#xA;to invoke any private methods. Nevertheless, malicious code&#xA;may use this information to better aim an attack.&#xA;Additionally, it may invoke any public methods and/or access public fields&#xA;in the class.  This could be dangerous if&#xA;the code would normally not be able to invoke those methods and/or&#xA;access the fields  because&#xA;it can't cast the object to the class/interface with those methods&#xA;and fields.&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>queuePrintJob&lt;/td>&#xA;&lt;td>Initiation of a print job request&lt;/td>&#xA;&lt;td>This could print sensitive information to a printer,&#xA;or simply waste paper.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>getStackTrace&lt;/td>&#xA;&lt;td>Retrieval of the stack trace information of another thread.&lt;/td>&#xA;&lt;td>This allows retrieval of the stack trace information of&#xA;another thread.  This might allow malicious code to monitor the&#xA;execution of threads and discover vulnerabilities in applications.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>setDefaultUncaughtExceptionHandler&lt;/td>&#xA;&lt;td>Setting the default handler to be used when a thread&#xA;terminates abruptly due to an uncaught exception&lt;/td>&#xA;&lt;td>This allows an attacker to register a malicious&#xA;uncaught exception handler that could interfere with termination&#xA;of a thread&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>preferences&lt;/td>&#xA;&lt;td>Represents the permission required to get access to the&#xA;java.util.prefs.Preferences implementations user or system root&#xA;which in turn allows retrieval or update operations within the&#xA;Preferences persistent backing store.) &lt;/td>&#xA;&lt;td>This permission allows the user to read from or write to the&#xA;preferences backing store if the user running the code has&#xA;sufficient OS privileges to read/write to that backing store.&#xA;The actual backing store may reside within a traditional filesystem&#xA;directory or within a registry depending on the platform OS&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&#xA;@see java.security.BasicPermission&#xA;@see java.security.Permission&#xA;@see java.security.Permissions&#xA;@see java.security.PermissionCollection&#xA;@see java.lang.SecurityManager&#xA;&#xA;@version 1.53 04/04/20&#xA;&#xA;@author Marianne Mueller&#xA;@author Roland Schemers&#xA;" annotatedElement="53475451-1942-4ff6-9dd9-4d0e2a35ed62"/>
            <generalization xmi:id="5934e22d-1d22-4fb6-917c-28d6a0592bd9" isSubstitutable="true" general="4831e368-c670-40b4-87bd-a8a910a528fa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a9db5924-27fd-4fa8-840f-90b8b0c6bedb" name="InterruptedException">
            <ownedComment xmi:id="b464f822-f62d-4f28-9aca-f0b264077980" body="Thrown when a thread is waiting, sleeping, or otherwise paused for&#xA;a long time and another thread interrupts it using the&#xA;&lt;code>interrupt&lt;/code>  method in class &lt;code>Thread&lt;/code>.&#xA;&#xA;@author  Frank Yellin&#xA;@version 1.15, 12/19/03&#xA;@see     java.lang.Object#wait()&#xA;@see     java.lang.Object#wait(long)&#xA;@see     java.lang.Object#wait(long, int)&#xA;@see     java.lang.Thread#sleep(long)&#xA;@see     java.lang.Thread#interrupt()&#xA;@see     java.lang.Thread#interrupted()&#xA;@since   JDK1.0&#xA;" annotatedElement="a9db5924-27fd-4fa8-840f-90b8b0c6bedb"/>
            <generalization xmi:id="bd859fc1-ea5a-487a-b58e-bbc7ebab0c6d" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9b774d29-401e-4009-b5fe-aa322051fd90" name="StringBuffer" clientDependency="c0684d0e-67b0-4f4b-9da1-24f8a47e426b e32f3895-e0d5-473f-99ae-49a7ebc10d5c" isLeaf="true">
            <ownedComment xmi:id="62f5f4ad-c65f-47aa-877a-e7667e791ce4" body="A thread-safe, mutable sequence of characters.&#xA;A string buffer is like a {@link String}, but can be modified. At any&#xA;point in time it contains some particular sequence of characters, but&#xA;the length and content of the sequence can be changed through certain&#xA;method calls.&#xA;&lt;p>&#xA;String buffers are safe for use by multiple threads. The methods&#xA;are synchronized where necessary so that all the operations on any&#xA;particular instance behave as if they occur in some serial order&#xA;that is consistent with the order of the method calls made by each of&#xA;the individual threads involved.&#xA;&lt;p>&#xA;The principal operations on a &lt;code>StringBuffer&lt;/code> are the&#xA;&lt;code>append&lt;/code> and &lt;code>insert&lt;/code> methods, which are&#xA;overloaded so as to accept data of any type. Each effectively&#xA;converts a given datum to a string and then appends or inserts the&#xA;characters of that string to the string buffer. The&#xA;&lt;code>append&lt;/code> method always adds these characters at the end&#xA;of the buffer; the &lt;code>insert&lt;/code> method adds the characters at&#xA;a specified point.&#xA;&lt;p>&#xA;For example, if &lt;code>z&lt;/code> refers to a string buffer object&#xA;whose current contents are &quot;&lt;code>start&lt;/code>&quot;, then&#xA;the method call &lt;code>z.append(&quot;le&quot;)&lt;/code> would cause the string&#xA;buffer to contain &quot;&lt;code>startle&lt;/code>&quot;, whereas&#xA;&lt;code>z.insert(4, &quot;le&quot;)&lt;/code> would alter the string buffer to&#xA;contain &quot;&lt;code>starlet&lt;/code>&quot;.&#xA;&lt;p>&#xA;In general, if sb refers to an instance of a &lt;code>StringBuffer&lt;/code>,&#xA;then &lt;code>sb.append(x)&lt;/code> has the same effect as&#xA;&lt;code>sb.insert(sb.length(),&amp;nbsp;x)&lt;/code>.&#xA;&lt;p>&#xA;Whenever an operation occurs involving a source sequence (such as&#xA;appending or inserting from a source sequence) this class synchronizes&#xA;only on the string buffer performing the operation, not on the source.&#xA;&lt;p>&#xA;Every string buffer has a capacity. As long as the length of the&#xA;character sequence contained in the string buffer does not exceed&#xA;the capacity, it is not necessary to allocate a new internal&#xA;buffer array. If the internal buffer overflows, it is&#xA;automatically made larger.&#xA;&#xA;As of  release JDK 5, this class has been supplemented with an equivalent&#xA;class designed for use by a single thread, {@link StringBuilder}.  The&#xA;&lt;tt>StringBuilder&lt;/tt> class should generally be used in preference to&#xA;this one, as it supports all of the same operations but it is faster, as&#xA;it performs no synchronization.&#xA;&#xA;@author&#x9;Arthur van Hoff&#xA;@version &#x9;1.99, 07/15/04&#xA;@see     java.lang.StringBuilder&#xA;@see     java.lang.String&#xA;@since   JDK1.0&#xA;" annotatedElement="9b774d29-401e-4009-b5fe-aa322051fd90"/>
            <generalization xmi:id="43165c0a-f140-4f27-8139-113a0f655930" isSubstitutable="true" general="8564352d-0c0a-4453-90df-0731d2b6dcbc"/>
            <interfaceRealization xmi:id="e32f3895-e0d5-473f-99ae-49a7ebc10d5c" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="9b774d29-401e-4009-b5fe-aa322051fd90" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="c0684d0e-67b0-4f4b-9da1-24f8a47e426b" name="" supplier="add26864-681f-4efa-930b-32e7f66a5186" client="9b774d29-401e-4009-b5fe-aa322051fd90" contract="add26864-681f-4efa-930b-32e7f66a5186"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a472b9df-9b50-4545-a620-7a49243adebf" name="UnsupportedClassVersionError">
            <ownedComment xmi:id="00623e7d-83a0-4400-88d1-c073183de789" body="Thrown when the Java Virtual Machine attempts to read a class&#xA;file and determines that the major and minor version numbers&#xA;in the file are not supported.&#xA;&#xA;@since   1.2&#xA;" annotatedElement="a472b9df-9b50-4545-a620-7a49243adebf"/>
            <generalization xmi:id="13026f20-385a-441a-81b1-b7b5fa0582bc" isSubstitutable="true" general="b09d7543-2888-4970-a315-8a0625905d71"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ba3b981e-8524-4c88-9452-9a0b87a6d6f9" name="OutOfMemoryError">
            <ownedComment xmi:id="5ab4014d-12b9-49e3-a5a3-b5ecb39e8238" body="Thrown when the Java Virtual Machine cannot allocate an object&#xA;because it is out of memory, and no more memory could be made&#xA;available by the garbage collector.&#xA;&#xA;@author  unascribed&#xA;@version 1.21, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="ba3b981e-8524-4c88-9452-9a0b87a6d6f9"/>
            <generalization xmi:id="3c2609a3-aeaf-458c-bafc-be78d528df1e" isSubstitutable="true" general="55a51e20-5987-4ce7-b966-75da1b359abb"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="966def5e-c7d3-4e7e-8aa8-5a2b81b96e4a" name="ArrayIndexOutOfBoundsException">
            <ownedComment xmi:id="32ccede9-2d0c-4c37-9afe-11f4d21c3c42" body="Thrown to indicate that an array has been accessed with an&#xA;illegal index. The index is either negative or greater than or&#xA;equal to the size of the array.&#xA;&#xA;@author  unascribed&#xA;@version 1.21, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="966def5e-c7d3-4e7e-8aa8-5a2b81b96e4a"/>
            <generalization xmi:id="a4dee0af-9989-4267-a6f1-05d5cd6d2ca3" isSubstitutable="true" general="c5043fce-af47-4884-97df-88e4fbd235d4"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="439bd091-5e69-4c16-8bb3-2424fd17370a" name="StrictMath" isLeaf="true">
            <ownedComment xmi:id="f9fe44a7-019c-4044-b65b-980a279ef52d" body="The class &lt;code>StrictMath&lt;/code> contains methods for performing basic&#xA;numeric operations such as the elementary exponential, logarithm,&#xA;square root, and trigonometric functions.&#xA;&#xA;&lt;p>To help ensure portability of Java programs, the definitions of&#xA;some of the numeric functions in this package require that they&#xA;produce the same results as certain published algorithms. These&#xA;algorithms are available from the well-known network library&#xA;&lt;code>netlib&lt;/code> as the package &quot;Freely Distributable Math&#xA;Library,&quot; &lt;a&#xA;href=&quot;ftp://ftp.netlib.org/fdlibm.tar&quot;>&lt;code>fdlibm&lt;/code>&lt;/a>. These&#xA;algorithms, which are written in the C programming language, are&#xA;then to be understood as executed with all floating-point&#xA;operations following the rules of Java floating-point arithmetic.&#xA;&#xA;&lt;p>The Java math library is defined with respect to&#xA;&lt;code>fdlibm&lt;/code> version 5.3. Where &lt;code>fdlibm&lt;/code> provides&#xA;more than one definition for a function (such as&#xA;&lt;code>acos&lt;/code>), use the &quot;IEEE 754 core function&quot; version&#xA;(residing in a file whose name begins with the letter&#xA;&lt;code>e&lt;/code>).  The methods which require &lt;code>fdlibm&lt;/code>&#xA;semantics are &lt;code>sin&lt;/code>, &lt;code>cos&lt;/code>, &lt;code>tan&lt;/code>,&#xA;&lt;code>asin&lt;/code>, &lt;code>acos&lt;/code>, &lt;code>atan&lt;/code>,&#xA;&lt;code>exp&lt;/code>, &lt;code>log&lt;/code>, &lt;code>log10&lt;/code>,&#xA;&lt;code>cbrt&lt;/code>, &lt;code>atan2&lt;/code>, &lt;code>pow&lt;/code>,&#xA;&lt;code>sinh&lt;/code>, &lt;code>cosh&lt;/code>, &lt;code>tanh&lt;/code>,&#xA;&lt;code>hypot&lt;/code>, &lt;code>expm1&lt;/code>, and &lt;code>log1p&lt;/code>.&#xA;&#xA;@author  unascribed&#xA;@author  Joseph D. Darcy&#xA;@version 1.26, 06/14/04&#xA;@since   1.3&#xA;" annotatedElement="439bd091-5e69-4c16-8bb3-2424fd17370a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="ba9e4ac2-89dc-4882-8022-ab1644f61e4e" name="Comparable&lt;Long>">
            <templateBinding xmi:id="80072e0f-1c1d-4283-b385-db5cca086843" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="c39e291f-2934-4a73-9bae-4b54f918ea5e" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="fe3cb6a8-2039-4843-b696-e4738058838e"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="015b8627-f5b5-477f-8717-4d7c48152015" name="IllegalArgumentException">
            <ownedComment xmi:id="f7f73759-dfc0-4124-980f-aed7dfca0fea" body="Thrown to indicate that a method has been passed an illegal or&#xA;inappropriate argument.&#xA;&#xA;@author  unascribed&#xA;@version 1.23, 12/19/03&#xA;@see&#x9;    java.lang.Thread#setPriority(int)&#xA;@since   JDK1.0&#xA;" annotatedElement="015b8627-f5b5-477f-8717-4d7c48152015"/>
            <generalization xmi:id="8355f673-b7e3-4585-b5bf-5f24339d44f2" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="f099ab56-f712-409a-887b-b9949cb5553b" name="Runnable" isAbstract="true">
            <ownedComment xmi:id="c4add71d-c4d3-4dea-8220-8e4015715071" body="The &lt;code>Runnable&lt;/code> interface should be implemented by any&#xA;class whose instances are intended to be executed by a thread. The&#xA;class must define a method of no arguments called &lt;code>run&lt;/code>.&#xA;&lt;p>&#xA;This interface is designed to provide a common protocol for objects that&#xA;wish to execute code while they are active. For example,&#xA;&lt;code>Runnable&lt;/code> is implemented by class &lt;code>Thread&lt;/code>.&#xA;Being active simply means that a thread has been started and has not&#xA;yet been stopped.&#xA;&lt;p>&#xA;In addition, &lt;code>Runnable&lt;/code> provides the means for a class to be&#xA;active while not subclassing &lt;code>Thread&lt;/code>. A class that implements&#xA;&lt;code>Runnable&lt;/code> can run without subclassing &lt;code>Thread&lt;/code>&#xA;by instantiating a &lt;code>Thread&lt;/code> instance and passing itself in&#xA;as the target.  In most cases, the &lt;code>Runnable&lt;/code> interface should&#xA;be used if you are only planning to override the &lt;code>run()&lt;/code>&#xA;method and no other &lt;code>Thread&lt;/code> methods.&#xA;This is important because classes should not be subclassed&#xA;unless the programmer intends on modifying or enhancing the fundamental&#xA;behavior of the class.&#xA;&#xA;@author  Arthur van Hoff&#xA;@version 1.24, 12/19/03&#xA;@see     java.lang.Thread&#xA;@since   JDK1.0&#xA;" annotatedElement="f099ab56-f712-409a-887b-b9949cb5553b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="cb034bc2-34b6-4df7-9d0b-f222b29ddd01" name="UnknownError">
            <ownedComment xmi:id="74cd6120-0202-4453-8b6b-3f4950fa8bbe" body="Thrown when an unknown but serious exception has occurred in the&#xA;Java Virtual Machine.&#xA;&#xA;@author unascribed&#xA;@version 1.13, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="cb034bc2-34b6-4df7-9d0b-f222b29ddd01"/>
            <generalization xmi:id="3e232ae3-d4ba-4466-bd4f-1c7345916cbc" isSubstitutable="true" general="55a51e20-5987-4ce7-b966-75da1b359abb"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="8fb63e61-b59f-4f1d-9536-9c115e8c985f" name="management">
            <packagedElement xmi:type="uml:Interface" xmi:id="db8d0a0c-fe6f-49e2-853c-cbba7635970d" name="MemoryManagerMXBean" isAbstract="true">
              <ownedComment xmi:id="7698634b-7370-40bb-a50d-eab9e4dbcd7c" body="The management interface for a memory manager.&#xA;A memory manager manages one or more memory pools of the&#xA;Java virtual machine.&#xA;&#xA;&lt;p> A Java virtual machine has one or more memory managers.&#xA;An instance implementing this interface is&#xA;an &lt;a href=&quot;ManagementFactory.html#MXBean&quot;>MXBean&lt;/a>&#xA;that can be obtained by calling&#xA;the {@link ManagementFactory#getMemoryManagerMXBeans} method or&#xA;from the {@link ManagementFactory#getPlatformMBeanServer&#xA;platform &lt;tt>MBeanServer&lt;/tt>} method.&#xA;&#xA;&lt;p>The &lt;tt>ObjectName&lt;/tt> for uniquely identifying the MXBean for&#xA;a memory manager within an MBeanServer is:&#xA;&lt;blockquote>&#xA;{@link ManagementFactory#MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE&#xA;&lt;tt>java.lang:type=MemoryManager&lt;/tt>}&lt;tt>,name=&lt;/tt>&lt;i>manager's name&lt;/i>&#xA;&lt;/blockquote>&#xA;&#xA;@see MemoryMXBean&#xA;&#xA;@see &lt;a href=&quot;../../../javax/management/package-summary.html&quot;>&#xA;JMX Specification.&lt;/a>&#xA;@see &lt;a href=&quot;package-summary.html#examples&quot;>&#xA;Ways to Access MXBeans&lt;/a>&#xA;&#xA;@author  Mandy Chung&#xA;@version 1.10, 04/20/04&#xA;@since   1.5&#xA;" annotatedElement="db8d0a0c-fe6f-49e2-853c-cbba7635970d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="45f66fb7-b93a-461a-9e8f-3e6ffba56bbc" name="OperatingSystemMXBean" isAbstract="true">
              <ownedComment xmi:id="f48b8b9c-0755-4c18-9ba9-51660f812abc" body="The management interface for the operating system on which&#xA;the Java virtual machine is running.&#xA;&#xA;&lt;p> A Java virtual machine has a single instance of the implementation&#xA;class of this interface.  This instance implementing this interface is&#xA;an &lt;a href=&quot;ManagementFactory.html#MXBean&quot;>MXBean&lt;/a>&#xA;that can be obtained by calling&#xA;the {@link ManagementFactory#getOperatingSystemMXBean} method or&#xA;from the {@link ManagementFactory#getPlatformMBeanServer&#xA;platform &lt;tt>MBeanServer&lt;/tt>} method.&#xA;&#xA;&lt;p>The &lt;tt>ObjectName&lt;/tt> for uniquely identifying the MXBean for&#xA;the operating system within an MBeanServer is:&#xA;&lt;blockquote>&#xA;{@link ManagementFactory#OPERATING_SYSTEM_MXBEAN_NAME&#xA;&lt;tt>java.lang:type=OperatingSystem&lt;/tt>}&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p> This interface defines several convenient methods for accessing&#xA;system properties about the operating system on which the Java&#xA;virtual machine is running.&#xA;&#xA;@see &lt;a href=&quot;../../../javax/management/package-summary.html&quot;>&#xA;JMX Specification.&lt;/a>&#xA;@see &lt;a href=&quot;package-summary.html#examples&quot;>&#xA;Ways to Access MXBeans&lt;/a>&#xA;&#xA;@author  Mandy Chung&#xA;@version 1.9, 04/20/04&#xA;@since   1.5&#xA;" annotatedElement="45f66fb7-b93a-461a-9e8f-3e6ffba56bbc"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="53356d66-6145-4c7e-b09a-a30dec839478" name="ThreadMXBean" isAbstract="true">
              <ownedComment xmi:id="2312b6e7-ad23-4b38-a4d6-d5103ebbf49c" body="The management interface for the thread system of&#xA;the Java virtual machine.&#xA;&#xA;&lt;p> A Java virtual machine has a single instance of the implementation&#xA;class of this interface.  This instance implementing this interface is&#xA;an &lt;a href=&quot;ManagementFactory.html#MXBean&quot;>MXBean&lt;/a>&#xA;that can be obtained by calling&#xA;the {@link ManagementFactory#getThreadMXBean} method or&#xA;from the {@link ManagementFactory#getPlatformMBeanServer&#xA;platform &lt;tt>MBeanServer&lt;/tt>} method.&#xA;&#xA;&lt;p>The &lt;tt>ObjectName&lt;/tt> for uniquely identifying the MXBean for&#xA;the thread system within an MBeanServer is:&#xA;&lt;blockquote>&#xA;{@link ManagementFactory#THREAD_MXBEAN_NAME&#xA;&lt;tt>java.lang:type=Threading&lt;/tt>}&#xA;&lt;/blockquote>&#xA;&#xA;&lt;h4>Thread ID&lt;/h4>&#xA;Thread ID is a positive long value returned by calling the&#xA;{@link java.lang.Thread#getId} method for a thread.&#xA;The thread ID is unique during its lifetime.  When a thread&#xA;is terminated, this thread ID may be reused.&#xA;&#xA;&lt;p> Some methods in this interface take a thread ID or an array&#xA;of thread IDs as the input parameter and return per-thread information.&#xA;&#xA;&lt;h4>Thread CPU time&lt;/h4>&#xA;A Java virtual machine implementation may support measuring&#xA;the CPU time for the current thread, for any thread, or for no threads.&#xA;&#xA;&lt;p>&#xA;The {@link #isThreadCpuTimeSupported} method can be used to determine&#xA;if a Java virtual machine supports measuring of the CPU time for any&#xA;thread.  The {@link #isCurrentThreadCpuTimeSupported} method can&#xA;be used to determine if a Java virtual machine supports measuring of&#xA;the CPU time for the current  thread.&#xA;A Java virtual machine implementation that supports CPU time measurement&#xA;for any thread will also support that for the current thread.&#xA;&#xA;&lt;p> The CPU time provided by this interface has nanosecond precision&#xA;but not necessarily nanosecond accuracy.&#xA;&#xA;&lt;p>&#xA;A Java virtual machine may disable CPU time measurement&#xA;by default.&#xA;The {@link #isThreadCpuTimeEnabled} and {@link #setThreadCpuTimeEnabled}&#xA;methods can be used to test if CPU time measurement is enabled&#xA;and to enable/disable this support respectively.&#xA;Enabling thread CPU measurement could be expensive in some&#xA;Java virtual machine implementations.&#xA;&#xA;&lt;h4>Thread Contention Monitoring&lt;/h4>&#xA;Some Java virtual machines may support thread contention monitoring.&#xA;The {@link #isThreadContentionMonitoringSupported} method can be used to&#xA;determine if a Java virtual machine supports thread contention monitoring.&#xA;&#xA;The thread contention monitoring is disabled by default.  The&#xA;{@link #setThreadContentionMonitoringEnabled} method can be used to enable&#xA;thread contention monitoring.&#xA;&#xA;@see &lt;a href=&quot;../../../javax/management/package-summary.html&quot;>&#xA;JMX Specification.&lt;/a>&#xA;@see &lt;a href=&quot;package-summary.html#examples&quot;>&#xA;Ways to Access MXBeans&lt;/a>&#xA;&#xA;@author  Mandy Chung&#xA;@version 1.14, 04/29/04&#xA;@since   1.5&#xA;" annotatedElement="53356d66-6145-4c7e-b09a-a30dec839478"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="70ad2474-3902-47c0-ac9d-86e0e21d0861" name="MemoryPoolMXBean" isAbstract="true">
              <ownedComment xmi:id="5ee6e9ea-a1d7-4706-9193-60ab017b1473" body="The management interface for a memory pool.  A memory pool&#xA;represents the memory resource managed by the Java virtual machine&#xA;and is managed by one or more {@link MemoryManagerMXBean memory managers}.&#xA;&#xA;&lt;p> A Java virtual machine has one or more instances of the&#xA;implementation class of this interface.  An instance&#xA;implementing this interface is&#xA;an &lt;a href=&quot;ManagementFactory.html#MXBean&quot;>MXBean&lt;/a>&#xA;that can be obtained by calling&#xA;the {@link ManagementFactory#getMemoryPoolMXBeans} method or&#xA;from the {@link ManagementFactory#getPlatformMBeanServer&#xA;platform &lt;tt>MBeanServer&lt;/tt>} method.&#xA;&#xA;&lt;p>The &lt;tt>ObjectName&lt;/tt> for uniquely identifying the MXBean for&#xA;a memory pool within an &lt;tt>MBeanServer&lt;/tt> is:&#xA;&lt;blockquote>&#xA;{@link ManagementFactory#MEMORY_POOL_MXBEAN_DOMAIN_TYPE&#xA;&lt;tt>java.lang:type=MemoryPool&lt;/tt>}&lt;tt>,name=&lt;/tt>&lt;i>pool's name&lt;/i>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;h4>Memory Type&lt;/h4>&#xA;&lt;p>The Java virtual machine has a heap for object allocation and also&#xA;maintains non-heap memory for the method area and the Java virtual&#xA;machine execution.  The Java virtual machine can have one or more&#xA;memory pools.  Each memory pool represents a memory area&#xA;of one of the following types:&#xA;&lt;ul>&#xA;&lt;li>{@link MemoryType#HEAP heap}&lt;/li>&#xA;&lt;li>{@link MemoryType#NON_HEAP non-heap}&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;&lt;h4>Memory Usage Monitoring&lt;/h4>&#xA;&#xA;A memory pool has the following attributes:&#xA;&lt;ul>&#xA;&lt;li>&lt;a href=&quot;Usage&quot;>Memory usage&lt;/a>&lt;/li>&#xA;&lt;li>&lt;a href=&quot;PeakUsage&quot;>Peak memory usage&lt;/a>&lt;/li>&#xA;&lt;li>&lt;a href=&quot;UsageThreshold&quot;>Usage Threshold&lt;/a>&lt;/li>&#xA;&lt;li>&lt;a href=&quot;CollectionThreshold&quot;>Collection Usage Threshold&lt;/a>&#xA;(only supported by some &lt;em>garbage-collected&lt;/em> memory pools)&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;&lt;h4>&lt;a name=&quot;Usage&quot;>1. Memory Usage&lt;/a>&lt;/h4>&#xA;&#xA;The {@link #getUsage} method provides an estimate&#xA;of the current usage of a memory pool.&#xA;For a garbage-collected memory pool, the amount of used memory&#xA;includes the memory occupied by all objects in the pool&#xA;including both &lt;em>reachable&lt;/em> and &lt;em>unreachable&lt;/em> objects.&#xA;&#xA;&lt;p>In general, this method is a lightweight operation for getting&#xA;an approximate memory usage.  For some memory pools, for example,&#xA;when objects are not packed contiguously, this method may be&#xA;an expensive operation that requires some computation to determine&#xA;the current memory usage.  An implementation should document when&#xA;this is the case.&#xA;&#xA;&lt;h4>&lt;a name=&quot;PeakUsage&quot;>2. Peak Memory Usage&lt;/a>&lt;/h4>&#xA;&#xA;The Java virtual machine maintains the peak memory usage of a memory&#xA;pool since the virtual machine was started or the peak was reset.&#xA;The peak memory usage is returned by the {@link #getPeakUsage} method&#xA;and reset by calling the {@link #resetPeakUsage} method.&#xA;&#xA;&lt;h4>&lt;a name=&quot;UsageThreshold&quot;>3. Usage Threshold&lt;/a>&lt;/h4>&#xA;&#xA;Each memory pool has a manageable attribute&#xA;called the &lt;i>usage threshold&lt;/i> which has a default value supplied&#xA;by the Java virtual machine.  The default value is platform-dependent.&#xA;The usage threshold can be set via the&#xA;{@link #setUsageThreshold setUsageThreshold} method.&#xA;If the threshold is set to a positive value, the usage threshold crossing&#xA;checking is enabled in this memory pool.&#xA;If the usage threshold is set to zero, usage&#xA;threshold crossing checking on this memory pool is disabled.&#xA;The {@link MemoryPoolMXBean#isUsageThresholdSupported} method can&#xA;be used to determine if this functionality is supported.&#xA;&lt;p>&#xA;A Java virtual machine performs usage threshold crossing checking on a&#xA;memory pool basis at its best appropriate time, typically,&#xA;at garbage collection time.&#xA;Each memory pool maintains a {@link #getUsageThresholdCount&#xA;usage threshold count} that will get incremented&#xA;every time when the Java virtual machine&#xA;detects that the memory pool usage is crossing the threshold.&#xA;&lt;p>&#xA;This manageable usage threshold attribute is designed for monitoring the&#xA;increasing trend of memory usage with low overhead.&#xA;Usage threshold may not be appropriate for some memory pools.&#xA;For example, a generational garbage collector, a common garbage collection&#xA;algorithm used in many Java virtual machine implementations,&#xA;manages two or more generations segregating objects by age.&#xA;Most of the objects are allocated in&#xA;the &lt;em>youngest generation&lt;/em> (say a nursery memory pool).&#xA;The nursery memory pool is designed to be filled up and&#xA;collecting the nursery memory pool will free most of its memory space&#xA;since it is expected to contain mostly short-lived objects&#xA;and mostly are unreachable at garbage collection time.&#xA;In this case, it is more appropriate for the nursery memory pool&#xA;not to support a usage threshold.  In addition,&#xA;if the cost of an object allocation&#xA;in one memory pool is very low (for example, just atomic pointer exchange),&#xA;the Java virtual machine would probably not support the usage threshold&#xA;for that memory pool since the overhead in comparing the usage with&#xA;the threshold is higher than the cost of object allocation.&#xA;&#xA;&lt;p>&#xA;The memory usage of the system can be monitored using&#xA;&lt;a href=&quot;#Polling&quot;>polling&lt;/a> or&#xA;&lt;a href=&quot;#Notification&quot;>threshold notification&lt;/a> mechanisms.&#xA;&#xA;&lt;ol type=&quot;a&quot;>&#xA;&lt;li>&lt;a name=&quot;Polling&quot;>&lt;b>Polling&lt;/b>&lt;/a>&#xA;&lt;p>&#xA;An application can continuously monitor its memory usage&#xA;by calling either the {@link #getUsage} method for all&#xA;memory pools or the {@link #isUsageThresholdExceeded} method&#xA;for those memory pools that support a usage threshold.&#xA;Below is example code that has a thread delicated for&#xA;task distribution and processing.  At every interval,&#xA;it will determine if it should receive and process new tasks based&#xA;on its memory usage.  If the memory usage exceeds its usage threshold,&#xA;it will redistribute all outstanding tasks to other VMs and&#xA;stop receiving new tasks until the memory usage returns&#xA;below its usage threshold.&#xA;&#xA;&lt;pre>&#xA;Assume the usage threshold is supported for this pool.&#xA;Set the threshold to myThreshold above which no new tasks&#xA;should be taken.&#xA;pool.setUsageThreshold(myThreshold);&#xA;....&#xA;&#xA;boolean lowMemory = false;&#xA;while (true) {&#xA;if (pool.isUsageThresholdExceeded()) {&#xA;potential low memory, so redistribute tasks to other VMs&#xA;lowMemory = true;&#xA;redistributeTasks();&#xA;stop receiving new tasks&#xA;stopReceivingTasks();&#xA;} else {&#xA;if (lowMemory) {&#xA;resume receiving tasks&#xA;lowMemory = false;&#xA;resumeReceivingTasks();&#xA;}&#xA;processing outstanding task&#xA;...&#xA;}&#xA;sleep for sometime&#xA;try {&#xA;Thread.sleep(sometime);&#xA;} catch (InterruptedException e) {&#xA;...&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;hr>&#xA;The above example does not differentiate the case where&#xA;the memory usage has temporarily dropped below the usage threshold&#xA;from the case where the memory usage remains above the threshould&#xA;between two iterations.  The usage threshold count returned by&#xA;the {@link #getUsageThresholdCount} method&#xA;can be used to determine&#xA;if the memory usage has returned below the threshold&#xA;between two polls.&#xA;&lt;p>&#xA;Below shows another example that takes some action if a&#xA;memory pool is under low memory and ignores the memory usage&#xA;changes during the action processing time.&#xA;&#xA;&lt;pre>&#xA;Assume the usage threshold is supported for this pool.&#xA;Set the threshold to myThreshold which determines if&#xA;the application will take some action under low memory condition.&#xA;pool.setUsageThreshold(myThreshold);&#xA;&#xA;int prevCrossingCount = 0;&#xA;while (true) {&#xA;A busy loop to detect when the memory usage&#xA;has exceeded the threshold.&#xA;while (!pool.isUsageThresholdExceeded() ||&#xA;pool.getUsageThresholdCount() == prevCrossingCount) {&#xA;try {&#xA;Thread.sleep(sometime)&#xA;} catch (InterruptException e) {&#xA;....&#xA;}&#xA;}&#xA;&#xA;Do some processing such as check for memory usage&#xA;and issue a warning&#xA;....&#xA;&#xA;Gets the current threshold count. The busy loop will then&#xA;ignore any crossing of threshold happens during the processing.&#xA;prevCrossingCount = pool.getUsageThresholdCount();&#xA;}&#xA;&lt;/pre>&lt;hr>&#xA;&lt;/li>&#xA;&lt;li>&lt;a name=&quot;ThresholdNotification&quot;>&lt;b>Usage Threshold Notifications&lt;/b>&lt;/a>&#xA;&lt;p>&#xA;Usage threshold notification will be emitted by {@link MemoryMXBean}.&#xA;When the Java virtual machine detects that the memory usage of&#xA;a memory pool has reached or exceeded the usage threshold&#xA;the virtual machine will trigger the &lt;tt>MemoryMXBean&lt;/tt> to emit an&#xA;{@link MemoryNotificationInfo#MEMORY_THRESHOLD_EXCEEDED&#xA;usage threshold exceeded notification}.&#xA;Another usage threshold exceeded notification will not be&#xA;generated until the usage has fallen below the threshold and&#xA;then exceeded it again.&#xA;&lt;p>&#xA;Below is an example code implementing the same logic as the&#xA;first example above but using the usage threshold notification&#xA;mechanism to detect low memory conditions instead of polling.&#xA;In this example code, upon receiving notification, the notification&#xA;listener notifies another thread to perform the actual action&#xA;such as to redistribute outstanding tasks, stop receiving tasks,&#xA;or resume receiving tasks.&#xA;The &lt;tt>handleNotification&lt;/tt> method should be designed to&#xA;do a very minimal amount of work and return without delay to avoid&#xA;causing delay in delivering subsequent notifications.  Time-consuming&#xA;actions should be performed by a separate thread.&#xA;The notification listener may be invoked by multiple threads&#xA;concurrently; so the tasks performed by the listener&#xA;should be properly synchronized.&#xA;&#xA;&lt;pre>&#xA;class MyListener implements javax.management.NotificationListener {&#xA;public void handleNotification(Notification notification, Object handback)  {&#xA;String notifType = notification.getType();&#xA;if (notifType.equals(MemoryNotificationInfo.MEMORY_THRESHOLD_EXCEEDED)) {&#xA;potential low memory, notify another thread&#xA;to redistribute outstanding tasks to other VMs&#xA;and stop receiving new tasks.&#xA;lowMemory = true;&#xA;notifyAnotherThread(lowMemory);&#xA;}&#xA;}&#xA;}&#xA;&#xA;Register MyListener with MemoryMXBean&#xA;MemoryMXBean mbean = ManagementFactory.getMemoryMXBean();&#xA;NotificationEmitter emitter = (NotificationEmitter) mbean;&#xA;MyListener listener = new MyListener();&#xA;emitter.addNotificationListener(listener, null, null);&#xA;&#xA;Assume this pool supports a usage threshold.&#xA;Set the threshold to myThreshold above which no new tasks&#xA;should be taken.&#xA;pool.setUsageThreshold(myThreshold);&#xA;&#xA;Usage threshold detection is enabled and notification will be&#xA;handled by MyListener.  Continue for other processing.&#xA;....&#xA;&#xA;&lt;/pre>&#xA;&lt;hr>&#xA;&lt;p>&#xA;There is no guarantee about when the &lt;tt>MemoryMXBean&lt;/tt> will emit&#xA;a threshold notification and when the notification will be delivered.&#xA;When a notification listener is invoked, the memory usage of&#xA;the memory pool may have crossed the usage threshold more&#xA;than once.&#xA;The {@link MemoryNotificationInfo#getCount} method returns the number&#xA;of times that the memory usage has crossed the usage threshold&#xA;at the point in time when the notification was constructed.&#xA;It can be compared with the current usage threshold count returned&#xA;by the {@link #getUsageThresholdCount} method to determine if&#xA;such situation has occurred.&#xA;&lt;/li>&#xA;&lt;/ol>&#xA;&#xA;&lt;h4>&lt;a name=&quot;CollectionThreshold&quot;>4. Collection Usage Threshold&lt;/a>&lt;/h4>&#xA;&#xA;Collection usage threshold is a manageable attribute only applicable&#xA;to some garbage-collected memory pools.&#xA;After a Java virtual machine has expended effort in reclaiming memory&#xA;space by recycling unused objects in a memory pool at garbage collection&#xA;time, some number of bytes in the memory pools that are garbaged&#xA;collected will still be in use.  The collection usage threshold&#xA;allows a value to be set for this number of bytes such&#xA;that if the threshold is exceeded,&#xA;a {@link MemoryNotificationInfo#MEMORY_THRESHOLD_EXCEEDED&#xA;collection usage threshold exceeded notification}&#xA;will be emitted by the {@link MemoryMXBean}.&#xA;In addition, the {@link #getCollectionUsageThresholdCount&#xA;collection usage threshold count} will then be incremented.&#xA;&#xA;&lt;p>&#xA;The {@link MemoryPoolMXBean#isCollectionUsageThresholdSupported} method can&#xA;be used to determine if this functionality is supported.&#xA;&#xA;&lt;p>&#xA;A Java virtual machine performs collection usage threshold checking&#xA;on a memory pool basis.  This checking is enabled if the collection&#xA;usage threshold is set to a positive value.&#xA;If the collection usage threshold is set to zero, this checking&#xA;is disabled on this memory pool.  Default value is zero.&#xA;The Java virtual machine performs the collection usage threshold&#xA;checking at garbage collection time.&#xA;&#xA;&lt;p>&#xA;Some garbage-collected memory pools may&#xA;choose not to support the collection usage threshold.  For example,&#xA;a memory pool is only managed by a continuous concurrent garbage&#xA;collector.  Objects can be allocated in this memory pool by some thread&#xA;while the unused objects are reclaimed by the concurrent garbage&#xA;collector simultaneously.  Unless there is a well-defined&#xA;garbage collection time which is the best appropriate time&#xA;to check the memory usage, the collection usage threshold should not&#xA;be supported.&#xA;&#xA;&lt;p>&#xA;The collection usage threshold is designed for monitoring the memory usage&#xA;after the Java virtual machine has expended effort in reclaiming&#xA;memory space.  The collection usage could also be monitored&#xA;by the polling and threshold notification mechanism&#xA;described above for the &lt;a href=&quot;#UsageThreshold&quot;>usage threshold&lt;/a>&#xA;in a similar fashion.&#xA;&#xA;@see &lt;a href=&quot;../../../javax/management/package-summary.html&quot;>&#xA;JMX Specification.&lt;/a>&#xA;@see &lt;a href=&quot;package-summary.html#examples&quot;>&#xA;Ways to Access MXBeans&lt;/a>&#xA;&#xA;@author  Mandy Chung&#xA;@version 1.18, 04/20/04&#xA;@since   1.5&#xA;" annotatedElement="70ad2474-3902-47c0-ac9d-86e0e21d0861"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="dd8199b7-f202-4a58-b603-7e7fb9dd0d83" name="ManagementPermission" isLeaf="true">
              <ownedComment xmi:id="b7fe1074-4f6f-439a-b874-03ab1d76f9f6" body="The permission which the SecurityManager will check when code&#xA;that is running with a SecurityManager calls methods defined&#xA;in the management interface for the Java platform.&#xA;&lt;P>&#xA;The following table&#xA;provides a summary description of what the permission allows,&#xA;and discusses the risks of granting code the permission.&#xA;&lt;P>&#xA;&#xA;&lt;table border=1 cellpadding=5 summary=&quot;Table shows permission target name, wh&#xA;at the permission allows, and associated risks&quot;>&#xA;&lt;tr>&#xA;&lt;th>Permission Target Name&lt;/th>&#xA;&lt;th>What the Permission Allows&lt;/th>&#xA;&lt;th>Risks of Allowing this Permission&lt;/th>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>control&lt;/td>&#xA;&lt;td>Ability to control the runtime characteristics of the Java virtual&#xA;machine, for example, setting the -verbose:gc and -verbose:class flag,&#xA;setting the threshold of a memory pool, and enabling and disabling&#xA;the thread contention monitoring support.&#xA;&lt;/td>&#xA;&lt;td>This allows an attacker to control the runtime characteristics&#xA;of the Java virtual machine and cause the system to misbehave.&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>monitor&lt;/td>&#xA;&lt;td>Ability to retrieve runtime information about&#xA;the Java virtual machine such as thread&#xA;stack trace, a list of all loaded class names, and input arguments&#xA;to the Java virtual machine.&lt;/td>&#xA;&lt;td>This allows malicious code to monitor runtime information and&#xA;uncover vulnerabilities.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;p>&#xA;Programmers do not normally create ManagementPermission objects directly.&#xA;Instead they are created by the security policy code based on reading&#xA;the security policy file.&#xA;&#xA;@author  Mandy Chung&#xA;@version 1.3, 12/19/03&#xA;@since   1.5&#xA;&#xA;@see java.security.BasicPermission&#xA;@see java.security.Permission&#xA;@see java.security.Permissions&#xA;@see java.security.PermissionCollection&#xA;@see java.lang.SecurityManager&#xA;&#xA;" annotatedElement="dd8199b7-f202-4a58-b603-7e7fb9dd0d83"/>
              <generalization xmi:id="be3c38bf-5962-4d18-911b-e8bbe3e2cfeb" isSubstitutable="true" general="4831e368-c670-40b4-87bd-a8a910a528fa"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5c4a577c-8840-4854-80ed-b4c6aa989cc4" name="MemoryUsage">
              <ownedComment xmi:id="340cfdfe-b16a-470b-bc4a-a65bfab3a397" body="A &lt;tt>MemoryUsage&lt;/tt> object represents a snapshot of memory usage.&#xA;Instances of the &lt;tt>MemoryUsage&lt;/tt> class are usually constructed&#xA;by methods that are used to obtain memory usage&#xA;information about individual memory pool of the Java virtual machine or&#xA;the heap or non-heap memory of the Java virtual machine as a whole.&#xA;&#xA;&lt;p> A &lt;tt>MemoryUsage&lt;/tt> object contains four values:&#xA;&lt;ul>&#xA;&lt;table>&#xA;&lt;tr>&#xA;&lt;td valign=top> &lt;tt>init&lt;/tt> &lt;/td>&#xA;&lt;td valign=top> represents the initial amount of memory (in bytes) that&#xA;the Java virtual machine requests from the operating system&#xA;for memory management during startup.  The Java virtual machine&#xA;may request additional memory from the operating system and&#xA;may also release memory to the system over time.&#xA;The value of &lt;tt>init&lt;/tt> may be undefined.&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign=top> &lt;tt>used&lt;/tt> &lt;/td>&#xA;&lt;td valign=top> represents the amount of memory currently used (in bytes).&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign=top> &lt;tt>committed&lt;/tt> &lt;/td>&#xA;&lt;td valign=top> represents the amount of memory (in bytes) that is&#xA;guaranteed to be available for use by the Java virtual machine.&#xA;The amount of committed memory may change over time (increase&#xA;or decrease).  The Java virtual machine may release memory to&#xA;the system and &lt;tt>committed&lt;/tt> could be less than &lt;tt>init&lt;/tt>.&#xA;&lt;tt>committed&lt;/tt> will always be greater than&#xA;or equal to &lt;tt>used&lt;/tt>.&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign=top> &lt;tt>max&lt;/tt> &lt;/td>&#xA;&lt;td valign=top> represents the maximum amount of memory (in bytes)&#xA;that can be used for memory management. Its value may be undefined.&#xA;The maximum amount of memory may change over time if defined.&#xA;The amount of used and committed memory will always be less than&#xA;or equal to &lt;tt>max&lt;/tt> if &lt;tt>max&lt;/tt> is defined.&#xA;A memory allocation may fail if it attempts to increase the&#xA;used memory such that &lt;tt>used &amp;gt committed&lt;/tt> even&#xA;if &lt;tt>used &amp;lt= max&lt;/tt> would still be true (for example,&#xA;when the system is low on virtual memory).&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;/ul>&#xA;&#xA;Below is a picture showing an example of a memory pool:&#xA;&lt;p>&#xA;&lt;pre>&#xA;+----------------------------------------------+&#xA;+////////////////           |                  +&#xA;+////////////////           |                  +&#xA;+----------------------------------------------+&#xA;&#xA;|--------|&#xA;init&#xA;|---------------|&#xA;used&#xA;|---------------------------|&#xA;committed&#xA;|----------------------------------------------|&#xA;max&#xA;&lt;/pre>&#xA;&#xA;&lt;h4>MXBean Mapping&lt;/h4>&#xA;&lt;tt>MemoryUsage&lt;/tt> is mapped to a {@link CompositeData CompositeData}&#xA;with attributes as specified in the {@link #from from} method.&#xA;&#xA;@author   Mandy Chung&#xA;@version 1.16, 05/25/04&#xA;@since   1.5&#xA;" annotatedElement="5c4a577c-8840-4854-80ed-b4c6aa989cc4"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="3b6f7260-af58-4203-8fce-ba0057c667dc" name="CompilationMXBean" isAbstract="true">
              <ownedComment xmi:id="a21c6c2e-7732-4969-871e-53a0ac23df91" body="The management interface for the compilation system of&#xA;the Java virtual machine.&#xA;&#xA;&lt;p> A Java virtual machine has a single instance of the implementation&#xA;class of this interface.  This instance implementing this interface is&#xA;an &lt;a href=&quot;ManagementFactory.html#MXBean&quot;>MXBean&lt;/a>&#xA;that can be obtained by calling&#xA;the {@link ManagementFactory#getCompilationMXBean} method or&#xA;from the {@link ManagementFactory#getPlatformMBeanServer&#xA;platform &lt;tt>MBeanServer&lt;/tt>} method.&#xA;&#xA;&lt;p>The &lt;tt>ObjectName&lt;/tt> for uniquely identifying the MXBean for&#xA;the compilation system within an MBeanServer is:&#xA;&lt;blockquote>&#xA;{@link ManagementFactory#COMPILATION_MXBEAN_NAME&#xA;&lt;tt>java.lang:type=Compilation&lt;/tt>}&#xA;&lt;/blockquote>&#xA;&#xA;@see &lt;a href=&quot;../../../javax/management/package-summary.html&quot;>&#xA;JMX Specification.&lt;/a>&#xA;@see &lt;a href=&quot;package-summary.html#examples&quot;>&#xA;Ways to Access MXBeans&lt;/a>&#xA;&#xA;@author  Mandy Chung&#xA;@version 1.10, 04/20/04&#xA;@since   1.5&#xA;" annotatedElement="3b6f7260-af58-4203-8fce-ba0057c667dc"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e25c1554-a1d8-4aa2-ad65-a2f4750a7175" name="ThreadInfo">
              <ownedComment xmi:id="70f24070-51e6-4998-9f50-f1fde49e686c" body="Thread information. &lt;tt>ThreadInfo&lt;/tt> contains the information&#xA;about a thread including:&#xA;&lt;h4>General thread information&lt;/h4>&#xA;&lt;ul>&#xA;&lt;li>Thread ID.&lt;/li>&#xA;&lt;li>Name of the thread.&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;&lt;h4>Execution information&lt;/h4>&#xA;&lt;ul>&#xA;&lt;li>Thread state.&lt;/tt>&#xA;&lt;li>The object upon which the thread is blocked waiting to enter&#xA;a synchronization block or waiting to be notified in&#xA;a {@link Object#wait Object.wait} call.&lt;/li>&#xA;&lt;li>The ID of the thread that owns the object&#xA;that the thread is blocked.&lt;/li>&#xA;&lt;li>Stack trace of the thread.&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;&lt;h4>Synchronization statistics&lt;/h4>&#xA;&lt;ul>&#xA;&lt;li>The number of times that the thread has blocked for&#xA;synchronization or waited for notification.&lt;/li>&#xA;&lt;li>The accumulated elapsed time that the thread has blocked&#xA;for synchronization or waited for notification&#xA;since thread contention monitoring&#xA;was enabled. Some Java virtual machine implementation&#xA;may not support this.  The&#xA;{@link ThreadMXBean#isThreadContentionMonitoringSupported()}&#xA;method can be used to determine if a Java virtual machine&#xA;supports this.&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;&lt;p>This thread information class is designed for use in monitoring of&#xA;the system, not for synchronization control.&#xA;&#xA;&lt;h4>MXBean Mapping&lt;/h4>&#xA;&lt;tt>ThreadInfo&lt;/tt> is mapped to a {@link CompositeData CompositeData}&#xA;with attributes as specified in&#xA;the {@link #from from} method.&#xA;&#xA;@see ThreadMXBean#isThreadContentionMonitoringSupported&#xA;&#xA;@author  Mandy Chung&#xA;@version 1.16, 04/18/04&#xA;@since   1.5&#xA;" annotatedElement="e25c1554-a1d8-4aa2-ad65-a2f4750a7175"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1c40e23d-0ec3-4145-a600-84144c031746" name="ManagementFactory">
              <ownedComment xmi:id="904470b5-ee75-4f26-b16e-0731906c6b23" body="The &lt;tt>ManagementFactory&lt;/tt> class is a factory class for getting&#xA;managed beans for the Java platform.&#xA;This class consists of static methods each of which returns&#xA;one or more &lt;a href=&quot;#MXBean&quot;>platform MXBean(s)&lt;/a> representing&#xA;the management interface of a component of the Java virtual&#xA;machine.&#xA;&#xA;&lt;p>&#xA;An application can access a platform MXBean in the following ways:&#xA;&lt;ul>&#xA;&lt;li>&lt;i>Direct access to an MXBean interface&lt;/i>&#xA;&lt;ol type=&quot;a&quot;>&#xA;&lt;li>Get the MXBean instance through the static factory method&#xA;and access the MXBean locally of the running&#xA;virtual machine.&#xA;&lt;/li>&#xA;&lt;li>Construct an MXBean proxy instance that forwards the&#xA;method calls to a given {@link MBeanServer MBeanServer} by calling&#xA;{@link #newPlatformMXBeanProxy newPlatfromMXBeanProxy}.&#xA;A proxy is typically constructed to remotely access&#xA;an MXBean of another running virtual machine.&#xA;&lt;/li>&#xA;&lt;/ol>&lt;/li>&#xA;&lt;li>&lt;i>Indirect access to an MXBean interface via MBeanServer&lt;/i>&#xA;&lt;ol type=&quot;a&quot;>&#xA;&lt;li>Go through the {@link #getPlatformMBeanServer&#xA;platform MBeanServer} to access MXBeans locally or&#xA;a specific &lt;tt>MBeanServerConnection&lt;/tt> to access&#xA;MXBeans remotely.&#xA;The attributes and operations of an MXBean use only&#xA;&lt;em>JMX open types&lt;/em> which include basic&#xA;data types, {@link CompositeData CompositeData},&#xA;and {@link TabularData TabularData} defined in&#xA;{@link javax.management.openmbean.OpenType OpenType}.&#xA;The mapping is specified below.&#xA;&lt;/li>&#xA;&lt;/ol>&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;&lt;h4>&lt;a name=&quot;MXBean&quot;>Platform MXBeans&lt;/a>&lt;/h4>&#xA;A platform MXBean is a &lt;i>managed bean&lt;/i> that conforms to&#xA;the JMX Instrumentation Specification and only uses&#xA;a set of basic data types described below.&#xA;A JMX management application and the platform &lt;tt>MBeanServer&lt;/tt>&#xA;can interoperate without requiring classes for MXBean specific&#xA;data types.&#xA;The data types being transmitted between the JMX connector&#xA;server and the connector client are&#xA;{@link javax.management.openmbean.OpenType open types}&#xA;and this allows interoperation across versions.&#xA;&lt;p>&#xA;The platform MXBean interfaces use only the following data types:&#xA;&lt;ul>&#xA;&lt;li>Primitive types such as &lt;tt>int&lt;/tt>, &lt;tt>long&lt;/tt>,&#xA;&lt;tt>boolean&lt;/tt>, etc&lt;/li>&#xA;&lt;li>Wrapper classes for primitive types such as&#xA;{@link java.lang.Integer Integer}, {@link java.lang.Long Long},&#xA;{@link java.lang.Boolean Boolean}, etc and&#xA;{@link java.lang.String String}&lt;/li>&#xA;&lt;li>{@link java.lang.Enum Enum} classes&lt;/li>&#xA;&lt;li>Classes that define only getter methods and define a static&#xA;&lt;tt>from&lt;/tt> method with a {@link CompositeData CompositeData}&#xA;argument to convert from an input &lt;tt>CompositeData&lt;/tt> to&#xA;an instance of that class&#xA;&lt;/li>&#xA;&lt;li>{@link java.util.List List&lt;E>}&#xA;where &lt;tt>E&lt;/tt> is a primitive type, a wrapper class,&#xA;an enum class, or a class supporting conversion from a&#xA;&lt;tt>CompositeData&lt;/tt> to its class&#xA;&lt;/li>&#xA;&lt;li>{@link java.util.Map Map&lt;K,V>}&#xA;where &lt;tt>K&lt;/tt> and &lt;tt>V&lt;/tt> are&#xA;a primitive type, a wrapper class,&#xA;an enum class, or a class supporting conversion from a&#xA;&lt;tt>CompositeData&lt;/tt> to its class&#xA;&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;&lt;p>&#xA;When an attribute or operation of a platform MXBean&#xA;is accessed via an &lt;tt>MBeanServer&lt;/tt>, the data types are mapped&#xA;as follows:&#xA;&lt;ul>&#xA;&lt;li>A primitive type or a wrapper class is mapped&#xA;to the same type.&#xA;&lt;/li>&#xA;&lt;li>An {@link Enum} is mapped to&#xA;&lt;tt>String&lt;/tt> whose value is the name of the enum constant.&#xA;&lt;li>A class that defines only getter methods and a static&#xA;&lt;tt>from&lt;/tt> method with a {@link CompositeData CompositeData}&#xA;argument is mapped to&#xA;{@link javax.management.openmbean.CompositeData CompositeData}.&#xA;&lt;/li>&#xA;&lt;li>&lt;tt>Map&lt;K,V>&lt;/tt> is mapped to&#xA;{@link TabularData TabularData}&#xA;whose row type is a {@link CompositeType CompositeType} with&#xA;two items whose names are &lt;i>&quot;key&quot;&lt;/i> and &lt;i>&quot;value&quot;&lt;/i>&#xA;and the item types are&#xA;the corresponding mapped type of &lt;tt>K&lt;/tt> and &lt;tt>V&lt;/tt>&#xA;respectively and the &lt;i>&quot;key&quot;&lt;/i> is the index.&#xA;&lt;/li>&#xA;&lt;li>&lt;tt>List&lt;E>&lt;/tt> is mapped to an array with the mapped&#xA;type of &lt;tt>E&lt;/tt> as the element type.&#xA;&lt;/li>&#xA;&lt;li>An array of element type &lt;tt>E&lt;/tt> is mapped to&#xA;an array of the same dimenions with the mapped type of &lt;tt>E&lt;/tt>&#xA;as the element type.&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;The {@link javax.management.MBeanInfo MBeanInfo}&#xA;for a platform MXBean&#xA;describes the data types of the attributes and operations&#xA;as primitive or open types mapped as specified above.&#xA;&#xA;&lt;p>&#xA;For example, the {@link MemoryMXBean}&#xA;interface has the following &lt;i>getter&lt;/i> and &lt;i>setter&lt;/i> methods:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;public MemoryUsage getHeapMemoryUsage();&#xA;public boolean isVerbose();&#xA;public void setVerbose(boolean value);&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;These attributes in the &lt;tt>MBeanInfo&lt;/tt>&#xA;of the &lt;tt>MemoryMXBean&lt;/tt> have the following names and types:&#xA;&#xA;&lt;blockquote>&#xA;&lt;table border>&#xA;&lt;tr>&#xA;&lt;th>Attribute Name&lt;/th>&#xA;&lt;th>Type&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&lt;tt>HeapMemoryUsage&lt;/tt>&lt;/td>&#xA;&lt;td>{@link MemoryUsage#from&#xA;CompositeData representing MemoryUsage}&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&lt;tt>Verbose&lt;/tt>&lt;/td>&#xA;&lt;td>&lt;tt>boolean&lt;/tt>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;&lt;b>Implementation Note:&lt;/b>&lt;p>&#xA;The mapping specified above could be done in the implementation&#xA;of each platform MXBean.  One good implementation choice is to&#xA;implement a MXBean as a {@link javax.management.DynamicMBean dynamic&#xA;MBean}.&#xA;&#xA;&#xA;&lt;h4>&lt;a name=&quot;MXBeanNames&quot;>MXBean Names&lt;/a>&lt;/h4>&#xA;Each platform MXBean for a Java virtual machine has a unique&#xA;{@link javax.management.ObjectName ObjectName} for&#xA;registration in the platform &lt;tt>MBeanServer&lt;/tt>.&#xA;A Java virtual machine has a single instance of the following management&#xA;interfaces:&#xA;&#xA;&lt;blockquote>&#xA;&lt;table border>&#xA;&lt;tr>&#xA;&lt;th>Management Interface&lt;/th>&#xA;&lt;th>ObjectName&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td> {@link ClassLoadingMXBean} &lt;/td>&#xA;&lt;td> {@link #CLASS_LOADING_MXBEAN_NAME&#xA;&lt;tt>java.lang:type=ClassLoading&lt;/tt>}&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td> {@link MemoryMXBean} &lt;/td>&#xA;&lt;td> {@link #MEMORY_MXBEAN_NAME&#xA;&lt;tt>java.lang:type=Memory&lt;/tt>}&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td> {@link ThreadMXBean} &lt;/td>&#xA;&lt;td> {@link #THREAD_MXBEAN_NAME&#xA;&lt;tt>java.lang:type=Threading&lt;/tt>}&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td> {@link RuntimeMXBean} &lt;/td>&#xA;&lt;td> {@link #RUNTIME_MXBEAN_NAME&#xA;&lt;tt>java.lang:type=Runtime&lt;/tt>}&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td> {@link OperatingSystemMXBean} &lt;/td>&#xA;&lt;td> {@link #OPERATING_SYSTEM_MXBEAN_NAME&#xA;&lt;tt>java.lang:type=OperatingSystem&lt;/tt>}&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;A Java virtual machine has zero or a single instance of&#xA;the following management interfaces.&#xA;&#xA;&lt;blockquote>&#xA;&lt;table border>&#xA;&lt;tr>&#xA;&lt;th>Management Interface&lt;/th>&#xA;&lt;th>ObjectName&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td> {@link CompilationMXBean} &lt;/td>&#xA;&lt;td> {@link #COMPILATION_MXBEAN_NAME&#xA;&lt;tt>java.lang:type=Compilation&lt;/tt>}&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;A Java virtual machine may have one or more instances of the following&#xA;management interfaces.&#xA;&lt;blockquote>&#xA;&lt;table border>&#xA;&lt;tr>&#xA;&lt;th>Management Interface&lt;/th>&#xA;&lt;th>ObjectName&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td> {@link GarbageCollectorMXBean} &lt;/td>&#xA;&lt;td> {@link #GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE&#xA;&lt;tt>java.lang:type=GarbageCollector&lt;/tt>}&lt;tt>,name=&lt;/tt>&lt;i>collector's name&lt;/i>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td> {@link MemoryManagerMXBean} &lt;/td>&#xA;&lt;td> {@link #MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE&#xA;&lt;tt>java.lang:type=MemoryManager&lt;/tt>}&lt;tt>,name=&lt;/tt>&lt;i>manager's name&lt;/i>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td> {@link MemoryPoolMXBean} &lt;/td>&#xA;&lt;td> {@link #MEMORY_POOL_MXBEAN_DOMAIN_TYPE&#xA;&lt;tt>java.lang:type=MemoryPool&lt;/tt>}&lt;tt>,name=&lt;/tt>&lt;i>pool's name&lt;/i>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;/blockquote>&#xA;&#xA;@see &lt;a href=&quot;../../../javax/management/package-summary.html&quot;>&#xA;JMX Specification.&lt;/a>&#xA;@see &lt;a href=&quot;package-summary.html#examples&quot;>&#xA;Ways to Access Management Metrics&lt;/a>&#xA;@see java.util.logging.LoggingMXBean&#xA;&#xA;@author  Mandy Chung&#xA;@version 1.19, 05/17/04&#xA;@since   1.5&#xA;" annotatedElement="1c40e23d-0ec3-4145-a600-84144c031746"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="504a245d-05e6-4ce2-89bb-d302ab002dfb" name="MemoryMXBean" isAbstract="true">
              <ownedComment xmi:id="9aec3eef-f58b-4f46-8d19-1c1ec2812238" body="The management interface for the memory system of&#xA;the Java virtual machine.&#xA;&#xA;&lt;p> A Java virtual machine has a single instance of the implementation&#xA;class of this interface.  This instance implementing this interface is&#xA;an &lt;a href=&quot;ManagementFactory.html#MXBean&quot;>MXBean&lt;/a>&#xA;that can be obtained by calling&#xA;the {@link ManagementFactory#getMemoryMXBean} method or&#xA;from the {@link ManagementFactory#getPlatformMBeanServer&#xA;platform &lt;tt>MBeanServer&lt;/tt>} method.&#xA;&#xA;&lt;p>The &lt;tt>ObjectName&lt;/tt> for uniquely identifying the MXBean for&#xA;the memory system within an MBeanServer is:&#xA;&lt;blockquote>&#xA;{@link ManagementFactory#MEMORY_MXBEAN_NAME&#xA;&lt;tt>java.lang:type=Memory&lt;/tt>}&#xA;&lt;/blockquote>&#xA;&#xA;&lt;h4> Memory &lt;/h4>&#xA;The memory system of the Java virtual machine manages&#xA;the following kinds of memory:&#xA;&#xA;&lt;h4> 1. Heap &lt;/h4>&#xA;The Java virtual machine has a &lt;i>heap&lt;/i> that is the runtime&#xA;data area from which memory for all class instances and arrays&#xA;are allocated.  It is created at the Java virtual machine start-up.&#xA;Heap memory for objects is reclaimed by an automatic memory management&#xA;system which is known as a &lt;i>garbage collector&lt;/i>.&#xA;&#xA;&lt;p>The heap may be of a fixed size or may be expanded and shrunk.&#xA;The memory for the heap does not need to be contiguous.&#xA;&#xA;&lt;h4> 2. Non-Heap Memory&lt;/h4>&#xA;The Java virtual machine manages memory other than the heap&#xA;(referred as &lt;i>non-heap memory&lt;/i>).&#xA;&#xA;&lt;p> The Java virtual machine has a &lt;i>method area&lt;/i> that is shared&#xA;among all threads.&#xA;The method area belongs to non-heap memory.  It stores per-class structures&#xA;such as a runtime constant pool, field and method data, and the code for&#xA;methods and constructors.  It is created at the Java virtual machine&#xA;start-up.&#xA;&#xA;&lt;p> The method area is logically part of the heap but a Java virtual&#xA;machine implementation may choose not to either garbage collect&#xA;or compact it.  Similar to the heap, the method area may be of a&#xA;fixed size or may be expanded and shrunk.  The memory for the&#xA;method area does not need to be contiguous.&#xA;&#xA;&lt;p>In addition to the method area, a Java virtual machine&#xA;implementation may require memory for internal processing or&#xA;optimization which also belongs to non-heap memory.&#xA;For example, the JIT compiler requires memory for storing the native&#xA;machine code translated from the Java virtual machine code for&#xA;high performance.&#xA;&#xA;&lt;h4>Memory Pools and Memory Managers&lt;/h4>&#xA;{@link MemoryPoolMXBean Memory pools} and&#xA;{@link MemoryManagerMXBean memory managers} are the abstract entities&#xA;that monitor and manage the memory system&#xA;of the Java virtual machine.&#xA;&#xA;&lt;p>A memory pool represents a memory area that the Java virtual machine&#xA;manages.  The Java virtual machine has at least one memory pool&#xA;and it may create or remove memory pools during execution.&#xA;A memory pool can belong to either the heap or the non-heap memory.&#xA;&#xA;&lt;p>A memory manager is responsible for managing one or more memory pools.&#xA;The garbage collector is one type of memory manager responsible&#xA;for reclaiming memory occupied by unreachable objects.  A Java virtual&#xA;machine may have one or more memory managers.   It may&#xA;add or remove memory managers during execution.&#xA;A memory pool can be managed by more than one memory manager.&#xA;&#xA;&lt;h4>Memory Usage Monitoring&lt;/h4>&#xA;&#xA;Memory usage is a very important monitoring attribute for the memory system.&#xA;The memory usage, for example, could indicate:&#xA;&lt;ul>&#xA;&lt;li>the memory usage of an application,&lt;/li>&#xA;&lt;li>the workload being imposed on the automatic memory management system,&lt;/li>&#xA;&lt;li>potential memory leakage.&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;&lt;p>&#xA;The memory usage can be monitored in three ways:&#xA;&lt;ul>&#xA;&lt;li>Polling&lt;/li>&#xA;&lt;li>Usage Threshold Notification&lt;/li>&#xA;&lt;li>Collection Usage Threshold Notification&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;Details are specified in the {@link MemoryPoolMXBean} interface.&#xA;&#xA;&lt;p>The memory usage monitoring mechanism is intended for load-balancing&#xA;or workload distribution use.  For example, an application would stop&#xA;receiving any new workload when its memory usage exceeds a&#xA;certain threshold. It is not intended for an application to detect&#xA;and recover from a low memory condition.&#xA;&#xA;&lt;h4>Notifications&lt;/h4>&#xA;&#xA;&lt;p>This &lt;tt>MemoryMXBean&lt;/tt> is a&#xA;{@link javax.management.NotificationEmitter NotificationEmitter}&#xA;that emits two types of memory {@link javax.management.Notification&#xA;notifications} if any one of the memory pools&#xA;supports a &lt;a href=&quot;MemoryPoolMXBean#UsageThreshold&quot;>usage threshold&lt;/a>&#xA;or a &lt;a href=&quot;MemoryPoolMXBean#CollectionThreshold&quot;>collection usage&#xA;threshold&lt;/a> which can be determined by calling the&#xA;{@link MemoryPoolMXBean#isUsageThresholdSupported} and&#xA;{@link MemoryPoolMXBean#isCollectionUsageThresholdSupported} methods.&#xA;&lt;ul>&#xA;&lt;li>{@link MemoryNotificationInfo#MEMORY_THRESHOLD_EXCEEDED&#xA;usage threshold exceeded notification} - for notifying that&#xA;the memory usage of a memory pool is increased and has reached&#xA;or exceeded its&#xA;&lt;a href=&quot;MemoryPoolMXBean#UsageThreshold&quot;> usage threshold&lt;/a> value.&#xA;&lt;/li>&#xA;&lt;li>{@link MemoryNotificationInfo#MEMORY_COLLECTION_THRESHOLD_EXCEEDED&#xA;collection usage threshold exceeded notification} - for notifying that&#xA;the memory usage of a memory pool is greater than or equal to its&#xA;&lt;a href=&quot;MemoryPoolMXBean#CollectionThreshold&quot;>&#xA;collection usage threshold&lt;/a> after the Java virtual machine&#xA;has expended effort in recycling unused objects in that&#xA;memory pool.&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;&lt;p>&#xA;The notification emitted is a {@link javax.management.Notification}&#xA;instance whose {@link javax.management.Notification#setUserData&#xA;user data} is set to a {@link CompositeData CompositeData}&#xA;that represents a {@link MemoryNotificationInfo} object&#xA;containing information about the memory pool when the notification&#xA;was constructed. The &lt;tt>CompositeData&lt;/tt> contains the attributes&#xA;as described in {@link MemoryNotificationInfo#from&#xA;MemoryNotificationInfo}.&#xA;&#xA;&lt;hr>&#xA;&lt;h4>NotificationEmitter&lt;/h4>&#xA;The &lt;tt>MemoryMXBean&lt;/tt> object returned by&#xA;{@link ManagementFactory#getMemoryMXBean} implements&#xA;the {@link javax.management.NotificationEmitter NotificationEmitter}&#xA;interface that allows a listener to be registered within the&#xA;&lt;tt>MemoryMXBean&lt;/tt> as a notification listener.&#xA;&#xA;Below is an example code that registers a &lt;tt>MyListener&lt;/tt> to handle&#xA;notification emitted by the &lt;tt>MemoryMXBean&lt;/tt>.&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;class MyListener implements javax.management.NotificationListener {&#xA;public void handleNotification(Notification notif, Object handback) {&#xA;handle notification&#xA;....&#xA;}&#xA;}&#xA;&#xA;MemoryMXBean mbean = ManagementFactory.getMemoryMXBean();&#xA;NotificationEmitter emitter = (NotificationEmitter) mbean;&#xA;MyListener listener = new MyListener();&#xA;emitter.addNotificationListener(listener, null, null);&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;@see &lt;a href=&quot;../../../javax/management/package-summary.html&quot;>&#xA;JMX Specification.&lt;/a>&#xA;@see &lt;a href=&quot;package-summary.html#examples&quot;>&#xA;Ways to Access MXBeans&lt;/a>&#xA;&#xA;@author  Mandy Chung&#xA;@version 1.14, 04/20/04&#xA;@since   1.5&#xA;" annotatedElement="504a245d-05e6-4ce2-89bb-d302ab002dfb"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="fc7d3a0c-2ed7-4811-8777-e21c67f36944" name="MemoryType">
              <ownedComment xmi:id="ac88b21e-4bf6-4621-9751-8b2473c21504" body="Types of {@link MemoryPoolMXBean memory pools}.&#xA;&#xA;@author  Mandy Chung&#xA;@version 1.7, 04/18/04&#xA;@since   1.5&#xA;" annotatedElement="fc7d3a0c-2ed7-4811-8777-e21c67f36944"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9365c764-513c-46ef-b5d0-f4eef78f3da4" name="MemoryNotificationInfo">
              <ownedComment xmi:id="b06d9cc3-c734-4773-95d4-dc1087121a85" body="The information about a memory notification.&#xA;&#xA;&lt;p>&#xA;A memory notification is emitted by {@link MemoryMXBean}&#xA;when the Java virtual machine detects that the memory usage&#xA;of a memory pool is exceeding a threshold value.&#xA;The notification emitted will contain the memory notification&#xA;information about the detected condition:&#xA;&lt;ul>&#xA;&lt;li>The name of the memory pool.&lt;/li>&#xA;&lt;li>The memory usage of the memory pool when the notification&#xA;was constructed.&lt;/li>&#xA;&lt;li>The number of times that the memory usage has crossed&#xA;a threshold when the notification was constructed.&#xA;For usage threshold notifications, this count will be the&#xA;{@link MemoryPoolMXBean#getUsageThresholdCount usage threshold&#xA;count}.  For collection threshold notifications,&#xA;this count will be the&#xA;{@link MemoryPoolMXBean#getCollectionUsageThresholdCount&#xA;collection usage threshold count}.&#xA;&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;&lt;p>&#xA;A {@link CompositeData CompositeData} representing&#xA;the &lt;tt>MemoryNotificationInfo&lt;/tt> object&#xA;is stored in the&#xA;{@link javax.management.Notification#setUserData user data}&#xA;of a {@link javax.management.Notification notification}.&#xA;The {@link #from from} method is provided to convert from&#xA;a &lt;tt>CompositeData&lt;/tt> to a &lt;tt>MemoryNotificationInfo&lt;/tt>&#xA;object. For example:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;Notification notif;&#xA;&#xA;receive the notification emitted by MemoryMXBean and set to notif&#xA;...&#xA;&#xA;String notifType = notif.getType();&#xA;if (notifType.equals(MemoryNotificationInfo.MEMORY_THRESHOLD_EXCEEDED) ||&#xA;notifType.equals(MemoryNotificationInfo.MEMORY_COLLECTION_THRESHOLD_EXCEEDED)) {&#xA;retrieve the memory notification information&#xA;CompositeData cd = (CompositeData) notif.getUserData();&#xA;MemoryNotificationInfo info = MemoryNotificationInfo.from(cd);&#xA;....&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;The types of notifications emitted by &lt;tt>MemoryMXBean&lt;/tt> are:&#xA;&lt;ul>&#xA;&lt;li>A {@link #MEMORY_THRESHOLD_EXCEEDED&#xA;usage threshold exceeded notification}.&#xA;&lt;br>This notification will be emitted when&#xA;the memory usage of a memory pool is increased and has reached&#xA;or exceeded its&#xA;&lt;a href=&quot;MemoryPoolMXBean#UsageThreshold&quot;> usage threshold&lt;/a> value.&#xA;Subsequent crossing of the usage threshold value does not cause&#xA;further notification until the memory usage has returned&#xA;to become less than the usage threshold value.&#xA;&lt;p>&lt;/li>&#xA;&lt;li>A {@link #MEMORY_COLLECTION_THRESHOLD_EXCEEDED&#xA;collection usage threshold exceeded notification}.&#xA;&lt;br>This notification will be emitted when&#xA;the memory usage of a memory pool is greater than or equal to its&#xA;&lt;a href=&quot;MemoryPoolMXBean#CollectionThreshold&quot;>&#xA;collection usage threshold&lt;/a> after the Java virtual machine&#xA;has expended effort in recycling unused objects in that&#xA;memory pool.&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;@author  Mandy Chung&#xA;@version 1.6, 04/18/04&#xA;@since   1.5&#xA;&#xA;" annotatedElement="9365c764-513c-46ef-b5d0-f4eef78f3da4"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="7cd0f70d-e64c-4513-8e51-a98afc315143" name="GarbageCollectorMXBean" isAbstract="true">
              <ownedComment xmi:id="09568faf-3d03-421d-a3d6-89f3ecd3e4bf" body="The management interface for the garbage collection of&#xA;the Java virtual machine.  Garbage collection is the process&#xA;that the Java virtual machine uses to find and reclaim unreachable&#xA;objects to free up memory space.  A garbage collector is one type of&#xA;{@link MemoryManagerMXBean memory manager}.&#xA;&#xA;&lt;p> A Java virtual machine may have one or more instances of&#xA;the implementation class of this interface.&#xA;An instance implementing this interface is&#xA;an &lt;a href=&quot;ManagementFactory.html#MXBean&quot;>MXBean&lt;/a>&#xA;that can be obtained by calling&#xA;the {@link ManagementFactory#getGarbageCollectorMXBeans} method or&#xA;from the {@link ManagementFactory#getPlatformMBeanServer&#xA;platform &lt;tt>MBeanServer&lt;/tt>} method.&#xA;&#xA;&lt;p>The &lt;tt>ObjectName&lt;/tt> for uniquely identifying the MXBean for&#xA;a garbage collector within an MBeanServer is:&#xA;&lt;blockquote>&#xA;{@link ManagementFactory#GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE&#xA;&lt;tt>java.lang:type=GarbageCollector&lt;/tt>}&lt;tt>,name=&lt;/tt>&lt;i>collector's name&lt;/i>&#xA;&lt;/blockquote>&#xA;&#xA;A platform usually includes additional platform-dependent information&#xA;specific to a garbage collection algorithm for monitoring.&#xA;&#xA;@see MemoryMXBean&#xA;&#xA;@see &lt;a href=&quot;../../../javax/management/package-summary.html&quot;>&#xA;JMX Specification.&lt;/a>&#xA;@see &lt;a href=&quot;package-summary.html#examples&quot;>&#xA;Ways to Access MXBeans&lt;/a>&#xA;&#xA;@author  Mandy Chung&#xA;@version 1.9, 04/20/04&#xA;@since   1.5&#xA;" annotatedElement="7cd0f70d-e64c-4513-8e51-a98afc315143"/>
              <generalization xmi:id="f99c0039-1339-4a1b-9376-95c82ca63e10" isSubstitutable="true" general="db8d0a0c-fe6f-49e2-853c-cbba7635970d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="77986e1b-a2fa-447e-b2c9-19678899cea9" name="ClassLoadingMXBean" isAbstract="true">
              <ownedComment xmi:id="5cd7daa4-b3b9-4bda-bf76-af0fa14a008e" body="The management interface for the class loading system of&#xA;the Java virtual machine.&#xA;&#xA;&lt;p> A Java virtual machine has a single instance of the implementation&#xA;class of this interface.  This instance implementing this interface is&#xA;an &lt;a href=&quot;ManagementFactory.html#MXBean&quot;>MXBean&lt;/a>&#xA;that can be obtained by calling&#xA;the {@link ManagementFactory#getClassLoadingMXBean} method or&#xA;from the {@link ManagementFactory#getPlatformMBeanServer&#xA;platform &lt;tt>MBeanServer&lt;/tt>} method.&#xA;&#xA;&lt;p>The &lt;tt>ObjectName&lt;/tt> for uniquely identifying the MXBean for&#xA;the class loading system within an &lt;tt>MBeanServer&lt;/tt> is:&#xA;&lt;blockquote>&#xA;{@link ManagementFactory#CLASS_LOADING_MXBEAN_NAME&#xA;&lt;tt>java.lang:type=ClassLoading&lt;/tt>}&#xA;&lt;/blockquote>&#xA;&#xA;@see &lt;a href=&quot;../../../javax/management/package-summary.html&quot;>&#xA;JMX Specification.&lt;/a>&#xA;@see &lt;a href=&quot;package-summary.html#examples&quot;>&#xA;Ways to Access MXBeans&lt;/a>&#xA;&#xA;@author  Mandy Chung&#xA;@version 1.11, 04/20/04&#xA;@since   1.5&#xA;" annotatedElement="77986e1b-a2fa-447e-b2c9-19678899cea9"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="9cbf738b-288c-487c-ac29-a004232ce46a" name="RuntimeMXBean" isAbstract="true">
              <ownedComment xmi:id="53443cf3-f56a-4c00-b2b1-5d60fef8a317" body="The management interface for the runtime system of&#xA;the Java virtual machine.&#xA;&#xA;&lt;p> A Java virtual machine has a single instance of the implementation&#xA;class of this interface.  This instance implementing this interface is&#xA;an &lt;a href=&quot;ManagementFactory.html#MXBean&quot;>MXBean&lt;/a>&#xA;that can be obtained by calling&#xA;the {@link ManagementFactory#getRuntimeMXBean} method or&#xA;from the {@link ManagementFactory#getPlatformMBeanServer&#xA;platform &lt;tt>MBeanServer&lt;/tt>} method.&#xA;&#xA;&lt;p>The &lt;tt>ObjectName&lt;/tt> for uniquely identifying the MXBean for&#xA;the runtime system within an MBeanServer is:&#xA;&lt;blockquote>&#xA;{@link ManagementFactory#RUNTIME_MXBEAN_NAME&#xA;&lt;tt>java.lang:type=Runtime&lt;/tt>}&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p> This interface defines several convenient methods for accessing&#xA;system properties about the Java virtual machine.&#xA;&#xA;@see &lt;a href=&quot;../../../javax/management/package-summary.html&quot;>&#xA;JMX Specification.&lt;/a>&#xA;@see &lt;a href=&quot;package-summary.html#examples&quot;>&#xA;Ways to Access MXBeans&lt;/a>&#xA;&#xA;@author  Mandy Chung&#xA;@version 1.13, 04/20/04&#xA;@since   1.5&#xA;" annotatedElement="9cbf738b-288c-487c-ac29-a004232ce46a"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="cc509c4d-0242-4749-adf9-b905a39454ae" name="Byte" clientDependency="2e29dce8-d037-45d8-8730-b7fc8a0f34ed" isLeaf="true">
            <ownedComment xmi:id="c0fd43e8-9b97-4f1e-9503-bdf9f19e2d3d" body="The &lt;code>Byte&lt;/code> class wraps a value of primitive type&#xA;&lt;code>byte&lt;/code> in an object.  An object of type&#xA;&lt;code>Byte&lt;/code> contains a single field whose type is&#xA;&lt;code>byte&lt;/code>.&#xA;&#xA;&lt;p>&#xA;&#xA;In addition, this class provides several methods for converting a&#xA;&lt;code>byte&lt;/code> to a &lt;code>String&lt;/code> and a &lt;code>String&lt;/code>&#xA;to a &lt;code>byte&lt;/code>, as well as other constants and methods&#xA;useful when dealing with a &lt;code>byte&lt;/code>.&#xA;&#xA;@author  Nakul Saraiya&#xA;@version 1.40, 05/11/04&#xA;@see     java.lang.Number&#xA;@since   JDK1.1&#xA;" annotatedElement="cc509c4d-0242-4749-adf9-b905a39454ae"/>
            <generalization xmi:id="cc91fdee-d197-4dd5-bacc-be1091495665" isSubstitutable="true" general="86595613-8e64-4702-a472-32dc7405cc46"/>
            <interfaceRealization xmi:id="2e29dce8-d037-45d8-8730-b7fc8a0f34ed" name="" supplier="42fa6fd4-a856-40d6-a5d2-0fede5fc0368" client="cc509c4d-0242-4749-adf9-b905a39454ae" contract="42fa6fd4-a856-40d6-a5d2-0fede5fc0368"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="e8a9bdf7-a67c-4785-8d1f-c7de93f25eca" name="ByteCache" visibility="private"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="36dd6d60-01ad-4c68-bd14-5bf7fc3a9cbb" name="Win32Process" visibility="package"/>
          <packagedElement xmi:type="uml:Class" xmi:id="d9873bd2-3a74-4e59-8f22-c1deb5d08955" name="Exception">
            <ownedComment xmi:id="4ca6e185-0620-4884-9e65-3d899d5486fc" body="The class &lt;code>Exception&lt;/code> and its subclasses are a form of&#xA;&lt;code>Throwable&lt;/code> that indicates conditions that a reasonable&#xA;application might want to catch.&#xA;&#xA;@author  Frank Yellin&#xA;@version 1.31, 12/19/03&#xA;@see     java.lang.Error&#xA;@since   JDK1.0&#xA;" annotatedElement="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            <generalization xmi:id="f53545ee-f8b5-40b0-a702-c0359ca9696c" isSubstitutable="true" general="38d42338-ed92-4bd7-9634-e4b50bcbaff6"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7bb6e831-f0b4-495e-9fd1-5b7292b35892" name="CloneNotSupportedException">
            <ownedComment xmi:id="2282f507-0f59-4993-a339-e18118a6e8bf" body="Thrown to indicate that the &lt;code>clone&lt;/code> method in class&#xA;&lt;code>Object&lt;/code> has been called to clone an object, but that&#xA;the object's class does not implement the &lt;code>Cloneable&lt;/code>&#xA;interface.&#xA;&lt;p>&#xA;Applications that override the &lt;code>clone&lt;/code> method can also&#xA;throw this exception to indicate that an object could not or&#xA;should not be cloned.&#xA;&#xA;@author  unascribed&#xA;@version 1.11, 12/19/03&#xA;@see     java.lang.Cloneable&#xA;@see     java.lang.Object#clone()&#xA;@since   JDK1.0&#xA;" annotatedElement="7bb6e831-f0b4-495e-9fd1-5b7292b35892"/>
            <generalization xmi:id="7c2c9439-4b4f-4238-9c2d-5542531e3d8c" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="33da0e83-37e9-4917-a305-8ce304542782" name="CharacterData" visibility="package"/>
          <packagedElement xmi:type="uml:Class" xmi:id="c5043fce-af47-4884-97df-88e4fbd235d4" name="IndexOutOfBoundsException">
            <ownedComment xmi:id="096a7256-8ed4-4202-8310-b1fc925bf349" body="Thrown to indicate that an index of some sort (such as to an array, to a&#xA;string, or to a vector) is out of range.&#xA;&lt;p>&#xA;Applications can subclass this class to indicate similar exceptions.&#xA;&#xA;@author  Frank Yellin&#xA;@version 1.11, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="c5043fce-af47-4884-97df-88e4fbd235d4"/>
            <generalization xmi:id="8934a493-2f0f-4977-b580-04dd55116402" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7d765bba-0ab4-4fde-9175-9aba56479e8f" name="UnsatisfiedLinkError">
            <ownedComment xmi:id="250f4806-cd8e-45c3-8d7f-e41b684e77cf" body="Thrown if the Java Virtual Machine cannot find an appropriate&#xA;native-language definition of a method declared &lt;code>native&lt;/code>.&#xA;&#xA;@author unascribed&#xA;@version 1.21, 12/19/03&#xA;@see     java.lang.Runtime&#xA;@since   JDK1.0&#xA;" annotatedElement="7d765bba-0ab4-4fde-9175-9aba56479e8f"/>
            <generalization xmi:id="dce18164-daa8-4877-bb4b-5b389b27e626" isSubstitutable="true" general="e5822ec6-ac2b-4107-8ac1-afc07f2ea5fa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="41060410-c8b7-4cab-a8d4-ab43f78c3090" name="TypeNotPresentException">
            <ownedComment xmi:id="09293659-df7c-41ee-bfc2-555fbd8539c1" body="Thrown when an application tries to access a type using a string&#xA;representing the type's name, but no definition for the type with&#xA;the specified name can be found.   This exception differs from&#xA;{@link ClassNotFoundException} in that &lt;tt>ClassNotFoundException&lt;/tt> is a&#xA;checked exception, whereas this exception is unchecked.&#xA;&#xA;&lt;p>Note that this exception may be used when undefined type variables&#xA;are accessed as well as when types (e.g., classes, interfaces or&#xA;annotation types) are loaded.&#xA;&#xA;@author  Josh Bloch&#xA;@since 1.5&#xA;" annotatedElement="41060410-c8b7-4cab-a8d4-ab43f78c3090"/>
            <generalization xmi:id="17ccb78a-48d7-4083-a3b0-a4194ff0942d" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e3beda2c-cfa3-47dd-b1c8-5bad616d55a9" name="CharacterDataLatin1" visibility="package">
            <ownedComment xmi:id="3b504e88-2477-47a4-b63d-4dc122abe430" body="The CharacterData class encapsulates the large tables found in&#xA;Java.lang.Character." annotatedElement="e3beda2c-cfa3-47dd-b1c8-5bad616d55a9"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="996a2cfe-092a-4745-b8e6-f00c4da5107f" name="CharacterData01" visibility="package">
            <ownedComment xmi:id="dcd1f8d2-7595-49b6-bc8a-365676008082" body="The CharacterData class encapsulates the large tables once found in&#xA;java.lang.Character.&#xA;" annotatedElement="996a2cfe-092a-4745-b8e6-f00c4da5107f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b2063395-c4f1-48e0-869f-48d7c5b98299" name="StackTraceElement" clientDependency="a1418a02-0ba5-4311-bee7-305d39cf6a40" isLeaf="true">
            <ownedComment xmi:id="5d60f054-9867-43a0-9915-d16bc9c05ad5" body="An element in a stack trace, as returned by {@link&#xA;Throwable#getStackTrace()}.  Each element represents a single stack frame.&#xA;All stack frames except for the one at the top of the stack represent&#xA;a method invocation.  The frame at the top of the stack represents the&#xA;execution point at which the stack trace was generated.  Typically,&#xA;this is the point at which the throwable corresponding to the stack trace&#xA;was created.&#xA;&#xA;@since  1.4&#xA;@author Josh Bloch&#xA;" annotatedElement="b2063395-c4f1-48e0-869f-48d7c5b98299"/>
            <interfaceRealization xmi:id="a1418a02-0ba5-4311-bee7-305d39cf6a40" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="b2063395-c4f1-48e0-869f-48d7c5b98299" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1e5dfa95-d7df-4973-a764-e12fdd6bed29" name="NumberFormatException">
            <ownedComment xmi:id="ada2c663-3d1e-4bc8-844c-5df46ac2e6a1" body="Thrown to indicate that the application has attempted to convert&#xA;a string to one of the numeric types, but that the string does not&#xA;have the appropriate format.&#xA;&#xA;@author  unascribed&#xA;@version 1.20, 12/19/03&#xA;@see     java.lang.Integer#toString()&#xA;@since   JDK1.0&#xA;" annotatedElement="1e5dfa95-d7df-4973-a764-e12fdd6bed29"/>
            <generalization xmi:id="f2da22e5-89ec-4018-889e-f7197513ed4c" isSubstitutable="true" general="015b8627-f5b5-477f-8717-4d7c48152015"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ba37bf7b-236c-466f-9b36-020c21c8fc2e" name="EnumConstantNotPresentException">
            <ownedComment xmi:id="c296f811-0db5-4b43-b941-4f18dfc440d0" body="Thrown when an application tries to access an enum constant by name&#xA;and the enum type contains no constant with the specified name.&#xA;&#xA;@author  Josh Bloch&#xA;@since   1.5&#xA;" annotatedElement="ba37bf7b-236c-466f-9b36-020c21c8fc2e"/>
            <generalization xmi:id="818affd6-e97e-47e2-a9fc-977ec94185f5" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="77d471eb-f9db-41eb-b7a2-1d91514b0458" name="Package" clientDependency="ced627dd-b9e2-4398-98c2-04d68427b700">
            <ownedComment xmi:id="b87805d6-249b-4f81-a61a-76e4c93ae567" body="&lt;code>Package&lt;/code> objects contain version information&#xA;about the implementation and specification of a Java package.&#xA;This versioning information is retrieved and made available&#xA;by the {@link ClassLoader &lt;code>ClassLoader&lt;/code>} instance that&#xA;loaded the class(es).  Typically, it is stored in the manifest that is&#xA;distributed with the classes.&#xA;&#xA;&lt;p>The set of classes that make up the package may implement a&#xA;particular specification and if so the specification title, version number,&#xA;and vendor strings identify that specification.&#xA;An application can ask if the package is&#xA;compatible with a particular version, see the {@link #isCompatibleWith&#xA;&lt;code>isCompatibleWith&lt;/code>} method for details.&#xA;&#xA;&lt;p>Specification version numbers use a syntax that consists of positive&#xA;decimal integers separated by periods &quot;.&quot;, for example &quot;2.0&quot; or&#xA;&quot;1.2.3.4.5.6.7&quot;.  This allows an extensible number to be used to represent&#xA;major, minor, micro, etc. versions.  The version specification is described&#xA;by the following formal grammar:&#xA;&lt;blockquote>&#xA;&lt;dl>&#xA;&lt;dt>&lt;i>SpecificationVersion:&#xA;&lt;dd>Digits RefinedVersion&lt;sub>opt&lt;/sub>&lt;/i>&#xA;&lt;p>&lt;dt>&lt;i>RefinedVersion:&lt;/i>&#xA;&lt;dd>&lt;code>.&lt;/code> &lt;i>Digits&lt;/i>&#xA;&lt;dd>&lt;code>.&lt;/code> &lt;i>Digits RefinedVersion&lt;/i>&#xA;&#xA;&lt;p>&lt;dt>&lt;i>Digits:&#xA;&lt;dd>Digit&#xA;&lt;dd>Digits&lt;/i>&#xA;&#xA;&lt;p>&lt;dt>&lt;i>Digit:&lt;/i>&#xA;&lt;dd>any character for which {@link Character#isDigit} returns &lt;code>true&lt;/code>,&#xA;e.g. 0, 1, 2, ...&#xA;&lt;/dl>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>The implementation title, version, and vendor strings identify an&#xA;implementation and are made available conveniently to enable accurate&#xA;reporting of the packages involved when a problem occurs. The contents&#xA;all three implementation strings are vendor specific. The&#xA;implementation version strings have no specified syntax and should&#xA;only be compared for equality with desired version identifiers.&#xA;&#xA;&lt;p>Within each &lt;code>ClassLoader&lt;/code> instance all classes from the same&#xA;java package have the same Package object.  The static methods allow a package&#xA;to be found by name or the set of all packages known to the current class&#xA;loader to be found.&#xA;&#xA;@see ClassLoader#definePackage&#xA;" annotatedElement="77d471eb-f9db-41eb-b7a2-1d91514b0458"/>
            <interfaceRealization xmi:id="ced627dd-b9e2-4398-98c2-04d68427b700" name="" supplier="4da33703-8c3c-4d01-8eb0-6be845fe5f17" client="77d471eb-f9db-41eb-b7a2-1d91514b0458" contract="4da33703-8c3c-4d01-8eb0-6be845fe5f17"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="33ab311d-a50c-4109-94de-a9fa4c4df806" name="Void" isLeaf="true">
            <ownedComment xmi:id="366d9c89-3982-482a-bd3e-585b68d94434" body="The Void class is an uninstantiable placeholder class to hold a&#xA;reference to the Class object representing the Java keyword&#xA;void.&#xA;&#xA;@author  unascribed&#xA;@version 1.13, 12/19/03&#xA;@since   JDK1.1&#xA;" annotatedElement="33ab311d-a50c-4109-94de-a9fa4c4df806"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="2221a66a-f41d-45b3-9bf0-09796b003ada" name="Cloneable" isAbstract="true">
            <ownedComment xmi:id="631899da-efb6-4bf2-8600-fe66e3d15362" body="A class implements the &lt;code>Cloneable&lt;/code> interface to&#xA;indicate to the {@link java.lang.Object#clone()} method that it&#xA;is legal for that method to make a&#xA;field-for-field copy of instances of that class.&#xA;&lt;p>&#xA;Invoking Object's clone method on an instance that does not implement the&#xA;&lt;code>Cloneable&lt;/code> interface results in the exception&#xA;&lt;code>CloneNotSupportedException&lt;/code> being thrown.&#xA;&lt;p>&#xA;By convention, classes that implement this interface should override&#xA;&lt;tt>Object.clone&lt;/tt> (which is protected) with a public method.&#xA;See {@link java.lang.Object#clone()} for details on overriding this&#xA;method.&#xA;&lt;p>&#xA;Note that this interface does &lt;i>not&lt;/i> contain the &lt;tt>clone&lt;/tt> method.&#xA;Therefore, it is not possible to clone an object merely by virtue of the&#xA;fact that it implements this interface.  Even if the clone method is invoked&#xA;reflectively, there is no guarantee that it will succeed.&#xA;&#xA;@author  unascribed&#xA;@version 1.16, 01/17/04&#xA;@see     java.lang.CloneNotSupportedException&#xA;@see     java.lang.Object#clone()&#xA;@since   JDK1.0&#xA;" annotatedElement="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b3afefb1-9cf9-466c-a799-fc7bd80b1962" name="ProcessEnvironment" visibility="package" isLeaf="true">
            <generalization xmi:id="b82033c5-40cc-4558-9638-3ccf03528c56" isSubstitutable="true" general="9844b98b-cf19-4183-9cc1-ab9d47f92e18"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="47d3b1f9-143f-4404-8473-41f82d2f59d5" name="CheckedEntry" visibility="private" clientDependency="f20f54fd-d4bf-4b0d-a259-b9457fca83f4">
              <interfaceRealization xmi:id="f20f54fd-d4bf-4b0d-a259-b9457fca83f4" name="" supplier="248f580f-fc64-48af-939f-df4f44cd7cfd" client="47d3b1f9-143f-4404-8473-41f82d2f59d5" contract="248f580f-fc64-48af-939f-df4f44cd7cfd"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="4202fd73-beb6-4aa0-9436-5732aada0768" name="CheckedEntrySet" visibility="private">
              <generalization xmi:id="2dfe779e-bdc0-4f12-ba88-cc36e4e1147e" isSubstitutable="true" general="6aa46dbe-7251-4b26-90ad-852964584f94"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="0fd24db5-e90b-4859-a5d3-d224bad42275" name="CheckedValues" visibility="private">
              <generalization xmi:id="538a9524-5603-4e0c-bae2-82c29e1f52cb" isSubstitutable="true" general="cbaa9553-5102-4b04-93f8-3c6f01c44bab"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="4bcfb018-b58f-4da6-9cd8-c4ab697fa2ba" name="CheckedKeySet" visibility="private">
              <generalization xmi:id="cffff340-3f13-416b-8ea9-837961c6563f" isSubstitutable="true" general="77df1efb-625d-4349-9634-718bf2cd7485"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="3f71012e-2b08-4f8f-90f6-092f06e68bc2" name="NameComparator" visibility="private" clientDependency="5e828778-dc9c-4b19-8789-ec8a394c79cf" isLeaf="true">
              <interfaceRealization xmi:id="5e828778-dc9c-4b19-8789-ec8a394c79cf" name="" supplier="18cfed24-cea3-4bff-9072-891060836bef" client="3f71012e-2b08-4f8f-90f6-092f06e68bc2" contract="18cfed24-cea3-4bff-9072-891060836bef"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c799bad4-c5ef-4ac0-a1cb-89056202c8f4" name="EntryComparator" visibility="private" clientDependency="ddbc180b-5ee5-4111-8e39-8301423eaa7c" isLeaf="true">
              <interfaceRealization xmi:id="ddbc180b-5ee5-4111-8e39-8301423eaa7c" name="" supplier="cac5ac53-16ed-4e3b-8f14-5174e728e81f" client="c799bad4-c5ef-4ac0-a1cb-89056202c8f4" contract="cac5ac53-16ed-4e3b-8f14-5174e728e81f"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="208e2498-0927-4984-9ef5-3521a6277592" name="Comparable&lt;Float>">
            <templateBinding xmi:id="0916c1f3-59ff-4b58-a251-83808fc9e391" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="0a435d7b-023b-49a6-b9d3-6c878c9e86ce" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="64b522c8-86c6-440b-a1ac-bfe1965eaf01"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8564352d-0c0a-4453-90df-0731d2b6dcbc" name="AbstractStringBuilder" visibility="package" clientDependency="50788d53-f00c-4c0d-9f6a-56fffa802648 cb58ecf0-2e54-4aa4-80d4-c50540433ea8" isAbstract="true">
            <ownedComment xmi:id="2f9594f0-c9cb-4d5d-9f60-34c6a7d6c9d2" body="A mutable sequence of characters.&#xA;&lt;p>&#xA;Implements a modifiable string. At any point in time it contains some&#xA;particular sequence of characters, but the length and content of the&#xA;sequence can be changed through certain method calls.&#xA;&#xA;@author&#x9;Michael McCloskey&#xA;@version &#x9;1.12, 07/16/04&#xA;@since&#x9;1.5&#xA;" annotatedElement="8564352d-0c0a-4453-90df-0731d2b6dcbc"/>
            <interfaceRealization xmi:id="cb58ecf0-2e54-4aa4-80d4-c50540433ea8" name="" supplier="e1b0e7ce-3e7f-4c85-be61-5b3588027acb" client="8564352d-0c0a-4453-90df-0731d2b6dcbc" contract="e1b0e7ce-3e7f-4c85-be61-5b3588027acb"/>
            <interfaceRealization xmi:id="50788d53-f00c-4c0d-9f6a-56fffa802648" name="" supplier="add26864-681f-4efa-930b-32e7f66a5186" client="8564352d-0c0a-4453-90df-0731d2b6dcbc" contract="add26864-681f-4efa-930b-32e7f66a5186"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ec111dac-de87-4dcd-ab16-acd221738607" name="InheritableThreadLocal">
            <ownedComment xmi:id="62676634-917e-4523-a8f1-6037bbf6a4b7" body="This class extends &lt;tt>ThreadLocal&lt;/tt> to provide inheritance of values&#xA;from parent thread to child thread: when a child thread is created, the&#xA;child receives initial values for all inheritable thread-local variables&#xA;for which the parent has values.  Normally the child's values will be&#xA;identical to the parent's; however, the child's value can be made an&#xA;arbitrary function of the parent's by overriding the &lt;tt>childValue&lt;/tt>&#xA;method in this class.&#xA;&#xA;&lt;p>Inheritable thread-local variables are used in preference to&#xA;ordinary thread-local variables when the per-thread-attribute being&#xA;maintained in the variable (e.g., User ID, Transaction ID) must be&#xA;automatically transmitted to any child threads that are created.&#xA;&#xA;@author  Josh Bloch and Doug Lea&#xA;@version 1.21, 02/09/04&#xA;@see     ThreadLocal&#xA;@since   1.2&#xA;" annotatedElement="ec111dac-de87-4dcd-ab16-acd221738607"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="fab013a8-a4d9-4987-b79a-d5c7516dab75" name="" parameter="ac958ca1-a692-4ac4-b64f-4e58724f575e">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="ac958ca1-a692-4ac4-b64f-4e58724f575e" parameteredElement="fbc20f91-5e7e-4a56-87cd-64d1fdbc8c2d">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="fbc20f91-5e7e-4a56-87cd-64d1fdbc8c2d" name="T" templateParameter="ac958ca1-a692-4ac4-b64f-4e58724f575e"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="fd9b8df3-6910-474a-9f88-48afb97d1760" isSubstitutable="true" general="e9d668ca-e738-4265-b47f-31710f333912"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b211a073-f694-4812-8526-20d811d1e05d" name="NoClassDefFoundError">
            <ownedComment xmi:id="8fc8bda0-fca1-45ce-8539-868669ed2236" body="Thrown if the Java Virtual Machine or a &lt;code>ClassLoader&lt;/code> instance&#xA;tries to load in the definition of a class (as part of a normal method call&#xA;or as part of creating a new instance using the &lt;code>new&lt;/code> expression)&#xA;and no definition of the class could be found.&#xA;&lt;p>&#xA;The searched-for class definition existed when the currently&#xA;executing class was compiled, but the definition can no longer be&#xA;found.&#xA;&#xA;@author  unascribed&#xA;@version 1.22, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="b211a073-f694-4812-8526-20d811d1e05d"/>
            <generalization xmi:id="5b19668c-e0ce-4ad1-ade2-09067c483a1c" isSubstitutable="true" general="e5822ec6-ac2b-4107-8ac1-afc07f2ea5fa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1bff65b1-e774-4301-9a35-bd7c9f0324a5" name="ThreadGroup" clientDependency="bb07eddd-85bb-4a98-b435-778786dee566">
            <ownedComment xmi:id="f55e8e14-4ca4-430a-9ed1-f827d7cbf26d" body="A thread group represents a set of threads. In addition, a thread&#xA;group can also include other thread groups. The thread groups form&#xA;a tree in which every thread group except the initial thread group&#xA;has a parent.&#xA;&lt;p>&#xA;A thread is allowed to access information about its own thread&#xA;group, but not to access information about its thread group's&#xA;parent thread group or any other thread groups.&#xA;&#xA;@author  unascribed&#xA;@version 1.63, 06/17/04&#xA;@since   JDK1.0&#xA;" annotatedElement="1bff65b1-e774-4301-9a35-bd7c9f0324a5"/>
            <interfaceRealization xmi:id="bb07eddd-85bb-4a98-b435-778786dee566" name="" supplier="c9105393-716c-475a-8109-408dd222b7e6" client="1bff65b1-e774-4301-9a35-bd7c9f0324a5" contract="c9105393-716c-475a-8109-408dd222b7e6"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="344e3614-33d9-446d-add6-7b91548a65e8" name="NullPointerException">
            <ownedComment xmi:id="e8b9f4f1-18e9-4a25-b661-f81d1dddf973" body="Thrown when an application attempts to use &lt;code>null&lt;/code> in a&#xA;case where an object is required. These include:&#xA;&lt;ul>&#xA;&lt;li>Calling the instance method of a &lt;code>null&lt;/code> object.&#xA;&lt;li>Accessing or modifying the field of a &lt;code>null&lt;/code> object.&#xA;&lt;li>Taking the length of &lt;code>null&lt;/code> as if it were an array.&#xA;&lt;li>Accessing or modifying the slots of &lt;code>null&lt;/code> as if it&#xA;were an array.&#xA;&lt;li>Throwing &lt;code>null&lt;/code> as if it were a &lt;code>Throwable&lt;/code>&#xA;value.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;Applications should throw instances of this class to indicate&#xA;other illegal uses of the &lt;code>null&lt;/code> object.&#xA;&#xA;@author  unascribed&#xA;@version 1.19, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="344e3614-33d9-446d-add6-7b91548a65e8"/>
            <generalization xmi:id="4dcb733b-75cc-417a-a5e2-d59900ee2967" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f84657cb-3f68-473e-a4be-858306aab044" name="UnsupportedOperationException">
            <ownedComment xmi:id="c32d8e39-157e-4d77-9d1d-5f9280fb0944" body="Thrown to indicate that the requested operation is not supported.&lt;p>&#xA;&#xA;This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.19, 12/19/03&#xA;@since   1.2&#xA;" annotatedElement="f84657cb-3f68-473e-a4be-858306aab044"/>
            <generalization xmi:id="07740051-c9c7-4bc0-a26b-d3c464165a03" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="28d44edd-8a05-455a-b8b4-4de891a7c4ea" name="Shutdown" visibility="package">
            <ownedComment xmi:id="c0e22aa3-d132-4eb0-b599-39227a850cf7" body="Package-private utility class containing data structures and logic&#xA;governing the virtual-machine shutdown sequence.&#xA;&#xA;@author   Mark Reinhold&#xA;@version  1.11, 03/12/19&#xA;@since    1.3&#xA;" annotatedElement="28d44edd-8a05-455a-b8b4-4de891a7c4ea"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a023393e-4c1f-4a57-afe7-c440f6132a37" name="WrappedHook" visibility="private"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="5b237956-042c-4f8a-8283-0cbdc2331c19" name="Lock" visibility="private"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="eb1a169c-516d-4912-805a-364f6b51f48a" name="VerifyError">
            <ownedComment xmi:id="b2b79170-e6c1-4d32-a5f9-edf03bcb29b2" body="Thrown when the &quot;verifier&quot; detects that a class file,&#xA;though well formed, contains some sort of internal inconsistency&#xA;or security problem.&#xA;&#xA;@author  unascribed&#xA;@version 1.13, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="eb1a169c-516d-4912-805a-364f6b51f48a"/>
            <generalization xmi:id="8687dda4-b2bc-48d4-9ca3-2aa799bc3a5f" isSubstitutable="true" general="e5822ec6-ac2b-4107-8ac1-afc07f2ea5fa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="73ed3736-eaaf-4918-ae6e-b535e2517920" name="Deprecated" isAbstract="true">
            <ownedComment xmi:id="93084d06-c879-4e0a-a4be-c1fa7513ce7a" body="A program element annotated &amp;#64;Deprecated is one that programmers&#xA;are discouraged from using, typically because it is dangerous,&#xA;or because a better alternative exists.  Compilers warn when a&#xA;deprecated program element is used or overridden in non-deprecated code.&#xA;&#xA;@author  Neal Gafter&#xA;@version 1.4, 06/10/04&#xA;@since 1.5&#xA;" annotatedElement="73ed3736-eaaf-4918-ae6e-b535e2517920"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6aa46dbe-7251-4b26-90ad-852964584f94" name="AbstractSet&lt;Entry&lt;String, String>>">
            <templateBinding xmi:id="4af762f5-9699-46e8-b8db-d14fb17f1fc4" signature="77607dee-756d-445e-96f4-9b3b4e6fb80b">
              <parameterSubstitution xmi:id="8ac585dc-cd46-4cff-8be9-93735eba46ba" formal="1c9b3942-53c2-4539-853b-a9aae2736fa2" actual="248f580f-fc64-48af-939f-df4f44cd7cfd"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="699de52b-659b-433f-833d-c4524675626e" name="IncompatibleClassChangeError">
            <ownedComment xmi:id="2bcfb2c8-265b-4039-99c3-3182d8209620" body="Thrown when an incompatible class change has occurred to some class&#xA;definition. The definition of some class, on which the currently&#xA;executing method depends, has since changed.&#xA;&#xA;@author  unascribed&#xA;@version 1.18, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="699de52b-659b-433f-833d-c4524675626e"/>
            <generalization xmi:id="31e52045-3535-45c4-9dfa-a98c7fd559aa" isSubstitutable="true" general="e5822ec6-ac2b-4107-8ac1-afc07f2ea5fa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="277f6fd8-34cc-4c64-b177-40b5ef6cd3d8" name="SecurityManager">
            <ownedComment xmi:id="08b73cf9-e7c0-4ab6-a8fd-0bd7833a5e50" body="The security manager is a class that allows&#xA;applications to implement a security policy. It allows an&#xA;application to determine, before performing a possibly unsafe or&#xA;sensitive operation, what the operation is and whether&#xA;it is being attempted in a security context that allows the&#xA;operation to be performed. The&#xA;application can allow or disallow the operation.&#xA;&lt;p>&#xA;The &lt;code>SecurityManager&lt;/code> class contains many methods with&#xA;names that begin with the word &lt;code>check&lt;/code>. These methods&#xA;are called by various methods in the Java libraries before those&#xA;methods perform certain potentially sensitive operations. The&#xA;invocation of such a &lt;code>check&lt;/code> method typically looks like this:&#xA;&lt;p>&lt;blockquote>&lt;pre>&#xA;SecurityManager security = System.getSecurityManager();&#xA;if (security != null) {&#xA;security.check&lt;i>XXX&lt;/i>(argument, &amp;nbsp;.&amp;nbsp;.&amp;nbsp;.&amp;nbsp;);&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;The security manager is thereby given an opportunity to prevent&#xA;completion of the operation by throwing an exception. A security&#xA;manager routine simply returns if the operation is permitted, but&#xA;throws a &lt;code>SecurityException&lt;/code> if the operation is not&#xA;permitted. The only exception to this convention is&#xA;&lt;code>checkTopLevelWindow&lt;/code>, which returns a&#xA;&lt;code>boolean&lt;/code> value.&#xA;&lt;p>&#xA;The current security manager is set by the&#xA;&lt;code>setSecurityManager&lt;/code> method in class&#xA;&lt;code>System&lt;/code>. The current security manager is obtained&#xA;by the &lt;code>getSecurityManager&lt;/code> method.&#xA;&lt;p>&#xA;The special method&#xA;{@link SecurityManager#checkPermission(java.security.Permission)}&#xA;determines whether an access request indicated by a specified&#xA;permission should be granted or denied. The&#xA;default implementation calls&#xA;&#xA;&lt;pre>&#xA;AccessController.checkPermission(perm);&#xA;&lt;/pre>&#xA;&#xA;&lt;p>&#xA;If a requested access is allowed,&#xA;&lt;code>checkPermission&lt;/code> returns quietly. If denied, a&#xA;&lt;code>SecurityException&lt;/code> is thrown.&#xA;&lt;p>&#xA;As of Java 2 SDK v1.2, the default implementation of each of the other&#xA;&lt;code>check&lt;/code> methods in &lt;code>SecurityManager&lt;/code> is to&#xA;call the &lt;code>SecurityManager checkPermission&lt;/code> method&#xA;to determine if the calling thread has permission to perform the requested&#xA;operation.&#xA;&lt;p>&#xA;Note that the &lt;code>checkPermission&lt;/code> method with&#xA;just a single permission argument always performs security checks&#xA;within the context of the currently executing thread.&#xA;Sometimes a security check that should be made within a given context&#xA;will actually need to be done from within a&#xA;&lt;i>different&lt;/i> context (for example, from within a worker thread).&#xA;The {@link SecurityManager#getSecurityContext getSecurityContext} method&#xA;and the {@link SecurityManager#checkPermission(java.security.Permission,&#xA;java.lang.Object) checkPermission}&#xA;method that includes a context argument are provided&#xA;for this situation. The&#xA;&lt;code>getSecurityContext&lt;/code> method returns a &quot;snapshot&quot;&#xA;of the current calling context. (The default implementation&#xA;returns an AccessControlContext object.) A sample call is&#xA;the following:&#xA;&#xA;&lt;pre>&#xA;Object context = null;&#xA;SecurityManager sm = System.getSecurityManager();&#xA;if (sm != null) context = sm.getSecurityContext();&#xA;&lt;/pre>&#xA;&#xA;&lt;p>&#xA;The &lt;code>checkPermission&lt;/code> method&#xA;that takes a context object in addition to a permission&#xA;makes access decisions based on that context,&#xA;rather than on that of the current execution thread.&#xA;Code within a different context can thus call that method,&#xA;passing the permission and the&#xA;previously-saved context object. A sample call, using the&#xA;SecurityManager &lt;code>sm&lt;/code> obtained as in the previous example,&#xA;is the following:&#xA;&#xA;&lt;pre>&#xA;if (sm != null) sm.checkPermission(permission, context);&#xA;&lt;/pre>&#xA;&#xA;&lt;p>Permissions fall into these categories: File, Socket, Net,&#xA;Security, Runtime, Property, AWT, Reflect, and Serializable.&#xA;The classes managing these various&#xA;permission categories are &lt;code>java.io.FilePermission&lt;/code>,&#xA;&lt;code>java.net.SocketPermission&lt;/code>,&#xA;&lt;code>java.net.NetPermission&lt;/code>,&#xA;&lt;code>java.security.SecurityPermission&lt;/code>,&#xA;&lt;code>java.lang.RuntimePermission&lt;/code>,&#xA;&lt;code>java.util.PropertyPermission&lt;/code>,&#xA;&lt;code>java.awt.AWTPermission&lt;/code>,&#xA;&lt;code>java.lang.reflect.ReflectPermission&lt;/code>, and&#xA;&lt;code>java.io.SerializablePermission&lt;/code>.&#xA;&#xA;&lt;p>All but the first two (FilePermission and SocketPermission) are&#xA;subclasses of &lt;code>java.security.BasicPermission&lt;/code>, which itself&#xA;is an abstract subclass of the&#xA;top-level class for permissions, which is&#xA;&lt;code>java.security.Permission&lt;/code>. BasicPermission defines the&#xA;functionality needed for all permissions that contain a name&#xA;that follows the hierarchical property naming convention&#xA;(for example, &quot;exitVM&quot;, &quot;setFactory&quot;, &quot;queuePrintJob&quot;, etc).&#xA;An asterisk&#xA;may appear at the end of the name, following a &quot;.&quot;, or by itself, to&#xA;signify a wildcard match. For example: &quot;a.*&quot; or &quot;*&quot; is valid,&#xA;&quot;*a&quot; or &quot;a*b&quot; is not valid.&#xA;&#xA;&lt;p>FilePermission and SocketPermission are subclasses of the&#xA;top-level class for permissions&#xA;(&lt;code>java.security.Permission&lt;/code>). Classes like these&#xA;that have a more complicated name syntax than that used by&#xA;BasicPermission subclass directly from Permission rather than from&#xA;BasicPermission. For example,&#xA;for a &lt;code>java.io.FilePermission&lt;/code> object, the permission name is&#xA;the path name of a file (or directory).&#xA;&#xA;&lt;p>Some of the permission classes have an &quot;actions&quot; list that tells&#xA;the actions that are permitted for the object.  For example,&#xA;for a &lt;code>java.io.FilePermission&lt;/code> object, the actions list&#xA;(such as &quot;read, write&quot;) specifies which actions are granted for the&#xA;specified file (or for files in the specified directory).&#xA;&#xA;&lt;p>Other permission classes are for &quot;named&quot; permissions -&#xA;ones that contain a name but no actions list; you either have the&#xA;named permission or you don't.&#xA;&#xA;&lt;p>Note: There is also a &lt;code>java.security.AllPermission&lt;/code>&#xA;permission that implies all permissions. It exists to simplify the work&#xA;of system administrators who might need to perform multiple&#xA;tasks that require all (or numerous) permissions.&#xA;&lt;p>&#xA;See &lt;a href =&quot;../../../guide/security/permissions.html&quot;>&#xA;Permissions in the JDK&lt;/a> for permission-related information.&#xA;This document includes, for example, a table listing the various SecurityManager&#xA;&lt;code>check&lt;/code> methods and the permission(s) the default&#xA;implementation of each such method requires.&#xA;It also contains a table of all the version 1.2 methods&#xA;that require permissions, and for each such method tells&#xA;which permission it requires.&#xA;&lt;p>&#xA;For more information about &lt;code>SecurityManager&lt;/code> changes made in&#xA;the JDK and advice regarding porting of 1.1-style security managers,&#xA;see the &lt;a href=&quot;../../../guide/security/index.html&quot;>security documentation&lt;/a>.&#xA;&#xA;@author  Arthur van Hoff&#xA;@author  Roland Schemers&#xA;&#xA;@version 1.136, 06/28/04&#xA;@see     java.lang.ClassLoader&#xA;@see     java.lang.SecurityException&#xA;@see     java.lang.SecurityManager#checkTopLevelWindow(java.lang.Object)&#xA;checkTopLevelWindow&#xA;@see     java.lang.System#getSecurityManager() getSecurityManager&#xA;@see     java.lang.System#setSecurityManager(java.lang.SecurityManager)&#xA;setSecurityManager&#xA;@see     java.security.AccessController AccessController&#xA;@see     java.security.AccessControlContext AccessControlContext&#xA;@see     java.security.AccessControlException AccessControlException&#xA;@see     java.security.Permission&#xA;@see     java.security.BasicPermission&#xA;@see     java.io.FilePermission&#xA;@see     java.net.SocketPermission&#xA;@see     java.util.PropertyPermission&#xA;@see     java.lang.RuntimePermission&#xA;@see     java.awt.AWTPermission&#xA;@see     java.security.Policy Policy&#xA;@see     java.security.SecurityPermission SecurityPermission&#xA;@see     java.security.ProtectionDomain&#xA;&#xA;@since   JDK1.0&#xA;" annotatedElement="277f6fd8-34cc-4c64-b177-40b5ef6cd3d8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="22428635-97d8-49eb-9955-db4e96f766e3" name="Iterable" isAbstract="true">
            <ownedComment xmi:id="775b3447-d807-46fd-9820-95061767d25c" body="Implementing this interface allows an object to be the target of&#xA;the &quot;foreach&quot; statement.&#xA;" annotatedElement="22428635-97d8-49eb-9955-db4e96f766e3"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="6db7ba27-1c8d-4f80-8ed1-fb826decd825" name="" parameter="737d747f-bb77-4db4-bbf7-83553b63e68e">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="737d747f-bb77-4db4-bbf7-83553b63e68e" parameteredElement="7248b276-c56c-4e8c-b74b-4ed6d81e3661">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="7248b276-c56c-4e8c-b74b-4ed6d81e3661" name="T" templateParameter="737d747f-bb77-4db4-bbf7-83553b63e68e"/>
              </ownedParameter>
            </ownedTemplateSignature>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="2a895999-2897-4661-9adc-c08be565c09a" name="Comparable&lt;Character>">
            <templateBinding xmi:id="9fc3f66e-deb9-4b37-af7e-c518dc0a9b00" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="1e543686-0256-4d99-813e-bcf7ddc333c9" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="21b5df94-9db6-490d-a0b1-52fcdb0efd8d"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="fe3cb6a8-2039-4843-b696-e4738058838e" name="Long" clientDependency="2848c7c5-4604-45db-a38f-70f840cb05f9" isLeaf="true">
            <ownedComment xmi:id="98d3e0c9-54f7-4ffe-a0db-c22395f17d45" body="The &lt;code>Long&lt;/code> class wraps a value of the primitive type&#xA;&lt;code>long&lt;/code> in an object. An object of type &lt;code>Long&lt;/code>&#xA;contains a single field whose type is &lt;code>long&lt;/code>.&#xA;&#xA;&lt;p>&#xA;&#xA;In addition, this class provides several methods for converting a&#xA;&lt;code>long&lt;/code> to a &lt;code>String&lt;/code> and a&#xA;&lt;code>String&lt;/code> to a &lt;code>long&lt;/code>, as well as other&#xA;constants and methods useful when dealing with a &lt;code>long&lt;/code>.&#xA;&#xA;&lt;p>Implementation note: The implementations of the &quot;bit twiddling&quot;&#xA;methods (such as {@link #highestOneBit(long) highestOneBit} and&#xA;{@link #numberOfTrailingZeros(long) numberOfTrailingZeros}) are&#xA;based on material from Henry S. Warren, Jr.'s &lt;i>Hacker's&#xA;Delight&lt;/i>, (Addison Wesley, 2002).&#xA;&#xA;@author  Lee Boynton&#xA;@author  Arthur van Hoff&#xA;@author  Josh Bloch&#xA;@version 1.79, 05/11/04&#xA;@since   JDK1.0&#xA;" annotatedElement="fe3cb6a8-2039-4843-b696-e4738058838e"/>
            <generalization xmi:id="7b320b01-cb9c-4b7c-94e6-1a4d121b61d5" isSubstitutable="true" general="86595613-8e64-4702-a472-32dc7405cc46"/>
            <interfaceRealization xmi:id="2848c7c5-4604-45db-a38f-70f840cb05f9" name="" supplier="ba9e4ac2-89dc-4882-8022-ab1644f61e4e" client="fe3cb6a8-2039-4843-b696-e4738058838e" contract="ba9e4ac2-89dc-4882-8022-ab1644f61e4e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="6d7dafb0-00ab-4316-a525-5f887d2ed965" name="LongCache" visibility="private"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5daf3e63-aaa5-4df2-9ab3-571011fcf266" name="NoSuchFieldError">
            <ownedComment xmi:id="8b75c68e-cf0d-47dc-a3d0-465cd0b38cea" body="Thrown if an application tries to access or modify a specified&#xA;field of an object, and that object no longer has that field.&#xA;&lt;p>&#xA;Normally, this error is caught by the compiler; this error can&#xA;only occur at run time if the definition of a class has&#xA;incompatibly changed.&#xA;&#xA;@author  unascribed&#xA;@version 1.12, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="5daf3e63-aaa5-4df2-9ab3-571011fcf266"/>
            <generalization xmi:id="160d2825-0283-4201-b9dd-f77894193307" isSubstitutable="true" general="699de52b-659b-433f-833d-c4524675626e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="0e189fe2-9acc-4005-b79b-b21ecbdd0734" name="Comparable&lt;E>">
            <templateBinding xmi:id="716c37d6-773f-4b44-a9ba-6c92d59996ae" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="d5f7b6f5-fdb6-4580-a738-0b1b53b7f5e4" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="f6b64015-bccd-491f-9f7d-8237a8f83387"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="ef9ebd4d-3533-4d19-990e-7b51fd973a8a" name="ref">
            <packagedElement xmi:type="uml:Class" xmi:id="81ff3790-dad8-4625-8537-6156aaab4fd9" name="ReferenceQueue">
              <ownedComment xmi:id="2369a3ff-dc50-4212-a18f-051e2b6d95b6" body="Reference queues, to which registered reference objects are appended by the&#xA;garbage collector after the appropriate reachability changes are detected.&#xA;&#xA;@version  1.23, 12/19/03&#xA;@author   Mark Reinhold&#xA;@since    1.2&#xA;" annotatedElement="81ff3790-dad8-4625-8537-6156aaab4fd9"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="aebec65e-6f41-4516-b9af-2e53882fd036" name="" parameter="9749c541-59ed-4a3e-b570-e8236c9ed9f9">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="9749c541-59ed-4a3e-b570-e8236c9ed9f9" parameteredElement="625279bf-289b-4e0a-99cf-5621f559ab9e">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="625279bf-289b-4e0a-99cf-5621f559ab9e" name="T" templateParameter="9749c541-59ed-4a3e-b570-e8236c9ed9f9"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <nestedClassifier xmi:type="uml:Class" xmi:id="17115231-f86b-4fdc-9996-8997f57699a3" name="Null" visibility="private">
                <generalization xmi:id="45ef1b3f-cab2-47ee-acbd-34272fa08ef8" isSubstitutable="true" general="81ff3790-dad8-4625-8537-6156aaab4fd9"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="861c428f-29cd-4e1d-846b-46b412acc1e7" name="Lock" visibility="private"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="61b9db35-9750-4411-8f0b-2ff91e8b78f3" name="FinalReference" visibility="package">
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="b6b31b1f-27e2-4ae9-b09a-ef288abc1e82" name="" parameter="89bbd836-5b88-45d3-af38-288312934037">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="89bbd836-5b88-45d3-af38-288312934037" parameteredElement="a142b451-9264-4115-9bb2-e7ac060865fc">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="a142b451-9264-4115-9bb2-e7ac060865fc" name="T" templateParameter="89bbd836-5b88-45d3-af38-288312934037"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="5d1e50bd-fb58-4e5e-8185-93f8f9ec0915" isSubstitutable="true" general="094103fb-ca30-411e-a891-12d616d4ed4a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5382c6c7-2297-47c7-b6cd-db1b0af29548" name="Reference" isAbstract="true">
              <ownedComment xmi:id="54b4632e-3057-4009-9d74-bbd76fdb58b0" body="Abstract base class for reference objects.  This class defines the&#xA;operations common to all reference objects.&#x9;Because reference objects are&#xA;implemented in close cooperation with the garbage collector, this class may&#xA;not be subclassed directly.&#xA;&#xA;@version  1.41, 04/20/04&#xA;@author   Mark Reinhold&#xA;@since    1.2&#xA;" annotatedElement="5382c6c7-2297-47c7-b6cd-db1b0af29548"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="b8113de4-d115-4a53-a1b7-24dfbf5055b1" name="" parameter="46235608-9095-42e2-8f28-8a04a899963a">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="46235608-9095-42e2-8f28-8a04a899963a" parameteredElement="03fe0507-269a-4fe5-a1c3-d37e795b1925">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="03fe0507-269a-4fe5-a1c3-d37e795b1925" name="T" templateParameter="46235608-9095-42e2-8f28-8a04a899963a"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <nestedClassifier xmi:type="uml:Class" xmi:id="59b52bf0-fd6d-479f-b1e4-72b74f7fde32" name="Lock" visibility="private"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="db874a1c-4ae7-4d2d-86e4-d98b5af74841" name="ReferenceHandler" visibility="private">
                <generalization xmi:id="b2c16d3c-9eb0-41cb-9f19-b0e86c102ca3" isSubstitutable="true" general="c9830202-c9c4-48c6-a18c-376520128934"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9fe410d6-a23d-4e51-b67a-70e7810968b4" name="WeakReference">
              <ownedComment xmi:id="9e4cb18b-d1bc-4830-a960-d7dd5c154966" body="Weak reference objects, which do not prevent their referents from being&#xA;made finalizable, finalized, and then reclaimed.  Weak references are most&#xA;often used to implement canonicalizing mappings.&#xA;&#xA;&lt;p> Suppose that the garbage collector determines at a certain point in time&#xA;that an object is &lt;a href=&quot;package-summary.html#reachability&quot;>weakly&#xA;reachable&lt;/a>.  At that time it will atomically clear all weak references to&#xA;that object and all weak references to any other weakly-reachable objects&#xA;from which that object is reachable through a chain of strong and soft&#xA;references.  At the same time it will declare all of the formerly&#xA;weakly-reachable objects to be finalizable.  At the same time or at some&#xA;later time it will enqueue those newly-cleared weak references that are&#xA;registered with reference queues.&#xA;&#xA;@version  1.18, 12/19/03&#xA;@author   Mark Reinhold&#xA;@since    1.2&#xA;" annotatedElement="9fe410d6-a23d-4e51-b67a-70e7810968b4"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="c513cd2a-d023-4eff-bbed-adbdc5759f8d" name="" parameter="3b3bffe1-bb6e-4040-b601-12240c09fafa">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="3b3bffe1-bb6e-4040-b601-12240c09fafa" parameteredElement="636950a4-2b16-4026-a2eb-d3b724cf806b">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="636950a4-2b16-4026-a2eb-d3b724cf806b" name="T" templateParameter="3b3bffe1-bb6e-4040-b601-12240c09fafa"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="df921f9a-2985-43aa-b411-056ef63fa816" isSubstitutable="true" general="094103fb-ca30-411e-a891-12d616d4ed4a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="47b944b9-253c-4611-82da-c54dfc97d5c4" name="PhantomReference">
              <ownedComment xmi:id="c68f89f8-3e61-4a84-87a9-9a6585e39198" body="Phantom reference objects, which are enqueued after the collector&#xA;determines that their referents may otherwise be reclaimed.  Phantom&#xA;references are most often used for scheduling pre-mortem cleanup actions in&#xA;a more flexible way than is possible with the Java finalization mechanism.&#xA;&#xA;&lt;p> If the garbage collector determines at a certain point in time that the&#xA;referent of a phantom reference is &lt;a&#xA;href=&quot;package-summary.html#reachability&quot;>phantom reachable&lt;/a>, then at that&#xA;time or at some later time it will enqueue the reference.&#xA;&#xA;&lt;p> In order to ensure that a reclaimable object remains so, the referent of&#xA;a phantom reference may not be retrieved: The &lt;code>get&lt;/code> method of a&#xA;phantom reference always returns &lt;code>null&lt;/code>.&#xA;&#xA;&lt;p> Unlike soft and weak references, phantom references are not&#xA;automatically cleared by the garbage collector as they are enqueued.  An&#xA;object that is reachable via phantom references will remain so until all&#xA;such references are cleared or themselves become unreachable.&#xA;&#xA;@version  1.19, 12/19/03&#xA;@author   Mark Reinhold&#xA;@since    1.2&#xA;" annotatedElement="47b944b9-253c-4611-82da-c54dfc97d5c4"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="e69ac628-0a3c-41c9-897c-c1405bf30490" name="" parameter="51671623-fc30-4274-80d4-5dd8694f178b">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="51671623-fc30-4274-80d4-5dd8694f178b" parameteredElement="da82a3f9-d361-4911-9e90-e95fc530d560">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="da82a3f9-d361-4911-9e90-e95fc530d560" name="T" templateParameter="51671623-fc30-4274-80d4-5dd8694f178b"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="bc11e2ea-10bc-4a5d-8414-e1a3a13373e9" isSubstitutable="true" general="094103fb-ca30-411e-a891-12d616d4ed4a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ca760f84-e65e-42c4-8241-24e4fd2f5be8" name="Finalizer" visibility="package" isLeaf="true">
              <generalization xmi:id="79fca764-3d86-4918-8d5a-665756500baf" isSubstitutable="true" general="61b9db35-9750-4411-8f0b-2ff91e8b78f3"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8626fe35-30b1-483c-881e-9f1921bbf3e8" name="FinalizerThread" visibility="private">
                <generalization xmi:id="39814753-0020-4916-b154-463d1a830267" isSubstitutable="true" general="c9830202-c9c4-48c6-a18c-376520128934"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="094103fb-ca30-411e-a891-12d616d4ed4a" name="Reference&lt;T>">
              <templateBinding xmi:id="98828b5f-f07b-41c4-8d8c-2446566c2f46" signature="b8113de4-d115-4a53-a1b7-24dfbf5055b1">
                <parameterSubstitution xmi:id="51a850ba-02b6-44d1-ab7a-15713f1d46c1" formal="46235608-9095-42e2-8f28-8a04a899963a" actual="a142b451-9264-4115-9bb2-e7ac060865fc"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2bcc0ea4-43bc-48dc-8fbe-ad11d145eb43" name="SoftReference">
              <ownedComment xmi:id="655dd4dc-21f6-40bc-8f1a-c581b0fbeebd" body="Soft reference objects, which are cleared at the discretion of the garbage&#xA;collector in response to memory demand.  Soft references are most often used&#xA;to implement memory-sensitive caches.&#xA;&#xA;&lt;p> Suppose that the garbage collector determines at a certain point in time&#xA;that an object is &lt;a href=&quot;package-summary.html#reachability&quot;>softly&#xA;reachable&lt;/a>.  At that time it may choose to clear atomically all soft&#xA;references to that object and all soft references to any other&#xA;softly-reachable objects from which that object is reachable through a chain&#xA;of strong references.  At the same time or at some later time it will&#xA;enqueue those newly-cleared soft references that are registered with&#xA;reference queues.&#xA;&#xA;&lt;p> All soft references to softly-reachable objects are guaranteed to have&#xA;been cleared before the virtual machine throws an&#xA;&lt;code>OutOfMemoryError&lt;/code>.  Otherwise no constraints are placed upon the&#xA;time at which a soft reference will be cleared or the order in which a set&#xA;of such references to different objects will be cleared.  Virtual machine&#xA;implementations are, however, encouraged to bias against clearing&#xA;recently-created or recently-used soft references.&#xA;&#xA;&lt;p> Direct instances of this class may be used to implement simple caches;&#xA;this class or derived subclasses may also be used in larger data structures&#xA;to implement more sophisticated caches.  As long as the referent of a soft&#xA;reference is strongly reachable, that is, is actually in use, the soft&#xA;reference will not be cleared.  Thus a sophisticated cache can, for example,&#xA;prevent its most recently used entries from being discarded by keeping&#xA;strong referents to those entries, leaving the remaining entries to be&#xA;discarded at the discretion of the garbage collector.&#xA;&#xA;@version  1.34, 12/19/03&#xA;@author   Mark Reinhold&#xA;@since    1.2&#xA;" annotatedElement="2bcc0ea4-43bc-48dc-8fbe-ad11d145eb43"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="995196bd-7dc7-44f6-8b5a-b216bf36d1f5" name="" parameter="710b13d0-4bb5-4a16-a9ab-a3588cb783a7">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="710b13d0-4bb5-4a16-a9ab-a3588cb783a7" parameteredElement="e6a68c1d-650c-4e38-9bee-09519e9cb30a">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="e6a68c1d-650c-4e38-9bee-09519e9cb30a" name="T" templateParameter="710b13d0-4bb5-4a16-a9ab-a3588cb783a7"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="92080420-9ea8-4f15-8738-3552f3420576" isSubstitutable="true" general="094103fb-ca30-411e-a891-12d616d4ed4a"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="bf5984e6-4f1e-4fa2-afea-298f9adad3d2" name="InternalError">
            <ownedComment xmi:id="f977288e-0227-4a30-ba58-42a037e0b1ac" body="Thrown to indicate some unexpected internal error has occurred in&#xA;the Java Virtual Machine.&#xA;&#xA;@author  unascribed&#xA;@version 1.21, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="bf5984e6-4f1e-4fa2-afea-298f9adad3d2"/>
            <generalization xmi:id="95f62093-e088-455d-bb9b-7f05385ec7c3" isSubstitutable="true" general="55a51e20-5987-4ce7-b966-75da1b359abb"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b1fbf137-7daf-4a41-b492-ce602a7a77eb" name="Boolean" clientDependency="31aa0d60-eafd-4c30-90da-5b9bcf40ec1d 465aea6c-c50f-4f32-9cd4-e5f624ab3d7e" isLeaf="true">
            <ownedComment xmi:id="d166d8cd-3c59-4275-98c3-5b62551a57d8" body="The Boolean class wraps a value of the primitive type&#xA;&lt;code>boolean&lt;/code> in an object. An object of type&#xA;&lt;code>Boolean&lt;/code> contains a single field whose type is&#xA;&lt;code>boolean&lt;/code>.&#xA;&lt;p>&#xA;In addition, this class provides many methods for&#xA;converting a &lt;code>boolean&lt;/code> to a &lt;code>String&lt;/code> and a&#xA;&lt;code>String&lt;/code> to a &lt;code>boolean&lt;/code>, as well as other&#xA;constants and methods useful when dealing with a&#xA;&lt;code>boolean&lt;/code>.&#xA;&#xA;@author  Arthur van Hoff&#xA;@version 1.51, 05/11/04&#xA;@since   JDK1.0&#xA;" annotatedElement="b1fbf137-7daf-4a41-b492-ce602a7a77eb"/>
            <interfaceRealization xmi:id="31aa0d60-eafd-4c30-90da-5b9bcf40ec1d" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="b1fbf137-7daf-4a41-b492-ce602a7a77eb" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="465aea6c-c50f-4f32-9cd4-e5f624ab3d7e" name="" supplier="d45a4eeb-6bb1-4dd6-838c-567de1f6839b" client="b1fbf137-7daf-4a41-b492-ce602a7a77eb" contract="d45a4eeb-6bb1-4dd6-838c-567de1f6839b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0a22cf88-fbf8-450e-8400-f8db26e4c1f6" name="ClassCastException">
            <ownedComment xmi:id="664762f5-3b69-482f-9951-d2971b3eb053" body="Thrown to indicate that the code has attempted to cast an object&#xA;to a subclass of which it is not an instance. For example, the&#xA;following code generates a &lt;code>ClassCastException&lt;/code>:&#xA;&lt;p>&lt;blockquote>&lt;pre>&#xA;Object x = new Integer(0);&#xA;System.out.println((String)x);&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;@author  unascribed&#xA;@version 1.20, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="0a22cf88-fbf8-450e-8400-f8db26e4c1f6"/>
            <generalization xmi:id="6131d728-89bd-43a0-9c48-5c32f55f763c" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b30464fe-2ffc-4786-b434-091afe4a9d8d" name="InstantiationError">
            <ownedComment xmi:id="6ef3c359-e98f-4986-8c5a-ac9caac066ab" body="Thrown when an application tries to use the Java &lt;code>new&lt;/code>&#xA;construct to instantiate an abstract class or an interface.&#xA;&lt;p>&#xA;Normally, this error is caught by the compiler; this error can&#xA;only occur at run time if the definition of a class has&#xA;incompatibly changed.&#xA;&#xA;@author  unascribed&#xA;@version 1.12, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="b30464fe-2ffc-4786-b434-091afe4a9d8d"/>
            <generalization xmi:id="aeeb68b8-bbf0-4530-b573-f25cf794706f" isSubstitutable="true" general="699de52b-659b-433f-833d-c4524675626e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0182964c-0bf7-4a3b-ab1c-b5f1916aff35" name="Compiler" isLeaf="true">
            <ownedComment xmi:id="3e63c431-5a83-48c2-8ba7-9acbb7ef9733" body="The &lt;code>Compiler&lt;/code> class is provided to support&#xA;Java-to-native-code compilers and related services. By design, the&#xA;&lt;code>Compiler&lt;/code> class does nothing; it serves as a&#xA;placeholder for a JIT compiler implementation.&#xA;&lt;p>&#xA;When the Java Virtual Machine first starts, it determines if the&#xA;system property &lt;code>java.compiler&lt;/code> exists. (System&#xA;properties are accessible through &lt;code>getProperty&lt;/code>  and ,&#xA;a method defined by the &lt;code>System&lt;/code> class.) If so, it is&#xA;assumed to be the name of a library (with a platform-dependent&#xA;exact location and type); the &lt;code>loadLibrary&lt;/code> method in&#xA;class &lt;code>System&lt;/code> is called to load that library. If this&#xA;loading succeeds, the function named&#xA;&lt;code>java_lang_Compiler_start()&lt;/code> in that library is called.&#xA;&lt;p>&#xA;If no compiler is available, these methods do nothing.&#xA;&#xA;@author  Frank Yellin&#xA;@version 1.20, 05/05/04&#xA;@see     java.lang.System#getProperty(java.lang.String)&#xA;@see     java.lang.System#getProperty(java.lang.String, java.lang.String)&#xA;@see     java.lang.System#loadLibrary(java.lang.String)&#xA;@since   JDK1.0&#xA;" annotatedElement="0182964c-0bf7-4a3b-ab1c-b5f1916aff35"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a741d814-b377-4879-bd7b-845fbc650e0c" name="Enum" clientDependency="cd037e70-c3e6-4f39-8a56-9d681a6a22ac f66a182f-cac9-4d1a-905b-47d6bd61d499" isAbstract="true">
            <ownedComment xmi:id="5a2fb2e5-c2c4-444f-848f-4688350439fd" body="This is the common base class of all Java language enumeration types.&#xA;&#xA;@author  Josh Bloch&#xA;@author  Neal Gafter&#xA;@version 1.12, 06/08/04&#xA;@since   1.5&#xA;" annotatedElement="a741d814-b377-4879-bd7b-845fbc650e0c"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="4048ca4e-4525-4785-9487-f316f3bd243a" name="" parameter="5c1313ab-11c4-4089-a4f2-47d12569be3c">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="5c1313ab-11c4-4089-a4f2-47d12569be3c" parameteredElement="f6b64015-bccd-491f-9f7d-8237a8f83387" constrainingClassifier="8d507840-0689-43a1-af5d-92da8e7ac7e4">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="f6b64015-bccd-491f-9f7d-8237a8f83387" name="E" templateParameter="5c1313ab-11c4-4089-a4f2-47d12569be3c"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <interfaceRealization xmi:id="f66a182f-cac9-4d1a-905b-47d6bd61d499" name="" supplier="0e189fe2-9acc-4005-b79b-b21ecbdd0734" client="a741d814-b377-4879-bd7b-845fbc650e0c" contract="0e189fe2-9acc-4005-b79b-b21ecbdd0734"/>
            <interfaceRealization xmi:id="cd037e70-c3e6-4f39-8a56-9d681a6a22ac" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="a741d814-b377-4879-bd7b-845fbc650e0c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="86595613-8e64-4702-a472-32dc7405cc46" name="Number" clientDependency="25ed0d61-d5e2-45eb-b0e2-8cd2f0f33104" isAbstract="true">
            <ownedComment xmi:id="392ec907-7fef-409a-849d-43bc7e4c41dd" body="The abstract class &lt;code>Number&lt;/code> is the superclass of classes&#xA;&lt;code>BigDecimal&lt;/code>, &lt;code>BigInteger&lt;/code>,&#xA;&lt;code>Byte&lt;/code>, &lt;code>Double&lt;/code>, &lt;code>Float&lt;/code>,&#xA;&lt;code>Integer&lt;/code>, &lt;code>Long&lt;/code>, and &lt;code>Short&lt;/code>.&#xA;&lt;p>&#xA;Subclasses of &lt;code>Number&lt;/code> must provide methods to convert&#xA;the represented numeric value to &lt;code>byte&lt;/code>, &lt;code>double&lt;/code>,&#xA;&lt;code>float&lt;/code>, &lt;code>int&lt;/code>, &lt;code>long&lt;/code>, and&#xA;&lt;code>short&lt;/code>.&#xA;&#xA;@author&#x9;Lee Boynton&#xA;@author&#x9;Arthur van Hoff&#xA;@version 1.29, 12/19/03&#xA;@see     java.lang.Byte&#xA;@see     java.lang.Double&#xA;@see     java.lang.Float&#xA;@see     java.lang.Integer&#xA;@see     java.lang.Long&#xA;@see     java.lang.Short&#xA;@since   JDK1.0&#xA;" annotatedElement="86595613-8e64-4702-a472-32dc7405cc46"/>
            <interfaceRealization xmi:id="25ed0d61-d5e2-45eb-b0e2-8cd2f0f33104" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="86595613-8e64-4702-a472-32dc7405cc46" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9268d6c8-08e6-4d50-b63e-31a6019b5bb7" name="StringIndexOutOfBoundsException">
            <ownedComment xmi:id="265f3d13-b66e-4767-804f-f41981e63b58" body="Thrown by &lt;code>String&lt;/code> methods to indicate that an index&#xA;is either negative or greater than the size of the string.  For&#xA;some methods such as the charAt method, this exception also is&#xA;thrown when the index is equal to the size of the string.&#xA;&#xA;@author  unascribed&#xA;@version 1.22, 12/19/03&#xA;@see     java.lang.String#charAt(int)&#xA;@since   JDK1.0&#xA;" annotatedElement="9268d6c8-08e6-4d50-b63e-31a6019b5bb7"/>
            <generalization xmi:id="89115adb-715d-4bf0-ac54-540661f0b1b3" isSubstitutable="true" general="c5043fce-af47-4884-97df-88e4fbd235d4"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="8a6dd21e-238a-4bec-9a62-6e6772819e35" name="SuppressWarnings" isAbstract="true">
            <ownedComment xmi:id="b4352281-5ddc-464c-88ec-682fff9d62f8" body="Indicates that the named compiler warnings should be suppressed in the&#xA;annotated element (and in all program elements contained in the annotated&#xA;element).  Note that the set of warnings suppressed in a given element is&#xA;a superset of the warnings suppressed in all containing elements.  For&#xA;example, if you annotate a class to suppress one warning and annotate a&#xA;method to suppress another, both warnings will be suppressed in the method.&#xA;&#xA;&lt;p>As a matter of style, programmers should always use this annotation&#xA;on the most deeply nested element where it is effective.  If you want to&#xA;suppress a warning in a particular method, you should annotate that&#xA;method rather than its class.&#xA;&#xA;@since 1.5&#xA;@author Josh Bloch&#xA;" annotatedElement="8a6dd21e-238a-4bec-9a62-6e6772819e35"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="3c6eb85a-f497-43a9-bf00-e88685d637c9" name="Comparable&lt;Short>">
            <templateBinding xmi:id="d9490294-8fdf-4edc-9e4e-5aace2b5b872" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="f836e0c6-f502-459d-9e49-941708d4b45a" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="19435cb8-ef1e-4352-aa5f-36cf8e88591f"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="248f580f-fc64-48af-939f-df4f44cd7cfd" name="Entry&lt;String, String>">
            <templateBinding xmi:id="047419c8-5f33-4a4f-9fd2-eb075d90e088" signature="c4abf78f-6423-465b-bf94-6dc2ff811ea9">
              <parameterSubstitution xmi:id="4ee8f4a0-d2d4-4974-9b90-4a9e0aa6cb07" formal="bd3d42ed-ee2f-4c2f-b588-7514a056711e" actual="44c739ae-2460-4446-b06e-bab4190d37f4"/>
              <parameterSubstitution xmi:id="9031daf5-e0b6-47b4-b9db-b51104b9af1d" formal="3281fb22-58e6-4560-935d-a2b2d4f1ef82" actual="44c739ae-2460-4446-b06e-bab4190d37f4"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e9d668ca-e738-4265-b47f-31710f333912" name="ThreadLocal&lt;T>">
            <templateBinding xmi:id="ef860d74-3e24-433d-93d5-310115c2378f" signature="27c960b9-40ea-4a9e-a94f-ee770c4e6956">
              <parameterSubstitution xmi:id="1846c4a7-6c96-4f39-b06c-9804762a067d" formal="3dfe61f5-8a48-4907-be98-70e632f75c29" actual="fbc20f91-5e7e-4a56-87cd-64d1fdbc8c2d"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9a68774c-cc71-4bf8-b4ba-125848842abb" name="StackOverflowError">
            <ownedComment xmi:id="98c25811-edb2-4d2f-b2b0-4450b19d88ef" body="Thrown when a stack overflow occurs because an application&#xA;recurses too deeply.&#xA;&#xA;@author unascribed&#xA;@version 1.21, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="9a68774c-cc71-4bf8-b4ba-125848842abb"/>
            <generalization xmi:id="aab0b0e7-69b0-4a51-8d0b-456826e585e9" isSubstitutable="true" general="55a51e20-5987-4ce7-b966-75da1b359abb"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="63fec602-fb75-4711-a4d6-1434d79d3f9a" name="CharacterData0E" visibility="package">
            <ownedComment xmi:id="b802333d-dfe1-41de-a131-d9d2ed8c7c04" body="The CharacterData class encapsulates the large tables found in&#xA;Java.lang.Character." annotatedElement="63fec602-fb75-4711-a4d6-1434d79d3f9a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="ebfb9a59-2168-47f1-a4db-2bd7b1608b5b" name="instrument">
            <packagedElement xmi:type="uml:Class" xmi:id="6036f0cc-740d-4f51-b901-eab2419d6fca" name="ClassDefinition" isLeaf="true">
              <ownedComment xmi:id="513128b8-485e-441a-bd13-28192f7eeffb" body="This class serves as a parameter block to the &lt;code>Instrumentation.redefineClasses&lt;/code> method.&#xA;Serves to bind the &lt;code>Class&lt;/code> that needs redefining together with the new class file bytes.&#xA;&#xA;@see     java.lang.instrument.Instrumentation#redefineClasses&#xA;@since   JDK1.5&#xA;" annotatedElement="6036f0cc-740d-4f51-b901-eab2419d6fca"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="89a85b35-31a4-4d5a-9769-f98c89a45622" name="UnmodifiableClassException">
              <ownedComment xmi:id="80bfa6a8-5214-4c5e-a391-5f5c91fcba88" body="Thrown by an implementation of&#xA;{@link java.lang.instrument.Instrumentation#redefineClasses Instrumentation.redefineClasses}&#xA;when one of the specified classes cannot be modified.&#xA;&#xA;@see     java.lang.instrument.Instrumentation#redefineClasses&#xA;@since   JDK1.5&#xA;" annotatedElement="89a85b35-31a4-4d5a-9769-f98c89a45622"/>
              <generalization xmi:id="ef18f9dd-60ff-4f51-a623-98d35d8c01a5" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="99d6f3f3-0d39-4247-9ab0-15cce091a447" name="ClassFileTransformer" isAbstract="true">
              <ownedComment xmi:id="e38bd032-0bf7-4c20-b7f5-90580b35246c" body="An agent provides an implementation of this interface in order&#xA;to transform class files.&#xA;The transformation occurs before the class is defined by the JVM.&#xA;&lt;P>&#xA;Note the term &lt;i>class file&lt;/i> is used as defined in the chapter&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#80959&quot;>The class File Format&lt;/a>&#xA;of &lt;i>The Java Virtual Machine Specification&lt;/i>, to mean a sequence&#xA;of bytes in class file format, whether or not they reside in a file.&#xA;&#xA;@see     java.lang.instrument.Instrumentation&#xA;@see     java.lang.instrument.Instrumentation#addTransformer&#xA;@see     java.lang.instrument.Instrumentation#removeTransformer&#xA;@since   JDK1.5&#xA;" annotatedElement="99d6f3f3-0d39-4247-9ab0-15cce091a447"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b137f05f-7711-45c6-9bf7-8bd38c5a4738" name="IllegalClassFormatException">
              <ownedComment xmi:id="167ff424-c397-4e61-b865-7fad96b8e1b3" body="Thrown by an implementation of&#xA;{@link java.lang.instrument.ClassFileTransformer#transform ClassFileTransformer.transform}&#xA;when its input parameters are invalid.&#xA;This may occur either because the initial class file bytes were&#xA;invalid or a previously applied transform corrupted the bytes.&#xA;&#xA;@see     java.lang.instrument.ClassFileTransformer#transform&#xA;@since   JDK1.5&#xA;" annotatedElement="b137f05f-7711-45c6-9bf7-8bd38c5a4738"/>
              <generalization xmi:id="584ef984-84ea-437c-b95b-93aca363da1e" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="1d3dbe58-bd27-48ce-9abb-a75c4b535b6f" name="Instrumentation" isAbstract="true">
              <ownedComment xmi:id="018bab0f-b7a6-44d5-9726-4d15f2c0c56b" body="This class provides services needed to instrument Java&#xA;programming language code.&#xA;Instrumentation is the addition of byte-codes to methods for the&#xA;purpose of gathering data to be utilized by tools.&#xA;Since the changes are purely additive, these tools do not modify&#xA;application state or behavior.&#xA;Examples of such benign tools include monitoring agents, profilers,&#xA;coverage analyzers, and event loggers.&#xA;&#xA;&lt;P>&#xA;The only way to access an instance of the &lt;code>Instrumentation&lt;/code>&#xA;interface is for the JVM to be launched in a way that indicates&#xA;the agent class - see&#xA;{@linkplain java.lang.instrument the package specification}.&#xA;The &lt;code>Instrumentation&lt;/code> instance is passed&#xA;to the &lt;code>premain&lt;/code> method of the agent class.&#xA;Once an agent acquires the &lt;code>Instrumentation&lt;/code> instance,&#xA;the agent may call methods on the instance at any time.&#xA;&#xA;@since   JDK1.5&#xA;" annotatedElement="1d3dbe58-bd27-48ce-9abb-a75c4b535b6f"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="18cfed24-cea3-4bff-9072-891060836bef" name="Comparator&lt;String>">
            <templateBinding xmi:id="19fd0fc9-29b2-41ee-84b2-e52d9f52ae6e" signature="5ca0174c-f6a2-499c-8047-b28b014e167d">
              <parameterSubstitution xmi:id="ab071889-c202-4d28-b68c-4fce54b4c3ad" formal="778d8bc4-7722-4223-9041-c33432cd4640" actual="44c739ae-2460-4446-b06e-bab4190d37f4"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="eac83404-6872-46aa-9845-80ab926dea1f" name="CharacterDataPrivateUse" visibility="package">
            <ownedComment xmi:id="f1c80db9-2036-41ea-8172-f056be6fb90c" body="The CharacterData class encapsulates the large tables found in&#xA;Java.lang.Character." annotatedElement="eac83404-6872-46aa-9845-80ab926dea1f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2a8959a2-3b62-4cfb-9415-627bc540d5ba" name="StringBuilder" clientDependency="84eb8acf-f11f-4490-a946-e3ed5f72ef9c 0efbcb0a-1c7c-45bf-8933-912c8c63d631" isLeaf="true">
            <ownedComment xmi:id="bf2529f3-e0ab-422b-9a42-ccf31c3d8ec6" body="A mutable sequence of characters.  This class provides an API compatible&#xA;with &lt;code>StringBuffer&lt;/code>, but with no guarantee of synchronization.&#xA;This class is designed for use as a drop-in replacement for&#xA;&lt;code>StringBuffer&lt;/code> in places where the string buffer was being&#xA;used by a single thread (as is generally the case).   Where possible,&#xA;it is recommended that this class be used in preference to&#xA;&lt;code>StringBuffer&lt;/code> as it will be faster under most implementations.&#xA;&#xA;&lt;p>The principal operations on a &lt;code>StringBuilder&lt;/code> are the&#xA;&lt;code>append&lt;/code> and &lt;code>insert&lt;/code> methods, which are&#xA;overloaded so as to accept data of any type. Each effectively&#xA;converts a given datum to a string and then appends or inserts the&#xA;characters of that string to the string builder. The&#xA;&lt;code>append&lt;/code> method always adds these characters at the end&#xA;of the builder; the &lt;code>insert&lt;/code> method adds the characters at&#xA;a specified point.&#xA;&lt;p>&#xA;For example, if &lt;code>z&lt;/code> refers to a string builder object&#xA;whose current contents are &quot;&lt;code>start&lt;/code>&quot;, then&#xA;the method call &lt;code>z.append(&quot;le&quot;)&lt;/code> would cause the string&#xA;builder to contain &quot;&lt;code>startle&lt;/code>&quot;, whereas&#xA;&lt;code>z.insert(4, &quot;le&quot;)&lt;/code> would alter the string builder to&#xA;contain &quot;&lt;code>starlet&lt;/code>&quot;.&#xA;&lt;p>&#xA;In general, if sb refers to an instance of a &lt;code>StringBuilder&lt;/code>,&#xA;then &lt;code>sb.append(x)&lt;/code> has the same effect as&#xA;&lt;code>sb.insert(sb.length(),&amp;nbsp;x)&lt;/code>.&#xA;&#xA;Every string builder has a capacity. As long as the length of the&#xA;character sequence contained in the string builder does not exceed&#xA;the capacity, it is not necessary to allocate a new internal&#xA;buffer. If the internal buffer overflows, it is automatically made larger.&#xA;&#xA;&lt;p>Instances of &lt;code>StringBuilder&lt;/code> are not safe for&#xA;use by multiple threads. If such synchronization is required then it is&#xA;recommended that {@link java.lang.StringBuffer} be used.&#xA;&#xA;@author&#x9;Michael McCloskey&#xA;@version &#x9;1.9, 07/16/04&#xA;@see         java.lang.StringBuffer&#xA;@see         java.lang.String&#xA;@since&#x9;1.5&#xA;" annotatedElement="2a8959a2-3b62-4cfb-9415-627bc540d5ba"/>
            <generalization xmi:id="f49dcbcf-e39f-4e8b-b730-6272d73d757d" isSubstitutable="true" general="8564352d-0c0a-4453-90df-0731d2b6dcbc"/>
            <interfaceRealization xmi:id="84eb8acf-f11f-4490-a946-e3ed5f72ef9c" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="2a8959a2-3b62-4cfb-9415-627bc540d5ba" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="0efbcb0a-1c7c-45bf-8933-912c8c63d631" name="" supplier="add26864-681f-4efa-930b-32e7f66a5186" client="2a8959a2-3b62-4cfb-9415-627bc540d5ba" contract="add26864-681f-4efa-930b-32e7f66a5186"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="4245e8f4-88b0-4637-bbe8-d441309e9db9" name="Readable" isAbstract="true">
            <ownedComment xmi:id="5db08cae-1065-444f-b834-d48d80078936" body="A &lt;tt>Readable&lt;/tt> is a source of characters. Characters from&#xA;a &lt;tt>Readable&lt;/tt> are made available to callers of the read&#xA;method via a {@link java.nio.CharBuffer CharBuffer}.&#xA;&#xA;@version 1.3 03/12/19&#xA;@since 1.5&#xA;" annotatedElement="4245e8f4-88b0-4637-bbe8-d441309e9db9"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f5466c47-7e2b-47be-aae0-ae62491c370d" name="CharacterData02" visibility="package">
            <ownedComment xmi:id="3639565b-1f23-4b6b-b9ad-07608e0bc57b" body="The CharacterData class encapsulates the large tables found in&#xA;Java.lang.Character." annotatedElement="f5466c47-7e2b-47be-aae0-ae62491c370d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e9590591-7e3a-4a3f-9f3f-f209846cbf54" name="ArithmeticException">
            <ownedComment xmi:id="c0584ebc-6809-432b-8a2f-7815875ce92f" body="Thrown when an exceptional arithmetic condition has occurred. For&#xA;example, an integer &quot;divide by zero&quot; throws an&#xA;instance of this class.&#xA;&#xA;@author  unascribed&#xA;@version 1.22, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="e9590591-7e3a-4a3f-9f3f-f209846cbf54"/>
            <generalization xmi:id="702bdc1b-a2c5-4e28-9d08-500462f6085d" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ac01eea7-2e46-4413-b415-803d1653cde7" name="System" isLeaf="true">
            <ownedComment xmi:id="74dd75d5-53a0-47da-99d9-a911b155db7a" body="The &lt;code>System&lt;/code> class contains several useful class fields&#xA;and methods. It cannot be instantiated.&#xA;&#xA;&lt;p>Among the facilities provided by the &lt;code>System&lt;/code> class&#xA;are standard input, standard output, and error output streams;&#xA;access to externally defined properties and environment&#xA;variables; a means of loading files and libraries; and a utility&#xA;method for quickly copying a portion of an array.&#xA;&#xA;@author  unascribed&#xA;@version 1.149, 06/02/04&#xA;@since   JDK1.0&#xA;" annotatedElement="ac01eea7-2e46-4413-b415-803d1653cde7"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="77df1efb-625d-4349-9634-718bf2cd7485" name="AbstractSet&lt;String>">
            <templateBinding xmi:id="224faafc-1f9f-4781-acc3-3736ad770926" signature="77607dee-756d-445e-96f4-9b3b4e6fb80b">
              <parameterSubstitution xmi:id="39ad46f8-0c7f-4549-9c70-fda2103b53fb" formal="1c9b3942-53c2-4539-853b-a9aae2736fa2" actual="44c739ae-2460-4446-b06e-bab4190d37f4"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b81076ab-35ae-4085-b4ae-facca8a28c61" name="Class" clientDependency="5af423db-6b06-4965-9e51-65d14c7b121a af6b87a9-3ef8-466c-a5cd-74941dd120d8 dd8fa7d8-6417-4164-8e8c-a221ba9c6aa5 ab1852e0-4f96-4e12-960c-71fcfdb3f068" isLeaf="true">
            <ownedComment xmi:id="a50c39f3-8413-4c23-93f2-c92619730ae2" body="Instances of the class &lt;code>Class&lt;/code> represent classes and&#xA;interfaces in a running Java application.  An enum is a kind of&#xA;class and an annotation is a kind of interface.  Every array also&#xA;belongs to a class that is reflected as a &lt;code>Class&lt;/code> object&#xA;that is shared by all arrays with the same element type and number&#xA;of dimensions.  The primitive Java types (&lt;code>boolean&lt;/code>,&#xA;&lt;code>byte&lt;/code>, &lt;code>char&lt;/code>, &lt;code>short&lt;/code>,&#xA;&lt;code>int&lt;/code>, &lt;code>long&lt;/code>, &lt;code>float&lt;/code>, and&#xA;&lt;code>double&lt;/code>), and the keyword &lt;code>void&lt;/code> are also&#xA;represented as &lt;code>Class&lt;/code> objects.&#xA;&#xA;&lt;p> &lt;code>Class&lt;/code> has no public constructor. Instead &lt;code>Class&lt;/code>&#xA;objects are constructed automatically by the Java Virtual Machine as classes&#xA;are loaded and by calls to the &lt;code>defineClass&lt;/code> method in the class&#xA;loader.&#xA;&#xA;&lt;p> The following example uses a &lt;code>Class&lt;/code> object to print the&#xA;class name of an object:&#xA;&#xA;&lt;p> &lt;blockquote>&lt;pre>&#xA;void printClassName(Object obj) {&#xA;System.out.println(&quot;The class of &quot; + obj +&#xA;&quot; is &quot; + obj.getClass().getName());&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p> It is also possible to get the &lt;code>Class&lt;/code> object for a named&#xA;type (or for void) using a class literal&#xA;(JLS Section &lt;A HREF=&quot;http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#251530&quot;>15.8.2&lt;/A>).&#xA;For example:&#xA;&#xA;&lt;p> &lt;blockquote>&lt;pre>&#xA;System.out.println(&quot;The name of class Foo is: &quot;+Foo.class.getName());&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;@author  unascribed&#xA;@version 1.135, 05/25/01&#xA;@see     java.lang.ClassLoader#defineClass(byte[], int, int)&#xA;@since   JDK1.0&#xA;" annotatedElement="b81076ab-35ae-4085-b4ae-facca8a28c61"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="1aefff26-cfdb-4222-904b-f9db8e22affc" name="" parameter="199a9e8f-bd15-4282-abe6-ce2a1e317ef8">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="199a9e8f-bd15-4282-abe6-ce2a1e317ef8" parameteredElement="86d5d628-cfd7-4454-a4bd-6d123638ee59">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="86d5d628-cfd7-4454-a4bd-6d123638ee59" name="T" templateParameter="199a9e8f-bd15-4282-abe6-ce2a1e317ef8"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <interfaceRealization xmi:id="af6b87a9-3ef8-466c-a5cd-74941dd120d8" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="b81076ab-35ae-4085-b4ae-facca8a28c61" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="dd8fa7d8-6417-4164-8e8c-a221ba9c6aa5" name="" supplier="f76c51aa-c159-493b-8263-733b72f0638c" client="b81076ab-35ae-4085-b4ae-facca8a28c61" contract="f76c51aa-c159-493b-8263-733b72f0638c"/>
            <interfaceRealization xmi:id="ab1852e0-4f96-4e12-960c-71fcfdb3f068" name="" supplier="2c4aa31c-ddd1-4652-8dae-3d674c31f07c" client="b81076ab-35ae-4085-b4ae-facca8a28c61" contract="2c4aa31c-ddd1-4652-8dae-3d674c31f07c"/>
            <interfaceRealization xmi:id="5af423db-6b06-4965-9e51-65d14c7b121a" name="" supplier="4da33703-8c3c-4d01-8eb0-6be845fe5f17" client="b81076ab-35ae-4085-b4ae-facca8a28c61" contract="4da33703-8c3c-4d01-8eb0-6be845fe5f17"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="030b40b8-b4af-4e58-af48-541f6bd170c2" name="MethodArray" visibility="package"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="1de7c87d-e986-45b4-86ce-fbd5aefb4931" name="EnclosingMethodInfo" visibility="private" isLeaf="true"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c09bb221-d452-4028-bafa-704d1c26f6ba" name="Object">
            <ownedComment xmi:id="9d380453-2985-49b2-a101-ed28720e4e38" body="Class &lt;code>Object&lt;/code> is the root of the class hierarchy.&#xA;Every class has &lt;code>Object&lt;/code> as a superclass. All objects,&#xA;including arrays, implement the methods of this class.&#xA;&#xA;@author  unascribed&#xA;@version 1.68, 04/08/04&#xA;@see     java.lang.Class&#xA;@since   JDK1.0&#xA;" annotatedElement="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="64b522c8-86c6-440b-a1ac-bfe1965eaf01" name="Float" clientDependency="e102f238-ef85-43bd-9e68-de8978982ed9" isLeaf="true">
            <ownedComment xmi:id="5935e019-0d79-469d-85b9-8ca04af8fa3a" body="The &lt;code>Float&lt;/code> class wraps a value of primitive type&#xA;&lt;code>float&lt;/code> in an object. An object of type&#xA;&lt;code>Float&lt;/code> contains a single field whose type is&#xA;&lt;code>float&lt;/code>.&#xA;&lt;p>&#xA;In addition, this class provides several methods for converting a&#xA;&lt;code>float&lt;/code> to a &lt;code>String&lt;/code> and a&#xA;&lt;code>String&lt;/code> to a &lt;code>float&lt;/code>, as well as other&#xA;constants and methods useful when dealing with a&#xA;&lt;code>float&lt;/code>.&#xA;&#xA;@author  Lee Boynton&#xA;@author  Arthur van Hoff&#xA;@author  Joseph D. Darcy&#xA;@version 1.94, 05/11/04&#xA;@since JDK1.0&#xA;" annotatedElement="64b522c8-86c6-440b-a1ac-bfe1965eaf01"/>
            <generalization xmi:id="89c64bc0-6e28-495f-a2bd-3b2343b83f24" isSubstitutable="true" general="86595613-8e64-4702-a472-32dc7405cc46"/>
            <interfaceRealization xmi:id="e102f238-ef85-43bd-9e68-de8978982ed9" name="" supplier="208e2498-0927-4984-9ef5-3521a6277592" client="64b522c8-86c6-440b-a1ac-bfe1965eaf01" contract="208e2498-0927-4984-9ef5-3521a6277592"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="64cc420e-7573-43a3-a0cf-fcd69043dccf" name="Override" isAbstract="true">
            <ownedComment xmi:id="5b894927-5c8f-40c1-8039-39f8662973ce" body="Indicates that a method declaration is intended to override a&#xA;method declaration in a superclass.  If a method is annotated with&#xA;this annotation type but does not override a superclass method,&#xA;compilers are required to generate an error message.&#xA;&#xA;@author  Joshua Bloch&#xA;@since 1.5&#xA;" annotatedElement="64cc420e-7573-43a3-a0cf-fcd69043dccf"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="ee158523-f604-423d-acc7-3a99460b04b5" name="annotation">
            <packagedElement xmi:type="uml:Class" xmi:id="09c57ac0-83a3-4e3a-9d74-847a7f6e1ccd" name="ElementType">
              <ownedComment xmi:id="543acae9-2bf5-46cd-9e5f-8d11fbbc347b" body="A program element type.  The constants of this enumerated type&#xA;provide a simple classification of the declared elements in a&#xA;Java program.&#xA;&#xA;&lt;p>These constants are used with the {@link Target} meta-annotation type&#xA;to specify where it is legal to use an annotation type.&#xA;&#xA;@author  Joshua Bloch&#xA;@since 1.5&#xA;" annotatedElement="09c57ac0-83a3-4e3a-9d74-847a7f6e1ccd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2edb7270-a1f8-4cc5-a346-2d137b58e021" name="IncompleteAnnotationException">
              <ownedComment xmi:id="37393382-67d2-4fa3-9564-5c543fca32fb" body="Thrown to indicate that a program has attempted to access an element of&#xA;an annotation type that was added to the annotation type definition after&#xA;the annotation was compiled (or serialized).  This exception will not be&#xA;thrown if the new element has a default value.&#xA;&#xA;@author  Josh Bloch&#xA;@since 1.5&#xA;" annotatedElement="2edb7270-a1f8-4cc5-a346-2d137b58e021"/>
              <generalization xmi:id="f031fa13-d03f-463e-9972-310e826a0d9b" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="55a7e7ab-2652-469e-845b-1f977d7aa6d6" name="Target" isAbstract="true">
              <ownedComment xmi:id="9f46b7ea-cae0-410f-8989-921edd483008" body="Indicates the kinds of program element to which an annotation type&#xA;is applicable.  If a Target meta-annotation is not present on an&#xA;annotation type declaration, the declared type may be used on any&#xA;program element.  If such a meta-annotation is present, the compiler&#xA;will enforce the specified usage restriction.&#xA;&#xA;For example, this meta-annotation indicates that the declared type is&#xA;itself a meta-annotation type.  It can only be used on annotation type&#xA;declarations:&#xA;&lt;pre>&#xA;&amp;#064;Target(ElementType.ANNOTATION_TYPE)&#xA;public &amp;#064;interface MetaAnnotationType {&#xA;...&#xA;}&#xA;&lt;/pre>&#xA;This meta-annotation indicates that the declared type is intended solely&#xA;for use as a member type in complex annotation type declarations.  It&#xA;cannot be used to annotate anything directly:&#xA;&lt;pre>&#xA;&amp;#064;Target({})&#xA;public &amp;#064;interface MemberType {&#xA;...&#xA;}&#xA;&lt;/pre>&#xA;It is a compile-time error for a single ElementType constant to&#xA;appear more than once in a Target annotation.  For example, the&#xA;following meta-annotation is illegal:&#xA;&lt;pre>&#xA;&amp;#064;Target({ElementType.FIELD, ElementType.METHOD, ElementType.FIELD})&#xA;public &amp;#064;interface Bogus {&#xA;...&#xA;}&#xA;&lt;/pre>&#xA;" annotatedElement="55a7e7ab-2652-469e-845b-1f977d7aa6d6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="84dbe4f6-b7c5-4323-8809-fdcdd6f64a8c" name="AnnotationTypeMismatchException">
              <ownedComment xmi:id="a58dfb4e-6107-4dc3-bbc5-0ca5424e64ee" body="Thrown to indicate that a program has attempted to access an element of&#xA;an annotation whose type has changed after the annotation was compiled&#xA;(or serialized).&#xA;&#xA;@author  Josh Bloch&#xA;@since 1.5&#xA;" annotatedElement="84dbe4f6-b7c5-4323-8809-fdcdd6f64a8c"/>
              <generalization xmi:id="483158fa-cf47-4bfc-b3e9-8f6e874652c1" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="aebb94f8-0b17-4d86-9575-8bb3ca2de551" name="AnnotationFormatError">
              <ownedComment xmi:id="cb784af2-f3a2-44b2-8358-d41028866153" body="Thrown when the annotation parser attempts to read an annotation&#xA;from a class file and determines that the annotation is malformed.&#xA;&#xA;@author  Josh Bloch&#xA;@since   1.5&#xA;" annotatedElement="aebb94f8-0b17-4d86-9575-8bb3ca2de551"/>
              <generalization xmi:id="c43a929b-3995-4bff-8595-c0ee74a35b93" isSubstitutable="true" general="4e4110b0-dae3-4d54-846c-b32f5eb17a30"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="cfcbc345-e73d-4e48-bf5d-6e4e56e09c12" name="Retention" isAbstract="true">
              <ownedComment xmi:id="78d4998d-517e-4296-a325-31390d4ea314" body="Indicates how long annotations with the annotated type are to&#xA;be retained.  If no Retention annotation is present on&#xA;an annotation type declaration, the retention policy defaults to&#xA;&lt;tt>RetentionPolicy.CLASS&lt;/tt>.&#xA;&#xA;&lt;p>A Target meta-annotation has effect only if the meta-annotated&#xA;type is use directly for annotation.  It has no effect if the meta-annotated&#xA;type is used as a member type in another annotation type.&#xA;&#xA;@author  Joshua Bloch&#xA;@since 1.5&#xA;" annotatedElement="cfcbc345-e73d-4e48-bf5d-6e4e56e09c12"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="8e71806c-848b-4d8f-a6c0-47d62fd352ec" name="Annotation" isAbstract="true">
              <ownedComment xmi:id="4a7e87fa-d223-44f4-9682-ae8fce306b48" body="The common interface extended by all annotation types.  Note that an&#xA;interface that manually extends this one does &lt;i>not&lt;/i> define&#xA;an annotation type.  Also note that this interface does not itself&#xA;define an annotation type.&#xA;&#xA;@author  Josh Bloch&#xA;@since   1.5&#xA;" annotatedElement="8e71806c-848b-4d8f-a6c0-47d62fd352ec"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="38b56cbd-02d8-4815-951f-f2661f450b61" name="RetentionPolicy">
              <ownedComment xmi:id="3fbbf6b6-3d37-4158-9b25-3d947a022473" body="Annotation retention policy.  The constants of this enumerated type&#xA;describe the various policies for retaining annotations.  They are used&#xA;in conjunction with the {@link Retention} meta-annotation type to specify&#xA;how long annotations are to be retained.&#xA;&#xA;@author  Joshua Bloch&#xA;@since 1.5&#xA;" annotatedElement="38b56cbd-02d8-4815-951f-f2661f450b61"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="afdf2a74-23ac-4c1d-93b4-b9c0eb1be5d4" name="Documented" isAbstract="true">
              <ownedComment xmi:id="74c21e00-a71c-410a-89f9-1d07e62e67af" body="Indicates that annotations with a type are to be documented by javadoc&#xA;and similar tools by default.  This type should be used to annotate the&#xA;declarations of types whose annotations affect the use of annotated&#xA;elements by their clients.  If a type declaration is annotated with&#xA;Documented, its annotations become part of the public API&#xA;of the annotated elements.&#xA;&#xA;@author  Joshua Bloch&#xA;@version 1.5, 02/03/04&#xA;@since 1.5&#xA;" annotatedElement="afdf2a74-23ac-4c1d-93b4-b9c0eb1be5d4"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="79fb3b55-0e31-4910-8103-15a9a4e2c668" name="Inherited" isAbstract="true">
              <ownedComment xmi:id="5ab76684-9783-48a6-89d5-b200563c41c4" body="Indicates that an annotation type is automatically inherited.  If&#xA;an Inherited meta-annotation is present on an annotation type&#xA;declaration, and the user queries the annotation type on a class&#xA;declaration, and the class declaration has no annotation for this type,&#xA;then the class's superclass will automatically be queried for the&#xA;annotation type.  This process will be repeated until an annotation for this&#xA;type is found, or the top of the class hierarchy (Object)&#xA;is reached.  If no superclass has an annotation for this type, then&#xA;the query will indicate that the class in question has no such annotation.&#xA;&#xA;&lt;p>Note that this meta-annotation type has no effect if the annotated&#xA;type is used to annotate anything other than a class.  Note also&#xA;that this meta-annotation only causes annotations to be inherited&#xA;from superclasses; annotations on implemented interfaces have no&#xA;effect.&#xA;&#xA;@author  Joshua Bloch&#xA;@since 1.5&#xA;" annotatedElement="79fb3b55-0e31-4910-8103-15a9a4e2c668"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0ff64621-d4d1-4cc4-99ef-62c32c2d93bb" name="IllegalThreadStateException">
            <ownedComment xmi:id="2f1441fa-8942-4c31-b66c-b746b6082c40" body="Thrown to indicate that a thread is not in an appropriate state&#xA;for the requested operation. See, for example, the&#xA;&lt;code>suspend&lt;/code> and &lt;code>resume&lt;/code> methods in class&#xA;&lt;code>Thread&lt;/code>.&#xA;&#xA;@author  unascribed&#xA;@version 1.21, 12/19/03&#xA;@see     java.lang.Thread#resume()&#xA;@see     java.lang.Thread#suspend()&#xA;@since   JDK1.0&#xA;" annotatedElement="0ff64621-d4d1-4cc4-99ef-62c32c2d93bb"/>
            <generalization xmi:id="edcc26be-7144-4b43-a246-33694dbdbaf6" isSubstitutable="true" general="015b8627-f5b5-477f-8717-4d7c48152015"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d42767b4-ad13-4f67-87a0-045ec22b339d" name="Runtime">
            <ownedComment xmi:id="9aeafb1e-8a11-4ca8-9ce7-111f1bda62cc" body="Every Java application has a single instance of class&#xA;&lt;code>Runtime&lt;/code> that allows the application to interface with&#xA;the environment in which the application is running. The current&#xA;runtime can be obtained from the &lt;code>getRuntime&lt;/code> method.&#xA;&lt;p>&#xA;An application cannot create its own instance of this class.&#xA;&#xA;@author  unascribed&#xA;@version 1.74, 05/18/04&#xA;@see     java.lang.Runtime#getRuntime()&#xA;@since   JDK1.0&#xA;" annotatedElement="d42767b4-ad13-4f67-87a0-045ec22b339d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9df31145-3e6e-4d16-8e19-99cf658683ac" name="IllegalAccessError">
            <ownedComment xmi:id="d93a2957-b477-468f-bf53-014906c3276a" body="Thrown if an application attempts to access or modify a field, or&#xA;to call a method that it does not have access to.&#xA;&lt;p>&#xA;Normally, this error is caught by the compiler; this error can&#xA;only occur at run time if the definition of a class has&#xA;incompatibly changed.&#xA;&#xA;@author  unascribed&#xA;@version 1.16, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="9df31145-3e6e-4d16-8e19-99cf658683ac"/>
            <generalization xmi:id="5d3b9d62-363f-44d1-bf2c-4b32ea836b1f" isSubstitutable="true" general="699de52b-659b-433f-833d-c4524675626e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8cb820ee-98b1-4dbb-b397-b68d6089f566" name="IllegalMonitorStateException">
            <ownedComment xmi:id="0b421e6b-136d-4c81-a98b-4cb3423f0bff" body="Thrown to indicate that a thread has attempted to wait on an&#xA;object's monitor or to notify other threads waiting on an object's&#xA;monitor without owning the specified monitor.&#xA;&#xA;@author  unascribed&#xA;@version 1.12, 12/19/03&#xA;@see     java.lang.Object#notify()&#xA;@see     java.lang.Object#notifyAll()&#xA;@see     java.lang.Object#wait()&#xA;@see     java.lang.Object#wait(long)&#xA;@see     java.lang.Object#wait(long, int)&#xA;@since   JDK1.0&#xA;" annotatedElement="8cb820ee-98b1-4dbb-b397-b68d6089f566"/>
            <generalization xmi:id="f0c11e5b-d908-492e-8c46-fa97c419e73b" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="35b06425-fc81-4524-afea-1bf6ce40c667" name="RuntimeException">
            <ownedComment xmi:id="24c90bac-5b7f-46a3-b8a2-2c9c683987f7" body="&lt;code>RuntimeException&lt;/code> is the superclass of those&#xA;exceptions that can be thrown during the normal operation of the&#xA;Java Virtual Machine.&#xA;&lt;p>&#xA;A method is not required to declare in its &lt;code>throws&lt;/code>&#xA;clause any subclasses of &lt;code>RuntimeException&lt;/code> that might&#xA;be thrown during the execution of the method but not caught.&#xA;&#xA;&#xA;@author  Frank Yellin&#xA;@version 1.13, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="35b06425-fc81-4524-afea-1bf6ce40c667"/>
            <generalization xmi:id="4cff0ddb-abb3-404c-b62c-da3017e1ca4f" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="cbaa9553-5102-4b04-93f8-3c6f01c44bab" name="AbstractCollection&lt;String>">
            <templateBinding xmi:id="837d5579-1887-4008-bcec-39a592d485b4" signature="d64b29f5-bca8-49c3-8271-3097b690c222">
              <parameterSubstitution xmi:id="da214bf2-ec59-4b0b-876c-bb26ba89f453" formal="2794615a-0f57-4cbc-82eb-10061cb9e375" actual="44c739ae-2460-4446-b06e-bab4190d37f4"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="44c739ae-2460-4446-b06e-bab4190d37f4" name="String" clientDependency="8373ccba-f52c-48ed-94cd-2f5d4aa9875e ca3b1c4a-92cd-40b8-af75-a69c21cfbaac 966a046b-5166-4d38-844b-76593c1578b4" isLeaf="true">
            <ownedComment xmi:id="c58e1483-a2d9-4b77-a531-1d4c97fdd0bd" body="The &lt;code>String&lt;/code> class represents character strings. All&#xA;string literals in Java programs, such as &lt;code>&quot;abc&quot;&lt;/code>, are&#xA;implemented as instances of this class.&#xA;&lt;p>&#xA;Strings are constant; their values cannot be changed after they&#xA;are created. String buffers support mutable strings.&#xA;Because String objects are immutable they can be shared. For example:&#xA;&lt;p>&lt;blockquote>&lt;pre>&#xA;String str = &quot;abc&quot;;&#xA;&lt;/pre>&lt;/blockquote>&lt;p>&#xA;is equivalent to:&#xA;&lt;p>&lt;blockquote>&lt;pre>&#xA;char data[] = {'a', 'b', 'c'};&#xA;String str = new String(data);&#xA;&lt;/pre>&lt;/blockquote>&lt;p>&#xA;Here are some more examples of how strings can be used:&#xA;&lt;p>&lt;blockquote>&lt;pre>&#xA;System.out.println(&quot;abc&quot;);&#xA;String cde = &quot;cde&quot;;&#xA;System.out.println(&quot;abc&quot; + cde);&#xA;String c = &quot;abc&quot;.substring(2,3);&#xA;String d = cde.substring(1, 2);&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;The class &lt;code>String&lt;/code> includes methods for examining&#xA;individual characters of the sequence, for comparing strings, for&#xA;searching strings, for extracting substrings, and for creating a&#xA;copy of a string with all characters translated to uppercase or to&#xA;lowercase. Case mapping is based on the Unicode Standard version&#xA;specified by the {@link java.lang.Character Character} class.&#xA;&lt;p>&#xA;The Java language provides special support for the string&#xA;concatenation operator (&amp;nbsp;+&amp;nbsp;), and for conversion of&#xA;other objects to strings. String concatenation is implemented&#xA;through the &lt;code>StringBuilder&lt;/code>(or &lt;code>StringBuffer&lt;/code>)&#xA;class and its &lt;code>append&lt;/code> method.&#xA;String conversions are implemented through the method&#xA;&lt;code>toString&lt;/code>, defined by &lt;code>Object&lt;/code> and&#xA;inherited by all classes in Java. For additional information on&#xA;string concatenation and conversion, see Gosling, Joy, and Steele,&#xA;&lt;i>The Java Language Specification&lt;/i>.&#xA;&#xA;&lt;p> Unless otherwise noted, passing a &lt;tt>null&lt;/tt> argument to a constructor&#xA;or method in this class will cause a {@link NullPointerException} to be&#xA;thrown.&#xA;&#xA;&lt;p>A &lt;code>String&lt;/code> represents a string in the UTF-16 format&#xA;in which &lt;em>supplementary characters&lt;/em> are represented by &lt;em>surrogate&#xA;pairs&lt;/em> (see the section &lt;a href=&quot;Character.html#unicode&quot;>Unicode&#xA;Character Representations&lt;/a> in the &lt;code>Character&lt;/code> class for&#xA;more information).&#xA;Index values refer to &lt;code>char&lt;/code> code units, so a supplementary&#xA;character uses two positions in a &lt;code>String&lt;/code>.&#xA;&lt;p>The &lt;code>String&lt;/code> class provides methods for dealing with&#xA;Unicode code points (i.e., characters), in addition to those for&#xA;dealing with Unicode code units (i.e., &lt;code>char&lt;/code> values).&#xA;&#xA;@author  Lee Boynton&#xA;@author  Arthur van Hoff&#xA;@version 1.187, 07/13/04&#xA;@see     java.lang.Object#toString()&#xA;@see     java.lang.StringBuffer&#xA;@see     java.lang.StringBuilder&#xA;@see     java.nio.charset.Charset&#xA;@since   JDK1.0&#xA;" annotatedElement="44c739ae-2460-4446-b06e-bab4190d37f4"/>
            <interfaceRealization xmi:id="966a046b-5166-4d38-844b-76593c1578b4" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="44c739ae-2460-4446-b06e-bab4190d37f4" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="ca3b1c4a-92cd-40b8-af75-a69c21cfbaac" name="" supplier="4cccc5db-a8b5-42ff-9c38-719555e42fad" client="44c739ae-2460-4446-b06e-bab4190d37f4" contract="4cccc5db-a8b5-42ff-9c38-719555e42fad"/>
            <interfaceRealization xmi:id="8373ccba-f52c-48ed-94cd-2f5d4aa9875e" name="" supplier="add26864-681f-4efa-930b-32e7f66a5186" client="44c739ae-2460-4446-b06e-bab4190d37f4" contract="add26864-681f-4efa-930b-32e7f66a5186"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="6a036a9f-c3c1-4e85-860c-c3f42c7da78d" name="CaseInsensitiveComparator" visibility="private" clientDependency="27b2217e-5202-4b4b-a307-c5cfa2aec38f 24987507-217b-4829-b1f7-1e507d1c618a">
              <interfaceRealization xmi:id="24987507-217b-4829-b1f7-1e507d1c618a" name="" supplier="18cfed24-cea3-4bff-9072-891060836bef" client="6a036a9f-c3c1-4e85-860c-c3f42c7da78d" contract="18cfed24-cea3-4bff-9072-891060836bef"/>
              <interfaceRealization xmi:id="27b2217e-5202-4b4b-a307-c5cfa2aec38f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="6a036a9f-c3c1-4e85-860c-c3f42c7da78d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d959f3bc-c660-4e4b-8e9b-a983e64e0db3" name="Terminator" visibility="package">
            <ownedComment xmi:id="e88f39f4-8608-495b-9f9c-87ac26ed48e4" body="Package-private utility class for setting up and tearing down&#xA;platform-specific support for termination-triggered shutdowns.&#xA;&#xA;@author   Mark Reinhold&#xA;@version  1.10, 03/12/19&#xA;@since    1.3&#xA;" annotatedElement="d959f3bc-c660-4e4b-8e9b-a983e64e0db3"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="807b9c5d-54cf-4e68-a28e-3b3e80ef640c" name="Integer" clientDependency="6d99ff17-ed0f-4da2-962a-cb11f041c3c3" isLeaf="true">
            <ownedComment xmi:id="080fce24-4753-4767-af26-ab4ffe8fcdbe" body="The &lt;code>Integer&lt;/code> class wraps a value of the primitive type&#xA;&lt;code>int&lt;/code> in an object. An object of type&#xA;&lt;code>Integer&lt;/code> contains a single field whose type is&#xA;&lt;code>int&lt;/code>.&#xA;&#xA;&lt;p>&#xA;&#xA;In addition, this class provides several methods for converting an&#xA;&lt;code>int&lt;/code> to a &lt;code>String&lt;/code> and a &lt;code>String&lt;/code>&#xA;to an &lt;code>int&lt;/code>, as well as other constants and methods&#xA;useful when dealing with an &lt;code>int&lt;/code>.&#xA;&#xA;&lt;p>Implementation note: The implementations of the &quot;bit twiddling&quot;&#xA;methods (such as {@link #highestOneBit(int) highestOneBit} and&#xA;{@link #numberOfTrailingZeros(int) numberOfTrailingZeros}) are&#xA;based on material from Henry S. Warren, Jr.'s &lt;i>Hacker's&#xA;Delight&lt;/i>, (Addison Wesley, 2002).&#xA;&#xA;@author  Lee Boynton&#xA;@author  Arthur van Hoff&#xA;@author  Josh Bloch&#xA;@version 1.90, 05/11/04&#xA;@since JDK1.0&#xA;" annotatedElement="807b9c5d-54cf-4e68-a28e-3b3e80ef640c"/>
            <generalization xmi:id="46ed72a4-e613-4dff-bfea-19409734f7dd" isSubstitutable="true" general="86595613-8e64-4702-a472-32dc7405cc46"/>
            <interfaceRealization xmi:id="6d99ff17-ed0f-4da2-962a-cb11f041c3c3" name="" supplier="60eda21c-20d2-4528-9510-2202adff7695" client="807b9c5d-54cf-4e68-a28e-3b3e80ef640c" contract="60eda21c-20d2-4528-9510-2202adff7695"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="3a034982-cbe4-4f71-bc9e-ac39e444be9f" name="IntegerCache" visibility="private"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="60eda21c-20d2-4528-9510-2202adff7695" name="Comparable&lt;Integer>">
            <templateBinding xmi:id="46077551-cac3-48d7-8dcb-d286e1debf4e" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="008fec2c-c427-4bd1-bf32-a39226380689" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="807b9c5d-54cf-4e68-a28e-3b3e80ef640c"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f9e1d07d-a558-48c5-a45e-01540d385078" name="IllegalStateException">
            <ownedComment xmi:id="319f19d6-d50a-4ede-95e5-787ace1d6419" body="Signals that a method has been invoked at an illegal or&#xA;inappropriate time.  In other words, the Java environment or&#xA;Java application is not in an appropriate state for the requested&#xA;operation.&#xA;&#xA;@author  Jonni Kanerva&#xA;@version 1.15, 12/19/03&#xA;@since   JDK1.1&#xA;" annotatedElement="f9e1d07d-a558-48c5-a45e-01540d385078"/>
            <generalization xmi:id="a3a19105-ec65-458e-b07f-2b08beb5afe7" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="21ab1933-cf36-4fde-814f-36fc2dc42a88" name="Comparable" isAbstract="true">
            <ownedComment xmi:id="d9ba1645-861f-4901-8f3c-3bb51a5a1aa3" body="This interface imposes a total ordering on the objects of each class that&#xA;implements it.  This ordering is referred to as the class's &lt;i>natural&#xA;ordering&lt;/i>, and the class's &lt;tt>compareTo&lt;/tt> method is referred to as&#xA;its &lt;i>natural comparison method&lt;/i>.&lt;p>&#xA;&#xA;Lists (and arrays) of objects that implement this interface can be sorted&#xA;automatically by &lt;tt>Collections.sort&lt;/tt> (and &lt;tt>Arrays.sort&lt;/tt>).&#xA;Objects that implement this interface can be used as keys in a sorted map&#xA;or elements in a sorted set, without the need to specify a comparator.&lt;p>&#xA;&#xA;The natural ordering for a class &lt;tt>C&lt;/tt> is said to be &lt;i>consistent&#xA;with equals&lt;/i> if and only if &lt;tt>(e1.compareTo((Object)e2) == 0)&lt;/tt> has&#xA;the same boolean value as &lt;tt>e1.equals((Object)e2)&lt;/tt> for every&#xA;&lt;tt>e1&lt;/tt> and &lt;tt>e2&lt;/tt> of class &lt;tt>C&lt;/tt>.  Note that &lt;tt>null&lt;/tt>&#xA;is not an instance of any class, and &lt;tt>e.compareTo(null)&lt;/tt> should&#xA;throw a &lt;tt>NullPointerException&lt;/tt> even though &lt;tt>e.equals(null)&lt;/tt>&#xA;returns &lt;tt>false&lt;/tt>.&lt;p>&#xA;&#xA;It is strongly recommended (though not required) that natural orderings be&#xA;consistent with equals.  This is so because sorted sets (and sorted maps)&#xA;without explicit comparators behave &quot;strangely&quot; when they are used with&#xA;elements (or keys) whose natural ordering is inconsistent with equals.  In&#xA;particular, such a sorted set (or sorted map) violates the general contract&#xA;for set (or map), which is defined in terms of the &lt;tt>equals&lt;/tt>&#xA;method.&lt;p>&#xA;&#xA;For example, if one adds two keys &lt;tt>a&lt;/tt> and &lt;tt>b&lt;/tt> such that&#xA;&lt;tt>(!a.equals((Object)b) &amp;&amp; a.compareTo((Object)b) == 0)&lt;/tt> to a sorted&#xA;set that does not use an explicit comparator, the second &lt;tt>add&lt;/tt>&#xA;operation returns false (and the size of the sorted set does not increase)&#xA;because &lt;tt>a&lt;/tt> and &lt;tt>b&lt;/tt> are equivalent from the sorted set's&#xA;perspective.&lt;p>&#xA;&#xA;Virtually all Java core classes that implement comparable have natural&#xA;orderings that are consistent with equals.  One exception is&#xA;&lt;tt>java.math.BigDecimal&lt;/tt>, whose natural ordering equates&#xA;&lt;tt>BigDecimal&lt;/tt> objects with equal values and different precisions&#xA;(such as 4.0 and 4.00).&lt;p>&#xA;&#xA;For the mathematically inclined, the &lt;i>relation&lt;/i> that defines&#xA;the natural ordering on a given class C is:&lt;pre>&#xA;{(x, y) such that x.compareTo((Object)y) &lt;= 0}.&#xA;&lt;/pre> The &lt;i>quotient&lt;/i> for this total order is: &lt;pre>&#xA;{(x, y) such that x.compareTo((Object)y) == 0}.&#xA;&lt;/pre>&#xA;&#xA;It follows immediately from the contract for &lt;tt>compareTo&lt;/tt> that the&#xA;quotient is an &lt;i>equivalence relation&lt;/i> on &lt;tt>C&lt;/tt>, and that the&#xA;natural ordering is a &lt;i>total order&lt;/i> on &lt;tt>C&lt;/tt>.  When we say that a&#xA;class's natural ordering is &lt;i>consistent with equals&lt;/i>, we mean that the&#xA;quotient for the natural ordering is the equivalence relation defined by&#xA;the class's &lt;tt>equals(Object)&lt;/tt> method:&lt;pre>&#xA;{(x, y) such that x.equals((Object)y)}.&#xA;&lt;/pre>&lt;p>&#xA;&#xA;This interface is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.22, 12/19/03&#xA;@see java.util.Comparator&#xA;@see java.util.Collections#sort(java.util.List)&#xA;@see java.util.Arrays#sort(Object[])&#xA;@see java.util.SortedSet&#xA;@see java.util.SortedMap&#xA;@see java.util.TreeSet&#xA;@see java.util.TreeMap&#xA;@since 1.2&#xA;" annotatedElement="21ab1933-cf36-4fde-814f-36fc2dc42a88"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9" name="" parameter="e7a6699c-c87d-47b5-a068-dc2f3a0244ad">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" parameteredElement="0712bbbe-0288-41cc-b0c2-713a22330672">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="0712bbbe-0288-41cc-b0c2-713a22330672" name="T" templateParameter="e7a6699c-c87d-47b5-a068-dc2f3a0244ad"/>
              </ownedParameter>
            </ownedTemplateSignature>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d409c2fc-a013-4c42-a64a-8baa30574da2" name="SystemClassLoaderAction" visibility="package" clientDependency="385eb019-8026-4d06-86ac-8f11a4d25866">
            <interfaceRealization xmi:id="385eb019-8026-4d06-86ac-8f11a4d25866" name="" supplier="8b2ccfb2-c497-4b3f-92b1-3a2f7b7eb727" client="d409c2fc-a013-4c42-a64a-8baa30574da2" contract="8b2ccfb2-c497-4b3f-92b1-3a2f7b7eb727"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="aa4c0dc8-ae39-431a-8882-6eda91d39b46" name="ClassCircularityError">
            <ownedComment xmi:id="516e00f5-88d4-4405-8b6a-a7c35248f891" body="Thrown when a circularity has been detected while initializing a class.&#xA;&#xA;@author     unascribed&#xA;@version    1.15, 12/19/03&#xA;@since      JDK1.0&#xA;" annotatedElement="aa4c0dc8-ae39-431a-8882-6eda91d39b46"/>
            <generalization xmi:id="72a9ed4d-f466-40f3-ac3a-38d87d76c90b" isSubstitutable="true" general="e5822ec6-ac2b-4107-8ac1-afc07f2ea5fa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="73f38a63-ea3f-414b-9fe4-6cd53ec01bca" name="Process" isAbstract="true">
            <ownedComment xmi:id="3e5ca530-8cfc-4257-818d-3cf7dfa27dc6" body="The {@link ProcessBuilder#start()} and&#xA;{@link Runtime#exec(String[],String[],File) Runtime.exec}&#xA;methods create a native process and&#xA;return an instance of a subclass of &lt;code>Process&lt;/code> that can&#xA;be used to control the process and obtain information about it.&#xA;The class &lt;code>Process&lt;/code> provides methods for performing&#xA;input from the process, performing output to the process, waiting&#xA;for the process to complete, checking the exit status of the process,&#xA;and destroying (killing) the process.&#xA;&#xA;&lt;p>&#xA;The methods that create processes may not work well for special&#xA;processes on certain native platforms, such as native windowing&#xA;processes, daemon processes, Win16/DOS processes on Microsoft Windows, or shell&#xA;scripts. The created subprocess does not have its own terminal or&#xA;console. All its standard io (i.e. stdin, stdout, stderr)  operations&#xA;will be redirected to the parent process through three streams&#xA;({@link #getOutputStream()},&#xA;{@link #getInputStream()},&#xA;{@link #getErrorStream()}).&#xA;The parent process uses these streams to feed input to and get output&#xA;from the subprocess. Because some native platforms only provide&#xA;limited buffer size for standard input and output streams, failure&#xA;to promptly write the input stream or read the output stream of&#xA;the subprocess may cause the subprocess to block, and even deadlock.&#xA;&#xA;&lt;p>&#xA;The subprocess is not killed when there are no more references to&#xA;the &lt;code>Process&lt;/code> object, but rather the subprocess&#xA;continues executing asynchronously.&#xA;&#xA;&lt;p>&#xA;There is no requirement that a process represented by a &lt;code>Process&lt;/code>&#xA;object execute asynchronously or concurrently with respect to the Java&#xA;process that owns the &lt;code>Process&lt;/code> object.&#xA;&#xA;@author  unascribed&#xA;@version 1.23, 12/19/03&#xA;@see     ProcessBuilder&#xA;@see     Runtime#exec(String[], String[], File)&#xA;@since   JDK1.0&#xA;" annotatedElement="73f38a63-ea3f-414b-9fe4-6cd53ec01bca"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="c734f34d-c352-45bd-b6b8-d1bb26e1816a" name="applet">
          <packagedElement xmi:type="uml:Class" xmi:id="b6026033-1e31-4022-b1ec-911620291ec8" name="Applet">
            <ownedComment xmi:id="19405e0e-1ce4-46f1-87d6-d87161de2b8b" body="An applet is a small program that is intended not to be run on&#xA;its own, but rather to be embedded inside another application.&#xA;&lt;p>&#xA;The &lt;code>Applet&lt;/code> class must be the superclass of any&#xA;applet that is to be embedded in a Web page or viewed by the Java&#xA;Applet Viewer. The &lt;code>Applet&lt;/code> class provides a standard&#xA;interface between applets and their environment.&#xA;&#xA;@author      Arthur van Hoff&#xA;@author      Chris Warth&#xA;@version     1.77, 06/22/04&#xA;@since       JDK1.0&#xA;" annotatedElement="b6026033-1e31-4022-b1ec-911620291ec8"/>
            <generalization xmi:id="10837323-a7e5-4629-b544-be796d237599" isSubstitutable="true" general="d9f51440-30a3-4b62-86a6-d62af160757e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="71a30111-a3d9-4418-b0dd-53ed2c74486e" name="AccessibleApplet" visibility="protected">
              <ownedComment xmi:id="98e8e6bc-b869-412f-bdd2-ea9d549da45a" body="This class implements accessibility support for the&#xA;&lt;code>Applet&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to applet user-interface elements.&#xA;" annotatedElement="71a30111-a3d9-4418-b0dd-53ed2c74486e"/>
              <generalization xmi:id="11f3b0cb-2718-419c-a5bc-d7e98eed1925" isSubstitutable="true" general="09f74687-6bd3-47b9-989f-158513e653fa"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="76444418-4e6d-4fba-86db-3a7de3acddf2" name="AudioClip" isAbstract="true">
            <ownedComment xmi:id="0d12a4b7-35a7-429b-8807-649e6f90de39" body="The &lt;code>AudioClip&lt;/code> interface is a simple abstraction for&#xA;playing a sound clip. Multiple &lt;code>AudioClip&lt;/code> items can be&#xA;playing at the same time, and the resulting sound is mixed&#xA;together to produce a composite.&#xA;&#xA;@author &#x9;Arthur van Hoff&#xA;@version     1.18, 12/19/03&#xA;@since       JDK1.0&#xA;" annotatedElement="76444418-4e6d-4fba-86db-3a7de3acddf2"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="ae477b1e-fc3c-4818-addf-77142b11d2ea" name="AppletStub" isAbstract="true">
            <ownedComment xmi:id="a25bd900-ddf5-45a6-bc93-6eadfead8371" body="When an applet is first created, an applet stub is attached to it&#xA;using the applet's &lt;code>setStub&lt;/code> method. This stub&#xA;serves as the interface between the applet and the browser&#xA;environment or applet viewer environment in which the application&#xA;is running.&#xA;&#xA;@author &#x9;Arthur van Hoff&#xA;@version     1.25, 12/19/03&#xA;@see         java.applet.Applet#setStub(java.applet.AppletStub)&#xA;@since       JDK1.0&#xA;" annotatedElement="ae477b1e-fc3c-4818-addf-77142b11d2ea"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="3b4b5b2c-5595-4bdc-9d04-586b5abd5fd8" name="AppletContext" isAbstract="true">
            <ownedComment xmi:id="2e191115-ffce-46c3-b7f7-3b20f5249f59" body="This interface corresponds to an applet's environment: the&#xA;document containing the applet and the other applets in the same&#xA;document.&#xA;&lt;p>&#xA;The methods in this interface can be used by an applet to obtain&#xA;information about its environment.&#xA;&#xA;@author &#x9;Arthur van Hoff&#xA;@version     1.31, 05/05/04&#xA;@since       JDK1.0&#xA;" annotatedElement="3b4b5b2c-5595-4bdc-9d04-586b5abd5fd8"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="3b2cff7f-b611-42c9-bfee-420a77856847" name="net">
          <packagedElement xmi:type="uml:Class" xmi:id="bc439e88-3738-4435-b173-35042501472b" name="SecureCacheResponse" isAbstract="true">
            <ownedComment xmi:id="1fbcab12-b957-4337-8b46-1be495ae5159" body="Represents a cache response originally retrieved through secure&#xA;means, such as TLS.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="bc439e88-3738-4435-b173-35042501472b"/>
            <generalization xmi:id="31f1a885-7c64-47c5-86a8-e5c52e52729a" isSubstitutable="true" general="0f92310c-e5b9-4a83-9228-dfceda7d41be"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e96ee959-4887-4483-9cfd-0a15ea1cd4a5" name="URISyntaxException">
            <ownedComment xmi:id="311a9b64-0953-46e8-b848-87f2d184d3bf" body="Checked exception thrown to indicate that a string could not be parsed as a&#xA;URI reference.&#xA;&#xA;@author Mark Reinhold&#xA;@version 1.5, 03/12/19&#xA;@see URI&#xA;" annotatedElement="e96ee959-4887-4483-9cfd-0a15ea1cd4a5"/>
            <generalization xmi:id="e68234c3-3d32-4cc7-a8f3-ef52511f96ee" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="28da0d6f-6db1-40ab-8475-99b23d190199" name="ProxySelector" isAbstract="true">
            <ownedComment xmi:id="4ac1b233-5db4-48b5-9ba2-968a4a06585f" body="Selects the proxy server to use, if any, when connecting to the&#xA;network resource referenced by a URL. A proxy selector is a&#xA;concrete sub-class of this class and is registered by invoking the&#xA;{@link java.net.ProxySelector#setDefault setDefault} method. The&#xA;currently registered proxy selector can be retrieved by calling&#xA;{@link java.net.ProxySelector#getDefault getDefault} method.&#xA;&#xA;&lt;p> When a proxy selector is registered, for instance, a subclass&#xA;of URLConnection class should call the {@link #select select}&#xA;method for each URL request so that the proxy selector can decide&#xA;if a direct, or proxied connection should be used. The {@link&#xA;#select select} method returns an iterator over a collection with&#xA;the preferred connection approach.&#xA;&#xA;&lt;p> If a connection cannot be established to a proxy (PROXY or&#xA;SOCKS) servers then the caller should call the proxy selector's&#xA;{@link #connectFailed connectFailed} method to notify the proxy&#xA;selector that the proxy server is unavailable. &lt;/p>&#xA;&#xA;@version 1.3, 03/08/09&#xA;@author Yingxian Wang&#xA;@author Jean-Christophe Collet&#xA;@since 1.5&#xA;" annotatedElement="28da0d6f-6db1-40ab-8475-99b23d190199"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="48924da9-e691-429d-b495-c9aa8650c7cb" name="ConnectException">
            <ownedComment xmi:id="4f776154-e830-4f99-a0f6-a16993c46db7" body="Signals that an error occurred while attempting to connect a&#xA;socket to a remote address and port.  Typically, the connection&#xA;was refused remotely (e.g., no process is listening on the&#xA;remote address/port).&#xA;&#xA;@since   JDK1.1&#xA;" annotatedElement="48924da9-e691-429d-b495-c9aa8650c7cb"/>
            <generalization xmi:id="099b271f-d657-4e97-b05d-eb616b4e0d1b" isSubstitutable="true" general="5a3b0f1f-48e7-4ea6-8052-1a4cb8b122a9"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="aa60ebb1-408c-4482-bf83-242d64014527" name="Inet6AddressImpl" visibility="package" clientDependency="1f59f793-182d-4a8f-9228-b0950fbabacb">
            <interfaceRealization xmi:id="1f59f793-182d-4a8f-9228-b0950fbabacb" name="" supplier="5b6e6a50-54fd-4eae-a5ec-466a005d706f" client="aa60ebb1-408c-4482-bf83-242d64014527" contract="5b6e6a50-54fd-4eae-a5ec-466a005d706f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="f001662a-a8ac-47c9-a5a6-859434065fdd" name="SocksConsts" visibility="package" isAbstract="true">
            <ownedComment xmi:id="6dd62f3f-c22b-4591-94fc-7909562f2922" body="Constants used by the SOCKS protocol implementation.&#xA;" annotatedElement="f001662a-a8ac-47c9-a5a6-859434065fdd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="83edfca8-826f-4856-a3cc-e0fef6b067b8" name="SocksSocketImplFactory" visibility="package"/>
          <packagedElement xmi:type="uml:Interface" xmi:id="882d40c6-5259-4b0c-9f2b-4d33092bb993" name="URLStreamHandlerFactory" isAbstract="true">
            <ownedComment xmi:id="c17f5cfd-3bd8-4a87-8c1e-dbe0c650aed4" body="This interface defines a factory for &lt;code>URL&lt;/code> stream&#xA;protocol handlers.&#xA;&lt;p>&#xA;It is used by the &lt;code>URL&lt;/code> class to create a&#xA;&lt;code>URLStreamHandler&lt;/code> for a specific protocol.&#xA;&#xA;@author  Arthur van Hoff&#xA;@version 1.18, 12/19/03&#xA;@see     java.net.URL&#xA;@see     java.net.URLStreamHandler&#xA;@since   JDK1.0&#xA;" annotatedElement="882d40c6-5259-4b0c-9f2b-4d33092bb993"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5a3b0f1f-48e7-4ea6-8052-1a4cb8b122a9" name="SocketException">
            <ownedComment xmi:id="3c46a3d4-91f8-4caf-bc52-e220b579be62" body="Thrown to indicate that there is an error in the underlying&#xA;protocol, such as a TCP error.&#xA;&#xA;@author  Jonathan Payne&#xA;@version 1.17, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="5a3b0f1f-48e7-4ea6-8052-1a4cb8b122a9"/>
            <generalization xmi:id="8cf1ef9c-667a-4f24-a707-162681888532" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d5bdd0a7-2047-484c-b4bc-6a7b3f9d7474" name="SocketAddress" clientDependency="9079e52d-694d-45b0-b8eb-4df5bc7a52b9" isAbstract="true">
            <ownedComment xmi:id="5a54a30c-61c7-4549-b7f9-f554796922c8" body="This class represents a Socket Address with no protocol attachment.&#xA;As an abstract class, it is meant to be subclassed with a specific,&#xA;protocol dependent, implementation.&#xA;&lt;p>&#xA;It provides an immutable object used by sockets for binding, connecting, or&#xA;as returned values.&#xA;&#xA;@see&#x9;java.net.Socket&#xA;@see&#x9;java.net.ServerSocket&#xA;@since 1.4&#xA;" annotatedElement="d5bdd0a7-2047-484c-b4bc-6a7b3f9d7474"/>
            <interfaceRealization xmi:id="9079e52d-694d-45b0-b8eb-4df5bc7a52b9" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="d5bdd0a7-2047-484c-b4bc-6a7b3f9d7474" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4bdfe9a4-a3df-401e-bbc0-c67af6471e35" name="InetAddressImplFactory" visibility="package"/>
          <packagedElement xmi:type="uml:Class" xmi:id="079381b1-c856-4c56-afb2-2e0edf89d3fb" name="URLEncoder">
            <ownedComment xmi:id="38ebfd25-931d-4631-97c9-4463627c1cdf" body="Utility class for HTML form encoding. This class contains static methods&#xA;for converting a String to the &lt;CODE>application/x-www-form-urlencoded&lt;/CODE> MIME&#xA;format. For more information about HTML form encoding, consult the HTML&#xA;&lt;A HREF=&quot;http://www.w3.org/TR/html4/&quot;>specification&lt;/A>.&#xA;&#xA;&lt;p>&#xA;When encoding a String, the following rules apply:&#xA;&#xA;&lt;p>&#xA;&lt;ul>&#xA;&lt;li>The alphanumeric characters &quot;&lt;code>a&lt;/code>&quot; through&#xA;&quot;&lt;code>z&lt;/code>&quot;, &quot;&lt;code>A&lt;/code>&quot; through&#xA;&quot;&lt;code>Z&lt;/code>&quot; and &quot;&lt;code>0&lt;/code>&quot;&#xA;through &quot;&lt;code>9&lt;/code>&quot; remain the same.&#xA;&lt;li>The special characters &quot;&lt;code>.&lt;/code>&quot;,&#xA;&quot;&lt;code>-&lt;/code>&quot;, &quot;&lt;code>*&lt;/code>&quot;, and&#xA;&quot;&lt;code>_&lt;/code>&quot; remain the same.&#xA;&lt;li>The space character &quot;&lt;code>&amp;nbsp;&lt;/code>&quot; is&#xA;converted into a plus sign &quot;&lt;code>+&lt;/code>&quot;.&#xA;&lt;li>All other characters are unsafe and are first converted into&#xA;one or more bytes using some encoding scheme. Then each byte is&#xA;represented by the 3-character string&#xA;&quot;&lt;code>%&lt;i>xy&lt;/i>&lt;/code>&quot;, where &lt;i>xy&lt;/i> is the&#xA;two-digit hexadecimal representation of the byte.&#xA;The recommended encoding scheme to use is UTF-8. However,&#xA;for compatibility reasons, if an encoding is not specified,&#xA;then the default encoding of the platform is used.&#xA;&lt;/ul>&#xA;&#xA;&lt;p>&#xA;For example using UTF-8 as the encoding scheme the string &quot;The&#xA;string &amp;#252;@foo-bar&quot; would get converted to&#xA;&quot;The+string+%C3%BC%40foo-bar&quot; because in UTF-8 the character&#xA;&amp;#252; is encoded as two bytes C3 (hex) and BC (hex), and the&#xA;character @ is encoded as one byte 40 (hex).&#xA;&#xA;@author  Herb Jellinek&#xA;@version 1.30, 05/18/04&#xA;@since   JDK1.0&#xA;" annotatedElement="079381b1-c856-4c56-afb2-2e0edf89d3fb"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="cd5f3088-0c62-4a58-b926-99086e5a2604" name="DatagramSocketImpl" clientDependency="dc6c89ab-7a0d-4546-bd1b-95ee9fcd053a" isAbstract="true">
            <ownedComment xmi:id="8145e2a4-cc81-4078-8788-150abe29c426" body="Abstract datagram and multicast socket implementation base class.&#xA;@author Pavani Diwanji&#xA;@since  JDK1.1&#xA;" annotatedElement="cd5f3088-0c62-4a58-b926-99086e5a2604"/>
            <interfaceRealization xmi:id="dc6c89ab-7a0d-4546-bd1b-95ee9fcd053a" name="" supplier="7c5d7307-d3dd-4c9f-ac2a-5d5d1eaa813e" client="cd5f3088-0c62-4a58-b926-99086e5a2604" contract="7c5d7307-d3dd-4c9f-ac2a-5d5d1eaa813e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d16e0c58-355a-4af3-ab86-3f8136b65eaf" name="NetPermission" isLeaf="true">
            <ownedComment xmi:id="51918f14-9107-4130-a902-5e86d3e2d759" body="This class is for various network permissions.&#xA;A NetPermission contains a name (also referred to as a &quot;target name&quot;) but&#xA;no actions list; you either have the named permission&#xA;or you don't.&#xA;&lt;P>&#xA;The target name is the name of the network permission (see below). The naming&#xA;convention follows the  hierarchical property naming convention.&#xA;Also, an asterisk&#xA;may appear at the end of the name, following a &quot;.&quot;, or by itself, to&#xA;signify a wildcard match. For example: &quot;foo.*&quot; or &quot;*&quot; is valid,&#xA;&quot;*foo&quot; or &quot;a*b&quot; is not valid.&#xA;&lt;P>&#xA;The following table lists all the possible NetPermission target names,&#xA;and for each provides a description of what the permission allows&#xA;and a discussion of the risks of granting code the permission.&#xA;&lt;P>&#xA;&#xA;&lt;table border=1 cellpadding=5 summary=&quot;Permission target name, what the permission allows, and associated risks&quot;>&#xA;&lt;tr>&#xA;&lt;th>Permission Target Name&lt;/th>&#xA;&lt;th>What the Permission Allows&lt;/th>&#xA;&lt;th>Risks of Allowing this Permission&lt;/th>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>setDefaultAuthenticator&lt;/td>&#xA;&lt;td>The ability to set the&#xA;way authentication information is retrieved when&#xA;a proxy or HTTP server asks for authentication&lt;/td>&#xA;&lt;td>Malicious&#xA;code can set an authenticator that monitors and steals user&#xA;authentication input as it retrieves the input from the user.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>requestPasswordAuthentication&lt;/td>&#xA;&lt;td>The ability&#xA;to ask the authenticator registered with the system for&#xA;a password&lt;/td>&#xA;&lt;td>Malicious code may steal this password.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>specifyStreamHandler&lt;/td>&#xA;&lt;td>The ability&#xA;to specify a stream handler when constructing a URL&lt;/td>&#xA;&lt;td>Malicious code may create a URL with resources that it would&#xA;normally not have access to (like file:/foo/fum/), specifying a&#xA;stream handler that gets the actual bytes from someplace it does&#xA;have access to. Thus it might be able to trick the system into&#xA;creating a ProtectionDomain/CodeSource for a class even though&#xA;that class really didn't come from that location.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>setProxySelector&lt;/td>&#xA;&lt;td>The ability to set the proxy selector used to make decisions&#xA;on which proxies to use when making network connections.&lt;/td>&#xA;&lt;td>Malicious code can set a ProxySelector that directs network&#xA;traffic to an arbitrary network host.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>getProxySelector&lt;/td>&#xA;&lt;td>The ability to get the proxy selector used to make decisions&#xA;on which proxies to use when making network connections.&lt;/td>&#xA;&lt;td>Malicious code can get a ProxySelector to discover proxy&#xA;hosts and ports on internal networks, which could then become&#xA;targets for attack.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>setCookieHandler&lt;/td>&#xA;&lt;td>The ability to set the cookie handler that processes highly&#xA;security sensitive cookie information for an Http session.&lt;/td>&#xA;&lt;td>Malicious code can set a cookie handler to obtain access to&#xA;highly security sensitive cookie information. Some web servers&#xA;use cookies to save user private information such as access&#xA;control information, or to track user browsing habit.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>getCookieHandler&lt;/td>&#xA;&lt;td>The ability to get the cookie handler that processes highly&#xA;security sensitive cookie information for an Http session.&lt;/td>&#xA;&lt;td>Malicious code can get a cookie handler to obtain access to&#xA;highly security sensitive cookie information. Some web servers&#xA;use cookies to save user private information such as access&#xA;control information, or to track user browsing habit.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>setResponseCache&lt;/td>&#xA;&lt;td>The ability to set the response cache that provides access to&#xA;a local response cache.&lt;/td>&#xA;&lt;td>Malicious code getting access to the local response cache&#xA;could access security sensitive information, or create false&#xA;entries in the response cache.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>getResponseCache&lt;/td>&#xA;&lt;td>The ability to get the response cache that provides&#xA;access to a local response cache.&lt;/td>&#xA;&lt;td>Malicious code getting access to the local response cache&#xA;could access security sensitive information.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;/table>&#xA;&#xA;@see java.security.BasicPermission&#xA;@see java.security.Permission&#xA;@see java.security.Permissions&#xA;@see java.security.PermissionCollection&#xA;@see java.lang.SecurityManager&#xA;&#xA;@version 1.49 04/02/03&#xA;&#xA;@author Marianne Mueller&#xA;@author Roland Schemers&#xA;" annotatedElement="d16e0c58-355a-4af3-ab86-3f8136b65eaf"/>
            <generalization xmi:id="d9f6ee86-c472-4b24-be00-8ae2a6127970" isSubstitutable="true" general="4831e368-c670-40b4-87bd-a8a910a528fa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="edb22b7e-a568-4493-ae96-6d5b46a3d70b" name="Comparable&lt;URI>">
            <templateBinding xmi:id="7783f38c-8721-48c8-98ad-580b1ce22fe5" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="e16d53ff-8698-4559-9569-32479b562c91" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="dfa5855c-1a09-424d-b10c-c0b36ff170f3"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a8e5c6d6-a74e-4297-9b83-f6f144a48ac1" name="CookieHandler" isAbstract="true">
            <ownedComment xmi:id="74b6aee7-81ab-487a-b659-8a7d8ba5bdd0" body="A CookieHandler object provides a callback mechanism to hook up a&#xA;HTTP state management policy implementation into the HTTP protocol&#xA;handler. The HTTP state management mechanism specifies a way to&#xA;create a stateful session with HTTP requests and responses.&#xA;&#xA;&lt;p>A system-wide CookieHandler that to used by the HTTP protocol&#xA;handler can be registered by doing a&#xA;CookieHandler.setDefault(CookieHandler). The currently registered&#xA;CookieHandler can be retrieved by calling&#xA;CookieHandler.getDefault().&#xA;&#xA;For more information on HTTP state management, see &lt;a&#xA;href=&quot;http://www.ietf.org/rfc/rfc2965.txt&quot;&quot;>&lt;i>RFC&amp;nbsp;2965: HTTP&#xA;State Management Mechanism&lt;/i>&lt;/a>&#xA;&#xA;@version 1.4, 03/08/09&#xA;@author Yingxian Wang&#xA;@since 1.5&#xA;" annotatedElement="a8e5c6d6-a74e-4297-9b83-f6f144a48ac1"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="53c08c51-3675-4a58-9a6c-ee3edf0224c7" name="NoRouteToHostException">
            <ownedComment xmi:id="21351c8e-37cd-457e-b879-f690043dfc7b" body="Signals that an error occurred while attempting to connect a&#xA;socket to a remote address and port.  Typically, the remote&#xA;host cannot be reached because of an intervening firewall, or&#xA;if an intermediate router is down.&#xA;&#xA;@since   JDK1.1&#xA;" annotatedElement="53c08c51-3675-4a58-9a6c-ee3edf0224c7"/>
            <generalization xmi:id="31b75817-e539-4c3d-81df-bf1546c74b87" isSubstitutable="true" general="5a3b0f1f-48e7-4ea6-8052-1a4cb8b122a9"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3473905f-97eb-47cc-99b8-e4e3b5db8669" name="SocketPermission" clientDependency="26518659-9889-4d72-9522-555a158c90a5" isLeaf="true">
            <ownedComment xmi:id="493d8f55-a807-40e9-a20f-e6b6e9c5aaac" body="This class represents access to a network via sockets.&#xA;A SocketPermission consists of a&#xA;host specification and a set of &quot;actions&quot; specifying ways to&#xA;connect to that host. The host is specified as&#xA;&lt;pre>&#xA;host = (hostname | IPv4address | iPv6reference) [:portrange]&#xA;portrange = portnumber | -portnumber | portnumber-[portnumber]&#xA;&lt;/pre>&#xA;The host is expressed as a DNS name, as a numerical IP address,&#xA;or as &quot;localhost&quot; (for the local machine).&#xA;The wildcard &quot;*&quot; may be included once in a DNS name host&#xA;specification. If it is included, it must be in the leftmost&#xA;position, as in &quot;*.sun.com&quot;.&#xA;&lt;p>&#xA;The format of the IPv6reference should follow that specified in &lt;a&#xA;href=&quot;http://www.ietf.org/rfc/rfc2732.txt&quot;>&lt;i>RFC&amp;nbsp;2732: Format&#xA;for Literal IPv6 Addresses in URLs&lt;/i>&lt;/a>:&#xA;&lt;pre>&#xA;ipv6reference = &quot;[&quot; IPv6address &quot;]&quot;&#xA;&lt;/pre>&#xA;For example, you can construct a SocketPermission instance&#xA;as the following:&#xA;&lt;pre>&#xA;String hostAddress = inetaddress.getHostAddress();&#xA;if (inetaddress instanceof Inet6Address) {&#xA;sp = new SocketPermission(&quot;[&quot; + hostAddress + &quot;]:&quot; + port, action);&#xA;} else {&#xA;sp = new SocketPermission(hostAddress + &quot;:&quot; + port, action);&#xA;}&#xA;&lt;/pre>&#xA;or&#xA;&lt;pre>&#xA;String host = url.getHost();&#xA;sp = new SocketPermission(host + &quot;:&quot; + port, action);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;The &lt;A HREF=&quot;Inet6Address.html#lform&quot;>full uncompressed form&lt;/A> of&#xA;an IPv6 literal address is also valid.&#xA;&lt;p>&#xA;The port or portrange is optional. A port specification of the&#xA;form &quot;N-&quot;, where &lt;i>N&lt;/i> is a port number, signifies all ports&#xA;numbered &lt;i>N&lt;/i> and above, while a specification of the&#xA;form &quot;-N&quot; indicates all ports numbered &lt;i>N&lt;/i> and below.&#xA;&lt;p>&#xA;The possible ways to connect to the host are&#xA;&lt;pre>&#xA;accept&#xA;connect&#xA;listen&#xA;resolve&#xA;&lt;/pre>&#xA;The &quot;listen&quot; action is only meaningful when used with &quot;localhost&quot;.&#xA;The &quot;resolve&quot; action is implied when any of the other actions are present.&#xA;The action &quot;resolve&quot; refers to host/ip name service lookups.&#xA;&#xA;&lt;p>As an example of the creation and meaning of SocketPermissions,&#xA;note that if the following permission:&#xA;&#xA;&lt;pre>&#xA;p1 = new SocketPermission(&quot;puffin.eng.sun.com:7777&quot;, &quot;connect,accept&quot;);&#xA;&lt;/pre>&#xA;&#xA;is granted to some code, it allows that code to connect to port 7777 on&#xA;&lt;code>puffin.eng.sun.com&lt;/code>, and to accept connections on that port.&#xA;&#xA;&lt;p>Similarly, if the following permission:&#xA;&#xA;&lt;pre>&#xA;p1 = new SocketPermission(&quot;puffin.eng.sun.com:7777&quot;, &quot;connect,accept&quot;);&#xA;p2 = new SocketPermission(&quot;localhost:1024-&quot;, &quot;accept,connect,listen&quot;);&#xA;&lt;/pre>&#xA;&#xA;is granted to some code, it allows that code to&#xA;accept connections on, connect to, or listen on any port between&#xA;1024 and 65535 on the local host.&#xA;&#xA;&lt;p>Note: Granting code permission to accept or make connections to remote&#xA;hosts may be dangerous because malevolent code can then more easily&#xA;transfer and share confidential data among parties who may not&#xA;otherwise have access to the data.&#xA;&#xA;@see java.security.Permissions&#xA;@see SocketPermission&#xA;&#xA;@version 1.59 04/02/12&#xA;&#xA;@author Marianne Mueller&#xA;@author Roland Schemers&#xA;&#xA;@serial exclude&#xA;" annotatedElement="3473905f-97eb-47cc-99b8-e4e3b5db8669"/>
            <generalization xmi:id="e6ccd6ed-34f6-436c-8520-a0d46e86b268" isSubstitutable="true" general="d9c6788c-6eda-4930-93b7-34c95c7c74cc"/>
            <interfaceRealization xmi:id="26518659-9889-4d72-9522-555a158c90a5" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="3473905f-97eb-47cc-99b8-e4e3b5db8669" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ec592d8c-3b54-4893-8bd2-b34e54f1f8f0" name="URLConnection" isAbstract="true">
            <ownedComment xmi:id="1d6fba86-5039-4c0e-9b40-0307c0be10a7" body="The abstract class &lt;code>URLConnection&lt;/code> is the superclass&#xA;of all classes that represent a communications link between the&#xA;application and a URL. Instances of this class can be used both to&#xA;read from and to write to the resource referenced by the URL. In&#xA;general, creating a connection to a URL is a multistep process:&#xA;&lt;p>&#xA;&lt;center>&lt;table border=2 summary=&quot;Describes the process of creating a connection to a URL: openConnection() and connect() over time.&quot;>&#xA;&lt;tr>&lt;th>&lt;code>openConnection()&lt;/code>&lt;/th>&#xA;&lt;th>&lt;code>connect()&lt;/code>&lt;/th>&lt;/tr>&#xA;&lt;tr>&lt;td>Manipulate parameters that affect the connection to the remote&#xA;resource.&lt;/td>&#xA;&lt;td>Interact with the resource; query header fields and&#xA;contents.&lt;/td>&lt;/tr>&#xA;&lt;/table>&#xA;---------------------------->&#xA;&lt;br>time&lt;/center>&#xA;&#xA;&lt;ol>&#xA;&lt;li>The connection object is created by invoking the&#xA;&lt;code>openConnection&lt;/code> method on a URL.&#xA;&lt;li>The setup parameters and general request properties are manipulated.&#xA;&lt;li>The actual connection to the remote object is made, using the&#xA;&lt;code>connect&lt;/code> method.&#xA;&lt;li>The remote object becomes available. The header fields and the contents&#xA;of the remote object can be accessed.&#xA;&lt;/ol>&#xA;&lt;p>&#xA;The setup parameters are modified using the following methods:&#xA;&lt;ul>&#xA;&lt;li>&lt;code>setAllowUserInteraction&lt;/code>&#xA;&lt;li>&lt;code>setDoInput&lt;/code>&#xA;&lt;li>&lt;code>setDoOutput&lt;/code>&#xA;&lt;li>&lt;code>setIfModifiedSince&lt;/code>&#xA;&lt;li>&lt;code>setUseCaches&lt;/code>&#xA;&lt;/ul>&#xA;&lt;p>&#xA;and the general request properties are modified using the method:&#xA;&lt;ul>&#xA;&lt;li>&lt;code>setRequestProperty&lt;/code>&#xA;&lt;/ul>&#xA;&lt;p>&#xA;Default values for the &lt;code>AllowUserInteraction&lt;/code> and&#xA;&lt;code>UseCaches&lt;/code> parameters can be set using the methods&#xA;&lt;code>setDefaultAllowUserInteraction&lt;/code> and&#xA;&lt;code>setDefaultUseCaches&lt;/code>.&#xA;&lt;p>&#xA;Each of the above &lt;code>set&lt;/code> methods has a corresponding&#xA;&lt;code>get&lt;/code> method to retrieve the value of the parameter or&#xA;general request property. The specific parameters and general&#xA;request properties that are applicable are protocol specific.&#xA;&lt;p>&#xA;The following methods are used to access the header fields and&#xA;the contents after the connection is made to the remote object:&#xA;&lt;ul>&#xA;&lt;li>&lt;code>getContent&lt;/code>&#xA;&lt;li>&lt;code>getHeaderField&lt;/code>&#xA;&lt;li>&lt;code>getInputStream&lt;/code>&#xA;&lt;li>&lt;code>getOutputStream&lt;/code>&#xA;&lt;/ul>&#xA;&lt;p>&#xA;Certain header fields are accessed frequently. The methods:&#xA;&lt;ul>&#xA;&lt;li>&lt;code>getContentEncoding&lt;/code>&#xA;&lt;li>&lt;code>getContentLength&lt;/code>&#xA;&lt;li>&lt;code>getContentType&lt;/code>&#xA;&lt;li>&lt;code>getDate&lt;/code>&#xA;&lt;li>&lt;code>getExpiration&lt;/code>&#xA;&lt;li>&lt;code>getLastModifed&lt;/code>&#xA;&lt;/ul>&#xA;&lt;p>&#xA;provide convenient access to these fields. The&#xA;&lt;code>getContentType&lt;/code> method is used by the&#xA;&lt;code>getContent&lt;/code> method to determine the type of the remote&#xA;object; subclasses may find it convenient to override the&#xA;&lt;code>getContentType&lt;/code> method.&#xA;&lt;p>&#xA;In the common case, all of the pre-connection parameters and&#xA;general request properties can be ignored: the pre-connection&#xA;parameters and request properties default to sensible values. For&#xA;most clients of this interface, there are only two interesting&#xA;methods: &lt;code>getInputStream&lt;/code> and &lt;code>getContent&lt;/code>,&#xA;which are mirrored in the &lt;code>URL&lt;/code> class by convenience methods.&#xA;&lt;p>&#xA;More information on the request properties and header fields of&#xA;an &lt;code>http&lt;/code> connection can be found at:&#xA;&lt;blockquote>&lt;pre>&#xA;&lt;a href=&quot;http://www.ietf.org/rfc/rfc2068.txt&quot;>http://www.ietf.org/rfc/rfc2068.txt&lt;/a>&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;Note about &lt;code>fileNameMap&lt;/code>: In versions prior to JDK 1.1.6,&#xA;field &lt;code>fileNameMap&lt;/code> of &lt;code>URLConnection&lt;/code> was public.&#xA;In JDK 1.1.6 and later, &lt;code>fileNameMap&lt;/code> is private; accessor&#xA;and mutator methods {@link #getFileNameMap() getFileNameMap} and&#xA;{@link #setFileNameMap(java.net.FileNameMap) setFileNameMap} are added&#xA;to access it.  This change is also described on the &lt;a href=&#xA;&quot;http://java.sun.com/products/jdk/1.2/compatibility.html#incompatibilities1.2&quot;>&#xA;Compatibility&lt;/a> page.&#xA;&#xA;Invoking the &lt;tt>close()&lt;/tt> methods on the &lt;tt>InputStream&lt;/tt> or &lt;tt>OutputStream&lt;/tt> of an&#xA;&lt;tt>URLConnection&lt;/tt> after a request may free network resources associated with this&#xA;instance, unless particular protocol specifications specify different behaviours&#xA;for it.&#xA;&#xA;@author  James Gosling&#xA;@version 1.102, 05/18/04&#xA;@see     java.net.URL#openConnection()&#xA;@see     java.net.URLConnection#connect()&#xA;@see     java.net.URLConnection#getContent()&#xA;@see     java.net.URLConnection#getContentEncoding()&#xA;@see     java.net.URLConnection#getContentLength()&#xA;@see     java.net.URLConnection#getContentType()&#xA;@see     java.net.URLConnection#getDate()&#xA;@see     java.net.URLConnection#getExpiration()&#xA;@see     java.net.URLConnection#getHeaderField(int)&#xA;@see     java.net.URLConnection#getHeaderField(java.lang.String)&#xA;@see     java.net.URLConnection#getInputStream()&#xA;@see     java.net.URLConnection#getLastModified()&#xA;@see     java.net.URLConnection#getOutputStream()&#xA;@see     java.net.URLConnection#setAllowUserInteraction(boolean)&#xA;@see     java.net.URLConnection#setDefaultUseCaches(boolean)&#xA;@see     java.net.URLConnection#setDoInput(boolean)&#xA;@see     java.net.URLConnection#setDoOutput(boolean)&#xA;@see     java.net.URLConnection#setIfModifiedSince(long)&#xA;@see     java.net.URLConnection#setRequestProperty(java.lang.String, java.lang.String)&#xA;@see     java.net.URLConnection#setUseCaches(boolean)&#xA;@since   JDK1.0&#xA;" annotatedElement="ec592d8c-3b54-4893-8bd2-b34e54f1f8f0"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="bfc1771a-ac19-489c-94c2-488ea3e93a6d" name="UnknownContentHandler" visibility="package">
            <generalization xmi:id="5dabd2b0-7966-4b6e-9546-1fedab525877" isSubstitutable="true" general="b67ca17d-5daf-44f5-a92d-f68f60186b85"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="126775f7-4643-4e55-a25d-1a8f16121763" name="UnknownHostException">
            <ownedComment xmi:id="a014f5e4-9d64-4374-800f-f2652f8102f0" body="Thrown to indicate that the IP address of a host could not be determined.&#xA;&#xA;@author  Jonathan Payne&#xA;@version 1.15, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="126775f7-4643-4e55-a25d-1a8f16121763"/>
            <generalization xmi:id="6f650bbe-01fd-4f30-ac6f-4936967ee36b" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7a280405-5112-48b3-abfe-ceb95436e8ec" name="ServerSocket">
            <ownedComment xmi:id="309c6fc9-65d5-437e-9b0a-16520f3ae870" body="This class implements server sockets. A server socket waits for&#xA;requests to come in over the network. It performs some operation&#xA;based on that request, and then possibly returns a result to the requester.&#xA;&lt;p>&#xA;The actual work of the server socket is performed by an instance&#xA;of the &lt;code>SocketImpl&lt;/code> class. An application can&#xA;change the socket factory that creates the socket&#xA;implementation to configure itself to create sockets&#xA;appropriate to the local firewall.&#xA;&#xA;@author  unascribed&#xA;@version 1.86, 05/24/04&#xA;@see     java.net.SocketImpl&#xA;@see     java.net.ServerSocket#setSocketFactory(java.net.SocketImplFactory)&#xA;@see     java.nio.channels.ServerSocketChannel&#xA;@since   JDK1.0&#xA;" annotatedElement="7a280405-5112-48b3-abfe-ceb95436e8ec"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="15915160-a831-4a91-aef5-c4745cc6b797" name="PlainDatagramSocketImpl" visibility="package">
            <ownedComment xmi:id="85cc631a-a670-4463-8f8e-90dbab840634" body="Concrete datagram and multicast socket implementation base class.&#xA;Note: This is not a public class, so that applets cannot call&#xA;into the implementation directly and hence cannot bypass the&#xA;security checks present in the DatagramSocket and MulticastSocket&#xA;classes.&#xA;&#xA;@author Pavani Diwanji&#xA;" annotatedElement="15915160-a831-4a91-aef5-c4745cc6b797"/>
            <generalization xmi:id="391d5820-66aa-44bc-8ba0-585e8c5300be" isSubstitutable="true" general="cd5f3088-0c62-4a58-b926-99086e5a2604"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6265c9ea-53bd-4c7d-943d-7c8d074d17b3" name="SocketInputStream" visibility="package">
            <ownedComment xmi:id="2ca17c47-646e-4af9-981c-29d36a0bff03" body="This stream extends FileInputStream to implement a&#xA;SocketInputStream. Note that this class should &lt;b>NOT&lt;/b> be&#xA;public.&#xA;&#xA;@version     1.34, 12/19/03&#xA;@author&#x9;Jonathan Payne&#xA;@author&#x9;Arthur van Hoff&#xA;" annotatedElement="6265c9ea-53bd-4c7d-943d-7c8d074d17b3"/>
            <generalization xmi:id="39c04f6b-10b9-4e47-a0d0-38acfa7e0280" isSubstitutable="true" general="224491b9-9aec-4ba0-9da6-bef0c10bacc2"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="bce4c78d-e09e-4404-9580-6233e47702c0" name="CacheRequest" isAbstract="true">
            <ownedComment xmi:id="f92f5f03-fac3-409d-926e-aa4d02360b5c" body="Represents channels for storing resources in the&#xA;ResponseCache. Instances of such a class provide an&#xA;OutputStream object which is called by protocol handlers to&#xA;store the resource data into the cache, and also an abort() method&#xA;which allows a cache store operation to be interrupted and&#xA;abandoned. If an IOException is encountered while reading the&#xA;response or writing to the cache, the current cache store operation&#xA;will be aborted.&#xA;&#xA;@version 1.1, 03/09/22&#xA;@author Yingxian Wang&#xA;@since 1.5&#xA;" annotatedElement="bce4c78d-e09e-4404-9580-6233e47702c0"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3b582a3f-3d74-47eb-8249-9361d995d370" name="Proxy">
            <ownedComment xmi:id="231c2dbb-7861-4554-8f8e-1a455df20dc7" body="This class represents a proxy setting, typically a type (http, socks) and&#xA;a socket address.&#xA;A &lt;code>Proxy&lt;/code> is an immutable object.&#xA;&#xA;@version 1.3, 08/09/03&#xA;@see     java.net.ProxySelector&#xA;@author Yingxian Wang&#xA;@author Jean-Christophe Collet&#xA;@since   1.5&#xA;" annotatedElement="3b582a3f-3d74-47eb-8249-9361d995d370"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="385c98ba-ea31-4565-b48f-57e13689537d" name="Type">
              <ownedComment xmi:id="2cb398bb-10eb-4e6d-b2d8-e90aaded97ed" body="Represents the proxy type.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="385c98ba-ea31-4565-b48f-57e13689537d"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="88d16878-ddb3-49ae-a2bd-73c0787dfe7a" name="HttpRetryException">
            <ownedComment xmi:id="5d5dc089-7835-4737-9103-1d1457146427" body="Thrown to indicate that a HTTP request needs to be retried&#xA;but cannot be retried automatically, due to streaming mode&#xA;being enabled.&#xA;&#xA;@author  Michael McMahon&#xA;@version 1.1, 04/20/04&#xA;@since   1.5&#xA;" annotatedElement="88d16878-ddb3-49ae-a2bd-73c0787dfe7a"/>
            <generalization xmi:id="0b7d0b4b-150a-407d-b431-8915995572e2" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2d8ba4aa-eeec-468e-9e6d-7d462ea752c9" name="Socket">
            <ownedComment xmi:id="3cd964c7-6e42-4083-af42-352b5a1a3e8a" body="This class implements client sockets (also called just&#xA;&quot;sockets&quot;). A socket is an endpoint for communication&#xA;between two machines.&#xA;&lt;p>&#xA;The actual work of the socket is performed by an instance of the&#xA;&lt;code>SocketImpl&lt;/code> class. An application, by changing&#xA;the socket factory that creates the socket implementation,&#xA;can configure itself to create sockets appropriate to the local&#xA;firewall.&#xA;&#xA;@author  unascribed&#xA;@version 1.108, 05/18/04&#xA;@see     java.net.Socket#setSocketImplFactory(java.net.SocketImplFactory)&#xA;@see     java.net.SocketImpl&#xA;@see     java.nio.channels.SocketChannel&#xA;@since   JDK1.0&#xA;" annotatedElement="2d8ba4aa-eeec-468e-9e6d-7d462ea752c9"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="aca54c9e-d200-46e3-8eb7-7251f1647310" name="InetSocketAddress">
            <ownedComment xmi:id="6c2bb97b-e19f-44b5-810d-374be079248d" body="This class implements an IP Socket Address (IP address + port number)&#xA;It can also be a pair (hostname + port number), in which case an attempt&#xA;will be made to resolve the hostname. If resolution fails then the address&#xA;is said to be &lt;I>unresolved&lt;/I> but can still be used on some circumstances&#xA;like connecting through a proxy.&#xA;&lt;p>&#xA;It provides an immutable object used by sockets for binding, connecting, or&#xA;as returned values.&#xA;&lt;p>&#xA;The &lt;i>wildcard&lt;/i> is a special local IP address. It usually means &quot;any&quot;&#xA;and can only be used for &lt;code>bind&lt;/code> operations.&#xA;&#xA;@see&#x9;java.net.Socket&#xA;@see&#x9;java.net.ServerSocket&#xA;@since 1.4&#xA;" annotatedElement="aca54c9e-d200-46e3-8eb7-7251f1647310"/>
            <generalization xmi:id="199ab3d2-c52b-4081-89f9-a6189b248392" isSubstitutable="true" general="d5bdd0a7-2047-484c-b4bc-6a7b3f9d7474"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="83a0fa6e-29f2-4051-a127-8ec267ac816b" name="Inet4Address" isLeaf="true">
            <ownedComment xmi:id="99e3f6e2-2f5d-4b7d-a8a2-eeaabbe845e5" body="This class represents an Internet Protocol version 4 (IPv4) address.&#xA;Defined by &lt;a href=&quot;http://www.ietf.org/rfc/rfc790.txt&quot;>&#xA;&lt;i>RFC&amp;nbsp;790: Assigned Numbers&lt;/i>&lt;/a>,&#xA;&lt;a href=&quot;http://www.ietf.org/rfc/rfc1918.txt&quot;>&#xA;&lt;i>RFC&amp;nbsp;1918: Address Allocation for Private Internets&lt;/i>&lt;/a>,&#xA;and &lt;a href=&quot;http://www.ietf.org/rfc/rfc2365.txt&quot;>&lt;i>RFC&amp;nbsp;2365:&#xA;Administratively Scoped IP Multicast&lt;/i>&lt;/a>&#xA;&#xA;&lt;h4> &lt;A NAME=&quot;format&quot;>Textual representation of IP addresses&lt;/a> &lt;/h4>&#xA;&#xA;Textual representation of IPv4 address used as input to methods&#xA;takes one of the following forms:&#xA;&#xA;&lt;blockquote>&lt;table cellpadding=0 cellspacing=0 summary=&quot;layout&quot;>&#xA;&lt;tr>&lt;td>&lt;tt>d.d.d.d&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;tt>d.d.d&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;tt>d.d&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;tt>d&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;/table>&lt;/blockquote>&#xA;&#xA;&lt;p> When four parts are specified, each is interpreted as a byte of&#xA;data and assigned, from left to right, to the four bytes of an IPv4&#xA;address.&#xA;&lt;p> When a three part address is specified, the last part is&#xA;interpreted as a 16-bit quantity and placed in the right most two&#xA;bytes of the network address. This makes the three part address&#xA;format convenient for specifying Class B net- work addresses as&#xA;128.net.host.&#xA;&#xA;&lt;p> When a two part address is supplied, the last part is&#xA;interpreted as a 24-bit quantity and placed in the right most three&#xA;bytes of the network address. This makes the two part address&#xA;format convenient for specifying Class A network addresses as&#xA;net.host.&#xA;&#xA;&lt;p> When only one part is given, the value is stored directly in&#xA;the network address without any byte rearrangement.&#xA;&#xA;&lt;p> For methods that return a textual representation as output&#xA;value, the first form, i.e. a dotted-quad string, is used.&#xA;&#xA;&lt;h4> The Scope of a Multicast Address &lt;/h4>&#xA;&#xA;Historically the IPv4 TTL field in the IP header has doubled as a&#xA;multicast scope field: a TTL of 0 means node-local, 1 means&#xA;link-local, up through 32 means site-local, up through 64 means&#xA;region-local, up through 128 means continent-local, and up through&#xA;255 are global. However, the administrative scoping is preferred.&#xA;Please refer to &lt;a href=&quot;http://www.ietf.org/rfc/rfc2365.txt&quot;>&#xA;&lt;i>RFC&amp;nbsp;2365: Administratively Scoped IP Multicast&lt;/i>&lt;/a>&#xA;" annotatedElement="83a0fa6e-29f2-4051-a127-8ec267ac816b"/>
            <generalization xmi:id="6e75219a-a208-466c-ae27-fbcb26f7b647" isSubstitutable="true" general="0c7acf5a-97cb-4d7e-a835-360a90fe77f2"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e539694e-d473-4d12-bf4c-95a08baf3e7c" name="SocketOutputStream" visibility="package">
            <ownedComment xmi:id="6e3b46cb-6a5d-4303-93f4-df0a83a6f55d" body="This stream extends FileOutputStream to implement a&#xA;SocketOutputStream. Note that this class should &lt;b>NOT&lt;/b> be&#xA;public.&#xA;&#xA;@version     1.30, 12/19/03&#xA;@author &#x9;Jonathan Payne&#xA;@author&#x9;Arthur van Hoff&#xA;" annotatedElement="e539694e-d473-4d12-bf4c-95a08baf3e7c"/>
            <generalization xmi:id="4bfb4b64-1d87-4ff8-b7a7-f455f874a55e" isSubstitutable="true" general="ed210212-779c-4300-8168-01405badd83d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="76015a80-56d4-42b7-89da-b398bd3edb0e" name="URLDecoder">
            <ownedComment xmi:id="6b0f0078-5d3d-4bd8-8514-d63dd0de7751" body="Utility class for HTML form decoding. This class contains static methods&#xA;for decoding a String from the &lt;CODE>application/x-www-form-urlencoded&lt;/CODE>&#xA;MIME format.&#xA;&lt;p>&#xA;To conversion process is the reverse of that used by the URLEncoder class. It is assumed&#xA;that all characters in the encoded string are one of the following:&#xA;&quot;&lt;code>a&lt;/code>&quot; through &quot;&lt;code>z&lt;/code>&quot;,&#xA;&quot;&lt;code>A&lt;/code>&quot; through &quot;&lt;code>Z&lt;/code>&quot;,&#xA;&quot;&lt;code>0&lt;/code>&quot; through &quot;&lt;code>9&lt;/code>&quot;, and&#xA;&quot;&lt;code>-&lt;/code>&quot;, &quot;&lt;code>_&lt;/code>&quot;,&#xA;&quot;&lt;code>.&lt;/code>&quot;, and &quot;&lt;code>*&lt;/code>&quot;. The&#xA;character &quot;&lt;code>%&lt;/code>&quot; is allowed but is interpreted&#xA;as the start of a special escaped sequence.&#xA;&lt;p>&#xA;The following rules are applied in the conversion:&#xA;&lt;p>&#xA;&lt;ul>&#xA;&lt;li>The alphanumeric characters &quot;&lt;code>a&lt;/code>&quot; through&#xA;&quot;&lt;code>z&lt;/code>&quot;, &quot;&lt;code>A&lt;/code>&quot; through&#xA;&quot;&lt;code>Z&lt;/code>&quot; and &quot;&lt;code>0&lt;/code>&quot;&#xA;through &quot;&lt;code>9&lt;/code>&quot; remain the same.&#xA;&lt;li>The special characters &quot;&lt;code>.&lt;/code>&quot;,&#xA;&quot;&lt;code>-&lt;/code>&quot;, &quot;&lt;code>*&lt;/code>&quot;, and&#xA;&quot;&lt;code>_&lt;/code>&quot; remain the same.&#xA;&lt;li>The plus sign &quot;&lt;code>+&lt;/code>&quot; is converted into a&#xA;space character &quot;&lt;code>&amp;nbsp;&lt;/code>&quot; .&#xA;&lt;li>A sequence of the form &quot;&lt;code>%&lt;i>xy&lt;/i>&lt;/code>&quot; will be&#xA;treated as representing a byte where &lt;i>xy&lt;/i> is the two-digit&#xA;hexadecimal representation of the 8 bits. Then, all substrings&#xA;that contain one or more of these byte sequences consecutively&#xA;will be replaced by the character(s) whose encoding would result&#xA;in those consecutive bytes.&#xA;The encoding scheme used to decode these characters may be specified,&#xA;or if unspecified, the default encoding of the platform will be used.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;There are two possible ways in which this decoder could deal with&#xA;illegal strings.  It could either leave illegal characters alone or&#xA;it could throw an &lt;tt>{@link java.lang.IllegalArgumentException}&lt;/tt>.&#xA;Which approach the decoder takes is left to the&#xA;implementation.&#xA;&#xA;@author  Mark Chamness&#xA;@author  Michael McCloskey&#xA;@version 1.27, 05/18/04&#xA;@since   1.2&#xA;" annotatedElement="76015a80-56d4-42b7-89da-b398bd3edb0e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d5996c93-02be-4690-911d-31133e08fd19" name="MulticastSocket">
            <ownedComment xmi:id="eede984c-8834-4511-84a4-0aa1e88925e7" body="The multicast datagram socket class is useful for sending&#xA;and receiving IP multicast packets.  A MulticastSocket is&#xA;a (UDP) DatagramSocket, with additional capabilities for&#xA;joining &quot;groups&quot; of other multicast hosts on the internet.&#xA;&lt;P>&#xA;A multicast group is specified by a class D IP address&#xA;and by a standard UDP port number. Class D IP addresses&#xA;are in the range &lt;CODE>224.0.0.0&lt;/CODE> to &lt;CODE>239.255.255.255&lt;/CODE>,&#xA;inclusive. The address 224.0.0.0 is reserved and should not be used.&#xA;&lt;P>&#xA;One would join a multicast group by first creating a MulticastSocket&#xA;with the desired port, then invoking the&#xA;&lt;CODE>joinGroup(InetAddress groupAddr)&lt;/CODE>&#xA;method:&#xA;&lt;PRE>&#xA;join a Multicast group and send the group salutations&#xA;...&#xA;String msg = &quot;Hello&quot;;&#xA;InetAddress group = InetAddress.getByName(&quot;228.5.6.7&quot;);&#xA;MulticastSocket s = new MulticastSocket(6789);&#xA;s.joinGroup(group);&#xA;DatagramPacket hi = new DatagramPacket(msg.getBytes(), msg.length(),&#xA;group, 6789);&#xA;s.send(hi);&#xA;get their responses!&#xA;byte[] buf = new byte[1000];&#xA;DatagramPacket recv = new DatagramPacket(buf, buf.length);&#xA;s.receive(recv);&#xA;...&#xA;OK, I'm done talking - leave the group...&#xA;s.leaveGroup(group);&#xA;&lt;/PRE>&#xA;&#xA;When one sends a message to a multicast group, &lt;B>all&lt;/B> subscribing&#xA;recipients to that host and port receive the message (within the&#xA;time-to-live range of the packet, see below).  The socket needn't&#xA;be a member of the multicast group to send messages to it.&#xA;&lt;P>&#xA;When a socket subscribes to a multicast group/port, it receives&#xA;datagrams sent by other hosts to the group/port, as do all other&#xA;members of the group and port.  A socket relinquishes membership&#xA;in a group by the leaveGroup(InetAddress addr) method.  &lt;B>&#xA;Multiple MulticastSocket's&lt;/B> may subscribe to a multicast group&#xA;and port concurrently, and they will all receive group datagrams.&#xA;&lt;P>&#xA;Currently applets are not allowed to use multicast sockets.&#xA;&#xA;@author Pavani Diwanji&#xA;@since  JDK1.1&#xA;" annotatedElement="d5996c93-02be-4690-911d-31133e08fd19"/>
            <generalization xmi:id="cb075966-d4e8-4f9f-be5e-28f73965d960" isSubstitutable="true" general="2aa09292-3230-4654-94ed-46d78b8e8388"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="34b72acd-fd53-4143-ae8c-f1380c854ef5" name="HttpURLConnection" isAbstract="true">
            <ownedComment xmi:id="874e3845-1552-498e-af20-40787701e2be" body="A URLConnection with support for HTTP-specific features. See&#xA;&lt;A HREF=&quot;http://www.w3.org/pub/WWW/Protocols/&quot;> the spec &lt;/A> for&#xA;details.&#xA;&lt;p>&#xA;&#xA;Each HttpURLConnection instance is used to make a single request&#xA;but the underlying network connection to the HTTP server may be&#xA;transparently shared by other instances. Calling the close() methods&#xA;on the InputStream or OutputStream of an HttpURLConnection&#xA;after a request may free network resources associated with this&#xA;instance but has no effect on any shared persistent connection.&#xA;Calling the disconnect() method may close the underlying socket&#xA;if a persistent connection is otherwise idle at that time.&#xA;&#xA;@see     java.net.HttpURLConnection#disconnect()&#xA;@since JDK1.1&#xA;" annotatedElement="34b72acd-fd53-4143-ae8c-f1380c854ef5"/>
            <generalization xmi:id="2535716c-26de-48ee-ba4b-ef19ccc3b3b3" isSubstitutable="true" general="ec592d8c-3b54-4893-8bd2-b34e54f1f8f0"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="7c5d7307-d3dd-4c9f-ac2a-5d5d1eaa813e" name="SocketOptions" isAbstract="true">
            <ownedComment xmi:id="7c8eb290-58c8-4dd8-b6bf-3ec754d48521" body="Interface of methods to get/set socket options.  This interface is&#xA;implemented by: &lt;B>SocketImpl&lt;/B> and  &lt;B>DatagramSocketImpl&lt;/B>.&#xA;Subclasses of these should override the methods&#xA;of this interface in order to support their own options.&#xA;&lt;P>&#xA;The methods and constants which specify options in this interface are&#xA;for implementation only.  If you're not subclassing SocketImpl or&#xA;DatagramSocketImpl, &lt;B>you won't use these directly.&lt;/B> There are&#xA;type-safe methods to get/set each of these options in Socket, ServerSocket,&#xA;DatagramSocket and MulticastSocket.&#xA;&lt;P>&#xA;@version 1.32, 01/28/04&#xA;@author David Brown&#xA;" annotatedElement="7c5d7307-d3dd-4c9f-ac2a-5d5d1eaa813e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="ce69bffa-138c-4363-84ab-da5fdc247536" name="ContentHandlerFactory" isAbstract="true">
            <ownedComment xmi:id="070967ed-c8ef-4982-8150-9a3a391e577a" body="This interface defines a factory for content handlers. An&#xA;implementation of this interface should map a MIME type into an&#xA;instance of &lt;code>ContentHandler&lt;/code>.&#xA;&lt;p>&#xA;This interface is used by the &lt;code>URLStreamHandler&lt;/code> class&#xA;to create a &lt;code>ContentHandler&lt;/code> for a MIME type.&#xA;&#xA;@author  James Gosling&#xA;@version 1.12, 12/19/03&#xA;@see     java.net.ContentHandler&#xA;@see     java.net.URLStreamHandler&#xA;@since   JDK1.0&#xA;" annotatedElement="ce69bffa-138c-4363-84ab-da5fdc247536"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e35946f6-2dda-4262-8887-fc9cc420b189" name="Parts" visibility="package"/>
          <packagedElement xmi:type="uml:Class" xmi:id="465bc4e2-5001-4cc7-8e17-62794e9f6159" name="SocketPermissionCollection" visibility="package" clientDependency="4b44f953-2e7e-46bc-8d3b-cff15812579d" isLeaf="true">
            <ownedComment xmi:id="2b50e56f-33dc-471d-8014-86c84488e196" body="if (init'd with IP, key is IP as string)&#xA;if wildcard, its the wild card&#xA;else its the cname?&#xA;&#xA;@see java.security.Permission&#xA;@see java.security.Permissions&#xA;@see java.security.PermissionCollection&#xA;&#xA;@version 1.59 02/12/04&#xA;&#xA;@author Roland Schemers&#xA;&#xA;@serial include&#xA;" annotatedElement="465bc4e2-5001-4cc7-8e17-62794e9f6159"/>
            <generalization xmi:id="a6983ebf-5fa8-4e18-b2d1-92c4bc52f2e1" isSubstitutable="true" general="528e6ee9-bd4d-433a-b08d-a8e30fb7d9c7"/>
            <interfaceRealization xmi:id="4b44f953-2e7e-46bc-8d3b-cff15812579d" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="465bc4e2-5001-4cc7-8e17-62794e9f6159" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="99e3864c-21aa-42df-8e2c-bbd6332436df" name="FactoryURLClassLoader" visibility="package" isLeaf="true">
            <generalization xmi:id="ab479c98-c44a-4043-9c98-14a2a237b2ab" isSubstitutable="true" general="d6e22cac-8941-429e-a3cd-97f13e75c316"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="cb7db3bd-189a-4d88-b25d-4b35037fbb6e" name="InetAddressContainer" visibility="package"/>
          <packagedElement xmi:type="uml:Class" xmi:id="6854cd93-e08e-49dd-a4ac-af859050bb59" name="SocksSocketImpl" visibility="package" clientDependency="a7302415-cabf-4b73-b680-207e9f8595fc">
            <ownedComment xmi:id="4fb922f8-2e53-4403-9e0f-64ffe20d681e" body="SOCKS (V4 &amp; V5) TCP socket implementation (RFC 1928).&#xA;This is a subclass of PlainSocketImpl.&#xA;Note this class should &lt;b>NOT&lt;/b> be public.&#xA;" annotatedElement="6854cd93-e08e-49dd-a4ac-af859050bb59"/>
            <generalization xmi:id="bfa7bb91-b9da-401f-911a-a4b0762ccc12" isSubstitutable="true" general="866679f0-5e78-49a5-890a-ba470395cd8a"/>
            <interfaceRealization xmi:id="a7302415-cabf-4b73-b680-207e9f8595fc" name="" supplier="f001662a-a8ac-47c9-a5a6-859434065fdd" client="6854cd93-e08e-49dd-a4ac-af859050bb59" contract="f001662a-a8ac-47c9-a5a6-859434065fdd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="889a5c58-7181-4c84-a1af-33ea86682f9e" name="URL" clientDependency="e68fb187-ec18-4ae1-94bd-3ceabbade921" isLeaf="true">
            <ownedComment xmi:id="b4975ef8-7d87-4ca5-989b-63de5bb84d79" body="Class &lt;code>URL&lt;/code> represents a Uniform Resource&#xA;Locator, a pointer to a &quot;resource&quot; on the World&#xA;Wide Web. A resource can be something as simple as a file or a&#xA;directory, or it can be a reference to a more complicated object,&#xA;such as a query to a database or to a search engine. More&#xA;information on the types of URLs and their formats can be found at:&#xA;&lt;blockquote>&#xA;&lt;a href=&quot;http://archive.ncsa.uiuc.edu/SDG/Software/Mosaic/Demo/url-primer.html&quot;>&#xA;&lt;i>http://archive.ncsa.uiuc.edu/SDG/Software/Mosaic/Demo/url-primer.html&lt;/i>&lt;/a>&#xA;&lt;/blockquote>&#xA;&lt;p>&#xA;In general, a URL can be broken into several parts. The previous&#xA;example of a URL indicates that the protocol to use is&#xA;&lt;code>http&lt;/code> (HyperText Transfer Protocol) and that the&#xA;information resides on a host machine named&#xA;&lt;code>www.ncsa.uiuc.edu&lt;/code>. The information on that host&#xA;machine is named &lt;code>/SDG/Software/Mosaic/Demo/url-primer.html&lt;/code>. The exact&#xA;meaning of this name on the host machine is both protocol&#xA;dependent and host dependent. The information normally resides in&#xA;a file, but it could be generated on the fly. This component of&#xA;the URL is called the &lt;i>path&lt;/i> component.&#xA;&lt;p>&#xA;A URL can optionally specify a &quot;port&quot;, which is the&#xA;port number to which the TCP connection is made on the remote host&#xA;machine. If the port is not specified, the default port for&#xA;the protocol is used instead. For example, the default port for&#xA;&lt;code>http&lt;/code> is &lt;code>80&lt;/code>. An alternative port could be&#xA;specified as:&#xA;&lt;blockquote>&lt;pre>&#xA;http://archive.ncsa.uiuc.edu:80/SDG/Software/Mosaic/Demo/url-primer.html&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;The syntax of &lt;code>URL&lt;/code> is defined by  &lt;a&#xA;href=&quot;http://www.ietf.org/rfc/rfc2396.txt&quot;&quot;>&lt;i>RFC&amp;nbsp;2396: Uniform&#xA;Resource Identifiers (URI): Generic Syntax&lt;/i>&lt;/a>, amended by &lt;a&#xA;href=&quot;http://www.ietf.org/rfc/rfc2732.txt&quot;>&lt;i>RFC&amp;nbsp;2732: Format for&#xA;Literal IPv6 Addresses in URLs&lt;/i>&lt;/a>. The Literal IPv6 address format&#xA;also supports scope_ids. The syntax and usage of scope_ids is described&#xA;&lt;a href=&quot;Inet6Address.html#scoped&quot;>here&lt;/a>.&#xA;&lt;p>&#xA;A URL may have appended to it a &quot;fragment&quot;, also known&#xA;as a &quot;ref&quot; or a &quot;reference&quot;. The fragment is indicated by the sharp&#xA;sign character &quot;#&quot; followed by more characters. For example,&#xA;&lt;blockquote>&lt;pre>&#xA;http://java.sun.com/index.html#chapter1&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;This fragment is not technically part of the URL. Rather, it&#xA;indicates that after the specified resource is retrieved, the&#xA;application is specifically interested in that part of the&#xA;document that has the tag &lt;code>chapter1&lt;/code> attached to it. The&#xA;meaning of a tag is resource specific.&#xA;&lt;p>&#xA;An application can also specify a &quot;relative URL&quot;,&#xA;which contains only enough information to reach the resource&#xA;relative to another URL. Relative URLs are frequently used within&#xA;HTML pages. For example, if the contents of the URL:&#xA;&lt;blockquote>&lt;pre>&#xA;http://java.sun.com/index.html&#xA;&lt;/pre>&lt;/blockquote>&#xA;contained within it the relative URL:&#xA;&lt;blockquote>&lt;pre>&#xA;FAQ.html&#xA;&lt;/pre>&lt;/blockquote>&#xA;it would be a shorthand for:&#xA;&lt;blockquote>&lt;pre>&#xA;http://java.sun.com/FAQ.html&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;The relative URL need not specify all the components of a URL. If&#xA;the protocol, host name, or port number is missing, the value is&#xA;inherited from the fully specified URL. The file component must be&#xA;specified. The optional fragment is not inherited.&#xA;&lt;p>&#xA;The URL class does not itself encode or decode any URL components&#xA;according to the escaping mechanism defined in RFC2396. It is the&#xA;responsibility of the caller to encode any fields, which need to be&#xA;escaped prior to calling URL, and also to decode any escaped fields,&#xA;that are returned from URL. Furthermore, because URL has no knowledge&#xA;of URL escaping, it does not recognise equivalence between the encoded&#xA;or decoded form of the same URL. For example, the two URLs:&lt;br>&#xA;&lt;pre>    http://foo.com/hello world/ and http://foo.com/hello%20world&lt;/pre>&#xA;would be considered not equal to each other.&#xA;&lt;p>&#xA;Note, the {@link java.net.URI} class does perform escaping of its&#xA;component fields in certain circumstances. The recommended way&#xA;to manage the encoding and decoding of URLs is to use {@link java.net.URI},&#xA;and to convert between these two classes using {@link #toURI()} and&#xA;{@link URI#toURL()}.&#xA;&lt;p>&#xA;The {@link URLEncoder} and {@link URLDecoder} classes can also be&#xA;used, but only for HTML form encoding, which is not the same&#xA;as the encoding scheme defined in RFC2396.&#xA;&#xA;@author  James Gosling&#xA;@version 1.129, 01/27/04&#xA;@since JDK1.0&#xA;" annotatedElement="889a5c58-7181-4c84-a1af-33ea86682f9e"/>
            <interfaceRealization xmi:id="e68fb187-ec18-4ae1-94bd-3ceabbade921" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="889a5c58-7181-4c84-a1af-33ea86682f9e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b67ca17d-5daf-44f5-a92d-f68f60186b85" name="ContentHandler" isAbstract="true">
            <ownedComment xmi:id="b9d401b2-cdc4-4b99-b6e3-ac353c4c534d" body="The abstract class &lt;code>ContentHandler&lt;/code> is the superclass&#xA;of all classes that read an &lt;code>Object&lt;/code> from a&#xA;&lt;code>URLConnection&lt;/code>.&#xA;&lt;p>&#xA;An application does not generally call the&#xA;&lt;code>getContent&lt;/code> method in this class directly. Instead, an&#xA;application calls the &lt;code>getContent&lt;/code> method in class&#xA;&lt;code>URL&lt;/code> or in &lt;code>URLConnection&lt;/code>.&#xA;The application's content handler factory (an instance of a class that&#xA;implements the interface &lt;code>ContentHandlerFactory&lt;/code> set&#xA;up by a call to &lt;code>setContentHandler&lt;/code>) is&#xA;called with a &lt;code>String&lt;/code> giving the MIME type of the&#xA;object being received on the socket. The factory returns an&#xA;instance of a subclass of &lt;code>ContentHandler&lt;/code>, and its&#xA;&lt;code>getContent&lt;/code> method is called to create the object.&#xA;&lt;p>&#xA;If no content handler could be found, URLConnection will&#xA;look for a content handler in a user-defineable set of places.&#xA;By default it looks in sun.net.www.content, but users can define a&#xA;vertical-bar delimited set of class prefixes to search through in&#xA;addition by defining the java.content.handler.pkgs property.&#xA;The class name must be of the form:&#xA;&lt;pre>&#xA;{package-prefix}.{major}.{minor}&#xA;e.g.&#xA;YoyoDyne.experimental.text.plain&#xA;&lt;/pre>&#xA;If the loading of the content handler class would be performed by&#xA;a classloader that is outside of the the delegation chain of the caller,&#xA;the JVM will need the RuntimePermission &quot;getClassLoader&quot;.&#xA;&#xA;@author  James Gosling&#xA;@version 1.17, 12/19/03&#xA;@see     java.net.ContentHandler#getContent(java.net.URLConnection)&#xA;@see     java.net.ContentHandlerFactory&#xA;@see     java.net.URL#getContent()&#xA;@see     java.net.URLConnection&#xA;@see     java.net.URLConnection#getContent()&#xA;@see     java.net.URLConnection#setContentHandlerFactory(java.net.ContentHandlerFactory)&#xA;@since   JDK1.0&#xA;" annotatedElement="b67ca17d-5daf-44f5-a92d-f68f60186b85"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0f92310c-e5b9-4a83-9228-dfceda7d41be" name="CacheResponse" isAbstract="true">
            <ownedComment xmi:id="6346a4c0-a719-467a-b9ef-84df6ac1ef2f" body="Represent channels for retrieving resources from the&#xA;ResponseCache. Instances of such a class provide an&#xA;InputStream that returns the entity body, and also a&#xA;getHeaders() method which returns the associated response headers.&#xA;&#xA;@version 1.1, 03/09/22&#xA;@author Yingxian Wang&#xA;@since 1.5&#xA;" annotatedElement="0f92310c-e5b9-4a83-9228-dfceda7d41be"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2aa09292-3230-4654-94ed-46d78b8e8388" name="DatagramSocket">
            <ownedComment xmi:id="039d1edf-fc52-480a-a844-dff9c6727079" body="This class represents a socket for sending and receiving datagram packets.&#xA;&#xA;&lt;p>A datagram socket is the sending or receiving point for a packet&#xA;delivery service. Each packet sent or received on a datagram socket&#xA;is individually addressed and routed. Multiple packets sent from&#xA;one machine to another may be routed differently, and may arrive in&#xA;any order.&#xA;&#xA;&lt;p>UDP broadcasts sends are always enabled on a DatagramSocket.&#xA;In order to receive broadcast packets a DatagramSocket&#xA;should be bound to the wildcard address. In some&#xA;implementations, broadcast packets may also be received when&#xA;a DatagramSocket is bound to a more specific address.&#xA;&lt;p>&#xA;Example:&#xA;&lt;code>&#xA;DatagramSocket s = new DatagramSocket(null);&#xA;s.bind(new InetSocketAddress(8888));&#xA;&lt;/code>&#xA;Which is equivalent to:&#xA;&lt;code>&#xA;DatagramSocket s = new DatagramSocket(8888);&#xA;&lt;/code>&#xA;Both cases will create a DatagramSocket able to receive broadcasts on&#xA;UDP port 8888.&#xA;&#xA;@author  Pavani Diwanji&#xA;@version 1.96, 03/05/04&#xA;@see     java.net.DatagramPacket&#xA;@see     java.nio.channels.DatagramChannel&#xA;@since JDK1.0&#xA;" annotatedElement="2aa09292-3230-4654-94ed-46d78b8e8388"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="50f3eaea-dca9-4112-898d-c06e41dd736a" name="ProtocolException">
            <ownedComment xmi:id="a84a28cd-d82c-4754-b526-f5dad75e988a" body="Thrown to indicate that there is an error in the underlying&#xA;protocol, such as a TCP error.&#xA;&#xA;@author  Chris Warth&#xA;@version 1.16, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="50f3eaea-dca9-4112-898d-c06e41dd736a"/>
            <generalization xmi:id="96e83375-3632-4928-8e67-4e5480e2c901" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="866679f0-5e78-49a5-890a-ba470395cd8a" name="PlainSocketImpl" visibility="package">
            <ownedComment xmi:id="4ed06e28-ce47-49cf-8498-1e591799c956" body="Default Socket Implementation. This implementation does&#xA;not implement any security checks.&#xA;Note this class should &lt;b>NOT&lt;/b> be public.&#xA;&#xA;@author  Steven B. Byrne&#xA;@version 1.65, 12/19/03&#xA;" annotatedElement="866679f0-5e78-49a5-890a-ba470395cd8a"/>
            <generalization xmi:id="85ab89a9-fe5f-4544-9d9f-c61c9b6d2591" isSubstitutable="true" general="8f842ed0-8c58-4488-b621-794a994fc822"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="883ce5fb-52fe-4e11-88a8-dea355fdb5fc" name="URLStreamHandler" isAbstract="true">
            <ownedComment xmi:id="32bfa702-18d7-4a76-a7d4-7be729794fba" body="The abstract class &lt;code>URLStreamHandler&lt;/code> is the common&#xA;superclass for all stream protocol handlers. A stream protocol&#xA;handler knows how to make a connection for a particular protocol&#xA;type, such as &lt;code>http&lt;/code>, &lt;code>ftp&lt;/code>, or&#xA;&lt;code>gopher&lt;/code>.&#xA;&lt;p>&#xA;In most cases, an instance of a &lt;code>URLStreamHandler&lt;/code>&#xA;subclass is not created directly by an application. Rather, the&#xA;first time a protocol name is encountered when constructing a&#xA;&lt;code>URL&lt;/code>, the appropriate stream protocol handler is&#xA;automatically loaded.&#xA;&#xA;@author  James Gosling&#xA;@version 1.68, 05/18/04&#xA;@see     java.net.URL#URL(java.lang.String, java.lang.String, int, java.lang.String)&#xA;@since   JDK1.0&#xA;" annotatedElement="883ce5fb-52fe-4e11-88a8-dea355fdb5fc"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0726bd92-77f2-4626-b61e-8396d4b550b7" name="DatagramPacket" isLeaf="true">
            <ownedComment xmi:id="29180a77-175e-4a32-a34b-55f0997787dd" body="This class represents a datagram packet.&#xA;&lt;p>&#xA;Datagram packets are used to implement a connectionless packet&#xA;delivery service. Each message is routed from one machine to&#xA;another based solely on information contained within that packet.&#xA;Multiple packets sent from one machine to another might be routed&#xA;differently, and might arrive in any order. Packet delivery is&#xA;not guaranteed.&#xA;&#xA;@author  Pavani Diwanji&#xA;@author  Benjamin Renaud&#xA;@version 1.43, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="0726bd92-77f2-4626-b61e-8396d4b550b7"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3d037474-2559-4a54-9f75-cdc6ea21f14b" name="PasswordAuthentication" isLeaf="true">
            <ownedComment xmi:id="2f72a8db-e487-4b3d-a940-3c02d0fa7078" body="The class PasswordAuthentication is a data holder that is used by&#xA;Authenticator.  It is simply a repository for a user name and a password.&#xA;&#xA;@see java.net.Authenticator&#xA;@see java.net.Authenticator#getPasswordAuthentication()&#xA;&#xA;@author  Bill Foote&#xA;@version 1.15, 12/19/03&#xA;@since   1.2&#xA;" annotatedElement="3d037474-2559-4a54-9f75-cdc6ea21f14b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="5b6e6a50-54fd-4eae-a5ec-466a005d706f" name="InetAddressImpl" visibility="package" isAbstract="true"/>
          <packagedElement xmi:type="uml:Interface" xmi:id="86e620fa-2927-42e4-9a5a-001353a1d87e" name="DatagramSocketImplFactory" isAbstract="true">
            <ownedComment xmi:id="c7d54475-57ac-4335-a5ea-9b8f2e480a20" body="This interface defines a factory for datagram socket implementations. It&#xA;is used by the classes &lt;code>DatagramSocket&lt;/code> to create actual socket&#xA;implementations.&#xA;&#xA;@author  Yingxian Wang&#xA;@version %I %E&#xA;@see     java.net.DatagramSocket&#xA;@since   1.3&#xA;" annotatedElement="86e620fa-2927-42e4-9a5a-001353a1d87e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d6e22cac-8941-429e-a3cd-97f13e75c316" name="URLClassLoader">
            <ownedComment xmi:id="69262d10-8b64-4bc6-9719-17e2ae3333b7" body="This class loader is used to load classes and resources from a search&#xA;path of URLs referring to both JAR files and directories. Any URL that&#xA;ends with a '/' is assumed to refer to a directory. Otherwise, the URL&#xA;is assumed to refer to a JAR file which will be opened as needed.&#xA;&lt;p>&#xA;The AccessControlContext of the thread that created the instance of&#xA;URLClassLoader will be used when subsequently loading classes and&#xA;resources.&#xA;&lt;p>&#xA;The classes that are loaded are by default granted permission only to&#xA;access the URLs specified when the URLClassLoader was created.&#xA;&#xA;@author  David Connelly&#xA;@version 1.85, 08/02/04&#xA;@since   1.2&#xA;" annotatedElement="d6e22cac-8941-429e-a3cd-97f13e75c316"/>
            <generalization xmi:id="ee6d8c90-9972-4181-8c94-95726bab5e67" isSubstitutable="true" general="3d2fb7f3-bf51-409a-b19b-e504a32ba53b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="356245c6-b559-4774-8f09-6367a650f6b7" name="Inet4AddressImpl" visibility="package" clientDependency="5e5695db-3f51-498a-b9a2-8af4a952027a">
            <interfaceRealization xmi:id="5e5695db-3f51-498a-b9a2-8af4a952027a" name="" supplier="5b6e6a50-54fd-4eae-a5ec-466a005d706f" client="356245c6-b559-4774-8f09-6367a650f6b7" contract="5b6e6a50-54fd-4eae-a5ec-466a005d706f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b884bf44-5f2d-4d66-999e-f18b70fe4be1" name="SocketTimeoutException">
            <ownedComment xmi:id="ba080829-5630-4889-b812-e7ea4b831ef2" body="Signals that a timeout has occurred on a socket read or accept.&#xA;&#xA;@since   1.4&#xA;" annotatedElement="b884bf44-5f2d-4d66-999e-f18b70fe4be1"/>
            <generalization xmi:id="f6b36f05-dd4a-46dc-a3d5-0ebfdc613791" isSubstitutable="true" general="3b0c0cc0-1eba-4475-a398-9fa72c20763e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="23594a03-eeba-4aa4-a7a1-4e09ec5391d3" name="JarURLConnection" isAbstract="true">
            <ownedComment xmi:id="7864f794-1784-44ad-b528-0228314db356" body="A URL Connection to a Java ARchive (JAR) file or an entry in a JAR&#xA;file.&#xA;&#xA;&lt;p>The syntax of a JAR URL is:&#xA;&#xA;&lt;pre>&#xA;jar:&lt;url>!/{entry}&#xA;&lt;/pre>&#xA;&#xA;&lt;p>for example:&#xA;&#xA;&lt;p>&lt;code>&#xA;jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.class&lt;br>&#xA;&lt;/code>&#xA;&#xA;&lt;p>Jar URLs should be used to refer to a JAR file or entries in&#xA;a JAR file. The example above is a JAR URL which refers to a JAR&#xA;entry. If the entry name is omitted, the URL refers to the whole&#xA;JAR file:&#xA;&#xA;&lt;code>&#xA;jar:http://www.foo.com/bar/baz.jar!&#xA;&lt;/code>&#xA;&#xA;&lt;p>Users should cast the generic URLConnection to a&#xA;JarURLConnection when they know that the URL they created is a JAR&#xA;URL, and they need JAR-specific functionality. For example:&#xA;&#xA;&lt;pre>&#xA;URL url = new URL(&quot;jar:file:/home/duke/duke.jar!/&quot;);&#xA;JarURLConnection jarConnection = (JarURLConnection)url.openConnection();&#xA;Manifest manifest = jarConnection.getManifest();&#xA;&lt;/pre>&#xA;&#xA;&lt;p>JarURLConnection instances can only be used to read from JAR files.&#xA;It is not possible to get a {@link java.io.OutputStream} to modify or write&#xA;to the underlying JAR file using this class.&#xA;&lt;p>Examples:&#xA;&#xA;&lt;dl>&#xA;&#xA;&lt;dt>A Jar entry&#xA;&lt;dd>&lt;code>jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.class&lt;/code>&#xA;&#xA;&lt;dt>A Jar file&#xA;&lt;dd>&lt;code>jar:http://www.foo.com/bar/baz.jar!/&lt;/code>&#xA;&#xA;&lt;dt>A Jar directory&#xA;&lt;dd>&lt;code>jar:http://www.foo.com/bar/baz.jar!/COM/foo/&lt;/code>&#xA;&#xA;&lt;/dl>&#xA;&#xA;&lt;p>&lt;code>!/&lt;/code> is refered to as the &lt;em>separator&lt;/em>.&#xA;&#xA;&lt;p>When constructing a JAR url via &lt;code>new URL(context, spec)&lt;/code>,&#xA;the following rules apply:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>if there is no context URL and the specification passed to the&#xA;URL constructor doesn't contain a separator, the URL is considered&#xA;to refer to a JarFile.&#xA;&#xA;&lt;li>if there is a context URL, the context URL is assumed to refer&#xA;to a JAR file or a Jar directory.&#xA;&#xA;&lt;li>if the specification begins with a '/', the Jar directory is&#xA;ignored, and the spec is considered to be at the root of the Jar&#xA;file.&#xA;&#xA;&lt;p>Examples:&#xA;&#xA;&lt;dl>&#xA;&#xA;&lt;dt>context: &lt;b>jar:http://www.foo.com/bar/jar.jar!/&lt;/b>,&#xA;spec:&lt;b>baz/entry.txt&lt;/b>&#xA;&#xA;&lt;dd>url:&lt;b>jar:http://www.foo.com/bar/jar.jar!/baz/entry.txt&lt;/b>&#xA;&#xA;&lt;dt>context: &lt;b>jar:http://www.foo.com/bar/jar.jar!/baz&lt;/b>,&#xA;spec:&lt;b>entry.txt&lt;/b>&#xA;&#xA;&lt;dd>url:&lt;b>jar:http://www.foo.com/bar/jar.jar!/baz/entry.txt&lt;/b>&#xA;&#xA;&lt;dt>context: &lt;b>jar:http://www.foo.com/bar/jar.jar!/baz&lt;/b>,&#xA;spec:&lt;b>/entry.txt&lt;/b>&#xA;&#xA;&lt;dd>url:&lt;b>jar:http://www.foo.com/bar/jar.jar!/entry.txt&lt;/b>&#xA;&#xA;&lt;/dl>&#xA;&#xA;&lt;/ul>&#xA;&#xA;@see java.net.URL&#xA;@see java.net.URLConnection&#xA;&#xA;@see java.util.jar.JarFile&#xA;@see java.util.jar.JarInputStream&#xA;@see java.util.jar.Manifest&#xA;@see java.util.zip.ZipEntry&#xA;&#xA;@author Benjamin Renaud&#xA;@since 1.2&#xA;" annotatedElement="23594a03-eeba-4aa4-a7a1-4e09ec5391d3"/>
            <generalization xmi:id="ab18437d-5dd8-4e8e-9f46-75bdaafbf806" isSubstitutable="true" general="ec592d8c-3b54-4893-8bd2-b34e54f1f8f0"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0b8ae653-9475-44ea-8e77-e9c4f3ef6300" name="Inet6Address" isLeaf="true">
            <ownedComment xmi:id="fde62ade-a0d3-4974-9777-474dbd65ecae" body="This class represents an Internet Protocol version 6 (IPv6) address.&#xA;Defined by &lt;a href=&quot;http://www.ietf.org/rfc/rfc2373.txt&quot;>&#xA;&lt;i>RFC&amp;nbsp;2373: IP Version 6 Addressing Architecture&lt;/i>&lt;/a>.&#xA;&#xA;&lt;h4> &lt;A NAME=&quot;format&quot;>Textual representation of IP addresses&lt;/a> &lt;/h4>&#xA;&#xA;Textual representation of IPv6 address used as input to methods&#xA;takes one of the following forms:&#xA;&#xA;&lt;ol>&#xA;&lt;li>&lt;p> &lt;A NAME=&quot;lform&quot;>The preferred form&lt;/a> is x:x:x:x:x:x:x:x,&#xA;where the 'x's are&#xA;the hexadecimal values of the eight 16-bit pieces of the&#xA;address. This is the full form.  For example,&#xA;&#xA;&lt;blockquote>&lt;table cellpadding=0 cellspacing=0 summary=&quot;layout&quot;>&#xA;&lt;tr>&lt;td>&lt;tt>1080:0:0:0:8:800:200C:417A&lt;/tt>&lt;td>&lt;/tr>&#xA;&lt;/table>&lt;/blockquote>&#xA;&#xA;&lt;p> Note that it is not necessary to write the leading zeros in&#xA;an individual field. However, there must be at least one numeral&#xA;in every field, except as described below.&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Due to some methods of allocating certain styles of IPv6&#xA;addresses, it will be common for addresses to contain long&#xA;strings of zero bits. In order to make writing addresses&#xA;containing zero bits easier, a special syntax is available to&#xA;compress the zeros. The use of &quot;::&quot; indicates multiple groups&#xA;of 16-bits of zeros. The &quot;::&quot; can only appear once in an address.&#xA;The &quot;::&quot; can also be used to compress the leading and/or trailing&#xA;zeros in an address. For example,&#xA;&#xA;&lt;blockquote>&lt;table cellpadding=0 cellspacing=0 summary=&quot;layout&quot;>&#xA;&lt;tr>&lt;td>&lt;tt>1080::8:800:200C:417A&lt;/tt>&lt;td>&lt;/tr>&#xA;&lt;/table>&lt;/blockquote>&#xA;&#xA;&lt;li>&lt;p> An alternative form that is sometimes more convenient&#xA;when dealing with a mixed environment of IPv4 and IPv6 nodes is&#xA;x:x:x:x:x:x:d.d.d.d, where the 'x's are the hexadecimal values&#xA;of the six high-order 16-bit pieces of the address, and the 'd's&#xA;are the decimal values of the four low-order 8-bit pieces of the&#xA;standard IPv4 representation address, for example,&#xA;&#xA;&lt;blockquote>&lt;table cellpadding=0 cellspacing=0 summary=&quot;layout&quot;>&#xA;&lt;tr>&lt;td>&lt;tt>::FFFF:129.144.52.38&lt;/tt>&lt;td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;tt>::129.144.52.38&lt;/tt>&lt;td>&lt;/tr>&#xA;&lt;/table>&lt;/blockquote>&#xA;&#xA;&lt;p> where &quot;::FFFF:d.d.d.d&quot; and &quot;::d.d.d.d&quot; are, respectively, the&#xA;general forms of an IPv4-mapped IPv6 address and an&#xA;IPv4-compatible IPv6 address. Note that the IPv4 portion must be&#xA;in the &quot;d.d.d.d&quot; form. The following forms are invalid:&#xA;&#xA;&lt;blockquote>&lt;table cellpadding=0 cellspacing=0 summary=&quot;layout&quot;>&#xA;&lt;tr>&lt;td>&lt;tt>::FFFF:d.d.d&lt;/tt>&lt;td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;tt>::FFFF:d.d&lt;/tt>&lt;td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;tt>::d.d.d&lt;/tt>&lt;td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;tt>::d.d&lt;/tt>&lt;td>&lt;/tr>&#xA;&lt;/table>&lt;/blockquote>&#xA;&#xA;&lt;p> The following form:&#xA;&#xA;&lt;blockquote>&lt;table cellpadding=0 cellspacing=0 summary=&quot;layout&quot;>&#xA;&lt;tr>&lt;td>&lt;tt>::FFFF:d&lt;/tt>&lt;td>&lt;/tr>&#xA;&lt;/table>&lt;/blockquote>&#xA;&#xA;&lt;p> is valid, however it is an unconventional representation of&#xA;the IPv4-compatible IPv6 address,&#xA;&#xA;&lt;blockquote>&lt;table cellpadding=0 cellspacing=0 summary=&quot;layout&quot;>&#xA;&lt;tr>&lt;td>&lt;tt>::255.255.0.d&lt;/tt>&lt;td>&lt;/tr>&#xA;&lt;/table>&lt;/blockquote>&#xA;&#xA;&lt;p> while &quot;::d&quot; corresponds to the general IPv6 address&#xA;&quot;0:0:0:0:0:0:0:d&quot;.&lt;/li>&#xA;&lt;/ol>&#xA;&#xA;&lt;p> For methods that return a textual representation as output&#xA;value, the full form is used. Inet6Address will return the full&#xA;form because it is unambiguous when used in combination with other&#xA;textual data.&#xA;&#xA;&lt;h4> Special IPv6 address &lt;/h4>&#xA;&#xA;&lt;blockquote>&#xA;&lt;table cellspacing=2 summary=&quot;Description of IPv4-mapped address&quot;> &lt;tr>&lt;th valign=top>&lt;i>IPv4-mapped address&lt;/i>&lt;/th>&#xA;&lt;td>Of the form::ffff:w.x.y.z, this IPv6 address is used to&#xA;represent an IPv4 address. It allows the native program to&#xA;use the same address data structure and also the same&#xA;socket when communicating with both IPv4 and IPv6 nodes.&#xA;&#xA;&lt;p>In InetAddress and Inet6Address, it is used for internal&#xA;representation; it has no functional role. Java will never&#xA;return an IPv4-mapped address.  These classes can take an&#xA;IPv4-mapped address as input, both in byte array and text&#xA;representation. However, it will be converted into an IPv4&#xA;address.&lt;/td>&lt;/tr>&#xA;&lt;/table>&lt;/blockquote>&#xA;&lt;p>&#xA;&lt;h4> &lt;A NAME=&quot;scoped&quot;>Textual representation of IPv6 scoped addresses&lt;/a> &lt;/h4>&#xA;&lt;p>&#xA;The textual representation of IPv6 addresses as described above can be extended&#xA;to specify IPv6 scoped addresses. This extension to the basic addressing architecture&#xA;is described in [draft-ietf-ipngwg-scoping-arch-04.txt].&#xA;&lt;p>&#xA;Because link-local and site-local addresses are non-global, it is possible that different hosts&#xA;may have the same destination address and may be reachable through different interfaces on the&#xA;same originating system. In this case, the originating system is said to be connected&#xA;to multiple zones of the same scope. In order to disambiguate which is the intended destination&#xA;zone, it is possible to append a zone identifier (or &lt;i>scope_id&lt;/i>) to an IPv6 address.&#xA;&lt;p>&#xA;The general format for specifying the &lt;i>scope_id&lt;/i> is the following:&#xA;&lt;p>&lt;blockquote>&lt;i>IPv6-address&lt;/i>%&lt;i>scope_id&lt;/i>&lt;/blockquote>&#xA;&lt;p> The IPv6-address is a literal IPv6 address as described above.&#xA;The &lt;i>scope_id&lt;/i> refers to an interface on the local system, and it can be specified&#xA;in two ways.&#xA;&lt;p>&lt;ol>&lt;li>&lt;i>As a numeric identifier.&lt;/i> This must be a positive integer that identifies the&#xA;particular interface and scope as understood by the system. Usually, the numeric&#xA;values can be determined through administration tools on the system. Each interface may&#xA;have multiple values, one for each scope. If the scope is unspecified, then the default value&#xA;used is zero.&lt;/li>&lt;p>&#xA;&lt;li>&lt;i>As a string.&lt;/i> This must be the exact string that is returned by&#xA;{@link java.net.NetworkInterface#getName()} for the particular interface in question.&#xA;When an Inet6Address is created in this way, the numeric scope-id is determined at the time&#xA;the object is created by querying the relevant NetworkInterface.&lt;/li>&#xA;&lt;/ol>&lt;p>&#xA;Note also, that the numeric &lt;i>scope_id&lt;/i> can be retrieved from Inet6Address instances returned from the&#xA;NetworkInterface class. This can be used to find out the current scope ids configured on the system.&#xA;" annotatedElement="0b8ae653-9475-44ea-8e77-e9c4f3ef6300"/>
            <generalization xmi:id="c7e6207a-783e-4978-89bb-dbc6925e5f39" isSubstitutable="true" general="0c7acf5a-97cb-4d7e-a835-360a90fe77f2"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e0cc968b-1a9c-4746-b7f7-540bd177792e" name="Authenticator" isAbstract="true">
            <ownedComment xmi:id="9d87b78d-cec0-4d5d-9370-123440703523" body="The class Authenticator represents an object that knows how to obtain&#xA;authentication for a network connection.  Usually, it will do this&#xA;by prompting the user for information.&#xA;&lt;p>&#xA;Applications use this class by overriding {@link&#xA;#getPasswordAuthentication()} in a sub-class. This method will&#xA;typically use the various getXXX() accessor methods to get information&#xA;about the entity requesting authentication. It must then acquire a&#xA;username and password either by interacting with the user or through&#xA;some other non-interactive means. The credentials are then returned&#xA;as a {@link PasswordAuthentication} return value.&#xA;&lt;p>&#xA;An instance of this concrete sub-class is then registered&#xA;with the system by calling {@link #setDefault(Authenticator)}.&#xA;When authentication is required, the system will invoke one of the&#xA;requestPasswordAuthentication() methods which in turn will call the&#xA;getPasswordAuthentication() method of the registered object.&#xA;&lt;p>&#xA;All methods that request authentication have a default implementation&#xA;that fails.&#xA;&#xA;@see java.net.Authenticator#setDefault(java.net.Authenticator)&#xA;@see java.net.Authenticator#getPasswordAuthentication()&#xA;&#xA;@author  Bill Foote&#xA;@version 1.32, 06/28/04&#xA;@since   1.2&#xA;" annotatedElement="e0cc968b-1a9c-4746-b7f7-540bd177792e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="1c4d9428-8463-45ae-a1e4-f5f0e085be1e" name="RequestorType">
              <ownedComment xmi:id="ebab068a-1054-428d-a122-31c100154546" body="The type of the entity requesting authentication.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="1c4d9428-8463-45ae-a1e4-f5f0e085be1e"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0c7acf5a-97cb-4d7e-a835-360a90fe77f2" name="InetAddress" clientDependency="2d44e145-1963-4d38-8751-68890ccd6720">
            <ownedComment xmi:id="0bd53793-d556-4399-b86e-6e15d5eb58fc" body="This class represents an Internet Protocol (IP) address.&#xA;&#xA;&lt;p> An IP address is either a 32-bit or 128-bit unsigned number&#xA;used by IP, a lower-level protocol on which protocols like UDP and&#xA;TCP are built. The IP address architecture is defined by &lt;a&#xA;href=&quot;http://www.ietf.org/rfc/rfc790.txt&quot;>&lt;i>RFC&amp;nbsp;790:&#xA;Assigned Numbers&lt;/i>&lt;/a>, &lt;a&#xA;href=&quot;http://www.ietf.org/rfc/rfc1918.txt&quot;> &lt;i>RFC&amp;nbsp;1918:&#xA;Address Allocation for Private Internets&lt;/i>&lt;/a>, &lt;a&#xA;href=&quot;http://www.ietf.org/rfc/rfc2365.txt&quot;>&lt;i>RFC&amp;nbsp;2365:&#xA;Administratively Scoped IP Multicast&lt;/i>&lt;/a>, and &lt;a&#xA;href=&quot;http://www.ietf.org/rfc/rfc2373.txt&quot;>&lt;i>RFC&amp;nbsp;2373: IP&#xA;Version 6 Addressing Architecture&lt;/i>&lt;/a>. An instance of an&#xA;InetAddress consists of an IP address and possibly its&#xA;corresponding host name (depending on whether it is constructed&#xA;with a host name or whether it has already done reverse host name&#xA;resolution).&#xA;&#xA;&lt;h4> Address types &lt;/h4>&#xA;&#xA;&lt;blockquote>&lt;table cellspacing=2 summary=&quot;Description of unicast and multicast address types&quot;>&#xA;&lt;tr>&lt;th valign=top>&lt;i>unicast&lt;/i>&lt;/th>&#xA;&lt;td>An identifier for a single interface. A packet sent to&#xA;a unicast address is delivered to the interface identified by&#xA;that address.&#xA;&#xA;&lt;p> The Unspecified Address -- Also called anylocal or wildcard&#xA;address. It must never be assigned to any node. It indicates the&#xA;absence of an address. One example of its use is as the target of&#xA;bind, which allows a server to accept a client connection on any&#xA;interface, in case the server host has multiple interfaces.&#xA;&#xA;&lt;p> The &lt;i>unspecified&lt;/i> address must not be used as&#xA;the destination address of an IP packet.&#xA;&#xA;&lt;p> The &lt;i>Loopback&lt;/i> Addresses -- This is the address&#xA;assigned to the loopback interface. Anything sent to this&#xA;IP address loops around and becomes IP input on the local&#xA;host. This address is often used when testing a&#xA;client.&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;th valign=top>&lt;i>multicast&lt;/i>&lt;/th>&#xA;&lt;td>An identifier for a set of interfaces (typically belonging&#xA;to different nodes). A packet sent to a multicast address is&#xA;delivered to all interfaces identified by that address.&lt;/td>&lt;/tr>&#xA;&lt;/table>&lt;/blockquote>&#xA;&#xA;&lt;h4> IP address scope &lt;/h4>&#xA;&#xA;&lt;p> &lt;i>Link-local&lt;/i> addresses are designed to be used for addressing&#xA;on a single link for purposes such as auto-address configuration,&#xA;neighbor discovery, or when no routers are present.&#xA;&#xA;&lt;p> &lt;i>Site-local&lt;/i> addresses are designed to be used for addressing&#xA;inside of a site without the need for a global prefix.&#xA;&#xA;&lt;p> &lt;i>Global&lt;/i> addresses are unique across the internet.&#xA;&#xA;&lt;h4> Textual representation of IP addresses &lt;/h4>&#xA;&#xA;The textual representation of an IP address is address family specific.&#xA;&#xA;&lt;p>&#xA;&#xA;For IPv4 address format, please refer to &lt;A&#xA;HREF=&quot;Inet4Address.html#format&quot;>Inet4Address#format&lt;/A>; For IPv6&#xA;address format, please refer to &lt;A&#xA;HREF=&quot;Inet6Address.html#format&quot;>Inet6Address#format&lt;/A>.&#xA;&#xA;&lt;h4> Host Name Resolution &lt;/h4>&#xA;&#xA;Host name-to-IP address &lt;i>resolution&lt;/i> is accomplished through&#xA;the use of a combination of local machine configuration information&#xA;and network naming services such as the Domain Name System (DNS)&#xA;and Network Information Service(NIS). The particular naming&#xA;services(s) being used is by default the local machine configured&#xA;one. For any host name, its corresponding IP address is returned.&#xA;&#xA;&lt;p> &lt;i>Reverse name resolution&lt;/i> means that for any IP address,&#xA;the host associated with the IP address is returned.&#xA;&#xA;&lt;p> The InetAddress class provides methods to resolve host names to&#xA;their IP addresses and vise versa.&#xA;&#xA;&lt;h4> InetAddress Caching &lt;/h4>&#xA;&#xA;The InetAddress class has a cache to store successful as well as&#xA;unsuccessful host name resolutions. The positive caching is there&#xA;to guard against DNS spoofing attacks; while the negative caching&#xA;is used to improve performance.&#xA;&#xA;&lt;p> By default, the result of positive host name resolutions are&#xA;cached forever, because there is no general rule to decide when it&#xA;is safe to remove cache entries. The result of unsuccessful host&#xA;name resolution is cached for a very short period of time (10&#xA;seconds) to improve performance.&#xA;&#xA;&lt;p> Under certain circumstances where it can be determined that DNS&#xA;spoofing attacks are not possible, a Java security property can be&#xA;set to a different Time-to-live (TTL) value for positive&#xA;caching. Likewise, a system admin can configure a different&#xA;negative caching TTL value when needed.&#xA;&#xA;&lt;p> Two Java security properties control the TTL values used for&#xA;positive and negative host name resolution caching:&#xA;&#xA;&lt;blockquote>&#xA;&lt;dl>&#xA;&lt;dt>&lt;b>networkaddress.cache.ttl&lt;/b> (default: -1)&lt;/dt>&#xA;&lt;dd>Indicates the caching policy for successful name lookups from&#xA;the name service. The value is specified as as integer to indicate&#xA;the number of seconds to cache the successful lookup.&#xA;&lt;p>&#xA;A value of -1 indicates &quot;cache forever&quot;.&#xA;&lt;/dd>&#xA;&lt;p>&#xA;&lt;dt>&lt;b>networkaddress.cache.negative.ttl&lt;/b> (default: 10)&lt;/dt>&#xA;&lt;dd>Indicates the caching policy for un-successful name lookups&#xA;from the name service. The value is specified as as integer to&#xA;indicate the number of seconds to cache the failure for&#xA;un-successful lookups.&#xA;&lt;p>&#xA;A value of 0 indicates &quot;never cache&quot;.&#xA;A value of -1 indicates &quot;cache forever&quot;.&#xA;&lt;/dd>&#xA;&lt;/dl>&#xA;&lt;/blockquote>&#xA;&#xA;@author  Chris Warth&#xA;@version 1.109, 04/19/04&#xA;@see     java.net.InetAddress#getByAddress(byte[])&#xA;@see     java.net.InetAddress#getByAddress(java.lang.String, byte[])&#xA;@see     java.net.InetAddress#getAllByName(java.lang.String)&#xA;@see     java.net.InetAddress#getByName(java.lang.String)&#xA;@see     java.net.InetAddress#getLocalHost()&#xA;@since JDK1.0&#xA;" annotatedElement="0c7acf5a-97cb-4d7e-a835-360a90fe77f2"/>
            <interfaceRealization xmi:id="2d44e145-1963-4d38-8751-68890ccd6720" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0c7acf5a-97cb-4d7e-a835-360a90fe77f2" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="27dfcd4e-fe37-44f4-9979-d182c99cf4e5" name="CacheEntry" visibility="package" isLeaf="true">
              <ownedComment xmi:id="cb85f628-3f8f-472c-81cf-986020743000" body="Represents a cache entry&#xA;" annotatedElement="27dfcd4e-fe37-44f4-9979-d182c99cf4e5"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="376f2a13-9fcc-471a-a13f-347247fb7026" name="Cache" visibility="package" isLeaf="true">
              <ownedComment xmi:id="0189c36e-8ec9-425f-88b6-4e49c3b8e90e" body="A cache that manages entries based on a policy specified&#xA;at creation time.&#xA;" annotatedElement="376f2a13-9fcc-471a-a13f-347247fb7026"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="dec388c8-048a-4c65-bed5-432b27b1d7c5" name="NetworkInterface" isLeaf="true">
            <ownedComment xmi:id="1be1b2fd-e570-496f-9fe0-a3c7b782e0bc" body="This class represents a Network Interface made up of a name,&#xA;and a list of IP addresses assigned to this interface.&#xA;It is used to identify the local interface on which a multicast group&#xA;is joined.&#xA;&#xA;Interfaces are normally known by names such as &quot;le0&quot;.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="dec388c8-048a-4c65-bed5-432b27b1d7c5"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="67930d87-3803-4aa6-92d0-c8d651e35832" name="UnknownServiceException">
            <ownedComment xmi:id="7879fb3b-146e-4446-aee1-5d1f1e268d3e" body="Thrown to indicate that an unknown service exception has&#xA;occurred. Either the MIME type returned by a URL connection does&#xA;not make sense, or the application is attempting to write to a&#xA;read-only URL connection.&#xA;&#xA;@author  unascribed&#xA;@version 1.14, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="67930d87-3803-4aa6-92d0-c8d651e35832"/>
            <generalization xmi:id="74004976-191b-4479-ba63-2b10477a4330" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8ec893f4-7faa-41bd-981f-30d7cc9fbfc4" name="BindException">
            <ownedComment xmi:id="f155e5ec-f4a6-4e38-a46b-8b6fc000ce85" body="Signals that an error occurred while attempting to bind a&#xA;socket to a local address and port.  Typically, the port is&#xA;in use, or the requested local address could not be assigned.&#xA;&#xA;@since   JDK1.1&#xA;" annotatedElement="8ec893f4-7faa-41bd-981f-30d7cc9fbfc4"/>
            <generalization xmi:id="8ea63512-0ec9-4e4e-b4f8-50488a27ae2e" isSubstitutable="true" general="5a3b0f1f-48e7-4ea6-8052-1a4cb8b122a9"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d1958f07-6c65-4e12-8e41-376b47876aec" name="ResponseCache" isAbstract="true">
            <ownedComment xmi:id="2e517434-ebd6-4b7d-9972-05bf39f5f63c" body="Represents implementations of URLConnection caches. An instance of&#xA;such a class can be registered with the system by doing&#xA;ResponseCache.setDefault(ResponseCache), and the system will call&#xA;this object in order to:&#xA;&#xA;&lt;ul>&lt;li>store resource data which has been retrieved from an&#xA;external source into the cache&lt;/li>&#xA;&lt;li>try to fetch a requested resource that may have been&#xA;stored in the cache&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;The ResponseCache implementation decides which resources&#xA;should be cached, and for how long they should be cached. If a&#xA;request resource cannot be retrieved from the cache, then the&#xA;protocol handlers will fetch the resource from its original&#xA;location.&#xA;&#xA;The settings for URLConnection#useCaches controls whether the&#xA;protocol is allowed to use a cached response.&#xA;&#xA;For more information on HTTP caching, see &lt;a&#xA;href=&quot;http://www.ietf.org/rfc/rfc2616.txt&quot;&quot;>&lt;i>RFC&amp;nbsp;2616: Hypertext&#xA;Transfer Protocol -- HTTP/1.1&lt;/i>&lt;/a>&#xA;&#xA;@version 1.1, 03/09/22&#xA;@author Yingxian Wang&#xA;@since 1.5&#xA;" annotatedElement="d1958f07-6c65-4e12-8e41-376b47876aec"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="8adda592-9738-44cb-8afa-c171f5a216c4" name="FileNameMap" isAbstract="true">
            <ownedComment xmi:id="6b90b470-ce1a-4fc1-bccc-b7ba7b700ac6" body="A simple interface which provides a mechanism to map&#xA;between a file name and a MIME type string.&#xA;&#xA;@version &#x9;1.14, 12/19/03&#xA;@author  Steven B. Byrne&#xA;@since   JDK1.1&#xA;" annotatedElement="8adda592-9738-44cb-8afa-c171f5a216c4"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="dbc4f68d-d62d-40c3-af92-21a9e1a816f7" name="MalformedURLException">
            <ownedComment xmi:id="d9d4eceb-20bc-40d5-ac67-e27d7f6f45ad" body="Thrown to indicate that a malformed URL has occurred. Either no&#xA;legal protocol could be found in a specification string or the&#xA;string could not be parsed.&#xA;&#xA;@author  Arthur van Hoff&#xA;@version 1.16, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="dbc4f68d-d62d-40c3-af92-21a9e1a816f7"/>
            <generalization xmi:id="49b879f8-7ba1-4d70-8723-c44702b2d378" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="dfa5855c-1a09-424d-b10c-c0b36ff170f3" name="URI" clientDependency="511dfada-83ad-4dc7-8777-0f31849960b1 37779b95-3655-4d76-b698-259af9778c41" isLeaf="true">
            <ownedComment xmi:id="4fbe5221-dca5-45cc-bed4-83a24c8ab162" body="Represents a Uniform Resource Identifier (URI) reference.&#xA;&#xA;&lt;p> Aside from some minor deviations noted below, an instance of this&#xA;class represents a URI reference as defined by&#xA;&lt;a href=&quot;http://www.ietf.org/rfc/rfc2396.txt&quot;&quot;>&lt;i>RFC&amp;nbsp;2396: Uniform&#xA;Resource Identifiers (URI): Generic Syntax&lt;/i>&lt;/a>, amended by &lt;a&#xA;href=&quot;http://www.ietf.org/rfc/rfc2732.txt&quot;>&lt;i>RFC&amp;nbsp;2732: Format for&#xA;Literal IPv6 Addresses in URLs&lt;/i>&lt;/a>. The Literal IPv6 address format&#xA;also supports scope_ids. The syntax and usage of scope_ids is described&#xA;&lt;a href=&quot;Inet6Address.html#scoped&quot;>here&lt;/a>.&#xA;This class provides constructors for creating URI instances from&#xA;their components or by parsing their string forms, methods for accessing the&#xA;various components of an instance, and methods for normalizing, resolving,&#xA;and relativizing URI instances.  Instances of this class are immutable.&#xA;&#xA;&#xA;&lt;h4> URI syntax and components &lt;/h4>&#xA;&#xA;At the highest level a URI reference (hereinafter simply &quot;URI&quot;) in string&#xA;form has the syntax&#xA;&#xA;&lt;blockquote>&#xA;[&lt;i>scheme&lt;/i>&lt;tt>&lt;b>:&lt;/b>&lt;/tt>&lt;i>&lt;/i>]&lt;i>scheme-specific-part&lt;/i>[&lt;tt>&lt;b>#&lt;/b>&lt;/tt>&lt;i>fragment&lt;/i>]&#xA;&lt;/blockquote>&#xA;&#xA;where square brackets [...] delineate optional components and the characters&#xA;&lt;tt>&lt;b>:&lt;/b>&lt;/tt> and &lt;tt>&lt;b>#&lt;/b>&lt;/tt> stand for themselves.&#xA;&#xA;&lt;p> An &lt;i>absolute&lt;/i> URI specifies a scheme; a URI that is not absolute is&#xA;said to be &lt;i>relative&lt;/i>.  URIs are also classified according to whether&#xA;they are &lt;i>opaque&lt;/i> or &lt;i>hierarchical&lt;/i>.&#xA;&#xA;&lt;p> An &lt;i>opaque&lt;/i> URI is an absolute URI whose scheme-specific part does&#xA;not begin with a slash character (&lt;tt>'/'&lt;/tt>).  Opaque URIs are not&#xA;subject to further parsing.  Some examples of opaque URIs are:&#xA;&#xA;&lt;blockquote>&lt;table cellpadding=0 cellspacing=0 summary=&quot;layout&quot;>&#xA;&lt;tr>&lt;td>&lt;tt>mailto:java-net@java.sun.com&lt;/tt>&lt;td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;tt>news:comp.lang.java&lt;/tt>&lt;td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;tt>urn:isbn:096139210x&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;/table>&lt;/blockquote>&#xA;&#xA;&lt;p> A &lt;i>hierarchical&lt;/i> URI is either an absolute URI whose&#xA;scheme-specific part begins with a slash character, or a relative URI, that&#xA;is, a URI that does not specify a scheme.  Some examples of hierarchical&#xA;URIs are:&#xA;&#xA;&lt;blockquote>&#xA;&lt;tt>http://java.sun.com/j2se/1.3/&lt;/tt>&lt;br>&#xA;&lt;tt>docs/guide/collections/designfaq.html#28&lt;/tt>&lt;br>&#xA;&lt;tt>../../../demo/jfc/SwingSet2/src/SwingSet2.java&lt;/tt>&lt;br>&#xA;&lt;tt>file:///~/calendar&lt;/tt>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p> A hierarchical URI is subject to further parsing according to the syntax&#xA;&#xA;&lt;blockquote>&#xA;[&lt;i>scheme&lt;/i>&lt;tt>&lt;b>:&lt;/b>&lt;/tt>][&lt;tt>&lt;b>//&lt;/b>&lt;/tt>&lt;i>authority&lt;/i>][&lt;i>path&lt;/i>][&lt;tt>&lt;b>?&lt;/b>&lt;/tt>&lt;i>query&lt;/i>][&lt;tt>&lt;b>#&lt;/b>&lt;/tt>&lt;i>fragment&lt;/i>]&#xA;&lt;/blockquote>&#xA;&#xA;where the characters &lt;tt>&lt;b>:&lt;/b>&lt;/tt>, &lt;tt>&lt;b>/&lt;/b>&lt;/tt>,&#xA;&lt;tt>&lt;b>?&lt;/b>&lt;/tt>, and &lt;tt>&lt;b>#&lt;/b>&lt;/tt> stand for themselves.  The&#xA;scheme-specific part of a hierarchical URI consists of the characters&#xA;between the scheme and fragment components.&#xA;&#xA;&lt;p> The authority component of a hierarchical URI is, if specified, either&#xA;&lt;i>server-based&lt;/i> or &lt;i>registry-based&lt;/i>.  A server-based authority&#xA;parses according to the familiar syntax&#xA;&#xA;&lt;blockquote>&#xA;[&lt;i>user-info&lt;/i>&lt;tt>&lt;b>@&lt;/b>&lt;/tt>]&lt;i>host&lt;/i>[&lt;tt>&lt;b>:&lt;/b>&lt;/tt>&lt;i>port&lt;/i>]&#xA;&lt;/blockquote>&#xA;&#xA;where the characters &lt;tt>&lt;b>@&lt;/b>&lt;/tt> and &lt;tt>&lt;b>:&lt;/b>&lt;/tt> stand for&#xA;themselves.  Nearly all URI schemes currently in use are server-based.  An&#xA;authority component that does not parse in this way is considered to be&#xA;registry-based.&#xA;&#xA;&lt;p> The path component of a hierarchical URI is itself said to be absolute&#xA;if it begins with a slash character (&lt;tt>'/'&lt;/tt>); otherwise it is&#xA;relative.  The path of a hierarchical URI that is either absolute or&#xA;specifies an authority is always absolute.&#xA;&#xA;&lt;p> All told, then, a URI instance has the following nine components:&#xA;&#xA;&lt;blockquote>&lt;table summary=&quot;Describes the components of a URI:scheme,scheme-specific-part,authority,user-info,host,port,path,query,fragment&quot;>&#xA;&lt;tr>&lt;th>&lt;i>Component&lt;/i>&lt;/th>&lt;th>&lt;i>Type&lt;/i>&lt;/th>&lt;/tr>&#xA;&lt;tr>&lt;td>scheme&lt;/td>&lt;td>&lt;tt>String&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>scheme-specific-part&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td>&lt;td>&lt;tt>String&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>authority&lt;/td>&lt;td>&lt;tt>String&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>user-info&lt;/td>&lt;td>&lt;tt>String&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>host&lt;/td>&lt;td>&lt;tt>String&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>port&lt;/td>&lt;td>&lt;tt>int&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>path&lt;/td>&lt;td>&lt;tt>String&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>query&lt;/td>&lt;td>&lt;tt>String&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>fragment&lt;/td>&lt;td>&lt;tt>String&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;/table>&lt;/blockquote>&#xA;&#xA;In a given instance any particular component is either &lt;i>undefined&lt;/i> or&#xA;&lt;i>defined&lt;/i> with a distinct value.  Undefined string components are&#xA;represented by &lt;tt>null&lt;/tt>, while undefined integer components are&#xA;represented by &lt;tt>-1&lt;/tt>.  A string component may be defined to have the&#xA;empty string as its value; this is not equivalent to that component being&#xA;undefined.&#xA;&#xA;&lt;p> Whether a particular component is or is not defined in an instance&#xA;depends upon the type of the URI being represented.  An absolute URI has a&#xA;scheme component.  An opaque URI has a scheme, a scheme-specific part, and&#xA;possibly a fragment, but has no other components.  A hierarchical URI always&#xA;has a path (though it may be empty) and a scheme-specific-part (which at&#xA;least contains the path), and may have any of the other components.  If the&#xA;authority component is present and is server-based then the host component&#xA;will be defined and the user-information and port components may be defined.&#xA;&#xA;&#xA;&lt;h4> Operations on URI instances &lt;/h4>&#xA;&#xA;The key operations supported by this class are those of&#xA;&lt;i>normalization&lt;/i>, &lt;i>resolution&lt;/i>, and &lt;i>relativization&lt;/i>.&#xA;&#xA;&lt;p> &lt;i>Normalization&lt;/i> is the process of removing unnecessary &lt;tt>&quot;.&quot;&lt;/tt>&#xA;and &lt;tt>&quot;..&quot;&lt;/tt> segments from the path component of a hierarchical URI.&#xA;Each &lt;tt>&quot;.&quot;&lt;/tt> segment is simply removed.  A &lt;tt>&quot;..&quot;&lt;/tt> segment is&#xA;removed only if it is preceded by a non-&lt;tt>&quot;..&quot;&lt;/tt> segment.&#xA;Normalization has no effect upon opaque URIs.&#xA;&#xA;&lt;p> &lt;i>Resolution&lt;/i> is the process of resolving one URI against another,&#xA;&lt;i>base&lt;/i> URI.  The resulting URI is constructed from components of both&#xA;URIs in the manner specified by RFC&amp;nbsp;2396, taking components from the&#xA;base URI for those not specified in the original.  For hierarchical URIs,&#xA;the path of the original is resolved against the path of the base and then&#xA;normalized.  The result, for example, of resolving&#xA;&#xA;&lt;blockquote>&#xA;&lt;tt>docs/guide/collections/designfaq.html#28&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tt>(1)&#xA;&lt;/blockquote>&#xA;&#xA;against the base URI &lt;tt>http://java.sun.com/j2se/1.3/&lt;/tt> is the result&#xA;URI&#xA;&#xA;&lt;blockquote>&#xA;&lt;tt>http://java.sun.com/j2se/1.3/docs/guide/collections/designfaq.html#28&lt;/tt>&#xA;&lt;/blockquote>&#xA;&#xA;Resolving the relative URI&#xA;&#xA;&lt;blockquote>&#xA;&lt;tt>../../../demo/jfc/SwingSet2/src/SwingSet2.java&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tt>(2)&#xA;&lt;/blockquote>&#xA;&#xA;against this result yields, in turn,&#xA;&#xA;&lt;blockquote>&#xA;&lt;tt>http://java.sun.com/j2se/1.3/demo/jfc/SwingSet2/src/SwingSet2.java&lt;/tt>&#xA;&lt;/blockquote>&#xA;&#xA;Resolution of both absolute and relative URIs, and of both absolute and&#xA;relative paths in the case of hierarchical URIs, is supported.  Resolving&#xA;the URI &lt;tt>file:///~calendar&lt;/tt> against any other URI simply yields the&#xA;original URI, since it is absolute.  Resolving the relative URI (2) above&#xA;against the relative base URI (1) yields the normalized, but still relative,&#xA;URI&#xA;&#xA;&lt;blockquote>&#xA;&lt;tt>demo/jfc/SwingSet2/src/SwingSet2.java&lt;/tt>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p> &lt;i>Relativization&lt;/i>, finally, is the inverse of resolution: For any&#xA;two normalized URIs &lt;i>u&lt;/i> and&amp;nbsp;&lt;i>v&lt;/i>,&#xA;&#xA;&lt;blockquote>&#xA;&lt;i>u&lt;/i>&lt;tt>.relativize(&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.resolve(&lt;/tt>&lt;i>v&lt;/i>&lt;tt>)).equals(&lt;/tt>&lt;i>v&lt;/i>&lt;tt>)&lt;/tt>&amp;nbsp;&amp;nbsp;and&lt;br>&#xA;&lt;i>u&lt;/i>&lt;tt>.resolve(&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.relativize(&lt;/tt>&lt;i>v&lt;/i>&lt;tt>)).equals(&lt;/tt>&lt;i>v&lt;/i>&lt;tt>)&lt;/tt>&amp;nbsp;&amp;nbsp;.&lt;br>&#xA;&lt;/blockquote>&#xA;&#xA;This operation is often useful when constructing a document containing URIs&#xA;that must be made relative to the base URI of the document wherever&#xA;possible.  For example, relativizing the URI&#xA;&#xA;&lt;blockquote>&#xA;&lt;tt>http://java.sun.com/j2se/1.3/docs/guide/index.html&lt;/tt>&#xA;&lt;/blockquote>&#xA;&#xA;against the base URI&#xA;&#xA;&lt;blockquote>&#xA;&lt;tt>http://java.sun.com/j2se/1.3&lt;/tt>&#xA;&lt;/blockquote>&#xA;&#xA;yields the relative URI &lt;tt>docs/guide/index.html&lt;/tt>.&#xA;&#xA;&#xA;&lt;h4> Character categories &lt;/h4>&#xA;&#xA;RFC&amp;nbsp;2396 specifies precisely which characters are permitted in the&#xA;various components of a URI reference.  The following categories, most of&#xA;which are taken from that specification, are used below to describe these&#xA;constraints:&#xA;&#xA;&lt;blockquote>&lt;table cellspacing=2 summary=&quot;Describes categories alpha,digit,alphanum,unreserved,punct,reserved,escaped,and other&quot;>&#xA;&lt;tr>&lt;th valign=top>&lt;i>alpha&lt;/i>&lt;/th>&#xA;&lt;td>The US-ASCII alphabetic characters,&#xA;&lt;tt>'A'&lt;/tt>&amp;nbsp;through&amp;nbsp;&lt;tt>'Z'&lt;/tt>&#xA;and &lt;tt>'a'&lt;/tt>&amp;nbsp;through&amp;nbsp;&lt;tt>'z'&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;th valign=top>&lt;i>digit&lt;/i>&lt;/th>&#xA;&lt;td>The US-ASCII decimal digit characters,&#xA;&lt;tt>'0'&lt;/tt>&amp;nbsp;through&amp;nbsp;&lt;tt>'9'&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;th valign=top>&lt;i>alphanum&lt;/i>&lt;/th>&#xA;&lt;td>All &lt;i>alpha&lt;/i> and &lt;i>digit&lt;/i> characters&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;th valign=top>&lt;i>unreserved&lt;/i>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/th>&#xA;&lt;td>All &lt;i>alphanum&lt;/i> characters together with those in the string&#xA;&lt;tt>&quot;_-!.~'()*&quot;&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;th valign=top>&lt;i>punct&lt;/i>&lt;/th>&#xA;&lt;td>The characters in the string &lt;tt>&quot;,;:$&amp;+=&quot;&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;th valign=top>&lt;i>reserved&lt;/i>&lt;/th>&#xA;&lt;td>All &lt;i>punct&lt;/i> characters together with those in the string&#xA;&lt;tt>&quot;?/[]@&quot;&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;th valign=top>&lt;i>escaped&lt;/i>&lt;/th>&#xA;&lt;td>Escaped octets, that is, triplets consisting of the percent&#xA;character (&lt;tt>'%'&lt;/tt>) followed by two hexadecimal digits&#xA;(&lt;tt>'0'&lt;/tt>-&lt;tt>'9'&lt;/tt>, &lt;tt>'A'&lt;/tt>-&lt;tt>'F'&lt;/tt>, and&#xA;&lt;tt>'a'&lt;/tt>-&lt;tt>'f'&lt;/tt>)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;th valign=top>&lt;i>other&lt;/i>&lt;/th>&#xA;&lt;td>The Unicode characters that are not in the US-ASCII character set,&#xA;are not control characters (according to the {@link&#xA;java.lang.Character#isISOControl(char) Character.isISOControl}&#xA;method), and are not space characters (according to the {@link&#xA;java.lang.Character#isSpaceChar(char) Character.isSpaceChar}&#xA;method)&amp;nbsp;&amp;nbsp;&lt;i>(&lt;b>Deviation from RFC 2396&lt;/b>, which is&#xA;limited to US-ASCII)&lt;/i>&lt;/td>&lt;/tr>&#xA;&lt;/table>&lt;/blockquote>&#xA;&#xA;&lt;p>&lt;a name=&quot;legal-chars&quot;>&lt;/a> The set of all legal URI characters consists of&#xA;the &lt;i>unreserved&lt;/i>, &lt;i>reserved&lt;/i>, &lt;i>escaped&lt;/i>, and &lt;i>other&lt;/i>&#xA;characters.&#xA;&#xA;&#xA;&lt;h4> Escaped octets, quotation, encoding, and decoding &lt;/h4>&#xA;&#xA;RFC 2396 allows escaped octets to appear in the user-info, path, query, and&#xA;fragment components.  Escaping serves two purposes in URIs:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> To &lt;i>encode&lt;/i> non-US-ASCII characters when a URI is required to&#xA;conform strictly to RFC&amp;nbsp;2396 by not containing any &lt;i>other&lt;/i>&#xA;characters.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> To &lt;i>quote&lt;/i> characters that are otherwise illegal in a&#xA;component.  The user-info, path, query, and fragment components differ&#xA;slightly in terms of which characters are considered legal and illegal.&#xA;&lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;These purposes are served in this class by three related operations:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p>&lt;a name=&quot;encode&quot;>&lt;/a> A character is &lt;i>encoded&lt;/i> by replacing it&#xA;with the sequence of escaped octets that represent that character in the&#xA;UTF-8 character set.  The Euro currency symbol (&lt;tt>'&amp;#92;u20AC'&lt;/tt>),&#xA;for example, is encoded as &lt;tt>&quot;%E2%82%AC&quot;&lt;/tt>.  &lt;i>(&lt;b>Deviation from&#xA;RFC&amp;nbsp;2396&lt;/b>, which does not specify any particular character&#xA;set.)&lt;/i> &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p>&lt;a name=&quot;quote&quot;>&lt;/a> An illegal character is &lt;i>quoted&lt;/i> simply by&#xA;encoding it.  The space character, for example, is quoted by replacing it&#xA;with &lt;tt>&quot;%20&quot;&lt;/tt>.  UTF-8 contains US-ASCII, hence for US-ASCII&#xA;characters this transformation has exactly the effect required by&#xA;RFC&amp;nbsp;2396. &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p>&lt;a name=&quot;decode&quot;>&lt;/a>&#xA;A sequence of escaped octets is &lt;i>decoded&lt;/i> by&#xA;replacing it with the sequence of characters that it represents in the&#xA;UTF-8 character set.  UTF-8 contains US-ASCII, hence decoding has the&#xA;effect of de-quoting any quoted US-ASCII characters as well as that of&#xA;decoding any encoded non-US-ASCII characters.  If a &lt;a&#xA;href=&quot;../nio/charset/CharsetDecoder.html#ce&quot;>decoding error&lt;/a> occurs&#xA;when decoding the escaped octets then the erroneous octets are replaced by&#xA;&lt;tt>'&amp;#92;uFFFD'&lt;/tt>, the Unicode replacement character.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;These operations are exposed in the constructors and methods of this class&#xA;as follows:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> The {@link #URI(java.lang.String) &lt;code>single-argument&#xA;constructor&lt;/code>} requires any illegal characters in its argument to be&#xA;quoted and preserves any escaped octets and &lt;i>other&lt;/i> characters that&#xA;are present.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> The {@link&#xA;#URI(java.lang.String,java.lang.String,java.lang.String,int,java.lang.String,java.lang.String,java.lang.String)&#xA;&lt;code>multi-argument constructors&lt;/code>} quote illegal characters as&#xA;required by the components in which they appear.  The percent character&#xA;(&lt;tt>'%'&lt;/tt>) is always quoted by these constructors.  Any &lt;i>other&lt;/i>&#xA;characters are preserved.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> The {@link #getRawUserInfo() getRawUserInfo}, {@link #getRawPath()&#xA;getRawPath}, {@link #getRawQuery() getRawQuery}, {@link #getRawFragment()&#xA;getRawFragment}, {@link #getRawAuthority() getRawAuthority}, and {@link&#xA;#getRawSchemeSpecificPart() getRawSchemeSpecificPart} methods return the&#xA;values of their corresponding components in raw form, without interpreting&#xA;any escaped octets.  The strings returned by these methods may contain&#xA;both escaped octets and &lt;i>other&lt;/i> characters, and will not contain any&#xA;illegal characters.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> The {@link #getUserInfo() getUserInfo}, {@link #getPath()&#xA;getPath}, {@link #getQuery() getQuery}, {@link #getFragment()&#xA;getFragment}, {@link #getAuthority() getAuthority}, and {@link&#xA;#getSchemeSpecificPart() getSchemeSpecificPart} methods decode any escaped&#xA;octets in their corresponding components.  The strings returned by these&#xA;methods may contain both &lt;i>other&lt;/i> characters and illegal characters,&#xA;and will not contain any escaped octets.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> The {@link #toString() toString} method returns a URI string with&#xA;all necessary quotation but which may contain &lt;i>other&lt;/i> characters.&#xA;&lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> The {@link #toASCIIString() toASCIIString} method returns a fully&#xA;quoted and encoded URI string that does not contain any &lt;i>other&lt;/i>&#xA;characters.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&#xA;&lt;h4> Identities &lt;/h4>&#xA;&#xA;For any URI &lt;i>u&lt;/i>, it is always the case that&#xA;&#xA;&lt;blockquote>&#xA;&lt;tt>new URI(&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.toString()).equals(&lt;/tt>&lt;i>u&lt;/i>&lt;tt>)&lt;/tt>&amp;nbsp;.&#xA;&lt;/blockquote>&#xA;&#xA;For any URI &lt;i>u&lt;/i> that does not contain redundant syntax such as two&#xA;slashes before an empty authority (as in &lt;tt>file:///tmp/&lt;/tt>&amp;nbsp;) or a&#xA;colon following a host name but no port (as in&#xA;&lt;tt>http://java.sun.com:&lt;/tt>&amp;nbsp;), and that does not encode characters&#xA;except those that must be quoted, the following identities also hold:&#xA;&#xA;&lt;blockquote>&#xA;&lt;tt>new URI(&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.getScheme(),&lt;br>&#xA;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.getSchemeSpecificPart(),&lt;br>&#xA;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.getFragment())&lt;br>&#xA;.equals(&lt;/tt>&lt;i>u&lt;/i>&lt;tt>)&lt;/tt>&#xA;&lt;/blockquote>&#xA;&#xA;in all cases,&#xA;&#xA;&lt;blockquote>&#xA;&lt;tt>new URI(&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.getScheme(),&lt;br>&#xA;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.getUserInfo(),&amp;nbsp;&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.getAuthority(),&lt;br>&#xA;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.getPath(),&amp;nbsp;&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.getQuery(),&lt;br>&#xA;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.getFragment())&lt;br>&#xA;.equals(&lt;/tt>&lt;i>u&lt;/i>&lt;tt>)&lt;/tt>&#xA;&lt;/blockquote>&#xA;&#xA;if &lt;i>u&lt;/i> is hierarchical, and&#xA;&#xA;&lt;blockquote>&#xA;&lt;tt>new URI(&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.getScheme(),&lt;br>&#xA;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.getUserInfo(),&amp;nbsp;&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.getHost(),&amp;nbsp;&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.getPort(),&lt;br>&#xA;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.getPath(),&amp;nbsp;&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.getQuery(),&lt;br>&#xA;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/tt>&lt;i>u&lt;/i>&lt;tt>.getFragment())&lt;br>&#xA;.equals(&lt;/tt>&lt;i>u&lt;/i>&lt;tt>)&lt;/tt>&#xA;&lt;/blockquote>&#xA;&#xA;if &lt;i>u&lt;/i> is hierarchical and has either no authority or a server-based&#xA;authority.&#xA;&#xA;&#xA;&lt;h4> URIs, URLs, and URNs &lt;/h4>&#xA;&#xA;A URI is a uniform resource &lt;i>identifier&lt;/i> while a URL is a uniform&#xA;resource &lt;i>locator&lt;/i>.  Hence every URL is a URI, abstractly speaking, but&#xA;not every URI is a URL.  This is because there is another subcategory of&#xA;URIs, uniform resource &lt;i>names&lt;/i> (URNs), which name resources but do not&#xA;specify how to locate them.  The &lt;tt>mailto&lt;/tt>, &lt;tt>news&lt;/tt>, and&#xA;&lt;tt>isbn&lt;/tt> URIs shown above are examples of URNs.&#xA;&#xA;&lt;p> The conceptual distinction between URIs and URLs is reflected in the&#xA;differences between this class and the {@link URL} class.&#xA;&#xA;&lt;p> An instance of this class represents a URI reference in the syntactic&#xA;sense defined by RFC&amp;nbsp;2396.  A URI may be either absolute or relative.&#xA;A URI string is parsed according to the generic syntax without regard to the&#xA;scheme, if any, that it specifies.  No lookup of the host, if any, is&#xA;performed, and no scheme-dependent stream handler is constructed.  Equality,&#xA;hashing, and comparison are defined strictly in terms of the character&#xA;content of the instance.  In other words, a URI instance is little more than&#xA;a structured string that supports the syntactic, scheme-independent&#xA;operations of comparison, normalization, resolution, and relativization.&#xA;&#xA;&lt;p> An instance of the {@link URL} class, by contrast, represents the&#xA;syntactic components of a URL together with some of the information required&#xA;to access the resource that it describes.  A URL must be absolute, that is,&#xA;it must always specify a scheme.  A URL string is parsed according to its&#xA;scheme.  A stream handler is always established for a URL, and in fact it is&#xA;impossible to create a URL instance for a scheme for which no handler is&#xA;available.  Equality and hashing depend upon both the scheme and the&#xA;Internet address of the host, if any; comparison is not defined.  In other&#xA;words, a URL is a structured string that supports the syntactic operation of&#xA;resolution as well as the network I/O operations of looking up the host and&#xA;opening a connection to the specified resource.&#xA;&#xA;&#xA;@version 1.39, 04/05/05&#xA;@author Mark Reinhold&#xA;@since 1.4&#xA;&#xA;@see &lt;a href=&quot;http://ietf.org/rfc/rfc2279.txt&quot;>&lt;i>RFC&amp;nbsp;2279: UTF-8, a&#xA;transformation format of ISO 10646&lt;/i>&lt;/a>, &lt;br>&lt;a&#xA;href=&quot;http://www.ietf.org/rfc/rfc2373.txt&quot;>&lt;i>RFC&amp;nbsp;2373: IPv6 Addressing&#xA;Architecture&lt;/i>&lt;/a>, &lt;br>&lt;a&#xA;href=&quot;http://www.ietf.org/rfc/rfc2396.txt&quot;&quot;>&lt;i>RFC&amp;nbsp;2396: Uniform&#xA;Resource Identifiers (URI): Generic Syntax&lt;/i>&lt;/a>, &lt;br>&lt;a&#xA;href=&quot;http://www.ietf.org/rfc/rfc2732.txt&quot;>&lt;i>RFC&amp;nbsp;2732: Format for&#xA;Literal IPv6 Addresses in URLs&lt;/i>&lt;/a>, &lt;br>&lt;a&#xA;href=&quot;URISyntaxException.html&quot;>URISyntaxException&lt;/a>&#xA;" annotatedElement="dfa5855c-1a09-424d-b10c-c0b36ff170f3"/>
            <interfaceRealization xmi:id="37779b95-3655-4d76-b698-259af9778c41" name="" supplier="edb22b7e-a568-4493-ae96-6d5b46a3d70b" client="dfa5855c-1a09-424d-b10c-c0b36ff170f3" contract="edb22b7e-a568-4493-ae96-6d5b46a3d70b"/>
            <interfaceRealization xmi:id="511dfada-83ad-4dc7-8777-0f31849960b1" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="dfa5855c-1a09-424d-b10c-c0b36ff170f3" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="2c299bf4-a46b-4606-beff-4386459561b3" name="Parser" visibility="private"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8f842ed0-8c58-4488-b621-794a994fc822" name="SocketImpl" clientDependency="00b20d2c-4317-47f9-ab01-a61e27cf919a" isAbstract="true">
            <ownedComment xmi:id="f10aa97d-85de-436c-a881-7cd51f8f1850" body="The abstract class &lt;code>SocketImpl&lt;/code> is a common superclass&#xA;of all classes that actually implement sockets. It is used to&#xA;create both client and server sockets.&#xA;&lt;p>&#xA;A &quot;plain&quot; socket implements these methods exactly as&#xA;described, without attempting to go through a firewall or proxy.&#xA;&#xA;@author  unascribed&#xA;@version 1.42, 03/25/04&#xA;@since   JDK1.0&#xA;" annotatedElement="8f842ed0-8c58-4488-b621-794a994fc822"/>
            <interfaceRealization xmi:id="00b20d2c-4317-47f9-ab01-a61e27cf919a" name="" supplier="7c5d7307-d3dd-4c9f-ac2a-5d5d1eaa813e" client="8f842ed0-8c58-4488-b621-794a994fc822" contract="7c5d7307-d3dd-4c9f-ac2a-5d5d1eaa813e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="93986d3c-5efb-4497-9468-539a4a65f4f2" name="PortUnreachableException">
            <ownedComment xmi:id="7ddb4ac5-c301-457f-9885-6554391396fa" body="Signals that an ICMP Port Unreachable message has been&#xA;received on a connected datagram.&#xA;&#xA;@since   1.4&#xA;" annotatedElement="93986d3c-5efb-4497-9468-539a4a65f4f2"/>
            <generalization xmi:id="a697f497-1024-401d-a2d2-49cbef0af098" isSubstitutable="true" general="5a3b0f1f-48e7-4ea6-8052-1a4cb8b122a9"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="02ee974e-7357-44d7-8b8d-2eeb418b6064" name="SocketImplFactory" isAbstract="true">
            <ownedComment xmi:id="f0be180d-44ee-4764-8a71-82b33d946dda" body="This interface defines a factory for socket implementations. It&#xA;is used by the classes &lt;code>Socket&lt;/code> and&#xA;&lt;code>ServerSocket&lt;/code> to create actual socket&#xA;implementations.&#xA;&#xA;@author  Arthur van Hoff&#xA;@version 1.18, 12/19/03&#xA;@see     java.net.Socket&#xA;@see     java.net.ServerSocket&#xA;@since   JDK1.0&#xA;" annotatedElement="02ee974e-7357-44d7-8b8d-2eeb418b6064"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="4bdd0e8f-a02c-4d4b-9056-faa78642190d" name="awt">
          <packagedElement xmi:type="uml:Class" xmi:id="9b4775cf-c511-4e65-a3d1-cb8ef81c79e4" name="ImageCapabilities" clientDependency="246cb920-07bc-463b-a7b6-97c1f22c850f">
            <ownedComment xmi:id="1e923082-232d-4390-b6b5-344b792e79cc" body="Capabilities and properties of images.&#xA;@author Michael Martak&#xA;@since 1.4&#xA;" annotatedElement="9b4775cf-c511-4e65-a3d1-cb8ef81c79e4"/>
            <interfaceRealization xmi:id="246cb920-07bc-463b-a7b6-97c1f22c850f" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="9b4775cf-c511-4e65-a3d1-cb8ef81c79e4" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="365f53a3-3794-45b8-bb24-daa80f804d2a" name="peer">
            <packagedElement xmi:type="uml:Interface" xmi:id="197a3491-3ca6-40de-bd9e-cfe51316f0e1" name="TextComponentPeer" isAbstract="true">
              <ownedComment xmi:id="b945bd41-8f83-42a5-acec-67e23819572a" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="197a3491-3ca6-40de-bd9e-cfe51316f0e1"/>
              <generalization xmi:id="8d0aa711-05e2-4fb9-9647-acc4eae24aa6" isSubstitutable="true" general="14e5b295-1251-40e3-9c5c-1d51d3d77e82"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="049a1ff6-6154-44fc-bb78-bcfdcf8f448d" name="RobotPeer" isAbstract="true">
              <ownedComment xmi:id="af56705e-66ac-4de6-b44e-15f59de69eda" body="RobotPeer defines an interface whereby toolkits support automated testing&#xA;by allowing native input events to be generated from Java code.&#xA;&#xA;This interface should not be directly imported by code outside the&#xA;java.awt.* hierarchy; it is not to be considered public and is subject&#xA;to change.&#xA;&#xA;@version &#x9;1.9, 12/19/03&#xA;@author &#x9;Robi Khan&#xA;" annotatedElement="049a1ff6-6154-44fc-bb78-bcfdcf8f448d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="df372a78-4ef9-462d-9740-8e34a4e63adf" name="FileDialogPeer" isAbstract="true">
              <ownedComment xmi:id="e772c332-fa0a-43f1-99d0-ae1881edc0aa" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="df372a78-4ef9-462d-9740-8e34a4e63adf"/>
              <generalization xmi:id="a85b00e9-b339-45a7-802e-8d9372acfc25" isSubstitutable="true" general="93345940-1992-4bd9-a213-37132ba02cd0"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="14e5b295-1251-40e3-9c5c-1d51d3d77e82" name="ComponentPeer" isAbstract="true">
              <ownedComment xmi:id="c990bf22-dd94-441d-9b37-ce05351d9f9b" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="14e5b295-1251-40e3-9c5c-1d51d3d77e82"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="2811caf4-ecf8-46af-b227-7aaa83373c7e" name="ScrollPanePeer" isAbstract="true">
              <ownedComment xmi:id="b7329504-e75c-4c6b-b8b0-b9cda9637c83" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="2811caf4-ecf8-46af-b227-7aaa83373c7e"/>
              <generalization xmi:id="d730e425-ee2e-4cee-b2aa-2d10c8a3a805" isSubstitutable="true" general="67042e25-ac44-41f9-a713-88bb9c95dc1e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="2e85d37f-fa64-434d-8509-90061abc0ae3" name="MenuItemPeer" isAbstract="true">
              <ownedComment xmi:id="32f3dfe3-b75e-431a-8aa6-90828ad208bd" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="2e85d37f-fa64-434d-8509-90061abc0ae3"/>
              <generalization xmi:id="817675f1-315b-4cd3-b72f-7cc3b2c82d4e" isSubstitutable="true" general="fcc5a362-e0c6-4f1a-9853-9cb648826ffe"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="67042e25-ac44-41f9-a713-88bb9c95dc1e" name="ContainerPeer" isAbstract="true">
              <ownedComment xmi:id="cc9a5f2c-f02d-49b1-bed9-01a6ad59c43c" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="67042e25-ac44-41f9-a713-88bb9c95dc1e"/>
              <generalization xmi:id="8d297cf3-44a8-4ed2-8609-292b31d0b357" isSubstitutable="true" general="14e5b295-1251-40e3-9c5c-1d51d3d77e82"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="2d534426-4d2e-410d-96ce-0ece614ea34a" name="CanvasPeer" isAbstract="true">
              <ownedComment xmi:id="a15682c7-b334-4b15-949b-eb0248aa5835" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="2d534426-4d2e-410d-96ce-0ece614ea34a"/>
              <generalization xmi:id="282abf6e-174f-4c1f-87c7-d92b00b19baf" isSubstitutable="true" general="14e5b295-1251-40e3-9c5c-1d51d3d77e82"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="1a8268a5-665b-4ed2-a44f-fd2dc7651ba3" name="FramePeer" isAbstract="true">
              <ownedComment xmi:id="ef20caf2-364b-49fd-b146-57cd289fad9d" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="1a8268a5-665b-4ed2-a44f-fd2dc7651ba3"/>
              <generalization xmi:id="93d3995e-89d1-4b3e-9b71-9930e49d5678" isSubstitutable="true" general="69fe3811-2dab-41c4-90ae-52119b252482"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="b5b0f8e0-b404-44a0-8721-52e3964c0b07" name="CheckboxPeer" isAbstract="true">
              <ownedComment xmi:id="8ef84ef1-a6c4-4385-b3e0-e41ab59af8e8" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="b5b0f8e0-b404-44a0-8721-52e3964c0b07"/>
              <generalization xmi:id="cdeb0655-cd01-4773-91c7-264729ba3721" isSubstitutable="true" general="14e5b295-1251-40e3-9c5c-1d51d3d77e82"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="813f0ab3-7f39-450d-acb2-c633fee4ff9d" name="MouseInfoPeer" isAbstract="true">
              <ownedComment xmi:id="bc45d169-e678-4f71-b90f-3f23df84771f" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="813f0ab3-7f39-450d-acb2-c633fee4ff9d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="69fe3811-2dab-41c4-90ae-52119b252482" name="WindowPeer" isAbstract="true">
              <ownedComment xmi:id="5e097f3c-a0e2-49b6-a42b-58f462c7df9c" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="69fe3811-2dab-41c4-90ae-52119b252482"/>
              <generalization xmi:id="6d01391d-e6de-4ef9-9310-a9e01bd9cf73" isSubstitutable="true" general="67042e25-ac44-41f9-a713-88bb9c95dc1e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="3e417578-8f78-4890-bd1d-4053d6a34ad4" name="LabelPeer" isAbstract="true">
              <ownedComment xmi:id="16dd2974-ff56-4cf2-a04b-bafd49231679" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="3e417578-8f78-4890-bd1d-4053d6a34ad4"/>
              <generalization xmi:id="d856780d-afad-452a-8885-ba22223ec029" isSubstitutable="true" general="14e5b295-1251-40e3-9c5c-1d51d3d77e82"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d1807ec4-4a63-4056-b89f-f69e2b04c996" name="ChoicePeer" isAbstract="true">
              <ownedComment xmi:id="944567ae-8a95-4ffe-adea-9bfade9c2616" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="d1807ec4-4a63-4056-b89f-f69e2b04c996"/>
              <generalization xmi:id="5be90cc9-7c43-4baf-9695-261accf6e498" isSubstitutable="true" general="14e5b295-1251-40e3-9c5c-1d51d3d77e82"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="cc796a3d-e145-4162-a262-30c010eacc52" name="FontPeer" isAbstract="true">
              <ownedComment xmi:id="33a809d4-c3b9-4e41-9c51-26049d1d137a" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="cc796a3d-e145-4162-a262-30c010eacc52"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d5c90f6c-7687-4075-9cec-209640107503" name="PanelPeer" isAbstract="true">
              <ownedComment xmi:id="3d838245-42ce-4336-bd0d-4ea654ab446a" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="d5c90f6c-7687-4075-9cec-209640107503"/>
              <generalization xmi:id="a081beea-4db3-47ad-9cbb-93ee6a1f9331" isSubstitutable="true" general="67042e25-ac44-41f9-a713-88bb9c95dc1e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="88a1e205-4465-4ac5-9b60-7a6388841f35" name="MenuPeer" isAbstract="true">
              <ownedComment xmi:id="3a6b2720-673b-459a-9003-99934826f808" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="88a1e205-4465-4ac5-9b60-7a6388841f35"/>
              <generalization xmi:id="5fca3fdd-86e8-4d9f-aee1-3595e1a0235c" isSubstitutable="true" general="2e85d37f-fa64-434d-8509-90061abc0ae3"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="07f45bc5-b187-4008-9099-19319b3e7e55" name="ListPeer" isAbstract="true">
              <ownedComment xmi:id="817f06d1-2d95-4506-8dce-b74e3bd0360e" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="07f45bc5-b187-4008-9099-19319b3e7e55"/>
              <generalization xmi:id="cbb56f5d-c359-4b7b-9c7c-008c8bb6ccb7" isSubstitutable="true" general="14e5b295-1251-40e3-9c5c-1d51d3d77e82"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="43e03774-6787-44ab-b90c-f91f04ad57d2" name="CheckboxMenuItemPeer" isAbstract="true">
              <ownedComment xmi:id="a71f3cd4-80b4-4072-b438-f044130144a9" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="43e03774-6787-44ab-b90c-f91f04ad57d2"/>
              <generalization xmi:id="eba63819-615a-4815-a68e-e771e1a282b1" isSubstitutable="true" general="2e85d37f-fa64-434d-8509-90061abc0ae3"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="defb3a4f-f932-42b2-a62c-5c1eebd38bf6" name="ButtonPeer" isAbstract="true">
              <ownedComment xmi:id="6aa75d56-55da-424d-97cf-1b98572bb2de" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="defb3a4f-f932-42b2-a62c-5c1eebd38bf6"/>
              <generalization xmi:id="06b8f199-24bf-4430-8c95-dcae843c4687" isSubstitutable="true" general="14e5b295-1251-40e3-9c5c-1d51d3d77e82"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="5d98403e-a4c4-42fe-88ba-ad2ed07b8e18" name="LightweightPeer" isAbstract="true">
              <ownedComment xmi:id="089ea6c4-c5ae-48d6-8584-e6ad06a300ec" body="The LightweightPeer interface marks a component as depending upon&#xA;a native container so window related events can be routed to the&#xA;component.  Since this only applies to components and their&#xA;extensions, this interface extends ComponentPeer.&#xA;&lt;p>&#xA;The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;&#xA;@version 1.11 12/19/03&#xA;@author Timothy Prinzing&#xA;" annotatedElement="5d98403e-a4c4-42fe-88ba-ad2ed07b8e18"/>
              <generalization xmi:id="2fc6582c-905d-48a8-bb31-a48e405422b2" isSubstitutable="true" general="14e5b295-1251-40e3-9c5c-1d51d3d77e82"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="19776223-b93e-47dc-998f-23dc39b3c3f2" name="MenuBarPeer" isAbstract="true">
              <ownedComment xmi:id="511129dc-4c5d-4bb4-8840-3a97c8af1607" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="19776223-b93e-47dc-998f-23dc39b3c3f2"/>
              <generalization xmi:id="007e3541-bf95-4e6a-8380-07a4f8cbf041" isSubstitutable="true" general="fcc5a362-e0c6-4f1a-9853-9cb648826ffe"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="93345940-1992-4bd9-a213-37132ba02cd0" name="DialogPeer" isAbstract="true">
              <ownedComment xmi:id="36ba7f6f-5cd1-4c58-96e2-42423fab838c" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="93345940-1992-4bd9-a213-37132ba02cd0"/>
              <generalization xmi:id="4877bd18-4a58-46b6-ab3f-8d16db17a54c" isSubstitutable="true" general="69fe3811-2dab-41c4-90ae-52119b252482"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="85eacfcb-96be-4c01-9282-9a1305a8d21a" name="KeyboardFocusManagerPeer" isAbstract="true"/>
            <packagedElement xmi:type="uml:Interface" xmi:id="e3f03112-6f1a-490c-8ecc-dff2da9416aa" name="ScrollbarPeer" isAbstract="true">
              <ownedComment xmi:id="ffe71521-af79-4b17-b093-dca0e6ed5ed5" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="e3f03112-6f1a-490c-8ecc-dff2da9416aa"/>
              <generalization xmi:id="465a5bb1-9803-47b4-95ba-04e269c0d379" isSubstitutable="true" general="14e5b295-1251-40e3-9c5c-1d51d3d77e82"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="0226170d-90fd-4ea1-bf63-447728f48a05" name="PopupMenuPeer" isAbstract="true">
              <ownedComment xmi:id="b6416bfd-b036-4436-bec7-be96eb3844f9" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="0226170d-90fd-4ea1-bf63-447728f48a05"/>
              <generalization xmi:id="94ea58c0-73ba-44e8-b177-c9c61bf294ea" isSubstitutable="true" general="88a1e205-4465-4ac5-9b60-7a6388841f35"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="22bff860-3030-4d68-82d4-4943b7ed29fe" name="TextFieldPeer" isAbstract="true">
              <ownedComment xmi:id="7f6ef0f8-02bd-4172-8ac9-cbe0ad3f57c1" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="22bff860-3030-4d68-82d4-4943b7ed29fe"/>
              <generalization xmi:id="c3988458-0d0d-48c0-8781-d9b512a0550c" isSubstitutable="true" general="197a3491-3ca6-40de-bd9e-cfe51316f0e1"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="fcc5a362-e0c6-4f1a-9853-9cb648826ffe" name="MenuComponentPeer" isAbstract="true">
              <ownedComment xmi:id="9856aba8-56a6-472b-af80-8cc9ef739629" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="fcc5a362-e0c6-4f1a-9853-9cb648826ffe"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="fa426644-c176-42a2-a080-cef5d0e4bb91" name="TextAreaPeer" isAbstract="true">
              <ownedComment xmi:id="7de68304-2ca3-4f9c-8b27-951e04058821" body="The peer interfaces are intended only for use in porting&#xA;the AWT. They are not intended for use by application&#xA;developers, and developers should not implement peers&#xA;nor invoke any of the peer methods directly on the peer&#xA;instances.&#xA;" annotatedElement="fa426644-c176-42a2-a080-cef5d0e4bb91"/>
              <generalization xmi:id="e66f4b6b-c0d5-47ab-abb0-5f46fcfcf139" isSubstitutable="true" general="197a3491-3ca6-40de-bd9e-cfe51316f0e1"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="2d56485c-f5f4-48d9-af23-970249e751ad" name="font">
            <packagedElement xmi:type="uml:Class" xmi:id="37c19604-64b6-468b-a650-132d2804f84c" name="CharArrayIterator" visibility="package" clientDependency="2994d612-565b-418f-b52f-159c27c8a84e">
              <interfaceRealization xmi:id="2994d612-565b-418f-b52f-159c27c8a84e" name="" supplier="b475bdb8-5ca3-494d-9082-5f62a1aa4a16" client="37c19604-64b6-468b-a650-132d2804f84c" contract="b475bdb8-5ca3-494d-9082-5f62a1aa4a16"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="8aa4484c-269f-4a85-ac6b-ab868310687a" name="OpenType" isAbstract="true">
              <ownedComment xmi:id="1f589fb0-23d4-438e-b23a-923218a88efa" body="The &lt;code>OpenType&lt;/code> interface represents OpenType and&#xA;TrueType fonts.  This interface makes it possible to obtain&#xA;&lt;i>sfnt&lt;/i> tables from the font.  A particular&#xA;&lt;code>Font&lt;/code> object can implement this interface.&#xA;&lt;p>&#xA;For more information on TrueType fonts, see the&#xA;Apple TrueType Reference Manual&#xA;( &lt;a href=&quot;http://fonts.apple.com/TTRefMan/index.html&quot;>http://fonts.apple.com/TTRefMan/index.html&lt;/a> ).&#xA;@version 10 Feb 1997&#xA;" annotatedElement="8aa4484c-269f-4a85-ac6b-ab868310687a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b6bfae48-b00b-4dfb-b26e-ab7b9dff1797" name="TextAttribute" isLeaf="true">
              <ownedComment xmi:id="524dbe37-f53d-42e4-a64f-4eb8bffb887c" body="The &lt;code>TextAttribute&lt;/code> class defines attribute keys and&#xA;attribute values used for text rendering.&#xA;&lt;p>&#xA;&lt;code>TextAttribute&lt;/code> instances are used as attribute keys to&#xA;identify attributes in&#xA;{@link java.text.AttributedCharacterIterator AttributedCharacterIterator},&#xA;{@link java.awt.Font Font}, and other classes handling text&#xA;attributes. Other constants defined in this class are used&#xA;as attribute values.&#xA;&lt;p>&#xA;For each text attribute, the documentation describes:&#xA;&lt;UL>&#xA;&lt;LI>the type of their values,&#xA;&lt;LI>the valid values if there are limitations&#xA;&lt;LI>relevant constants&#xA;&lt;LI>the default effect if the attribute is absent (or has a&#xA;&lt;code>null&lt;/code> value).&#xA;&lt;LI>a description of the effect.&#xA;&lt;LI>the fallback behavior if the exact attribute requested is not&#xA;available.&#xA;&lt;/UL>&#xA;&lt;p>&#xA;&lt;H4>Types of Values&lt;/H4>&#xA;&lt;UL>&#xA;&lt;LI>The values of attributes must always be immutable.&#xA;&lt;LI>Where a list of limitations is given, any value outside of that&#xA;set is reserved for future use, and ignored at present.&#xA;&lt;LI>If the value is &lt;code>null&lt;/code> or not of the proper type&#xA;then it has the default effect. The effect of a particular value&#xA;can be interpolated, especially in the case of multiple master&#xA;fonts. This interpolation is done based on the nearest defined&#xA;constants above and below the request:&lt;BR>&#xA;&lt;BLOCKQUOTE>&lt;TT>&#xA;interpolation = (request - below)/(above - below);&#xA;&lt;/TT>&lt;/BLOCKQUOTE>&#xA;&lt;/UL>&#xA;&lt;p>&#xA;&lt;H4>Interpolation&lt;/H4>&#xA;&lt;UL>&#xA;&lt;LI>Fonts should interpolate values in certain circumstances. For example,&#xA;when the WEIGHT value is 2.13. If the nearest surrounding values&#xA;in the font are WEIGHT_BOLD = 2.0 and WEIGHT_HEAVY = 2.25 then font would&#xA;then interpret the WEIGHT request as being 52% of the way between what&#xA;it considers BOLD and what it considers HEAVY. If the nearest surrounding&#xA;values are WEIGHT_SEMIBOLD = 1.25 and WEIGHT_ULTRABOLD = 2.75 then the&#xA;WEIGHT request is interpreted as being 58.67% of the way between SEMIBOLD&#xA;and ULTRABOLD.&#xA;&lt;LI>Where a font does not have enough capability to handle a given&#xA;request, such as superscript, then it should simulate it to the best of&#xA;its ability.  To determine if simulation is being performed, the client&#xA;should query the font to see what actual attributes were used.&#xA;&lt;/UL>&#xA;&#xA;@see java.text.AttributedCharacterIterator&#xA;@see java.awt.Font&#xA;" annotatedElement="b6bfae48-b00b-4dfb-b26e-ab7b9dff1797"/>
              <generalization xmi:id="c3eed4da-34e0-49a4-9076-5b7925e046f2" isSubstitutable="true" general="86e8328e-c93b-4072-9bcc-f24cd737649f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="10efc24e-4dad-4640-a52a-e9df63d64d08" name="TextLayout" clientDependency="e46f0c51-c6c3-4fda-bbc4-688274c06ef3" isLeaf="true">
              <ownedComment xmi:id="c4928e9e-7f17-41ac-b6b6-adee4a265c28" body="&lt;code>TextLayout&lt;/code> is an immutable graphical representation of styled&#xA;character data.&#xA;&lt;p>&#xA;It provides the following capabilities:&#xA;&lt;ul>&#xA;&lt;li>implicit bidirectional analysis and reordering,&#xA;&lt;li>cursor positioning and movement, including split cursors for&#xA;mixed directional text,&#xA;&lt;li>highlighting, including both logical and visual highlighting&#xA;for mixed directional text,&#xA;&lt;li>multiple baselines (roman, hanging, and centered),&#xA;&lt;li>hit testing,&#xA;&lt;li>justification,&#xA;&lt;li>default font substitution,&#xA;&lt;li>metric information such as ascent, descent, and advance, and&#xA;&lt;li>rendering&#xA;&lt;/ul>&#xA;&lt;p>&#xA;A &lt;code>TextLayout&lt;/code> object can be rendered using&#xA;its &lt;code>draw&lt;/code> method.&#xA;&lt;p>&#xA;&lt;code>TextLayout&lt;/code> can be constructed either directly or through&#xA;the use of a {@link LineBreakMeasurer}.  When constructed directly, the&#xA;source text represents a single paragraph.  &lt;code>LineBreakMeasurer&lt;/code>&#xA;allows styled text to be broken into lines that fit within a particular&#xA;width.  See the &lt;code>LineBreakMeasurer&lt;/code> documentation for more&#xA;information.&#xA;&lt;p>&#xA;&lt;code>TextLayout&lt;/code> construction logically proceeds as follows:&#xA;&lt;ul>&#xA;&lt;li>paragraph attributes are extracted and examined,&#xA;&lt;li>text is analyzed for bidirectional reordering, and reordering&#xA;information is computed if needed,&#xA;&lt;li>text is segmented into style runs&#xA;&lt;li>fonts are chosen for style runs, first by using a font if the&#xA;attribute {@link TextAttribute#FONT} is present, otherwise by computing&#xA;a default font using the attributes that have been defined&#xA;&lt;li>if text is on multiple baselines, the runs or subruns are further&#xA;broken into subruns sharing a common baseline,&#xA;&lt;li>glyphvectors are generated for each run using the chosen font,&#xA;&lt;li>final bidirectional reordering is performed on the glyphvectors&#xA;&lt;/ul>&#xA;&lt;p>&#xA;All graphical information returned from a &lt;code>TextLayout&lt;/code>&#xA;object's methods is relative to the origin of the&#xA;&lt;code>TextLayout&lt;/code>, which is the intersection of the&#xA;&lt;code>TextLayout&lt;/code> object's baseline with its left edge.  Also,&#xA;coordinates passed into a &lt;code>TextLayout&lt;/code> object's methods&#xA;are assumed to be relative to the &lt;code>TextLayout&lt;/code> object's&#xA;origin.  Clients usually need to translate between a&#xA;&lt;code>TextLayout&lt;/code> object's coordinate system and the coordinate&#xA;system in another object (such as a&#xA;{@link java.awt.Graphics Graphics} object).&#xA;&lt;p>&#xA;&lt;code>TextLayout&lt;/code> objects are constructed from styled text,&#xA;but they do not retain a reference to their source text.  Thus,&#xA;changes in the text previously used to generate a &lt;code>TextLayout&lt;/code>&#xA;do not affect the &lt;code>TextLayout&lt;/code>.&#xA;&lt;p>&#xA;Three methods on a &lt;code>TextLayout&lt;/code> object&#xA;(&lt;code>getNextRightHit&lt;/code>, &lt;code>getNextLeftHit&lt;/code>, and&#xA;&lt;code>hitTestChar&lt;/code>) return instances of {@link TextHitInfo}.&#xA;The offsets contained in these &lt;code>TextHitInfo&lt;/code> objects&#xA;are relative to the start of the &lt;code>TextLayout&lt;/code>, &lt;b>not&lt;/b>&#xA;to the text used to create the &lt;code>TextLayout&lt;/code>.  Similarly,&#xA;&lt;code>TextLayout&lt;/code> methods that accept &lt;code>TextHitInfo&lt;/code>&#xA;instances as parameters expect the &lt;code>TextHitInfo&lt;/code> object's&#xA;offsets to be relative to the &lt;code>TextLayout&lt;/code>, not to any&#xA;underlying text storage model.&#xA;&lt;p>&#xA;&lt;strong>Examples&lt;/strong>:&lt;p>&#xA;Constructing and drawing a &lt;code>TextLayout&lt;/code> and its bounding&#xA;rectangle:&#xA;&lt;blockquote>&lt;pre>&#xA;Graphics2D g = ...;&#xA;Point2D loc = ...;&#xA;Font font = Font.getFont(&quot;Helvetica-bold-italic&quot;);&#xA;FontRenderContext frc = g.getFontRenderContext();&#xA;TextLayout layout = new TextLayout(&quot;This is a string&quot;, font, frc);&#xA;layout.draw(g, (float)loc.getX(), (float)loc.getY());&#xA;&#xA;Rectangle2D bounds = layout.getBounds();&#xA;bounds.setRect(bounds.getX()+loc.getX(),&#xA;bounds.getY()+loc.getY(),&#xA;bounds.getWidth(),&#xA;bounds.getHeight());&#xA;g.draw(bounds);&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&lt;p>&#xA;Hit-testing a &lt;code>TextLayout&lt;/code> (determining which character is at&#xA;a particular graphical location):&#xA;&lt;blockquote>&lt;pre>&#xA;Point2D click = ...;&#xA;TextHitInfo hit = layout.hitTestChar(&#xA;(float) (click.getX() - loc.getX()),&#xA;(float) (click.getY() - loc.getY()));&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&lt;p>&#xA;Responding to a right-arrow key press:&#xA;&lt;blockquote>&lt;pre>&#xA;int insertionIndex = ...;&#xA;TextHitInfo next = layout.getNextRightHit(insertionIndex);&#xA;if (next != null) {&#xA;translate graphics to origin of layout on screen&#xA;g.translate(loc.getX(), loc.getY());&#xA;Shape[] carets = layout.getCaretShapes(next.getInsertionIndex());&#xA;g.draw(carets[0]);&#xA;if (carets[1] != null) {&#xA;g.draw(carets[1]);&#xA;}&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;Drawing a selection range corresponding to a substring in the source text.&#xA;The selected area may not be visually contiguous:&#xA;&lt;blockquote>&lt;pre>&#xA;selStart, selLimit should be relative to the layout,&#xA;not to the source text&#xA;&#xA;int selStart = ..., selLimit = ...;&#xA;Color selectionColor = ...;&#xA;Shape selection = layout.getLogicalHighlightShape(selStart, selLimit);&#xA;selection may consist of disjoint areas&#xA;graphics is assumed to be tranlated to origin of layout&#xA;g.setColor(selectionColor);&#xA;g.fill(selection);&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;Drawing a visually contiguous selection range.  The selection range may&#xA;correspond to more than one substring in the source text.  The ranges of&#xA;the corresponding source text substrings can be obtained with&#xA;&lt;code>getLogicalRangesForVisualSelection()&lt;/code>:&#xA;&lt;blockquote>&lt;pre>&#xA;TextHitInfo selStart = ..., selLimit = ...;&#xA;Shape selection = layout.getVisualHighlightShape(selStart, selLimit);&#xA;g.setColor(selectionColor);&#xA;g.fill(selection);&#xA;int[] ranges = getLogicalRangesForVisualSelection(selStart, selLimit);&#xA;ranges[0], ranges[1] is the first selection range,&#xA;ranges[2], ranges[3] is the second selection range, etc.&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;@see LineBreakMeasurer&#xA;@see TextAttribute&#xA;@see TextHitInfo&#xA;" annotatedElement="10efc24e-4dad-4640-a52a-e9df63d64d08"/>
              <interfaceRealization xmi:id="e46f0c51-c6c3-4fda-bbc4-688274c06ef3" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="10efc24e-4dad-4640-a52a-e9df63d64d08" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="faf67ab9-038b-49de-b25f-1a250e5904d0" name="OptInfo" visibility="package">
                <ownedComment xmi:id="ae0641a2-fef4-4de5-92ce-f6ccf0623bf6" body="temporary optimization&#xA;" annotatedElement="faf67ab9-038b-49de-b25f-1a250e5904d0"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="b87b8802-cd78-463e-a1c2-050138ae6cb6" name="CaretPolicy">
                <ownedComment xmi:id="1c614964-ae2d-44b0-97aa-278d7bafc1b7" body="Defines a policy for determining the strong caret location.&#xA;This class contains one method, &lt;code>getStrongCaret&lt;/code>, which&#xA;is used to specify the policy that determines the strong caret in&#xA;dual-caret text.  The strong caret is used to move the caret to the&#xA;left or right. Instances of this class can be passed to&#xA;&lt;code>getCaretShapes&lt;/code>, &lt;code>getNextLeftHit&lt;/code> and&#xA;&lt;code>getNextRightHit&lt;/code> to customize strong caret&#xA;selection.&#xA;&lt;p>&#xA;To specify alternate caret policies, subclass &lt;code>CaretPolicy&lt;/code>&#xA;and override &lt;code>getStrongCaret&lt;/code>.  &lt;code>getStrongCaret&lt;/code>&#xA;should inspect the two &lt;code>TextHitInfo&lt;/code> arguments and choose&#xA;one of them as the strong caret.&#xA;&lt;p>&#xA;Most clients do not need to use this class.&#xA;" annotatedElement="b87b8802-cd78-463e-a1c2-050138ae6cb6"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8bd3a2d9-f5b3-48a0-a01b-97686ed18075" name="ImageGraphicAttribute" isLeaf="true">
              <ownedComment xmi:id="f65ff882-5bf1-4a07-b2c4-69c5f2081fa2" body="The &lt;code>ImageGraphicAttribute&lt;/code> class is an implementation of&#xA;{@link GraphicAttribute} which draws images in&#xA;a {@link TextLayout}.&#xA;@see GraphicAttribute&#xA;" annotatedElement="8bd3a2d9-f5b3-48a0-a01b-97686ed18075"/>
              <generalization xmi:id="4d25feda-4798-4b51-883b-c1925c9ccd1d" isSubstitutable="true" general="906e4502-8be4-4a98-98e0-1d51ee38a608"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7240a414-caf5-48f6-b768-de4602082f6d" name="GlyphJustificationInfo" isLeaf="true">
              <ownedComment xmi:id="9c5a6103-1034-4a62-880e-a28954a45460" body="The &lt;code>GlyphJustificationInfo&lt;/code> class represents information&#xA;about the justification properties of a glyph.  A glyph is the visual&#xA;representation of one or more characters.  Many different glyphs can&#xA;be used to represent a single character or combination of characters.&#xA;The four justification properties represented by&#xA;&lt;code>GlyphJustificationInfo&lt;/code> are weight, priority, absorb and&#xA;limit.&#xA;&lt;p>&#xA;Weight is the overall 'weight' of the glyph in the line.  Generally it is&#xA;proportional to the size of the font.  Glyphs with larger weight are&#xA;allocated a correspondingly larger amount of the change in space.&#xA;&lt;p>&#xA;Priority determines the justification phase in which this glyph is used.&#xA;All glyphs of the same priority are examined before glyphs of the next&#xA;priority.  If all the change in space can be allocated to these glyphs&#xA;without exceeding their limits, then glyphs of the next priority are not&#xA;examined. There are four priorities, kashida, whitespace, interchar,&#xA;and none.  KASHIDA is the first priority examined. NONE is the last&#xA;priority examined.&#xA;&lt;p>&#xA;Absorb determines whether a glyph absorbs all change in space.  Within a&#xA;given priority, some glyphs may absorb all the change in space.  If any of&#xA;these glyphs are present, no glyphs of later priority are examined.&#xA;&lt;p>&#xA;Limit determines the maximum or minimum amount by which the glyph can&#xA;change. Left and right sides of the glyph can have different limits.&#xA;&lt;p>&#xA;Each &lt;code>GlyphJustificationInfo&lt;/code> represents two sets of&#xA;metrics, which are &lt;i>growing&lt;/i> and &lt;i>shrinking&lt;/i>.  Growing&#xA;metrics are used when the glyphs on a line are to be&#xA;spread apart to fit a larger width.  Shrinking metrics are used when&#xA;the glyphs are to be moved together to fit a smaller width.&#xA;" annotatedElement="7240a414-caf5-48f6-b768-de4602082f6d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f9f6788e-417f-4539-bc8a-5a109456375e" name="FontRenderContext">
              <ownedComment xmi:id="a3fd9c1c-f809-4644-a8a0-5cdf1081e59a" body="The &lt;code>FontRenderContext&lt;/code> class is a container for the&#xA;information needed to correctly measure text.  The measurement of text&#xA;can vary because of rules that map outlines to pixels, and rendering&#xA;hints provided by an application.&#xA;&lt;p>&#xA;One such piece of information is a transform that scales&#xA;typographical points to pixels. (A point is defined to be exactly 1/72&#xA;of an inch, which is slightly different than&#xA;the traditional mechanical measurement of a point.)  A character that&#xA;is rendered at 12pt on a 600dpi device might have a different size&#xA;than the same character rendered at 12pt on a 72dpi device because of&#xA;such factors as rounding to pixel boundaries and hints that the font&#xA;designer may have specified.&#xA;&lt;p>&#xA;Anti-aliasing and Fractional-metrics specified by an application can also&#xA;affect the size of a character because of rounding to pixel&#xA;boundaries.&#xA;&lt;p>&#xA;Typically, instances of &lt;code>FontRenderContext&lt;/code> are&#xA;obtained from a {@link java.awt.Graphics2D Graphics2D} object.  A&#xA;&lt;code>FontRenderContext&lt;/code> which is directly constructed will&#xA;most likely not represent any actual graphics device, and may lead&#xA;to unexpected or incorrect results.&#xA;&lt;p>&#xA;@see java.awt.RenderingHints#KEY_TEXT_ANTIALIASING&#xA;@see java.awt.RenderingHints#KEY_FRACTIONALMETRICS&#xA;@see java.awt.Graphics2D#getFontRenderContext()&#xA;@see java.awt.font.LineMetrics&#xA;" annotatedElement="f9f6788e-417f-4539-bc8a-5a109456375e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ea74ff94-c75d-4e3d-90f8-59d70fc76d9e" name="TextMeasurer" clientDependency="b65bc937-c058-45ff-b256-0fc7bbc83842" isLeaf="true">
              <ownedComment xmi:id="a13fea00-67ae-4614-847b-d824722d2c8e" body="The &lt;code>TextMeasurer&lt;/code> class provides the primitive operations&#xA;needed for line break: measuring up to a given advance, determining the&#xA;advance of a range of characters, and generating a&#xA;&lt;code>TextLayout&lt;/code> for a range of characters. It also provides&#xA;methods for incremental editing of paragraphs.&#xA;&lt;p>&#xA;A &lt;code>TextMeasurer&lt;/code> object is constructed with an&#xA;{@link java.text.AttributedCharacterIterator AttributedCharacterIterator}&#xA;representing a single paragraph of text.  The value returned by the&#xA;{@link AttributedCharacterIterator#getBeginIndex() getBeginIndex}&#xA;method of &lt;code>AttributedCharacterIterator&lt;/code>&#xA;defines the absolute index of the first character.  The value&#xA;returned by the&#xA;{@link AttributedCharacterIterator#getEndIndex() getEndIndex}&#xA;method of &lt;code>AttributedCharacterIterator&lt;/code> defines the index&#xA;past the last character.  These values define the range of indexes to&#xA;use in calls to the &lt;code>TextMeasurer&lt;/code>.  For example, calls to&#xA;get the advance of a range of text or the line break of a range of text&#xA;must use indexes between the beginning and end index values.  Calls to&#xA;{@link #insertChar(java.text.AttributedCharacterIterator, int) insertChar}&#xA;and&#xA;{@link #deleteChar(java.text.AttributedCharacterIterator, int) deleteChar}&#xA;reset the &lt;code>TextMeasurer&lt;/code> to use the beginning index and end&#xA;index of the &lt;code>AttributedCharacterIterator&lt;/code> passed in those calls.&#xA;&lt;p>&#xA;Most clients will use the more convenient &lt;code>LineBreakMeasurer&lt;/code>,&#xA;which implements the standard line break policy (placing as many words&#xA;as will fit on each line).&#xA;&#xA;@author John Raley&#xA;@version 1.31, 04/20/01&#xA;@see LineBreakMeasurer&#xA;@since 1.3&#xA;" annotatedElement="ea74ff94-c75d-4e3d-90f8-59d70fc76d9e"/>
              <interfaceRealization xmi:id="b65bc937-c058-45ff-b256-0fc7bbc83842" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="ea74ff94-c75d-4e3d-90f8-59d70fc76d9e" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="906e4502-8be4-4a98-98e0-1d51ee38a608" name="GraphicAttribute" isAbstract="true">
              <ownedComment xmi:id="760f4e21-3998-4927-91e9-e20ed55163be" body="This class is used with the CHAR_REPLACEMENT attribute.&#xA;&lt;p>&#xA;The &lt;code>GraphicAttribute&lt;/code> class represents a graphic embedded&#xA;in text. Clients subclass this class to implement their own char&#xA;replacement graphics.  Clients wishing to embed shapes and images in&#xA;text need not subclass this class.  Instead, clients can use the&#xA;{@link ShapeGraphicAttribute} and {@link ImageGraphicAttribute}&#xA;classes.&#xA;&lt;p>&#xA;Subclasses must ensure that their objects are immutable once they&#xA;are constructed.  Mutating a &lt;code>GraphicAttribute&lt;/code> that&#xA;is used in a {@link TextLayout} results in undefined behavior from the&#xA;&lt;code>TextLayout&lt;/code>.&#xA;" annotatedElement="906e4502-8be4-4a98-98e0-1d51ee38a608"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1be147fa-4191-4c45-8f2b-7aba48c39fa3" name="TextHitInfo" isLeaf="true">
              <ownedComment xmi:id="509b3952-74ae-4d0b-bbcf-481c72a6eadf" body="The &lt;code>TextHitInfo&lt;/code> class represents a character position in a&#xA;text model, and a &lt;b>bias&lt;/b>, or &quot;side,&quot; of the character.  Biases are&#xA;either &lt;EM>leading&lt;/EM> (the left edge, for a left-to-right character)&#xA;or &lt;EM>trailing&lt;/EM> (the right edge, for a left-to-right character).&#xA;Instances of &lt;code>TextHitInfo&lt;/code> are used to specify caret and&#xA;insertion positions within text.&#xA;&lt;p>&#xA;For example, consider the text &quot;abc&quot;.  TextHitInfo.trailing(1)&#xA;corresponds to the right side of the 'b' in the text.&#xA;&lt;p>&#xA;&lt;code>TextHitInfo&lt;/code> is used primarily by {@link TextLayout} and&#xA;clients of &lt;code>TextLayout&lt;/code>.  Clients of &lt;code>TextLayout&lt;/code>&#xA;query &lt;code>TextHitInfo&lt;/code> instances for an insertion offset, where&#xA;new text is inserted into the text model.  The insertion offset is equal&#xA;to the character position in the &lt;code>TextHitInfo&lt;/code> if the bias&#xA;is leading, and one character after if the bias is trailing.  The&#xA;insertion offset for TextHitInfo.trailing(1) is 2.&#xA;&lt;p>&#xA;Sometimes it is convenient to construct a &lt;code>TextHitInfo&lt;/code> with&#xA;the same insertion offset as an existing one, but on the opposite&#xA;character.  The &lt;code>getOtherHit&lt;/code> method constructs a new&#xA;&lt;code>TextHitInfo&lt;/code> with the same insertion offset as an existing&#xA;one, with a hit on the character on the other side of the insertion offset.&#xA;Calling &lt;code>getOtherHit&lt;/code> on trailing(1) would return leading(2).&#xA;In general, &lt;code>getOtherHit&lt;/code> for trailing(n) returns&#xA;leading(n+1) and &lt;code>getOtherHit&lt;/code> for leading(n)&#xA;returns trailing(n-1).&#xA;&lt;p>&#xA;&lt;strong>Example&lt;/strong>:&lt;p>&#xA;Converting a graphical point to an insertion point within a text&#xA;model&#xA;&lt;blockquote>&lt;pre>&#xA;TextLayout layout = ...;&#xA;Point2D.Float hitPoint = ...;&#xA;TextHitInfo hitInfo = layout.hitTestChar(hitPoint.x, hitPoint.y);&#xA;int insPoint = hitInfo.getInsertionIndex();&#xA;insPoint is relative to layout;  may need to adjust for use&#xA;in a text model&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;@see TextLayout&#xA;" annotatedElement="1be147fa-4191-4c45-8f2b-7aba48c39fa3"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="837b58e7-f178-4f46-bf05-351a3427667a" name="GlyphVector" clientDependency="af3da7ae-dbd7-4833-aa0c-109b0ad996f8" isAbstract="true">
              <ownedComment xmi:id="98171161-f733-44d1-963b-0e45094fb911" body="A &lt;code>GlyphVector&lt;/code> object is a collection of glyphs&#xA;containing geometric information for the placement of each glyph&#xA;in a transformed coordinate space which corresponds to the&#xA;device on which the &lt;code>GlyphVector&lt;/code> is ultimately&#xA;displayed.&#xA;&lt;p>&#xA;The &lt;code>GlyphVector&lt;/code> does not attempt any interpretation of&#xA;the sequence of glyphs it contains.  Relationships between adjacent&#xA;glyphs in sequence are solely used to determine the placement of&#xA;the glyphs in the visual coordinate space.&#xA;&lt;p>&#xA;Instances of &lt;code>GlyphVector&lt;/code> are created by a {@link Font}.&#xA;&lt;p>&#xA;In a text processing application that can cache intermediate&#xA;representations of text, creation and subsequent caching of a&#xA;&lt;code>GlyphVector&lt;/code> for use during rendering is the fastest&#xA;method to present the visual representation of characters to a user.&#xA;&lt;p>&#xA;A &lt;code>GlyphVector&lt;/code> is associated with exactly one&#xA;&lt;code>Font&lt;/code>, and can provide data useful only in relation to&#xA;this &lt;code>Font&lt;/code>.  In addition, metrics obtained from a&#xA;&lt;code>GlyphVector&lt;/code> are not generally geometrically scaleable&#xA;since the pixelization and spacing are dependent on grid-fitting&#xA;algorithms within a &lt;code>Font&lt;/code>.  To facilitate accurate&#xA;measurement of a &lt;code>GlyphVector&lt;/code> and its component&#xA;glyphs, you must specify a scaling transform, anti-alias mode, and&#xA;fractional metrics mode when creating the &lt;code>GlyphVector&lt;/code>.&#xA;These characteristics can be derived from the destination device.&#xA;&lt;p>&#xA;For each glyph in the &lt;code>GlyphVector&lt;/code>, you can obtain:&#xA;&lt;ul>&#xA;&lt;li>the position of the glyph&#xA;&lt;li>the transform associated with the glyph&#xA;&lt;li>the metrics of the glyph in the context of the&#xA;&lt;code>GlyphVector&lt;/code>.  The metrics of the glyph may be&#xA;different under different transforms, application specified&#xA;rendering hints, and the specific instance of the glyph within&#xA;the &lt;code>GlyphVector&lt;/code>.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;Altering the data used to create the &lt;code>GlyphVector&lt;/code> does not&#xA;alter the state of the &lt;code>GlyphVector&lt;/code>.&#xA;&lt;p>&#xA;Methods are provided to adjust the positions of the glyphs&#xA;within the &lt;code>GlyphVector&lt;/code>.  These methods are most&#xA;appropriate for applications that are performing justification&#xA;operations for the presentation of the glyphs.&#xA;&lt;p>&#xA;Methods are provided to transform individual glyphs within the&#xA;&lt;code>GlyphVector&lt;/code>.  These methods are primarily useful for&#xA;special effects.&#xA;&lt;p>&#xA;Methods are provided to return both the visual, logical, and pixel bounds&#xA;of the entire &lt;code>GlyphVector&lt;/code> or of individual glyphs within&#xA;the &lt;code>GlyphVector&lt;/code>.&#xA;&lt;p>&#xA;Methods are provided to return a {@link Shape} for the&#xA;&lt;code>GlyphVector&lt;/code>, and for individual glyphs within the&#xA;&lt;code>GlyphVector&lt;/code>.&#xA;@see Font&#xA;@see GlyphMetrics&#xA;@see TextLayout&#xA;@version 19 Mar 1998&#xA;@author Charlton Innovations, Inc.&#xA;" annotatedElement="837b58e7-f178-4f46-bf05-351a3427667a"/>
              <interfaceRealization xmi:id="af3da7ae-dbd7-4833-aa0c-109b0ad996f8" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="837b58e7-f178-4f46-bf05-351a3427667a" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c2984896-d0a6-4b9f-9438-2b1911d0db8d" name="TextJustifier" visibility="package"/>
            <packagedElement xmi:type="uml:Class" xmi:id="fb6cc01f-6421-4ded-8bc5-79bd8b675004" name="GlyphMetrics" isLeaf="true">
              <ownedComment xmi:id="834d03c3-7912-40ac-9915-006efabf6b4f" body="The &lt;code>GlyphMetrics&lt;/code> class represents infomation for a&#xA;single glyph.   A glyph is the visual representation of one or more&#xA;characters.  Many different glyphs can be used to represent a single&#xA;character or combination of characters.  &lt;code>GlyphMetrics&lt;/code>&#xA;instances are produced by {@link java.awt.Font Font} and are applicable&#xA;to a specific glyph in a particular &lt;code>Font&lt;/code>.&#xA;&lt;p>&#xA;Glyphs are either STANDARD, LIGATURE, COMBINING, or COMPONENT.&#xA;&lt;ul>&#xA;&lt;li>STANDARD glyphs are commonly used to represent single characters.&#xA;&lt;li>LIGATURE glyphs are used to represent sequences of characters.&#xA;&lt;li>COMPONENT glyphs in a {@link GlyphVector} do not correspond to a&#xA;particular character in a text model. Instead, COMPONENT glyphs are&#xA;added for typographical reasons, such as Arabic justification.&#xA;&lt;li>COMBINING glyphs embellish STANDARD or LIGATURE glyphs, such&#xA;as accent marks.  Carets do not appear before COMBINING glyphs.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;Other metrics available through &lt;code>GlyphMetrics&lt;/code> are the&#xA;components of the advance, the visual bounds, and the left and right&#xA;side bearings.&#xA;&lt;p>&#xA;Glyphs for a rotated font, or obtained from a &lt;code>GlyphVector&lt;/code>&#xA;which has applied a rotation to the glyph, can have advances that&#xA;contain both X and Y components.  Usually the advance only has one&#xA;component.&#xA;&lt;p>&#xA;The advance of a glyph is the distance from the glyph's origin to the&#xA;origin of the next glyph along the baseline, which is either vertical&#xA;or horizontal.  Note that, in a &lt;code>GlyphVector&lt;/code>,&#xA;the distance from a glyph to its following glyph might not be the&#xA;glyph's advance, because of kerning or other positioning adjustments.&#xA;&lt;p>&#xA;The bounds is the smallest rectangle that completely contains the&#xA;outline of the glyph.  The bounds rectangle is relative to the&#xA;glyph's origin.  The left-side bearing is the distance from the glyph&#xA;origin to the left of its bounds rectangle. If the left-side bearing is&#xA;negative, part of the glyph is drawn to the left of its origin.  The&#xA;right-side bearing is the distance from the right side of the bounds&#xA;rectangle to the next glyph origin (the origin plus the advance).  If&#xA;negative, part of the glyph is drawn to the right of the next glyph's&#xA;origin.  Note that the bounds does not necessarily enclose all the pixels&#xA;affected when rendering the glyph, because of rasterization and pixel&#xA;adjustment effects.&#xA;&lt;p>&#xA;Although instances of &lt;code>GlyphMetrics&lt;/code> can be directly&#xA;constructed, they are almost always obtained from a&#xA;&lt;code>GlyphVector&lt;/code>.  Once constructed, &lt;code>GlyphMetrics&lt;/code>&#xA;objects are immutable.&#xA;&lt;p>&#xA;&lt;strong>Example&lt;/strong>:&lt;p>&#xA;Querying a &lt;code>Font&lt;/code> for glyph information&#xA;&lt;blockquote>&lt;pre>&#xA;Font font = ...;&#xA;int glyphIndex = ...;&#xA;GlyphMetrics metrics = GlyphVector.getGlyphMetrics(glyphIndex);&#xA;int isStandard = metrics.isStandard();&#xA;float glyphAdvance = metrics.getAdvance();&#xA;&lt;/pre>&lt;/blockquote>&#xA;@see java.awt.Font&#xA;@see GlyphVector&#xA;" annotatedElement="fb6cc01f-6421-4ded-8bc5-79bd8b675004"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4efa3d3d-129f-4323-a51c-1f5f569484bc" name="StyledParagraph" visibility="package" isLeaf="true">
              <ownedComment xmi:id="329ed80f-594f-4d84-bc17-7de473fee306" body="This class stores Font, GraphicAttribute, and Decoration intervals&#xA;on a paragraph of styled text.&#xA;&lt;p>&#xA;Currently, this class is optimized for a small number of intervals&#xA;(preferrably 1).&#xA;" annotatedElement="4efa3d3d-129f-4323-a51c-1f5f569484bc"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7bae5688-1176-4aac-b896-b574b89c4d48" name="NumericShaper" clientDependency="e1e2fa8a-7fd7-4086-b4bc-161569dbcd51" isLeaf="true">
              <ownedComment xmi:id="8188bdf2-4c33-4d5f-a072-dc8272ff6eee" body="The &lt;code>NumericShaper&lt;/code> class is used to convert Latin-1 (European)&#xA;digits to other Unicode decimal digits.  Users of this class will&#xA;primarily be people who wish to present data using&#xA;national digit shapes, but find it more convenient to represent the&#xA;data internally using Latin-1 (European) digits.  This does not&#xA;interpret the deprecated numeric shape selector character (U+206E).&#xA;&lt;p>&#xA;Instances of &lt;code>NumericShaper&lt;/code> are typically applied&#xA;as attributes to text with the&#xA;{@link TextAttribute#NUMERIC_SHAPING NUMERIC_SHAPING} attribute&#xA;of the &lt;code>TextAttribute&lt;/code> class.&#xA;For example, this code snippet causes a &lt;code>TextLayout&lt;/code> to&#xA;shape European digits to Arabic in an Arabic context:&lt;br>&#xA;&lt;blockquote>&lt;pre>&#xA;Map map = new HashMap();&#xA;map.put(TextAttribute.NUMERIC_SHAPING,&#xA;NumericShaper.getContextualShaper(NumericShaper.ARABIC));&#xA;FontRenderContext frc = ...;&#xA;TextLayout layout = new TextLayout(text, map, frc);&#xA;layout.draw(g2d, x, y);&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;br>&#xA;It is also possible to perform numeric shaping explicitly using instances&#xA;of &lt;code>NumericShaper&lt;/code>, as this code snippet demonstrates:&lt;br>&#xA;&lt;blockquote>&lt;pre>&#xA;char[] text = ...;&#xA;shape all EUROPEAN digits (except zero) to ARABIC digits&#xA;NumericShaper shaper = NumericShaper.getShaper(NumericShaper.ARABIC);&#xA;shaper.shape(text, start, count);&#xA;&#xA;shape European digits to ARABIC digits if preceeding text is Arabic, or&#xA;shape European digits to TAMIL digits if preceeding text is Tamil, or&#xA;leave European digits alone if there is no preceeding text, or&#xA;preceeding text is neither Arabic nor Tamil&#xA;NumericShaper shaper =&#xA;NumericShaper.getContextualShaper(NumericShaper.ARABIC |&#xA;NumericShaper.TAMIL,&#xA;NumericShaper.EUROPEAN);&#xA;shaper.shape(text. start, count);&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;@since 1.4&#xA;" annotatedElement="7bae5688-1176-4aac-b896-b574b89c4d48"/>
              <interfaceRealization xmi:id="e1e2fa8a-7fd7-4086-b4bc-161569dbcd51" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="7bae5688-1176-4aac-b896-b574b89c4d48" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a7e524e1-9abd-4275-ad43-093142c8739b" name="TransformAttribute" clientDependency="3e383bbe-9a7a-4654-9989-76ffda6a4162" isLeaf="true">
              <ownedComment xmi:id="9b5128c5-eca6-43af-ad6a-23ba3acb4306" body="The &lt;code>TransformAttribute&lt;/code> class provides an immutable&#xA;wrapper for a transform so that it is safe to use as an attribute.&#xA;" annotatedElement="a7e524e1-9abd-4275-ad43-093142c8739b"/>
              <interfaceRealization xmi:id="3e383bbe-9a7a-4654-9989-76ffda6a4162" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="a7e524e1-9abd-4275-ad43-093142c8739b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b14a3040-9d69-481c-9573-ac36f0748ceb" name="ShapeGraphicAttribute" isLeaf="true">
              <ownedComment xmi:id="4e8f24e9-3526-4c56-a5cf-dae26fabd0ca" body="The &lt;code>ShapeGraphicAttribute&lt;/code> class is an implementation of&#xA;{@link GraphicAttribute} that draws shapes in a {@link TextLayout}.&#xA;@see GraphicAttribute&#xA;" annotatedElement="b14a3040-9d69-481c-9573-ac36f0748ceb"/>
              <generalization xmi:id="9c8e9ed1-ca4f-4bba-b334-6ef35ef3ec90" isSubstitutable="true" general="906e4502-8be4-4a98-98e0-1d51ee38a608"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="19344d03-7c7b-4e91-b796-8eb7e1295543" name="TextLine" visibility="package" isLeaf="true">
              <nestedClassifier xmi:type="uml:Class" xmi:id="e8c7308a-98b4-4ec1-9a1d-329a3e3d7888" name="TextLineMetrics" visibility="package" isLeaf="true"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="28730cda-df30-400e-86e6-dd65d6321264" name="Function" visibility="private" isAbstract="true"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="77347b2b-c911-426d-a9fd-24eb87a8d0b7" name="LineMetrics" isAbstract="true">
              <ownedComment xmi:id="360ba2ba-65ba-4d30-b8b0-9d2a094c73ea" body="The &lt;code>LineMetrics&lt;/code> class allows access to the&#xA;metrics needed to layout characters along a line&#xA;and to layout of a set of lines.  A &lt;code>LineMetrics&lt;/code>&#xA;object encapsulates the measurement information associated&#xA;with a run of text.&#xA;&lt;p>&#xA;Fonts can have different metrics for different ranges of&#xA;characters.  The &lt;code>getLineMetrics&lt;/code> methods of&#xA;{@link java.awt.Font Font} take some text as an argument&#xA;and return a &lt;code>LineMetrics&lt;/code> object describing the&#xA;metrics of the initial number of characters in that text, as&#xA;returned by {@link #getNumChars}.&#xA;" annotatedElement="77347b2b-c911-426d-a9fd-24eb87a8d0b7"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0679b6d5-9846-4add-a83c-2f6de19eb9a4" name="LineBreakMeasurer" isLeaf="true">
              <ownedComment xmi:id="2bbdcedf-f653-4c77-9f12-788823efbc08" body="The &lt;code>LineBreakMeasurer&lt;/code> class allows styled text to be&#xA;broken into lines (or segments) that fit within a particular visual&#xA;advance.  This is useful for clients who wish to display a paragraph of&#xA;text that fits within a specific width, called the &lt;b>wrapping&#xA;width&lt;/b>.&#xA;&lt;p>&#xA;&lt;code>LineBreakMeasurer&lt;/code> is constructed with an iterator over&#xA;styled text.  The iterator's range should be a single paragraph in the&#xA;text.&#xA;&lt;code>LineBreakMeasurer&lt;/code> maintains a position in the text for the&#xA;start of the next text segment.  Initially, this position is the&#xA;start of text.  Paragraphs are assigned an overall direction (either&#xA;left-to-right or right-to-left) according to the bidirectional&#xA;formatting rules.  All segments obtained from a paragraph have the&#xA;same direction as the paragraph.&#xA;&lt;p>&#xA;Segments of text are obtained by calling the method&#xA;&lt;code>nextLayout&lt;/code>, which returns a {@link TextLayout}&#xA;representing the text that fits within the wrapping width.&#xA;The &lt;code>nextLayout&lt;/code> method moves the current position&#xA;to the end of the layout returned from &lt;code>nextLayout&lt;/code>.&#xA;&lt;p>&#xA;&lt;code>LineBreakMeasurer&lt;/code> implements the most commonly used&#xA;line-breaking policy: Every word that fits within the wrapping&#xA;width is placed on the line. If the first word does not fit, then all&#xA;of the characters that fit within the wrapping width are placed on the&#xA;line.  At least one character is placed on each line.&#xA;&lt;p>&#xA;The &lt;code>TextLayout&lt;/code> instances returned by&#xA;&lt;code>LineBreakMeasurer&lt;/code> treat tabs like 0-width spaces.  Clients&#xA;who wish to obtain tab-delimited segments for positioning should use&#xA;the overload of &lt;code>nextLayout&lt;/code> which takes a limiting offset&#xA;in the text.&#xA;The limiting offset should be the first character after the tab.&#xA;The &lt;code>TextLayout&lt;/code> objects returned from this method end&#xA;at the limit provided (or before, if the text between the current&#xA;position and the limit won't fit entirely within the  wrapping&#xA;width).&#xA;&lt;p>&#xA;Clients who are laying out tab-delimited text need a slightly&#xA;different line-breaking policy after the first segment has been&#xA;placed on a line.  Instead of fitting partial words in the&#xA;remaining space, they should place words which don't fit in the&#xA;remaining space entirely on the next line.  This change of policy&#xA;can be requested in the overload of &lt;code>nextLayout&lt;/code> which&#xA;takes a &lt;code>boolean&lt;/code> parameter.  If this parameter is&#xA;&lt;code>true&lt;/code>, &lt;code>nextLayout&lt;/code> returns&#xA;&lt;code>null&lt;/code> if the first word won't fit in&#xA;the given space.  See the tab sample below.&#xA;&lt;p>&#xA;In general, if the text used to construct the&#xA;&lt;code>LineBreakMeasurer&lt;/code> changes, a new&#xA;&lt;code>LineBreakMeasurer&lt;/code> must be constructed to reflect&#xA;the change.  (The old &lt;code>LineBreakMeasurer&lt;/code> continues to&#xA;function properly, but it won't be aware of the text change.)&#xA;Nevertheless, if the text change is the insertion or deletion of a&#xA;single character, an existing &lt;code>LineBreakMeasurer&lt;/code> can be&#xA;'updated' by calling &lt;code>insertChar&lt;/code> or&#xA;&lt;code>deleteChar&lt;/code>. Updating an existing&#xA;&lt;code>LineBreakMeasurer&lt;/code> is much faster than creating a new one.&#xA;Clients who modify text based on user typing should take advantage&#xA;of these methods.&#xA;&lt;p>&#xA;&lt;strong>Examples&lt;/strong>:&lt;p>&#xA;Rendering a paragraph in a component&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;public void paint(Graphics graphics) {&#xA;&#xA;Point2D pen = new Point2D(10, 20);&#xA;Graphics2D g2d = (Graphics2D)graphics;&#xA;FontRenderContext frc = g2d.getFontRenderContext();&#xA;&#xA;let styledText be an AttributedCharacterIterator containing at least&#xA;one character&#xA;&#xA;LineBreakMeasurer measurer = new LineBreakMeasurer(styledText, frc);&#xA;float wrappingWidth = getSize().width - 15;&#xA;&#xA;while (measurer.getPosition() &lt; fStyledText.length()) {&#xA;&#xA;TextLayout layout = measurer.nextLayout(wrappingWidth);&#xA;&#xA;pen.y += (layout.getAscent());&#xA;float dx = layout.isLeftToRight() ?&#xA;0 : (wrappingWidth - layout.getAdvance());&#xA;&#xA;layout.draw(graphics, pen.x + dx, pen.y);&#xA;pen.y += layout.getDescent() + layout.getLeading();&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&lt;p>&#xA;Rendering text with tabs.  For simplicity, the overall text&#xA;direction is assumed to be left-to-right&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;public void paint(Graphics graphics) {&#xA;&#xA;float leftMargin = 10, rightMargin = 310;&#xA;float[] tabStops = { 100, 250 };&#xA;&#xA;assume styledText is an AttributedCharacterIterator, and the number&#xA;of tabs in styledText is tabCount&#xA;&#xA;int[] tabLocations = new int[tabCount+1];&#xA;&#xA;int i = 0;&#xA;for (char c = styledText.first(); c != styledText.DONE; c = styledText.next()) {&#xA;if (c == '\t') {&#xA;tabLocations[i++] = styledText.getIndex();&#xA;}&#xA;}&#xA;tabLocations[tabCount] = styledText.getEndIndex() - 1;&#xA;&#xA;Now tabLocations has an entry for every tab's offset in&#xA;the text.  For convenience, the last entry is tabLocations&#xA;is the offset of the last character in the text.&#xA;&#xA;LineBreakMeasurer measurer = new LineBreakMeasurer(styledText);&#xA;int currentTab = 0;&#xA;float verticalPos = 20;&#xA;&#xA;while (measurer.getPosition() &lt; styledText.getEndIndex()) {&#xA;&#xA;Lay out and draw each line.  All segments on a line&#xA;must be computed before any drawing can occur, since&#xA;we must know the largest ascent on the line.&#xA;TextLayouts are computed and stored in a Vector;&#xA;their horizontal positions are stored in a parallel&#xA;Vector.&#xA;&#xA;lineContainsText is true after first segment is drawn&#xA;boolean lineContainsText = false;&#xA;boolean lineComplete = false;&#xA;float maxAscent = 0, maxDescent = 0;&#xA;float horizontalPos = leftMargin;&#xA;Vector layouts = new Vector(1);&#xA;Vector penPositions = new Vector(1);&#xA;&#xA;while (!lineComplete) {&#xA;float wrappingWidth = rightMargin - horizontalPos;&#xA;TextLayout layout =&#xA;measurer.nextLayout(wrappingWidth,&#xA;tabLocations[currentTab]+1,&#xA;lineContainsText);&#xA;&#xA;layout can be null if lineContainsText is true&#xA;if (layout != null) {&#xA;layouts.addElement(layout);&#xA;penPositions.addElement(new Float(horizontalPos));&#xA;horizontalPos += layout.getAdvance();&#xA;maxAscent = Math.max(maxAscent, layout.getAscent());&#xA;maxDescent = Math.max(maxDescent,&#xA;layout.getDescent() + layout.getLeading());&#xA;} else {&#xA;lineComplete = true;&#xA;}&#xA;&#xA;lineContainsText = true;&#xA;&#xA;if (measurer.getPosition() == tabLocations[currentTab]+1) {&#xA;currentTab++;&#xA;}&#xA;&#xA;if (measurer.getPosition() == styledText.getEndIndex())&#xA;lineComplete = true;&#xA;else if (horizontalPos >= tabStops[tabStops.length-1])&#xA;lineComplete = true;&#xA;&#xA;if (!lineComplete) {&#xA;move to next tab stop&#xA;int j;&#xA;for (j=0; horizontalPos >= tabStops[j]; j++) {}&#xA;horizontalPos = tabStops[j];&#xA;}&#xA;}&#xA;&#xA;verticalPos += maxAscent;&#xA;&#xA;Enumeration layoutEnum = layouts.elements();&#xA;Enumeration positionEnum = penPositions.elements();&#xA;&#xA;now iterate through layouts and draw them&#xA;while (layoutEnum.hasMoreElements()) {&#xA;TextLayout nextLayout = (TextLayout) layoutEnum.nextElement();&#xA;Float nextPosition = (Float) positionEnum.nextElement();&#xA;nextLayout.draw(graphics, nextPosition.floatValue(), verticalPos);&#xA;}&#xA;&#xA;verticalPos += maxDescent;&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;@see TextLayout&#xA;" annotatedElement="0679b6d5-9846-4add-a83c-2f6de19eb9a4"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="6c95c521-9e4c-4d65-bbe6-6f6826dee5b1" name="MultipleMaster" isAbstract="true">
              <ownedComment xmi:id="b9a36a58-a62f-43e0-9225-04f12ac87f8b" body="The &lt;code>MultipleMaster&lt;/code> interface represents Type 1&#xA;Multiple Master fonts.&#xA;A particular {@link Font} object can implement this interface.&#xA;@version 10 Feb 1997&#xA;" annotatedElement="6c95c521-9e4c-4d65-bbe6-6f6826dee5b1"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="42c8e6ef-b01f-4d18-a74c-8cfef7ad7af4" name="FontMetrics" clientDependency="10857290-10fc-47ea-9d59-3a12e079c5f8" isAbstract="true">
            <ownedComment xmi:id="d64d13f5-5b2d-4a1a-8af9-9fe8ea0606cb" body="The &lt;code>FontMetrics&lt;/code> class defines a font metrics object, which&#xA;encapsulates information about the rendering of a particular font on a&#xA;particular screen.&#xA;&lt;p>&#xA;&lt;b>Note to subclassers&lt;/b>: Since many of these methods form closed,&#xA;mutually recursive loops, you must take care that you implement&#xA;at least one of the methods in each such loop to prevent&#xA;infinite recursion when your subclass is used.&#xA;In particular, the following is the minimal suggested set of methods&#xA;to override in order to ensure correctness and prevent infinite&#xA;recursion (though other subsets are equally feasible):&#xA;&lt;ul>&#xA;&lt;li>{@link #getAscent()}&#xA;&lt;li>{@link #getLeading()}&#xA;&lt;li>{@link #getMaxAdvance()}&#xA;&lt;li>{@link #charWidth(char)}&#xA;&lt;li>{@link #charsWidth(char[], int, int)}&#xA;&lt;/ul>&#xA;&lt;p>&#xA;&lt;img src=&quot;doc-files/FontMetrics-1.gif&quot; alt=&quot;The letter 'p' showing its 'reference point'&quot; border=15 align&#xA;ALIGN=right HSPACE=10 VSPACE=7>&#xA;Note that the implementations of these methods are&#xA;inefficient, so they are usually overridden with more efficient&#xA;toolkit-specific implementations.&#xA;&lt;p>&#xA;When an application asks AWT to place a character at the position&#xA;(&lt;i>x&lt;/i>,&amp;nbsp;&lt;i>y&lt;/i>), the character is placed so that its&#xA;reference point (shown as the dot in the accompanying image) is&#xA;put at that position. The reference point specifies a horizontal&#xA;line called the &lt;i>baseline&lt;/i> of the character. In normal&#xA;printing, the baselines of characters should align.&#xA;&lt;p>&#xA;In addition, every character in a font has an &lt;i>ascent&lt;/i>, a&#xA;&lt;i>descent&lt;/i>, and an &lt;i>advance width&lt;/i>. The ascent is the&#xA;amount by which the character ascends above the baseline. The&#xA;descent is the amount by which the character descends below the&#xA;baseline. The advance width indicates the position at which AWT&#xA;should place the next character.&#xA;&lt;p>&#xA;An array of characters or a string can also have an ascent, a&#xA;descent, and an advance width. The ascent of the array is the&#xA;maximum ascent of any character in the array. The descent is the&#xA;maximum descent of any character in the array. The advance width&#xA;is the sum of the advance widths of each of the characters in the&#xA;character array.  The advance of a &lt;code>String&lt;/code> is the&#xA;distance along the baseline of the &lt;code>String&lt;/code>.  This&#xA;distance is the width that should be used for centering or&#xA;right-aligning the &lt;code>String&lt;/code>.&#xA;Note that the advance of a &lt;code>String&lt;/code> is not necessarily&#xA;the sum of the advances of its characters measured in isolation&#xA;because the width of a character can vary depending on its context.&#xA;For example, in Arabic text, the shape of a character can change&#xA;in order to connect to other characters.  Also, in some scripts,&#xA;certain character sequences can be represented by a single shape,&#xA;called a &lt;em>ligature&lt;/em>.  Measuring characters individually does&#xA;not account for these transformations.&#xA;&#xA;@version &#x9;1.53 05/18/04&#xA;@author &#x9;Jim Graham&#xA;@see         java.awt.Font&#xA;@since       JDK1.0&#xA;" annotatedElement="42c8e6ef-b01f-4d18-a74c-8cfef7ad7af4"/>
            <interfaceRealization xmi:id="10857290-10fc-47ea-9d59-3a12e079c5f8" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="42c8e6ef-b01f-4d18-a74c-8cfef7ad7af4" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="01010986-3bd1-4aa3-858a-e6a1bdcae7de" name="im">
            <packagedElement xmi:type="uml:Class" xmi:id="acdaa598-f1d6-4e5c-9d35-beb0897f9a14" name="InputMethodHighlight">
              <ownedComment xmi:id="c4702523-1cbc-46ae-936b-f3f9a80509a0" body="An InputMethodHighlight is used to describe the highlight&#xA;attributes of text being composed.&#xA;The description can be at two levels:&#xA;at the abstract level it specifies the conversion state and whether the&#xA;text is selected; at the concrete level it specifies style attributes used&#xA;to render the highlight.&#xA;An InputMethodHighlight must provide the description at the&#xA;abstract level; it may or may not provide the description at the concrete&#xA;level.&#xA;If no concrete style is provided, a renderer should use&#xA;{@link java.awt.Toolkit#mapInputMethodHighlight} to map to a concrete style.&#xA;&lt;p>&#xA;The abstract description consists of three fields: &lt;code>selected&lt;/code>,&#xA;&lt;code>state&lt;/code>, and &lt;code>variation&lt;/code>.&#xA;&lt;code>selected&lt;/code> indicates whether the text range is the one that the&#xA;input method is currently working on, for example, the segment for which&#xA;conversion candidates are currently shown in a menu.&#xA;&lt;code>state&lt;/code> represents the conversion state. State values are defined&#xA;by the input method framework and should be distinguished in all&#xA;mappings from abstract to concrete styles. Currently defined state values&#xA;are raw (unconverted) and converted.&#xA;These state values are recommended for use before and after the&#xA;main conversion step of text composition, say, before and after kana->kanji&#xA;or pinyin->hanzi conversion.&#xA;The &lt;code>variation&lt;/code> field allows input methods to express additional&#xA;information about the conversion results.&#xA;&lt;p>&#xA;&#xA;InputMethodHighlight instances are typically used as attribute values&#xA;returned from AttributedCharacterIterator for the INPUT_METHOD_HIGHLIGHT&#xA;attribute. They may be wrapped into {@link java.text.Annotation Annotation}&#xA;instances to indicate separate text segments.&#xA;&#xA;@version &#x9;1.21, 05/05/04&#xA;@see java.text.AttributedCharacterIterator&#xA;@since 1.2&#xA;" annotatedElement="acdaa598-f1d6-4e5c-9d35-beb0897f9a14"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="9ab27be1-f2c6-4b5e-a457-e73acf930fa9" name="spi">
              <packagedElement xmi:type="uml:Interface" xmi:id="7c9b3b4d-620b-41ce-b9bd-4514bf99b48b" name="InputMethod" isAbstract="true">
                <ownedComment xmi:id="87b04de5-3025-4f03-a657-5c92296bf2de" body="Defines the interface for an input method that supports complex text input.&#xA;Input methods traditionally support text input for languages that have&#xA;more characters than can be represented on a standard-size keyboard,&#xA;such as Chinese, Japanese, and Korean. However, they may also be used to&#xA;support phonetic text input for English or character reordering for Thai.&#xA;&lt;p>&#xA;Subclasses of InputMethod can be loaded by the input method framework; they&#xA;can then be selected either through the API&#xA;({@link java.awt.im.InputContext#selectInputMethod InputContext.selectInputMethod})&#xA;or the user interface (the input method selection menu).&#xA;&#xA;@since 1.3&#xA;&#xA;@version &#x9;1.29, 12/19/03&#xA;@author JavaSoft International&#xA;" annotatedElement="7c9b3b4d-620b-41ce-b9bd-4514bf99b48b"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="a671fe7f-4fc4-403c-b67a-fdd04dad175a" name="InputMethodDescriptor" isAbstract="true">
                <ownedComment xmi:id="85ed8d1b-9169-428c-8dae-d2754e3bca9d" body="Defines methods that provide sufficient information about an input method&#xA;to enable selection and loading of that input method.&#xA;The input method itself is only loaded when it is actually used.&#xA;&#xA;@since 1.3&#xA;" annotatedElement="a671fe7f-4fc4-403c-b67a-fdd04dad175a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="a77a1b67-8477-4688-aa12-8d7f9ff87071" name="InputMethodContext" isAbstract="true">
                <ownedComment xmi:id="646bf899-f5a1-4417-bb5c-fdb0d89062a3" body="Provides methods that input methods&#xA;can use to communicate with their client components or to request&#xA;other services.  This interface is implemented by the input method&#xA;framework, and input methods call its methods on the instance they&#xA;receive through&#xA;{@link java.awt.im.spi.InputMethod#setInputMethodContext}.&#xA;There should be no other implementors or callers.&#xA;&#xA;@since 1.3&#xA;&#xA;@version &#x9;1.16, 12/19/03&#xA;@author JavaSoft International&#xA;" annotatedElement="a77a1b67-8477-4688-aa12-8d7f9ff87071"/>
                <generalization xmi:id="cb533ea6-b379-42ec-8bdc-81e31e57631a" isSubstitutable="true" general="ab1c4186-30ef-4c00-8075-7bc65cd8578f"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="ab1c4186-30ef-4c00-8075-7bc65cd8578f" name="InputMethodRequests" isAbstract="true">
              <ownedComment xmi:id="121d4d34-3760-4625-9a19-be316f6dfc8b" body="InputMethodRequests defines the requests that a text editing component&#xA;has to handle in order to work with input methods. The component&#xA;can implement this interface itself or use a separate object that&#xA;implements it. The object implementing this interface must be returned&#xA;from the component's getInputMethodRequests method.&#xA;&#xA;&lt;p>&#xA;The text editing component also has to provide an input method event&#xA;listener.&#xA;&#xA;&lt;p>&#xA;The interface is designed to support one of two input user interfaces:&#xA;&lt;ul>&#xA;&lt;li>&lt;em>on-the-spot&lt;/em> input, where the composed text is displayed as part&#xA;of the text component's text body.&#xA;&lt;li>&lt;em>below-the-spot&lt;/em> input, where the composed text is displayed in&#xA;a separate composition window just below the insertion point where&#xA;the text will be inserted when it is committed. Note that, if text is&#xA;selected within the component's text body, this text will be replaced by&#xA;the committed text upon commitment; therefore it is not considered part&#xA;of the context that the text is input into.&#xA;&lt;/ul>&#xA;&#xA;@see java.awt.Component#getInputMethodRequests&#xA;@see java.awt.event.InputMethodListener&#xA;&#xA;@version &#x9;1.18, 12/19/03&#xA;@author JavaSoft Asia/Pacific&#xA;@since 1.2&#xA;" annotatedElement="ab1c4186-30ef-4c00-8075-7bc65cd8578f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="bcf15cfc-1d97-4043-a688-542a8467f5b5" name="InputContext">
              <ownedComment xmi:id="c8e5a77e-b370-416f-962f-5cc317f980bc" body="Provides methods to control text input facilities such as input&#xA;methods and keyboard layouts.&#xA;Two methods handle both input methods and keyboard layouts: selectInputMethod&#xA;lets a client component select an input method or keyboard layout by locale,&#xA;getLocale lets a client component obtain the locale of the current input method&#xA;or keyboard layout.&#xA;The other methods more specifically support interaction with input methods:&#xA;They let client components control the behavior of input methods, and&#xA;dispatch events from the client component to the input method.&#xA;&#xA;&lt;p>&#xA;By default, one InputContext instance is created per Window instance,&#xA;and this input context is shared by all components within the window's&#xA;container hierarchy. However, this means that only one text input&#xA;operation is possible at any one time within a window, and that the&#xA;text needs to be committed when moving the focus from one text component&#xA;to another. If this is not desired, text components can create their&#xA;own input context instances.&#xA;&#xA;&lt;p>&#xA;The Java 2 platform supports input methods that have been developed in the Java&#xA;programming language, using the interfaces in the {@link java.awt.im.spi} package,&#xA;and installed into a Java 2 runtime environment as extensions. Implementations&#xA;may also support using the native input methods of the platforms they run on;&#xA;however, not all platforms and locales provide input methods. Keyboard layouts&#xA;are provided by the host platform.&#xA;&#xA;&lt;p>&#xA;Input methods are &lt;em>unavailable&lt;/em> if (a) no input method written&#xA;in the Java programming language has been installed and (b) the Java 2 implementation&#xA;or the underlying platform does not support native input methods. In this case,&#xA;input contexts can still be created and used; their behavior is specified with&#xA;the individual methods below.&#xA;&#xA;@see java.awt.Component#getInputContext&#xA;@see java.awt.Component#enableInputMethods&#xA;@version &#x9;1.34, 12/19/03&#xA;@author JavaSoft Asia/Pacific&#xA;@since 1.2&#xA;" annotatedElement="bcf15cfc-1d97-4043-a688-542a8467f5b5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9c942e2f-f4fe-4281-87d4-5fb44ec6a33c" name="InputSubset" isLeaf="true">
              <ownedComment xmi:id="700e98b9-b798-47c0-abf3-91ef897028e4" body="Defines additional Unicode subsets for use by input methods.  Unlike the&#xA;UnicodeBlock subsets defined in the &lt;code>{@link&#xA;java.lang.Character.UnicodeBlock}&lt;/code> class, these constants do not&#xA;directly correspond to Unicode code blocks.&#xA;&#xA;@version 1.11, 12/19/03&#xA;@since   1.2&#xA;" annotatedElement="9c942e2f-f4fe-4281-87d4-5fb44ec6a33c"/>
              <generalization xmi:id="ec5eebb4-2c3b-4f80-9f7f-fcdb09c54dae" isSubstitutable="true" general="6a3b105f-fe8e-492e-a46b-64379c2a4852"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5639dbd7-bfaa-4d25-b6c9-ee1c7d3551e5" name="PopupMenu">
            <ownedComment xmi:id="128cecbe-7975-43b7-824d-6fd9f914d40f" body="A class that implements a menu which can be dynamically popped up&#xA;at a specified position within a component.&#xA;&lt;p>&#xA;As the inheritance hierarchy implies, a &lt;code>PopupMenu&lt;/code>&#xA;can be used anywhere a &lt;code>Menu&lt;/code> can be used.&#xA;However, if you use a &lt;code>PopupMenu&lt;/code> like a &lt;code>Menu&lt;/code>&#xA;(e.g., you add it to a &lt;code>MenuBar&lt;/code>), then you &lt;b>cannot&lt;/b>&#xA;call &lt;code>show&lt;/code> on that &lt;code>PopupMenu&lt;/code>.&#xA;&#xA;@version&#x9;1.29 03/16/04&#xA;@author &#x9;Amy Fowler&#xA;" annotatedElement="5639dbd7-bfaa-4d25-b6c9-ee1c7d3551e5"/>
            <generalization xmi:id="e8121fc5-2579-4dc2-a4b3-b46b7cf735a3" isSubstitutable="true" general="1e913509-1a68-4b84-8f09-8b878e2ad3db"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8318b30c-05da-4373-90a4-2708528937b5" name="AccessibleAWTPopupMenu" visibility="protected">
              <ownedComment xmi:id="ecd0ea70-7ab2-4714-a92a-1fa6826c833b" body="Inner class of PopupMenu used to provide default support for&#xA;accessibility.  This class is not meant to be used directly by&#xA;application developers, but is instead meant only to be&#xA;subclassed by menu component developers.&#xA;&lt;p>&#xA;The class used to obtain the accessible role for this object.&#xA;" annotatedElement="8318b30c-05da-4373-90a4-2708528937b5"/>
              <generalization xmi:id="2a69c9e2-ae80-418b-99a1-6f6826346786" isSubstitutable="true" general="a523f7c4-97fb-4f82-95dc-2f7b9c50197d"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="c3507179-c29c-40a9-8869-092757900e53" name="LayoutManager" isAbstract="true">
            <ownedComment xmi:id="5547737b-6f00-401d-aa96-adbf05b548b7" body="Defines the interface for classes that know how to lay out&#xA;&lt;code>Container&lt;/code>s.&#xA;&#xA;@see Container&#xA;&#xA;@version&#x9;1.25, 12/19/03&#xA;@author &#x9;Sami Shaio&#xA;@author &#x9;Arthur van Hoff&#xA;" annotatedElement="c3507179-c29c-40a9-8869-092757900e53"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f686669d-cb2b-4b1c-a0c7-2dee2f4235c7" name="BasicStroke" clientDependency="0ebd5e38-9b6a-4d2d-b291-240184d16ae1">
            <ownedComment xmi:id="d9c51d08-bbf9-4869-8489-fedf84d0d036" body="The &lt;code>BasicStroke&lt;/code> class defines a basic set of rendering&#xA;attributes for the outlines of graphics primitives, which are rendered&#xA;with a {@link Graphics2D} object that has its Stroke attribute set to&#xA;this &lt;code>BasicStroke&lt;/code>.&#xA;The rendering attributes defined by &lt;code>BasicStroke&lt;/code> describe&#xA;the shape of the mark made by a pen drawn along the outline of a&#xA;{@link Shape} and the decorations applied at the ends and joins of&#xA;path segments of the &lt;code>Shape&lt;/code>.&#xA;These rendering attributes include:&#xA;&lt;dl compact>&#xA;&lt;dt>&lt;i>width&lt;/i>&#xA;&lt;dd>The pen width, measured perpendicularly to the pen trajectory.&#xA;&lt;dt>&lt;i>end caps&lt;/i>&#xA;&lt;dd>The decoration applied to the ends of unclosed subpaths and&#xA;dash segments.  Subpaths that start and end on the same point are&#xA;still considered unclosed if they do not have a CLOSE segment.&#xA;See {@link java.awt.geom.PathIterator#SEG_CLOSE SEG_CLOSE}&#xA;for more information on the CLOSE segment.&#xA;The three different decorations are: {@link #CAP_BUTT},&#xA;{@link #CAP_ROUND}, and {@link #CAP_SQUARE}.&#xA;&lt;dt>&lt;i>line joins&lt;/i>&#xA;&lt;dd>The decoration applied at the intersection of two path segments&#xA;and at the intersection of the endpoints of a subpath that is closed&#xA;using {@link java.awt.geom.PathIterator#SEG_CLOSE SEG_CLOSE}.&#xA;The three different decorations are: {@link #JOIN_BEVEL},&#xA;{@link #JOIN_MITER}, and {@link #JOIN_ROUND}.&#xA;&lt;dt>&lt;i>miter limit&lt;/i>&#xA;&lt;dd>The limit to trim a line join that has a JOIN_MITER decoration.&#xA;A line join is trimmed when the ratio of miter length to stroke&#xA;width is greater than the miterlimit value.  The miter length is&#xA;the diagonal length of the miter, which is the distance between&#xA;the inside corner and the outside corner of the intersection.&#xA;The smaller the angle formed by two line segments, the longer&#xA;the miter length and the sharper the angle of intersection.  The&#xA;default miterlimit value of 10.0f causes all angles less than&#xA;11 degrees to be trimmed.  Trimming miters converts&#xA;the decoration of the line join to bevel.&#xA;&lt;dt>&lt;i>dash attributes&lt;/i>&#xA;&lt;dd>The definition of how to make a dash pattern by alternating&#xA;between opaque and transparent sections.&#xA;&lt;/dl>&#xA;All attributes that specify measurements and distances controlling&#xA;the shape of the returned outline are measured in the same&#xA;coordinate system as the original unstroked &lt;code>Shape&lt;/code>&#xA;argument.  When a &lt;code>Graphics2D&lt;/code> object uses a&#xA;&lt;code>Stroke&lt;/code> object to redefine a path during the execution&#xA;of one of its &lt;code>draw&lt;/code> methods, the geometry is supplied&#xA;in its original form before the &lt;code>Graphics2D&lt;/code> transform&#xA;attribute is applied.  Therefore, attributes such as the pen width&#xA;are interpreted in the user space coordinate system of the&#xA;&lt;code>Graphics2D&lt;/code> object and are subject to the scaling and&#xA;shearing effects of the user-space-to-device-space transform in that&#xA;particular &lt;code>Graphics2D&lt;/code>.&#xA;For example, the width of a rendered shape's outline is determined&#xA;not only by the width attribute of this &lt;code>BasicStroke&lt;/code>,&#xA;but also by the transform attribute of the&#xA;&lt;code>Graphics2D&lt;/code> object.  Consider this code:&#xA;&lt;blockquote>&lt;tt>&#xA;sets the Graphics2D object's Tranform attribute&#xA;g2d.scale(10, 10);&#xA;sets the Graphics2D object's Stroke attribute&#xA;g2d.setStroke(new BasicStroke(1.5f));&#xA;&lt;/tt>&lt;/blockquote>&#xA;Assuming there are no other scaling transforms added to the&#xA;&lt;code>Graphics2D&lt;/code> object, the resulting line&#xA;will be approximately 15 pixels wide.&#xA;As the example code demonstrates, a floating-point line&#xA;offers better precision, especially when large transforms are&#xA;used with a &lt;code>Graphics2D&lt;/code> object.&#xA;When a line is diagonal, the exact width depends on how the&#xA;rendering pipeline chooses which pixels to fill as it traces the&#xA;theoretical widened outline.  The choice of which pixels to turn&#xA;on is affected by the antialiasing attribute because the&#xA;antialiasing rendering pipeline can choose to color&#xA;partially-covered pixels.&#xA;&lt;p>&#xA;For more information on the user space coordinate system and the&#xA;rendering process, see the &lt;code>Graphics2D&lt;/code> class comments.&#xA;@see Graphics2D&#xA;@version 1.40, 12/19/03&#xA;@author Jim Graham&#xA;" annotatedElement="f686669d-cb2b-4b1c-a0c7-2dee2f4235c7"/>
            <interfaceRealization xmi:id="0ebd5e38-9b6a-4d2d-b291-240184d16ae1" name="" supplier="59a461a4-0325-4f6e-ab25-483b0eade5af" client="f686669d-cb2b-4b1c-a0c7-2dee2f4235c7" contract="59a461a4-0325-4f6e-ab25-483b0eade5af"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8448d040-108f-48f8-98f3-8a3d274876e5" name="FillAdapter" visibility="private"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1e913509-1a68-4b84-8f09-8b878e2ad3db" name="Menu" clientDependency="ff3d50b8-770e-4ce7-9f7d-677068f4e5b7 8ebf2c57-45ee-4681-8792-bfde9e0e5cac">
            <ownedComment xmi:id="a273d162-8d4f-4ebf-aa67-e71af5befb2e" body="A &lt;code>Menu&lt;/code> object is a pull-down menu component&#xA;that is deployed from a menu bar.&#xA;&lt;p>&#xA;A menu can optionally be a &lt;i>tear-off&lt;/i> menu. A tear-off menu&#xA;can be opened and dragged away from its parent menu bar or menu.&#xA;It remains on the screen after the mouse button has been released.&#xA;The mechanism for tearing off a menu is platform dependent, since&#xA;the look and feel of the tear-off menu is determined by its peer.&#xA;On platforms that do not support tear-off menus, the tear-off&#xA;property is ignored.&#xA;&lt;p>&#xA;Each item in a menu must belong to the &lt;code>MenuItem&lt;/code>&#xA;class. It can be an instance of &lt;code>MenuItem&lt;/code>, a submenu&#xA;(an instance of &lt;code>Menu&lt;/code>), or a check box (an instance of&#xA;&lt;code>CheckboxMenuItem&lt;/code>).&#xA;&#xA;@version 1.75, 05/18/04&#xA;@author Sami Shaio&#xA;@see     java.awt.MenuItem&#xA;@see     java.awt.CheckboxMenuItem&#xA;@since   JDK1.0&#xA;" annotatedElement="1e913509-1a68-4b84-8f09-8b878e2ad3db"/>
            <generalization xmi:id="d5627efa-f593-46c0-a5fa-12b450326359" isSubstitutable="true" general="353ee79a-f600-47ed-ad15-12524e1f8586"/>
            <interfaceRealization xmi:id="ff3d50b8-770e-4ce7-9f7d-677068f4e5b7" name="" supplier="8e52e80c-2e25-4f4d-9f99-bdc0e420c2de" client="1e913509-1a68-4b84-8f09-8b878e2ad3db" contract="8e52e80c-2e25-4f4d-9f99-bdc0e420c2de"/>
            <interfaceRealization xmi:id="8ebf2c57-45ee-4681-8792-bfde9e0e5cac" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="1e913509-1a68-4b84-8f09-8b878e2ad3db" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a523f7c4-97fb-4f82-95dc-2f7b9c50197d" name="AccessibleAWTMenu" visibility="protected">
              <ownedComment xmi:id="d7d9e0a8-8f9b-4ff5-8e70-147cfe6a6272" body="Inner class of Menu used to provide default support for&#xA;accessibility.  This class is not meant to be used directly by&#xA;application developers, but is instead meant only to be&#xA;subclassed by menu component developers.&#xA;&lt;p>&#xA;This class implements accessibility support for the&#xA;&lt;code>Menu&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to menu user-interface elements.&#xA;" annotatedElement="a523f7c4-97fb-4f82-95dc-2f7b9c50197d"/>
              <generalization xmi:id="04c95276-3de9-448c-a84b-177a1382bdfa" isSubstitutable="true" general="81ddf40d-e8b3-468e-94ef-75dd0a5b1e8c"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="98fcd443-fe54-4f44-b4da-a26af2e27912" name="ColorPaintContext" visibility="package" clientDependency="801ddf2b-f0b6-4bd2-87c6-b6361c873e06">
            <interfaceRealization xmi:id="801ddf2b-f0b6-4bd2-87c6-b6361c873e06" name="" supplier="59ac6912-87de-469a-8726-9aecc34683b0" client="98fcd443-fe54-4f44-b4da-a26af2e27912" contract="59ac6912-87de-469a-8726-9aecc34683b0"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c2d60296-470e-4fd1-92ad-4d785b597bdb" name="TextArea">
            <ownedComment xmi:id="4137c6ed-816f-409f-b0d8-f643716477fb" body="A &lt;code>TextArea&lt;/code> object is a multi-line region&#xA;that displays text. It can be set to allow editing or&#xA;to be read-only.&#xA;&lt;p>&#xA;The following image shows the appearance of a text area:&#xA;&lt;p>&#xA;&lt;img src=&quot;doc-files/TextArea-1.gif&quot; alt=&quot;A TextArea showing the word 'Hello!'&quot;&#xA;ALIGN=center HSPACE=10 VSPACE=7>&#xA;&lt;p>&#xA;This text area could be created by the following line of code:&#xA;&lt;p>&#xA;&lt;hr>&lt;blockquote>&lt;pre>&#xA;new TextArea(&quot;Hello&quot;, 5, 40);&#xA;&lt;/pre>&lt;/blockquote>&lt;hr>&#xA;&lt;p>&#xA;@version&#x9;1.78, 05/18/04&#xA;@author &#x9;Sami Shaio&#xA;@since       JDK1.0&#xA;" annotatedElement="c2d60296-470e-4fd1-92ad-4d785b597bdb"/>
            <generalization xmi:id="5988792f-a65e-4108-aa01-c0677a69b536" isSubstitutable="true" general="d16f7a11-00a3-4474-ba0b-c38ec30ff9f4"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ad368851-094b-4981-a570-2c1f0bf0285d" name="AccessibleAWTTextArea" visibility="protected">
              <ownedComment xmi:id="d28439ad-8a0c-4bb1-ae4a-9428d8439797" body="This class implements accessibility support for the&#xA;&lt;code>TextArea&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to text area user-interface elements.&#xA;" annotatedElement="ad368851-094b-4981-a570-2c1f0bf0285d"/>
              <generalization xmi:id="faf7934c-c4a1-470c-80ce-517b65ee35bf" isSubstitutable="true" general="b4a7e424-2eb1-4aed-9662-cb03b405d120"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="478aa474-4eb0-4961-8dc8-cb9b2a6a29ba" name="PeerFixer" visibility="package" clientDependency="7e04de7a-b4a7-41b9-9606-750119939134 fede4664-9297-431d-978f-c4576426c2d6">
            <interfaceRealization xmi:id="7e04de7a-b4a7-41b9-9606-750119939134" name="" supplier="88711cfb-6c51-470c-ba69-487856ccc3e2" client="478aa474-4eb0-4961-8dc8-cb9b2a6a29ba" contract="88711cfb-6c51-470c-ba69-487856ccc3e2"/>
            <interfaceRealization xmi:id="fede4664-9297-431d-978f-c4576426c2d6" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="478aa474-4eb0-4961-8dc8-cb9b2a6a29ba" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="20e690b8-90b8-4ba4-9d26-ee62b56b0463" name="MenuComponent" clientDependency="180e1ecd-7a9e-4695-a779-db37dabe5d28" isAbstract="true">
            <ownedComment xmi:id="6e478f54-c546-486a-8ffe-2586822f8716" body="The abstract class &lt;code>MenuComponent&lt;/code> is the superclass&#xA;of all menu-related components. In this respect, the class&#xA;&lt;code>MenuComponent&lt;/code> is analogous to the abstract superclass&#xA;&lt;code>Component&lt;/code> for AWT components.&#xA;&lt;p>&#xA;Menu components receive and process AWT events, just as components do,&#xA;through the method &lt;code>processEvent&lt;/code>.&#xA;&#xA;@version &#x9;1.77, 05/18/04&#xA;@author &#x9;Arthur van Hoff&#xA;@since       JDK1.0&#xA;" annotatedElement="20e690b8-90b8-4ba4-9d26-ee62b56b0463"/>
            <interfaceRealization xmi:id="180e1ecd-7a9e-4695-a779-db37dabe5d28" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="20e690b8-90b8-4ba4-9d26-ee62b56b0463" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="d2222e9d-77ab-4e2d-8380-aae50ae771b8" name="AccessibleAWTMenuComponent" visibility="protected" clientDependency="7876dffa-7866-4676-9d4f-d8ea2a78b523 3ce49d9e-80ec-43b9-9f8f-473d2383b95a d5c681ec-d39e-4487-be08-05e04d98fb9d" isAbstract="true">
              <ownedComment xmi:id="6e87c316-14d4-4f11-82c7-2793fd7217ad" body="Inner class of &lt;code>MenuComponent&lt;/code> used to provide&#xA;default support for accessibility.  This class is not meant&#xA;to be used directly by application developers, but is instead&#xA;meant only to be subclassed by menu component developers.&#xA;&lt;p>&#xA;The class used to obtain the accessible role for this object.&#xA;" annotatedElement="d2222e9d-77ab-4e2d-8380-aae50ae771b8"/>
              <generalization xmi:id="d6b92678-7492-40b6-81a6-cd849a687192" isSubstitutable="true" general="5e5fecb3-251d-4b0e-b142-9f3aac1d4c57"/>
              <interfaceRealization xmi:id="7876dffa-7866-4676-9d4f-d8ea2a78b523" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="d2222e9d-77ab-4e2d-8380-aae50ae771b8" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="3ce49d9e-80ec-43b9-9f8f-473d2383b95a" name="" supplier="a13045dc-df1a-4751-8aff-9b7e320e05bf" client="d2222e9d-77ab-4e2d-8380-aae50ae771b8" contract="a13045dc-df1a-4751-8aff-9b7e320e05bf"/>
              <interfaceRealization xmi:id="d5c681ec-d39e-4487-be08-05e04d98fb9d" name="" supplier="0dbef058-3ccc-4038-b98f-eea279be3f13" client="d2222e9d-77ab-4e2d-8380-aae50ae771b8" contract="0dbef058-3ccc-4038-b98f-eea279be3f13"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="497a32b5-c932-462f-b801-f276da472997" name="ComponentOrientation" clientDependency="52dd39ff-5bcf-4e54-ac5a-38543d5d01e2" isLeaf="true">
            <ownedComment xmi:id="f30ce5cf-6da9-4eee-9a77-a4258e1aaf23" body="The ComponentOrientation class encapsulates the language-sensitive&#xA;orientation that is to be used to order the elements of a component&#xA;or of text. It is used to reflect the differences in this ordering&#xA;between Western alphabets, Middle Eastern (such as Hebrew), and Far&#xA;Eastern (such as Japanese).&#xA;&lt;p>&#xA;Fundamentally, this governs items (such as characters) which are laid out&#xA;in lines, with the lines then laid out in a block. This also applies&#xA;to items in a widget: for example, in a check box where the box is&#xA;positioned relative to the text.&#xA;&lt;p>&#xA;There are four different orientations used in modern languages&#xA;as in the following table.&lt;br>&#xA;&lt;pre>&#xA;LT          RT          TL          TR&#xA;A B C       C B A       A D G       G D A&#xA;D E F       F E D       B E H       H E B&#xA;G H I       I H G       C F I       I F C&#xA;&lt;/pre>&lt;br>&#xA;(In the header, the two-letter abbreviation represents the item direction&#xA;in the first letter, and the line direction in the second. For example,&#xA;LT means &quot;items left-to-right, lines top-to-bottom&quot;,&#xA;BL means &quot;items bottom-to-top, lines bottom-to-top&quot;, and so on.)&#xA;&lt;p>&#xA;The orientations are:&#xA;&lt;ul>&#xA;&lt;li>LT - Western Europe (optional for Japanese, Chinese, Korean)&#xA;&lt;li>RT - Middle East (Arabic, Hebrew)&#xA;&lt;li>TR - Japanese, Chinese, Korean&#xA;&lt;li>TL - Mongolian&#xA;&lt;/ul>&#xA;Components whose view and controller code depends on orientation&#xA;should use the &lt;code>isLeftToRight()&lt;/code> and&#xA;&lt;code>isHorizontal()&lt;/code> methods to&#xA;determine their behavior. They should not include switch-like&#xA;code that keys off of the constants, such as:&#xA;&lt;pre>&#xA;if (orientation == LEFT_TO_RIGHT) {&#xA;...&#xA;} else if (orientation == RIGHT_TO_LEFT) {&#xA;...&#xA;} else {&#xA;Oops&#xA;}&#xA;&lt;/pre>&#xA;This is unsafe, since more constants may be added in the future and&#xA;since it is not guaranteed that orientation objects will be unique.&#xA;" annotatedElement="497a32b5-c932-462f-b801-f276da472997"/>
            <interfaceRealization xmi:id="52dd39ff-5bcf-4e54-ac5a-38543d5d01e2" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="497a32b5-c932-462f-b801-f276da472997" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="b8a81ec0-3dfc-4493-81d6-e7eca1bb10aa" name="Shape" isAbstract="true">
            <ownedComment xmi:id="3a286db6-e47f-4f6f-b92b-d06fc4d1b1c9" body="The &lt;code>Shape&lt;/code> interface provides definitions for objects&#xA;that represent some form of geometric shape.  The &lt;code>Shape&lt;/code>&#xA;is described by a {@link PathIterator} object, which can express the&#xA;outline of the &lt;code>Shape&lt;/code> as well as a rule for determining&#xA;how the outline divides the 2D plane into interior and exterior&#xA;points.  Each &lt;code>Shape&lt;/code> object provides callbacks to get the&#xA;bounding box of the geometry, determine whether points or&#xA;rectangles lie partly or entirely within the interior&#xA;of the &lt;code>Shape&lt;/code>, and retrieve a &lt;code>PathIterator&lt;/code>&#xA;object that describes the trajectory path of the &lt;code>Shape&lt;/code>&#xA;outline.&#xA;&lt;p>&#xA;&lt;b>Definition of insideness:&lt;/b>&#xA;A point is considered to lie inside a&#xA;&lt;code>Shape&lt;/code> if and only if:&#xA;&lt;ul>&#xA;&lt;li> it lies completely&#xA;inside the&lt;code>Shape&lt;/code> boundary &lt;i>or&lt;/i>&#xA;&lt;li>&#xA;it lies exactly on the &lt;code>Shape&lt;/code> boundary &lt;i>and&lt;/i> the&#xA;space immediately adjacent to the&#xA;point in the increasing &lt;code>X&lt;/code> direction is&#xA;entirely inside the boundary &lt;i>or&lt;/i>&#xA;&lt;li>&#xA;it lies exactly on a horizontal boundary segment &lt;b>and&lt;/b> the&#xA;space immediately adjacent to the point in the&#xA;increasing &lt;code>Y&lt;/code> direction is inside the boundary.&#xA;&lt;/ul>&#xA;&lt;p>The &lt;code>contains&lt;/code> and &lt;code>intersects&lt;/code> methods&#xA;consider the interior of a &lt;code>Shape&lt;/code> to be the area it&#xA;encloses as if it were filled.  This means that these methods&#xA;consider&#xA;unclosed shapes to be implicitly closed for the purpose of&#xA;determining if a shape contains or intersects a rectangle or if a&#xA;shape contains a point.&#xA;&#xA;@see java.awt.geom.PathIterator&#xA;@see java.awt.geom.AffineTransform&#xA;@see java.awt.geom.FlatteningPathIterator&#xA;@see java.awt.geom.GeneralPath&#xA;&#xA;@version 1.19 06/24/98&#xA;@author Jim Graham&#xA;" annotatedElement="b8a81ec0-3dfc-4493-81d6-e7eca1bb10aa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="11c75d19-848f-42e5-95be-bcaff5b5bd11" name="DisplayMode" isLeaf="true">
            <ownedComment xmi:id="847c5e9a-7cd6-4abf-896b-0fb518dcae5c" body="The &lt;code>DisplayMode&lt;/code> class encapsulates the bit depth, height,&#xA;width, and refresh rate of a &lt;code>GraphicsDevice&lt;/code>.  Display modes&#xA;are hardware-dependent and may not always be available.&#xA;@see GraphicsDevice&#xA;@author Michael Martak&#xA;@since 1.4&#xA;" annotatedElement="11c75d19-848f-42e5-95be-bcaff5b5bd11"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0df64863-423a-4164-916b-68ccd3aa4002" name="JobAttributes" clientDependency="0fc00507-4b94-4b6a-a931-a94ba3d00c27" isLeaf="true">
            <ownedComment xmi:id="cdadf251-c9dc-4482-9c37-3dc5136f7bbb" body="A set of attributes which control a print job.&#xA;&lt;p>&#xA;Instances of this class control the number of copies, default selection,&#xA;destination, print dialog, file and printer names, page ranges, multiple&#xA;document handling (including collation), and multi-page imposition (such&#xA;as duplex) of every print job which uses the instance. Attribute names are&#xA;compliant with the Internet Printing Protocol (IPP) 1.1 where possible.&#xA;Attribute values are partially compliant where possible.&#xA;&lt;p>&#xA;To use a method which takes an inner class type, pass a reference to&#xA;one of the constant fields of the inner class. Client code cannot create&#xA;new instances of the inner class types because none of those classes&#xA;has a public constructor. For example, to set the print dialog type to&#xA;the cross-platform, pure Java print dialog, use the following code:&#xA;&lt;pre>&#xA;import java.awt.JobAttributes;&#xA;&#xA;public class PureJavaPrintDialogExample {&#xA;public void setPureJavaPrintDialog(JobAttributes jobAttributes) {&#xA;jobAttributes.setDialog(JobAttributes.DialogType.COMMON);&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&lt;p>&#xA;Every IPP attribute which supports an &lt;i>attributeName&lt;/i>-default value&#xA;has a corresponding &lt;code>set&lt;i>attributeName&lt;/i>ToDefault&lt;/code> method.&#xA;Default value fields are not provided.&#xA;&#xA;@version&#x9;1.9, 12/19/03&#xA;@author&#x9;David Mendenhall&#xA;" annotatedElement="0df64863-423a-4164-916b-68ccd3aa4002"/>
            <interfaceRealization xmi:id="0fc00507-4b94-4b6a-a931-a94ba3d00c27" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="0df64863-423a-4164-916b-68ccd3aa4002" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="5e717c60-fd68-496b-9c6d-11a0755db686" name="DefaultSelectionType" isLeaf="true">
              <ownedComment xmi:id="f9e38b87-37b4-4505-84ef-7a327d8799c3" body="A type-safe enumeration of possible default selection states.&#xA;" annotatedElement="5e717c60-fd68-496b-9c6d-11a0755db686"/>
              <generalization xmi:id="8ce3a250-8c89-4cbd-a247-6c8b838c6a45" isSubstitutable="true" general="02ec514a-9014-4beb-944b-e6a997872b3f"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="cab36d50-2ade-4ad3-a016-16231f86908e" name="DestinationType" isLeaf="true">
              <ownedComment xmi:id="4776adae-d708-46d2-b09c-c10775f3f5ad" body="A type-safe enumeration of possible job destinations.&#xA;" annotatedElement="cab36d50-2ade-4ad3-a016-16231f86908e"/>
              <generalization xmi:id="19786548-e21a-4852-82db-276e33e77948" isSubstitutable="true" general="02ec514a-9014-4beb-944b-e6a997872b3f"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="0dee7e4c-60e3-4fed-a069-64b7c1f51e09" name="DialogType" isLeaf="true">
              <ownedComment xmi:id="370605f2-01c3-4da0-adaf-eace37477c10" body="A type-safe enumeration of possible dialogs to display to the user.&#xA;" annotatedElement="0dee7e4c-60e3-4fed-a069-64b7c1f51e09"/>
              <generalization xmi:id="c63b4aad-838f-4141-9327-171615bba623" isSubstitutable="true" general="02ec514a-9014-4beb-944b-e6a997872b3f"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="e6708755-6ea8-40d5-822f-6094c4f92677" name="MultipleDocumentHandlingType" isLeaf="true">
              <ownedComment xmi:id="43a9c9ca-b702-4c91-9596-cd4c6a16f668" body="A type-safe enumeration of possible multiple copy handling states.&#xA;It is used to control how the sheets of multiple copies of a single&#xA;document are collated.&#xA;" annotatedElement="e6708755-6ea8-40d5-822f-6094c4f92677"/>
              <generalization xmi:id="83ec6481-6fc4-4654-bd2e-b836afb89a51" isSubstitutable="true" general="02ec514a-9014-4beb-944b-e6a997872b3f"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="dca09014-1384-48bc-a4dc-aed6af484ef3" name="SidesType" isLeaf="true">
              <ownedComment xmi:id="975f7ebe-181f-474e-9c28-bc5c92017719" body="A type-safe enumeration of possible multi-page impositions. These&#xA;impositions are in compliance with IPP 1.1.&#xA;" annotatedElement="dca09014-1384-48bc-a4dc-aed6af484ef3"/>
              <generalization xmi:id="415727bd-2117-4882-bb9e-2e0fa5456786" isSubstitutable="true" general="02ec514a-9014-4beb-944b-e6a997872b3f"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="88b55459-3cce-4888-9c08-12da62039a48" name="IllegalComponentStateException">
            <ownedComment xmi:id="c9be0fbf-a019-4540-bed9-f838c3110ff6" body="Signals that an AWT component is not in an appropriate state for&#xA;the requested operation.&#xA;&#xA;@version &#x9;1.12, 12/19/03&#xA;@author&#x9;Jonni Kanerva&#xA;" annotatedElement="88b55459-3cce-4888-9c08-12da62039a48"/>
            <generalization xmi:id="4fc614af-3b50-42f3-bb6d-68d13c2a97d1" isSubstitutable="true" general="f9e1d07d-a558-48c5-a45e-01540d385078"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="0571fbb7-8f7f-405c-a889-9b193fa35a24" name="datatransfer">
            <packagedElement xmi:type="uml:Interface" xmi:id="bef60c96-0bb7-4866-9b6a-3960a5d40019" name="FlavorTable" isAbstract="true">
              <ownedComment xmi:id="79a984b3-05ba-472c-80e0-671e2f4f4f8e" body="A FlavorMap which relaxes the traditional 1-to-1 restriction of a Map. A&#xA;flavor is permitted to map to any number of natives, and likewise a native&#xA;is permitted to map to any number of flavors. FlavorTables need not be&#xA;symmetric, but typically are.&#xA;&#xA;@author David Mendenhall&#xA;@version 1.5, 05/05/04&#xA;&#xA;@since 1.4&#xA;" annotatedElement="bef60c96-0bb7-4866-9b6a-3960a5d40019"/>
              <generalization xmi:id="8751b5af-9155-48dd-9d88-ebe9b952825a" isSubstitutable="true" general="2331ef30-34d0-4f60-9b31-108f2e9411b6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b3815006-cb86-4da2-8e83-0fba926ea995" name="FlavorEvent">
              <ownedComment xmi:id="820b00a9-619f-4cc8-8604-c621eb16623c" body="&lt;code>FlavorEvent&lt;/code> is used to notify interested parties&#xA;that available {@link DataFlavor}s have changed in the&#xA;{@link Clipboard} (the event source).&#xA;&#xA;@see FlavorListener&#xA;&#xA;@version 1.2 12/19/03&#xA;@author Alexander Gerasimov&#xA;@since 1.5&#xA;" annotatedElement="b3815006-cb86-4da2-8e83-0fba926ea995"/>
              <generalization xmi:id="5aed56a6-8fc1-4e11-98c2-be035a629c60" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="336d8093-b8f0-4082-aca4-6df50723ffe0" name="StringSelection" clientDependency="32511c42-e022-464c-99ce-cd88b4b526c9 e3ce4505-805a-4822-92ef-28078c31fb52">
              <ownedComment xmi:id="7aef8516-e5fc-4416-95e4-f62c5027f72d" body="A &lt;code>Transferable&lt;/code> which implements the capability required&#xA;to transfer a &lt;code>String&lt;/code>.&#xA;&#xA;This &lt;code>Transferable&lt;/code> properly supports&#xA;&lt;code>DataFlavor.stringFlavor&lt;/code>&#xA;and all equivalent flavors. Support for&#xA;&lt;code>DataFlavor.plainTextFlavor&lt;/code>&#xA;and all equivalent flavors is &lt;b>deprecated&lt;/b>. No other&#xA;&lt;code>DataFlavor&lt;/code>s are supported.&#xA;&#xA;@see java.awt.datatransfer.DataFlavor#stringFlavor&#xA;@see java.awt.datatransfer.DataFlavor#plainTextFlavor&#xA;" annotatedElement="336d8093-b8f0-4082-aca4-6df50723ffe0"/>
              <interfaceRealization xmi:id="32511c42-e022-464c-99ce-cd88b4b526c9" name="" supplier="93975c92-87b1-4831-a429-d2cc70682ac8" client="336d8093-b8f0-4082-aca4-6df50723ffe0" contract="93975c92-87b1-4831-a429-d2cc70682ac8"/>
              <interfaceRealization xmi:id="e3ce4505-805a-4822-92ef-28078c31fb52" name="" supplier="63638b0c-847b-4f43-9375-9eefaae00afa" client="336d8093-b8f0-4082-aca4-6df50723ffe0" contract="63638b0c-847b-4f43-9375-9eefaae00afa"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="278ef520-a32b-44f9-ac1f-00489317faa9" name="MimeType" visibility="package" clientDependency="92e8ef2b-d845-4eef-9506-d5fb3465490b c0438317-9e1e-49c3-b2fd-da75841076ce">
              <ownedComment xmi:id="9011bc6c-328f-4d01-b483-c8de25c0b7f2" body="A Multipurpose Internet Mail Extension (MIME) type, as defined&#xA;in RFC 2045 and 2046.&#xA;&#xA;THIS IS *NOT* - REPEAT *NOT* - A PUBLIC CLASS! DataFlavor IS&#xA;THE PUBLIC INTERFACE, AND THIS IS PROVIDED AS A ***PRIVATE&#xA;(THAT IS AS IN *NOT* PUBLIC) HELPER CLASS!&#xA;" annotatedElement="278ef520-a32b-44f9-ac1f-00489317faa9"/>
              <interfaceRealization xmi:id="c0438317-9e1e-49c3-b2fd-da75841076ce" name="" supplier="d359de8b-a8e5-4901-98b0-99c23e339ab5" client="278ef520-a32b-44f9-ac1f-00489317faa9" contract="d359de8b-a8e5-4901-98b0-99c23e339ab5"/>
              <interfaceRealization xmi:id="92e8ef2b-d845-4eef-9506-d5fb3465490b" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="278ef520-a32b-44f9-ac1f-00489317faa9" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="ada1d555-5a0f-45d1-b6f1-84b0184cd972" name="FlavorListener" isAbstract="true">
              <ownedComment xmi:id="9ccb9abb-1e16-4c28-baa2-e3974b7f1726" body="Defines an object which listens for {@link FlavorEvent}s.&#xA;&#xA;@version 1.3 12/19/03&#xA;@author Alexander Gerasimov&#xA;@since 1.5&#xA;" annotatedElement="ada1d555-5a0f-45d1-b6f1-84b0184cd972"/>
              <generalization xmi:id="a92367bb-2003-4a52-8f77-4058825d000c" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="88f25619-8342-4689-b88c-c4109ece67f2" name="Clipboard">
              <ownedComment xmi:id="6ce66bc0-4c07-4d17-a19e-a5f8fe40ef18" body="A class that implements a mechanism to transfer data using&#xA;cut/copy/paste operations.&#xA;&lt;p>&#xA;{@link FlavorListener}s may be registered on an instance of the&#xA;Clipboard class to be notified about changes to the set of&#xA;{@link DataFlavor}s available on this clipboard (see&#xA;{@link #addFlavorListener}).&#xA;&#xA;@see java.awt.Toolkit#getSystemClipboard&#xA;@see java.awt.Toolkit#getSystemSelection&#xA;&#xA;@version &#x9;1.22, 12/19/03&#xA;@author&#x9;Amy Fowler&#xA;@author      Alexander Gerasimov&#xA;" annotatedElement="88f25619-8342-4689-b88c-c4109ece67f2"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4e5710fa-de73-44db-ad50-ab904bc4554d" name="MimeTypeParameterList" visibility="package" clientDependency="fdb4b6ab-4fc7-43e8-bf9e-10d2eec6f4f9">
              <ownedComment xmi:id="7fc3f983-433e-41dd-8149-82ea15772be9" body="An object that encapsualtes the parameter list of a MimeType&#xA;as defined in RFC 2045 and 2046.&#xA;&#xA;@version 1.15, 12/19/03&#xA;@author jeff.dunn@eng.sun.com&#xA;" annotatedElement="4e5710fa-de73-44db-ad50-ab904bc4554d"/>
              <interfaceRealization xmi:id="fdb4b6ab-4fc7-43e8-bf9e-10d2eec6f4f9" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="4e5710fa-de73-44db-ad50-ab904bc4554d" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="66930565-3653-4c90-bf11-605f4c908d41" name="UnsupportedFlavorException">
              <ownedComment xmi:id="855922e5-9dbe-4e56-bffc-ebf560f98efb" body="Signals that the requested data is not supported in this flavor.&#xA;@see Transferable#getTransferData&#xA;&#xA;@version &#x9;1.15, 12/19/03&#xA;@author&#x9;Amy Fowler&#xA;" annotatedElement="66930565-3653-4c90-bf11-605f4c908d41"/>
              <generalization xmi:id="6e9c4957-364a-4e24-9147-8250c358ae9e" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="63638b0c-847b-4f43-9375-9eefaae00afa" name="ClipboardOwner" isAbstract="true">
              <ownedComment xmi:id="a20e518b-e9f7-4404-98c5-5de4aebbc2c5" body="Defines the interface for classes that will provide data to&#xA;a clipboard. An instance of this interface becomes the owner&#xA;of the contents of a clipboard (clipboard owner) if it is&#xA;passed as an argument to&#xA;{@link java.awt.datatransfer.Clipboard#setContents} method of&#xA;the clipboard and this method returns successfully.&#xA;The instance remains the clipboard owner until another application&#xA;or another object within this application asserts ownership&#xA;of this clipboard.&#xA;&#xA;@see java.awt.datatransfer.Clipboard&#xA;&#xA;@version &#x9;1.11, 12/19/03&#xA;@author&#x9;Amy Fowler&#xA;" annotatedElement="63638b0c-847b-4f43-9375-9eefaae00afa"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ec15fc73-ef4c-4db4-a79f-831e515eadfb" name="DataFlavor" clientDependency="c99b4508-c7a0-4748-8951-b88d779c6312 bee442c7-50c0-466f-921f-d46982dcfbe0">
              <ownedComment xmi:id="c94b7480-d904-4afd-a87f-3b837d965eb3" body="Each instance represents the opaque concept of a data format as would&#xA;appear on a clipboard, during drag and drop, or in a file system.&#xA;&lt;p>&#xA;&lt;code>DataFlavor&lt;/code> objects are constant and never change once&#xA;instantiated.&#xA;&lt;p>&#xA;For information on using data transfer with Swing, see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/dnd.html&quot;>&#xA;How to Use Drag and Drop and Data Transfer&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>, for more information.&#xA;&#xA;@version     1.79, 05/18/04&#xA;@author      Blake Sullivan&#xA;@author      Laurence P. G. Cable&#xA;@author      Jeff Dunn&#xA;" annotatedElement="ec15fc73-ef4c-4db4-a79f-831e515eadfb"/>
              <interfaceRealization xmi:id="c99b4508-c7a0-4748-8951-b88d779c6312" name="" supplier="d359de8b-a8e5-4901-98b0-99c23e339ab5" client="ec15fc73-ef4c-4db4-a79f-831e515eadfb" contract="d359de8b-a8e5-4901-98b0-99c23e339ab5"/>
              <interfaceRealization xmi:id="bee442c7-50c0-466f-921f-d46982dcfbe0" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="ec15fc73-ef4c-4db4-a79f-831e515eadfb" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="fe2d8f4d-5aae-4b99-9073-73feca2b1abe" name="TextFlavorComparator" visibility="package"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="2331ef30-34d0-4f60-9b31-108f2e9411b6" name="FlavorMap" isAbstract="true">
              <ownedComment xmi:id="7164e411-16b3-4d64-b0b1-4bf77b84b4fd" body="A two-way Map between &quot;natives&quot; (Strings), which correspond to platform-&#xA;specfic data formats, and &quot;flavors&quot; (DataFlavors), which corerspond to&#xA;platform-independent MIME types. FlavorMaps need not be symmetric, but&#xA;typically are.&#xA;&#xA;@version 1.19, 05/05/04&#xA;&#xA;@since 1.2&#xA;" annotatedElement="2331ef30-34d0-4f60-9b31-108f2e9411b6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="06d92cb5-45aa-4243-b1dd-a8586a06e5dc" name="SystemFlavorMap" clientDependency="bf6dfbbf-2e22-4716-aca2-e9e7eed5e025 93aa3ab9-c283-4ab9-a0c4-855f424dd6ec" isLeaf="true">
              <ownedComment xmi:id="45e95f2a-00ae-491c-9ebb-50fd989cae5a" body="The SystemFlavorMap is a configurable map between &quot;natives&quot; (Strings), which&#xA;correspond to platform-specific data formats, and &quot;flavors&quot; (DataFlavors),&#xA;which correspond to platform-independent MIME types. This mapping is used&#xA;by the data transfer subsystem to transfer data between Java and native&#xA;applications, and between Java applications in separate VMs.&#xA;&lt;p>&#xA;In the Sun reference implementation, the default SystemFlavorMap is&#xA;initialized by the file &lt;code>jre/lib/flavormap.properties&lt;/code> and the&#xA;contents of the URL referenced by the AWT property&#xA;&lt;code>AWT.DnD.flavorMapFileURL&lt;/code>. See &lt;code>flavormap.properties&lt;/code>&#xA;for details.&#xA;&#xA;@version 1.36, 05/05/04&#xA;@since 1.2&#xA;" annotatedElement="06d92cb5-45aa-4243-b1dd-a8586a06e5dc"/>
              <interfaceRealization xmi:id="bf6dfbbf-2e22-4716-aca2-e9e7eed5e025" name="" supplier="2331ef30-34d0-4f60-9b31-108f2e9411b6" client="06d92cb5-45aa-4243-b1dd-a8586a06e5dc" contract="2331ef30-34d0-4f60-9b31-108f2e9411b6"/>
              <interfaceRealization xmi:id="93aa3ab9-c283-4ab9-a0c4-855f424dd6ec" name="" supplier="bef60c96-0bb7-4866-9b6a-3960a5d40019" client="06d92cb5-45aa-4243-b1dd-a8586a06e5dc" contract="bef60c96-0bb7-4866-9b6a-3960a5d40019"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="93975c92-87b1-4831-a429-d2cc70682ac8" name="Transferable" isAbstract="true">
              <ownedComment xmi:id="d6ec9443-f60f-444e-9105-b0251cf2229a" body="Defines the interface for classes that can be used to provide data&#xA;for a transfer operation.&#xA;&lt;p>&#xA;For information on using data transfer with Swing, see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/dnd.html&quot;>&#xA;How to Use Drag and Drop and Data Transfer&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>, for more information.&#xA;&#xA;@version &#x9;1.13, 12/19/03&#xA;@author&#x9;Amy Fowler&#xA;" annotatedElement="93975c92-87b1-4831-a429-d2cc70682ac8"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="187f9d36-28be-42ca-af84-a72d9db78d3f" name="MimeTypeParseException">
              <ownedComment xmi:id="7583c33b-4376-4bfd-a1b1-b5610887e4c4" body="A class to encapsulate MimeType parsing related exceptions&#xA;&#xA;@serial exclude&#xA;" annotatedElement="187f9d36-28be-42ca-af84-a72d9db78d3f"/>
              <generalization xmi:id="9f1bc05a-ff86-4fdd-a643-aa9232ee3eb1" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4069db9b-a8e4-40e3-987a-2d12ac566df3" name="ScrollPane" clientDependency="1cfe46cb-4465-465e-abd7-4e83d9c7c9b4">
            <ownedComment xmi:id="26c9faaa-8e54-4f25-8e73-e581bbe249ec" body="A container class which implements automatic horizontal and/or&#xA;vertical scrolling for a single child component.  The display&#xA;policy for the scrollbars can be set to:&#xA;&lt;OL>&#xA;&lt;LI>as needed: scrollbars created and shown only when needed by scrollpane&#xA;&lt;LI>always: scrollbars created and always shown by the scrollpane&#xA;&lt;LI>never: scrollbars never created or shown by the scrollpane&#xA;&lt;/OL>&#xA;&lt;P>&#xA;The state of the horizontal and vertical scrollbars is represented&#xA;by two &lt;code>ScrollPaneAdjustable&lt;/code> objects (one for each&#xA;dimension) which implement the &lt;code>Adjustable&lt;/code> interface.&#xA;The API provides methods to access those objects such that the&#xA;attributes on the Adjustable object (such as unitIncrement, value,&#xA;etc.) can be manipulated.&#xA;&lt;P>&#xA;Certain adjustable properties (minimum, maximum, blockIncrement,&#xA;and visibleAmount) are set internally by the scrollpane in accordance&#xA;with the geometry of the scrollpane and its child and these should&#xA;not be set by programs using the scrollpane.&#xA;&lt;P>&#xA;If the scrollbar display policy is defined as &quot;never&quot;, then the&#xA;scrollpane can still be programmatically scrolled using the&#xA;setScrollPosition() method and the scrollpane will move and clip&#xA;the child's contents appropriately.  This policy is useful if the&#xA;program needs to create and manage its own adjustable controls.&#xA;&lt;P>&#xA;The placement of the scrollbars is controlled by platform-specific&#xA;properties set by the user outside of the program.&#xA;&lt;P>&#xA;The initial size of this container is set to 100x100, but can&#xA;be reset using setSize().&#xA;&lt;P>&#xA;Scrolling with the wheel on a wheel-equipped mouse is enabled by default.&#xA;This can be disabled using &lt;code>setWheelScrollingEnabled&lt;/code>.&#xA;Wheel scrolling can be customized by setting the block and&#xA;unit increment of the horizontal and vertical Adjustables.&#xA;For information on how mouse wheel events are dispatched, see&#xA;the class description for {@link MouseWheelEvent}.&#xA;&lt;P>&#xA;Insets are used to define any space used by scrollbars and any&#xA;borders created by the scroll pane. getInsets() can be used&#xA;to get the current value for the insets.  If the value of&#xA;scrollbarsAlwaysVisible is false, then the value of the insets&#xA;will change dynamically depending on whether the scrollbars are&#xA;currently visible or not.&#xA;&#xA;@version     1.95 05/18/04&#xA;@author      Tom Ball&#xA;@author      Amy Fowler&#xA;@author      Tim Prinzing&#xA;" annotatedElement="4069db9b-a8e4-40e3-987a-2d12ac566df3"/>
            <generalization xmi:id="d572308e-eaec-46c7-bf43-646e62f056f3" isSubstitutable="true" general="a4edac23-263c-4616-857d-4de97445e12a"/>
            <interfaceRealization xmi:id="1cfe46cb-4465-465e-abd7-4e83d9c7c9b4" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="4069db9b-a8e4-40e3-987a-2d12ac566df3" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="3692e070-e7af-4f60-8494-1feb1cace88d" name="PeerFixer" visibility="package" clientDependency="da8334e7-ea8b-4b77-972d-a8e19dc331bd 7354c7ef-51cb-441a-83ea-94021c4070c3">
              <interfaceRealization xmi:id="da8334e7-ea8b-4b77-972d-a8e19dc331bd" name="" supplier="88711cfb-6c51-470c-ba69-487856ccc3e2" client="3692e070-e7af-4f60-8494-1feb1cace88d" contract="88711cfb-6c51-470c-ba69-487856ccc3e2"/>
              <interfaceRealization xmi:id="7354c7ef-51cb-441a-83ea-94021c4070c3" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="3692e070-e7af-4f60-8494-1feb1cace88d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c2ea69ae-0c13-4988-8f0d-c26929fb3b58" name="AccessibleAWTScrollPane" visibility="protected">
              <ownedComment xmi:id="4ab4f42c-ec62-47d1-ba09-f9f3dcb71102" body="This class implements accessibility support for the&#xA;&lt;code>ScrollPane&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to scroll pane user-interface&#xA;elements.&#xA;" annotatedElement="c2ea69ae-0c13-4988-8f0d-c26929fb3b58"/>
              <generalization xmi:id="9e8dfe59-dbb2-4d08-9771-d73ed239f3a3" isSubstitutable="true" general="b3e98866-f74c-49b9-bf05-d16c3c4114d5"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d85a6791-840f-4f97-aee6-03053a360ba0" name="Cursor" clientDependency="7bfdbbb8-506a-4a0c-8d90-d6eabdbe27b5">
            <ownedComment xmi:id="c2ea9aa6-b984-4845-a596-07d9b8975bba" body="A class to encapsulate the bitmap representation of the mouse cursor.&#xA;&#xA;@see Component#setCursor&#xA;@version &#x9;1.40, 12/19/03&#xA;@author &#x9;Amy Fowler&#xA;" annotatedElement="d85a6791-840f-4f97-aee6-03053a360ba0"/>
            <interfaceRealization xmi:id="7bfdbbb8-506a-4a0c-8d90-d6eabdbe27b5" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="d85a6791-840f-4f97-aee6-03053a360ba0" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1070408e-aa15-4040-9054-4e6efec8ac3d" name="AWTPermission" isLeaf="true">
            <ownedComment xmi:id="8a142f0b-3c45-4ea4-a056-42e3f4a5970d" body="This class is for AWT permissions.&#xA;An &lt;code>AWTPermission&lt;/code> contains a target name but&#xA;no actions list; you either have the named permission&#xA;or you don't.&#xA;&#xA;&lt;P>&#xA;The target name is the name of the AWT permission (see below). The naming&#xA;convention follows the hierarchical property naming convention.&#xA;Also, an asterisk could be used to represent all AWT permissions.&#xA;&#xA;&lt;P>&#xA;The following table lists all the possible &lt;code>AWTPermission&lt;/code>&#xA;target names, and for each provides a description of what the&#xA;permission allows and a discussion of the risks of granting code&#xA;the permission.&#xA;&lt;P>&#xA;&#xA;&lt;table border=1 cellpadding=5 summary=&quot;AWTPermission target names, descriptions, and associated risks.&quot;>&#xA;&lt;tr>&#xA;&lt;th>Permission Target Name&lt;/th>&#xA;&lt;th>What the Permission Allows&lt;/th>&#xA;&lt;th>Risks of Allowing this Permission&lt;/th>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>accessClipboard&lt;/td>&#xA;&lt;td>Posting and retrieval of information to and from the AWT clipboard&lt;/td>&#xA;&lt;td>This would allow malfeasant code to share&#xA;potentially sensitive or confidential information.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>accessEventQueue&lt;/td>&#xA;&lt;td>Access to the AWT event queue&lt;/td>&#xA;&lt;td>After retrieving the AWT event queue,&#xA;malicious code may peek at and even remove existing events&#xA;from its event queue, as well as post bogus events which may purposefully&#xA;cause the application or applet to misbehave in an insecure manner.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>createRobot&lt;/td>&#xA;&lt;td>Create java.awt.Robot objects&lt;/td>&#xA;&lt;td>The java.awt.Robot object allows code to generate native-level&#xA;mouse and keyboard events as well as read the screen. It could allow&#xA;malicious code to control the system, run other programs, read the&#xA;display, and deny mouse and keyboard access to the user.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>fullScreenExclusive&lt;/td>&#xA;&lt;td>Enter full-screen exclusive mode&lt;/td>&#xA;&lt;td>Entering full-screen exclusive mode allows direct access to&#xA;low-level graphics card memory.  This could be used to spoof the&#xA;system, since the program is in direct control of rendering.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>listenToAllAWTEvents&lt;/td>&#xA;&lt;td>Listen to all AWT events, system-wide&lt;/td>&#xA;&lt;td>After adding an AWT event listener,&#xA;malicious code may scan all AWT events dispatched in the system,&#xA;allowing it to read all user input (such as passwords).  Each&#xA;AWT event listener is called from within the context of that&#xA;event queue's EventDispatchThread, so if the accessEventQueue&#xA;permission is also enabled, malicious code could modify the&#xA;contents of AWT event queues system-wide, causing the application&#xA;or applet to misbehave in an insecure manner.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>readDisplayPixels&lt;/td>&#xA;&lt;td>Readback of pixels from the display screen&lt;/td>&#xA;&lt;td>Interfaces such as the java.awt.Composite interface or the&#xA;java.awt.Robot class allow arbitrary code to examine pixels on the&#xA;display enable malicious code to snoop on the activities of the user.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>replaceKeyboardFocusManager&lt;/td>&#xA;&lt;td>Sets the &lt;code>KeyboardFocusManager&lt;/code> for&#xA;a particular thread.&#xA;&lt;td>When &lt;code>SecurityManager&lt;/code> is installed, the invoking&#xA;thread must be granted this permission in order to replace&#xA;the current &lt;code>KeyboardFocusManager&lt;/code>.  If permission&#xA;is not granted, a &lt;code>SecurityException&lt;/code> will be thrown.&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>showWindowWithoutWarningBanner&lt;/td>&#xA;&lt;td>Display of a window without also displaying a banner warning&#xA;that the window was created by an applet&lt;/td>&#xA;&lt;td>Without this warning,&#xA;an applet may pop up windows without the user knowing that they&#xA;belong to an applet.  Since users may make security-sensitive&#xA;decisions based on whether or not the window belongs to an applet&#xA;(entering a username and password into a dialog box, for example),&#xA;disabling this warning banner may allow applets to trick the user&#xA;into entering such information.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>watchMousePointer&lt;/td>&#xA;&lt;td>Getting the information about the mouse pointer position at any&#xA;time&lt;/td>&#xA;&lt;td>Constantly watching the mouse pointer,&#xA;an applet can make guesses about what the user is doing, i.e. moving&#xA;the mouse to the lower left corner of the screen most likely means that&#xA;the user is about to launch an application. If a virtual keypad is used&#xA;so that keyboard is emulated using the mouse, an applet may guess what&#xA;is being typed.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>setWindowAlwaysOnTop&lt;/td>&#xA;&lt;td>Setting always-on-top property of the window: {@link Window#setAlwaysOnTop}&lt;/td>&#xA;&lt;td>The malicious window might make itself look and behave like a real full desktop, so that&#xA;information entered by the unsuspecting user is captured and subsequently misused &lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>setAppletStub&lt;/td>&#xA;&lt;td>Setting the stub which implements Applet container services&lt;/td>&#xA;&lt;td>Malicious code could set an applet's stub and result in unexpected&#xA;behavior or denial of service to an applet.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&#xA;@see java.security.BasicPermission&#xA;@see java.security.Permission&#xA;@see java.security.Permissions&#xA;@see java.security.PermissionCollection&#xA;@see java.lang.SecurityManager&#xA;&#xA;@version &#x9;1.28, 04/21/04&#xA;&#xA;@author Marianne Mueller&#xA;@author Roland Schemers&#xA;" annotatedElement="1070408e-aa15-4040-9054-4e6efec8ac3d"/>
            <generalization xmi:id="4beffbc5-389a-4197-ab02-e7fe60f308b2" isSubstitutable="true" general="4831e368-c670-40b4-87bd-a8a910a528fa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2e6b9a6c-9120-4fad-bb15-b67726bbb96f" name="Polygon" clientDependency="13e81036-2166-44da-8368-f718236baf55 8a784a44-a2c9-4aa1-8e19-3cc7ac31fe65">
            <ownedComment xmi:id="27fbf4b7-99b4-40a9-8af9-147f407531c7" body="The &lt;code>Polygon&lt;/code> class encapsulates a description of a&#xA;closed, two-dimensional region within a coordinate space. This&#xA;region is bounded by an arbitrary number of line segments, each of&#xA;which is one side of the polygon. Internally, a polygon&#xA;comprises of a list of (&lt;i>x&lt;/i>,&amp;nbsp;&lt;i>y&lt;/i>)&#xA;coordinate pairs, where each pair defines a &lt;i>vertex&lt;/i> of the&#xA;polygon, and two successive pairs are the endpoints of a&#xA;line that is a side of the polygon. The first and final&#xA;pairs of (&lt;i>x&lt;/i>,&amp;nbsp;&lt;i>y&lt;/i>) points are joined by a line segment&#xA;that closes the polygon.  This &lt;code>Polygon&lt;/code> is defined with&#xA;an even-odd winding rule.  See&#xA;{@link java.awt.geom.PathIterator#WIND_EVEN_ODD WIND_EVEN_ODD}&#xA;for a definition of the even-odd winding rule.&#xA;This class's hit-testing methods, which include the&#xA;&lt;code>contains&lt;/code>, &lt;code>intersects&lt;/code> and &lt;code>inside&lt;/code>&#xA;methods, use the &lt;i>insideness&lt;/i> definition described in the&#xA;{@link Shape} class comments.&#xA;&#xA;@version     1.26, 07/24/98&#xA;@author &#x9;Sami Shaio&#xA;@see Shape&#xA;@author      Herb Jellinek&#xA;@since       JDK1.0&#xA;" annotatedElement="2e6b9a6c-9120-4fad-bb15-b67726bbb96f"/>
            <interfaceRealization xmi:id="13e81036-2166-44da-8368-f718236baf55" name="" supplier="b8a81ec0-3dfc-4493-81d6-e7eca1bb10aa" client="2e6b9a6c-9120-4fad-bb15-b67726bbb96f" contract="b8a81ec0-3dfc-4493-81d6-e7eca1bb10aa"/>
            <interfaceRealization xmi:id="8a784a44-a2c9-4aa1-8e19-3cc7ac31fe65" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="2e6b9a6c-9120-4fad-bb15-b67726bbb96f" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c3bb9f96-99a8-494a-98e6-36440a2bb704" name="PolygonPathIterator" visibility="package" clientDependency="aae8a683-29e2-43fa-a67d-173bfc9547ae">
              <interfaceRealization xmi:id="aae8a683-29e2-43fa-a67d-173bfc9547ae" name="" supplier="13e4aff4-7ec3-423b-90fa-54c61bdf6926" client="c3bb9f96-99a8-494a-98e6-36440a2bb704" contract="13e4aff4-7ec3-423b-90fa-54c61bdf6926"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f40eaeb4-cf3d-4d67-a259-bb1078c96d0a" name="GraphicsConfiguration" isAbstract="true">
            <ownedComment xmi:id="7e8c1571-f9ce-491b-ac8f-92ef41d37d54" body="The &lt;code>GraphicsConfiguration&lt;/code> class describes the&#xA;characteristics of a graphics destination such as a printer or monitor.&#xA;There can be many &lt;code>GraphicsConfiguration&lt;/code> objects associated&#xA;with a single graphics device, representing different drawing modes or&#xA;capabilities.  The corresponding native structure will vary from platform&#xA;to platform.  For example, on X11 windowing systems,&#xA;each visual is a different &lt;code>GraphicsConfiguration&lt;/code>.&#xA;On Microsoft Windows, &lt;code>GraphicsConfiguration&lt;/code>s represent&#xA;PixelFormats available in the current resolution and color depth.&#xA;&lt;p>&#xA;In a virtual device multi-screen environment in which the desktop&#xA;area could span multiple physical screen devices, the bounds of the&#xA;&lt;code>GraphicsConfiguration&lt;/code> objects are relative to the&#xA;virtual coordinate system.  When setting the location of a&#xA;component, use {@link #getBounds() getBounds} to get the bounds of&#xA;the desired &lt;code>GraphicsConfiguration&lt;/code> and offset the location&#xA;with the coordinates of the &lt;code>GraphicsConfiguration&lt;/code>,&#xA;as the following code sample illustrates:&#xA;&lt;/p>&#xA;&#xA;&lt;pre>&#xA;Frame f = new Frame(gc);  // where gc is a GraphicsConfiguration&#xA;Rectangle bounds = gc.getBounds();&#xA;f.setLocation(10 + bounds.x, 10 + bounds.y); &lt;/pre>&#xA;&#xA;&lt;p>&#xA;To determine if your environment is a virtual device&#xA;environment, call &lt;code>getBounds&lt;/code> on all of the&#xA;&lt;code>GraphicsConfiguration&lt;/code> objects in your system.  If&#xA;any of the origins of the returned bounds is not (0,&amp;nbsp;0),&#xA;your environment is a virtual device environment.&#xA;&#xA;&lt;p>&#xA;You can also use &lt;code>getBounds&lt;/code> to determine the bounds&#xA;of the virtual device.  To do this, first call &lt;code>getBounds&lt;/code> on all&#xA;of the &lt;code>GraphicsConfiguration&lt;/code> objects in your&#xA;system.  Then calculate the union of all of the bounds returned&#xA;from the calls to &lt;code>getBounds&lt;/code>.  The union is the&#xA;bounds of the virtual device.  The following code sample&#xA;calculates the bounds of the virtual device.&#xA;&#xA;&lt;pre>&#xA;Rectangle virtualBounds = new Rectangle();&#xA;GraphicsEnvironment ge = GraphicsEnvironment.&#xA;getLocalGraphicsEnvironment();&#xA;GraphicsDevice[] gs =&#xA;ge.getScreenDevices();&#xA;for (int j = 0; j &lt; gs.length; j++) {&#xA;GraphicsDevice gd = gs[j];&#xA;GraphicsConfiguration[] gc =&#xA;gd.getConfigurations();&#xA;for (int i=0; i &lt; gc.length; i++) {&#xA;virtualBounds =&#xA;virtualBounds.union(gc[i].getBounds());&#xA;}&#xA;} &lt;/pre>&#xA;&#xA;@see Window&#xA;@see Frame&#xA;@see GraphicsEnvironment&#xA;@see GraphicsDevice&#xA;" annotatedElement="f40eaeb4-cf3d-4d67-a259-bb1078c96d0a"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="b9955269-3b5b-40ed-9228-6e4aa4d055bc" name="DefaultBufferCapabilities" visibility="private">
              <generalization xmi:id="0fb28906-d3b1-429c-bb3b-7d0a2467efdd" isSubstitutable="true" general="c8425454-99c3-4cd4-baa8-82b55ee36670"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="bb889e60-d0c4-4024-908c-caa7ea7b61e6" name="GridLayout" clientDependency="791f0e88-cc29-4994-8352-25c476b092da 24929b68-bbcf-4ac1-95db-730c3424c34f">
            <ownedComment xmi:id="89232f30-8215-4672-b085-29afceb97f2c" body="The &lt;code>GridLayout&lt;/code> class is a layout manager that&#xA;lays out a container's components in a rectangular grid.&#xA;The container is divided into equal-sized rectangles,&#xA;and one component is placed in each rectangle.&#xA;For example, the following is an applet that lays out six buttons&#xA;into three rows and two columns:&#xA;&lt;p>&#xA;&lt;hr>&lt;blockquote>&#xA;&lt;pre>&#xA;import java.awt.*;&#xA;import java.applet.Applet;&#xA;public class ButtonGrid extends Applet {&#xA;public void init() {&#xA;setLayout(new GridLayout(3,2));&#xA;add(new Button(&quot;1&quot;));&#xA;add(new Button(&quot;2&quot;));&#xA;add(new Button(&quot;3&quot;));&#xA;add(new Button(&quot;4&quot;));&#xA;add(new Button(&quot;5&quot;));&#xA;add(new Button(&quot;6&quot;));&#xA;}&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&lt;hr>&#xA;&lt;p>&#xA;If the container's &lt;code>ComponentOrientation&lt;/code> property is horizontal&#xA;and left-to-right, the above example produces the output shown in Figure 1.&#xA;If the container's &lt;code>ComponentOrientation&lt;/code> property is horizontal&#xA;and right-to-left, the example produces the output shown in Figure 2.&#xA;&lt;p>&#xA;&lt;center>&lt;table COLS=2 WIDTH=600 summary=&quot;layout&quot;>&#xA;&lt;tr ALIGN=CENTER>&#xA;&lt;td>&lt;img SRC=&quot;doc-files/GridLayout-1.gif&quot;&#xA;alt=&quot;Shows 6 buttons in rows of 2. Row 1 shows buttons 1 then 2.&#xA;Row 2 shows buttons 3 then 4. Row 3 shows buttons 5 then 6.&quot;>&#xA;&lt;/td>&#xA;&#xA;&lt;td ALIGN=CENTER>&lt;img SRC=&quot;doc-files/GridLayout-2.gif&quot;&#xA;alt=&quot;Shows 6 buttons in rows of 2. Row 1 shows buttons 2 then 1.&#xA;Row 2 shows buttons 4 then 3. Row 3 shows buttons 6 then 5.&quot;>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr ALIGN=CENTER>&#xA;&lt;td>Figure 1: Horizontal, Left-to-Right&lt;/td>&#xA;&#xA;&lt;td>Figure 2: Horizontal, Right-to-Left&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&lt;/center>&#xA;&lt;p>&#xA;When both the number of rows and the number of columns have&#xA;been set to non-zero values, either by a constructor or&#xA;by the &lt;tt>setRows&lt;/tt> and &lt;tt>setColumns&lt;/tt> methods, the number of&#xA;columns specified is ignored.  Instead, the number of&#xA;columns is determined from the specified number or rows&#xA;and the total number of components in the layout. So, for&#xA;example, if three rows and two columns have been specified&#xA;and nine components are added to the layout, they will&#xA;be displayed as three rows of three columns.  Specifying&#xA;the number of columns affects the layout only when the&#xA;number of rows is set to zero.&#xA;&#xA;@version 1.39, 12/19/03&#xA;@author  Arthur van Hoff&#xA;@since   JDK1.0&#xA;" annotatedElement="bb889e60-d0c4-4024-908c-caa7ea7b61e6"/>
            <interfaceRealization xmi:id="24929b68-bbcf-4ac1-95db-730c3424c34f" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="bb889e60-d0c4-4024-908c-caa7ea7b61e6" contract="c3507179-c29c-40a9-8869-092757900e53"/>
            <interfaceRealization xmi:id="791f0e88-cc29-4994-8352-25c476b092da" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="bb889e60-d0c4-4024-908c-caa7ea7b61e6" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1aca05a6-0317-4a48-ab0f-3171d8886ed9" name="Queue" visibility="package">
            <ownedComment xmi:id="153645f4-7ca6-419c-bbcc-1ada17a10ac3" body="The Queue object holds pointers to the beginning and end of one internal&#xA;queue. An EventQueue object is composed of multiple internal Queues, one&#xA;for each priority supported by the EventQueue. All Events on a particular&#xA;internal Queue have identical priority.&#xA;" annotatedElement="1aca05a6-0317-4a48-ab0f-3171d8886ed9"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="a47e023b-6285-43d3-875d-b3f38c61be25" name="Transparency" isAbstract="true">
            <ownedComment xmi:id="13925d4f-643e-4182-a929-338a69ad722d" body="The &lt;code>Transparency&lt;/code> interface defines the common transparency&#xA;modes for implementing classes.&#xA;@version 1.20, 12/19/03&#xA;" annotatedElement="a47e023b-6285-43d3-875d-b3f38c61be25"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e08182a3-f2b7-4cb3-9a38-a7712c7fcef3" name="Choice" clientDependency="a4fd91c3-cf56-49f2-9f6c-5e275a43ea9e 79a7a6a1-7a88-48d1-8be6-78281ada2229">
            <ownedComment xmi:id="b22d6609-6c69-4079-9716-9d8911dc7ac5" body="The &lt;code>Choice&lt;/code> class presents a pop-up menu of choices.&#xA;The current choice is displayed as the title of the menu.&#xA;&lt;p>&#xA;The following code example produces a pop-up menu:&#xA;&lt;p>&#xA;&lt;hr>&lt;blockquote>&lt;pre>&#xA;Choice ColorChooser = new Choice();&#xA;ColorChooser.add(&quot;Green&quot;);&#xA;ColorChooser.add(&quot;Red&quot;);&#xA;ColorChooser.add(&quot;Blue&quot;);&#xA;&lt;/pre>&lt;/blockquote>&lt;hr>&#xA;&lt;p>&#xA;After this choice menu has been added to a panel,&#xA;it appears as follows in its normal state:&#xA;&lt;p>&#xA;&lt;img src=&quot;doc-files/Choice-1.gif&quot; alt=&quot;The following text describes the graphic&quot;&#xA;ALIGN=center HSPACE=10 VSPACE=7>&#xA;&lt;p>&#xA;In the picture, &lt;code>&quot;Green&quot;&lt;/code> is the current choice.&#xA;Pushing the mouse button down on the object causes a menu to&#xA;appear with the current choice highlighted.&#xA;&lt;p>&#xA;Some native platforms do not support arbitrary resizing of&#xA;&lt;code>Choice&lt;/code> components and the behavior of&#xA;&lt;code>setSize()/getSize()&lt;/code> is bound by&#xA;such limitations.&#xA;Native GUI &lt;code>Choice&lt;/code> components' size are often bound by such&#xA;attributes as font size and length of items contained within&#xA;the &lt;code>Choice&lt;/code>.&#xA;&lt;p>&#xA;@version&#x9;1.89 05/18/04&#xA;@author &#x9;Sami Shaio&#xA;@author &#x9;Arthur van Hoff&#xA;@since       JDK1.0&#xA;" annotatedElement="e08182a3-f2b7-4cb3-9a38-a7712c7fcef3"/>
            <generalization xmi:id="054e40eb-4090-4fac-9fe0-99bf5297b627" isSubstitutable="true" general="4d925b7b-d68e-4e13-b87b-98bdb93e9024"/>
            <interfaceRealization xmi:id="a4fd91c3-cf56-49f2-9f6c-5e275a43ea9e" name="" supplier="db09b331-737d-46b0-b88c-ec77f93dd925" client="e08182a3-f2b7-4cb3-9a38-a7712c7fcef3" contract="db09b331-737d-46b0-b88c-ec77f93dd925"/>
            <interfaceRealization xmi:id="79a7a6a1-7a88-48d1-8be6-78281ada2229" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="e08182a3-f2b7-4cb3-9a38-a7712c7fcef3" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="b4b823ec-8780-4163-ad88-61269d7cd607" name="AccessibleAWTChoice" visibility="protected" clientDependency="8d89c1fa-81d5-4042-ba1a-b5b11988276b">
              <ownedComment xmi:id="deed8ce9-3f13-471e-9962-d2430d2915ce" body="This class implements accessibility support for the&#xA;&lt;code>Choice&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to choice user-interface elements.&#xA;" annotatedElement="b4b823ec-8780-4163-ad88-61269d7cd607"/>
              <generalization xmi:id="9ae49e59-f52a-4741-bc8c-f9ee327e400a" isSubstitutable="true" general="e8a07816-0ac5-4ca1-990d-2e0e3f63e181"/>
              <interfaceRealization xmi:id="8d89c1fa-81d5-4042-ba1a-b5b11988276b" name="" supplier="1f04210f-dd56-4dbb-861c-7a19813caf4c" client="b4b823ec-8780-4163-ad88-61269d7cd607" contract="1f04210f-dd56-4dbb-861c-7a19813caf4c"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8b311ef8-c472-49a3-a96e-7c0ecc9a4a2c" name="GradientPaintContext" visibility="package" clientDependency="8cb660c9-c037-4ab1-aa2d-a8caccc953b8">
            <interfaceRealization xmi:id="8cb660c9-c037-4ab1-aa2d-a8caccc953b8" name="" supplier="59ac6912-87de-469a-8726-9aecc34683b0" client="8b311ef8-c472-49a3-a96e-7c0ecc9a4a2c" contract="59ac6912-87de-469a-8726-9aecc34683b0"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="2f1b1e62-8a9c-46dd-9cc8-d1b81e50a14d" name="KeyEventPostProcessor" isAbstract="true">
            <ownedComment xmi:id="69ea027f-235a-40eb-a642-e8ac4d5c6a71" body="A KeyEventPostProcessor cooperates with the current KeyboardFocusManager&#xA;in the final resolution of all unconsumed KeyEvents. KeyEventPostProcessors&#xA;registered with the current KeyboardFocusManager will receive KeyEvents&#xA;after the KeyEvents have been dispatched to and handled by their targets.&#xA;KeyEvents that would have been otherwise discarded because no Component in&#xA;the application currently owns the focus will also be forwarded to&#xA;registered KeyEventPostProcessors. This will allow applications to implement&#xA;features that require global KeyEvent post-handling, such as menu shortcuts.&#xA;&lt;p>&#xA;Note that the KeyboardFocusManager itself implements KeyEventPostProcessor.&#xA;By default, the current KeyboardFocusManager will be the final&#xA;KeyEventPostProcessor in the chain. The current KeyboardFocusManager cannot&#xA;be completely deregistered as a KeyEventPostProcessor. However, if a&#xA;KeyEventPostProcessor reports that no further post-processing of the&#xA;KeyEvent should take place, the AWT will consider the event fully handled&#xA;and will take no additional action with regard to the event. (While it is&#xA;possible for client code to register the current KeyboardFocusManager as&#xA;a KeyEventPostProcessor one or more times, this is usually unnecessary and&#xA;not recommended.)&#xA;&#xA;@author David Mendenhall&#xA;@version 1.5, 12/19/03&#xA;&#xA;@see KeyboardFocusManager#addKeyEventPostProcessor&#xA;@see KeyboardFocusManager#removeKeyEventPostProcessor&#xA;@since 1.4&#xA;" annotatedElement="2f1b1e62-8a9c-46dd-9cc8-d1b81e50a14d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="50567c0f-6d6a-4c7d-b33f-f23a92db0939" name="geom">
            <packagedElement xmi:type="uml:Class" xmi:id="c9693da2-b18b-43ba-a9a7-81e45b9fa634" name="RoundRectangle2D" isAbstract="true">
              <ownedComment xmi:id="3b1c5846-8feb-4e53-bac2-c47f184edcc9" body="The &lt;code>RoundRectangle2D&lt;/code> class defines a rectangle with&#xA;rounded corners defined by a location (x,&amp;nbsp;y), a&#xA;dimension (w&amp;nbsp;x&amp;nbsp;h), and the width and height of an arc&#xA;with which to round the corners.&#xA;&lt;p>&#xA;This class is the abstract superclass for all objects that&#xA;store a 2D rounded rectangle.&#xA;The actual storage representation of the coordinates is left to&#xA;the subclass.&#xA;&#xA;@version 1.18, 12/19/03&#xA;@author&#x9;Jim Graham&#xA;" annotatedElement="c9693da2-b18b-43ba-a9a7-81e45b9fa634"/>
              <generalization xmi:id="0037ec3d-e0f5-445f-80bc-887a1bebb3d3" isSubstitutable="true" general="50b2e9b7-e711-4b31-8e9d-145739e78ba0"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0dea00f4-9b7f-4e88-bfc1-27c8b153a4f1" name="Float">
                <ownedComment xmi:id="a7d678e4-f40d-4de9-a079-94fa9960d599" body="The &lt;code>Float&lt;/code> class defines a rectangle with rounded&#xA;corners all specified in &lt;code>float&lt;/code> coordinates.&#xA;" annotatedElement="0dea00f4-9b7f-4e88-bfc1-27c8b153a4f1"/>
                <generalization xmi:id="1a7c76a9-716b-43c2-833c-d2aaa0faa1c4" isSubstitutable="true" general="c9693da2-b18b-43ba-a9a7-81e45b9fa634"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="84d6291d-0637-4823-b11a-cfff1ebfd909" name="Double">
                <ownedComment xmi:id="db204eab-bc0c-444d-bbda-c6a6f33c5d7d" body="The &lt;code>Double&lt;/code> class defines a rectangle with rounded&#xA;corners all specified in &lt;code>double&lt;/code> coordinates.&#xA;" annotatedElement="84d6291d-0637-4823-b11a-cfff1ebfd909"/>
                <generalization xmi:id="c2b66f3c-5f09-4001-9a09-7dc378d79348" isSubstitutable="true" general="c9693da2-b18b-43ba-a9a7-81e45b9fa634"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="370f38d4-9e01-4392-92e0-9e657dea2dbf" name="AffineTransform" clientDependency="d7376355-f918-432e-a2d7-45a4e1a3ce58 62cad254-1633-4a7f-8668-c13e5f5229ca">
              <ownedComment xmi:id="c1e2a95a-7805-4193-8ad7-3c132d824a26" body="The &lt;code>AffineTransform&lt;/code> class represents a 2D affine transform&#xA;that performs a linear mapping from 2D coordinates to other 2D&#xA;coordinates that preserves the &quot;straightness&quot; and&#xA;&quot;parallelness&quot; of lines.  Affine transformations can be constructed&#xA;using sequences of translations, scales, flips, rotations, and shears.&#xA;&lt;p>&#xA;Such a coordinate transformation can be represented by a 3 row by&#xA;3 column matrix with an implied last row of [ 0 0 1 ].  This matrix&#xA;transforms source coordinates &lt;code>(x,&amp;nbsp;y)&lt;/code> into&#xA;destination coordinates &lt;code>(x',&amp;nbsp;y')&lt;/code> by considering&#xA;them to be a column vector and multiplying the coordinate vector&#xA;by the matrix according to the following process:&#xA;&lt;pre>&#xA;[ x']   [  m00  m01  m02  ] [ x ]   [ m00x + m01y + m02 ]&#xA;[ y'] = [  m10  m11  m12  ] [ y ] = [ m10x + m11y + m12 ]&#xA;[ 1 ]   [   0    0    1   ] [ 1 ]   [         1         ]&#xA;&lt;/pre>&#xA;&#xA;@version 1.71, 12/19/03&#xA;@author Jim Graham&#xA;" annotatedElement="370f38d4-9e01-4392-92e0-9e657dea2dbf"/>
              <interfaceRealization xmi:id="62cad254-1633-4a7f-8668-c13e5f5229ca" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="370f38d4-9e01-4392-92e0-9e657dea2dbf" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <interfaceRealization xmi:id="d7376355-f918-432e-a2d7-45a4e1a3ce58" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="370f38d4-9e01-4392-92e0-9e657dea2dbf" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a69e3f45-ce5e-4491-a9dd-e6c50280ad9a" name="EllipseIterator" visibility="package" clientDependency="1bb557be-dcde-41e4-a966-1764e6604c46">
              <ownedComment xmi:id="fb7b81a2-881b-4253-afe7-bebc9c282dcc" body="A utility class to iterate over the path segments of an ellipse&#xA;through the PathIterator interface.&#xA;&#xA;@version 10 Feb 1997&#xA;@author&#x9;Jim Graham&#xA;" annotatedElement="a69e3f45-ce5e-4491-a9dd-e6c50280ad9a"/>
              <interfaceRealization xmi:id="1bb557be-dcde-41e4-a966-1764e6604c46" name="" supplier="13e4aff4-7ec3-423b-90fa-54c61bdf6926" client="a69e3f45-ce5e-4491-a9dd-e6c50280ad9a" contract="13e4aff4-7ec3-423b-90fa-54c61bdf6926"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="13e4aff4-7ec3-423b-90fa-54c61bdf6926" name="PathIterator" isAbstract="true">
              <ownedComment xmi:id="4eb0b179-a380-4002-9f5f-6886aafbe4fb" body="The &lt;code>PathIterator&lt;/code> interface provides the mechanism&#xA;for objects that implement the {@link java.awt.Shape Shape}&#xA;interface to return the geometry of their boundary by allowing&#xA;a caller to retrieve the path of that boundary a segment at a&#xA;time.  This interface allows these objects to retrieve the path of&#xA;their boundary a segment at a time by using 1st through 3rd order&#xA;B&amp;eacute;zier curves, which are lines and quadratic or cubic&#xA;B&amp;eacute;zier splines.&#xA;&lt;p>&#xA;Multiple subpaths can be expressed by using a &quot;MOVETO&quot; segment to&#xA;create a discontinuity in the geometry to move from the end of&#xA;one subpath to the beginning of the next.&#xA;&lt;p>&#xA;Each subpath can be closed manually by ending the last segment in&#xA;the subpath on the same coordinate as the beginning &quot;MOVETO&quot; segment&#xA;for that subpath or by using a &quot;CLOSE&quot; segment to append a line&#xA;segment from the last point back to the first.&#xA;Be aware that manually closing an outline as opposed to using a&#xA;&quot;CLOSE&quot; segment to close the path might result in different line&#xA;style decorations being used at the end points of the subpath.&#xA;For example, the {@link java.awt.BasicStroke BasicStroke} object&#xA;uses a line &quot;JOIN&quot; decoration to connect the first and last points&#xA;if a &quot;CLOSE&quot; segment is encountered, whereas simply ending the path&#xA;on the same coordinate as the beginning coordinate results in line&#xA;&quot;CAP&quot; decorations being used at the ends.&#xA;&#xA;@see java.awt.Shape&#xA;@see java.awt.BasicStroke&#xA;&#xA;@version 1.16, 12/19/03&#xA;@author Jim Graham&#xA;" annotatedElement="13e4aff4-7ec3-423b-90fa-54c61bdf6926"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="fe7a8dd5-4036-49c2-b553-19636d538fdd" name="FlatteningPathIterator" clientDependency="14e14759-9c91-4fc2-8155-21c8fff923f6">
              <ownedComment xmi:id="81604c0d-595d-4726-a708-b4919d6ad91f" body="The &lt;code>FlatteningPathIterator&lt;/code> class returns a flattened view of&#xA;another {@link PathIterator} object.  Other {@link java.awt.Shape Shape}&#xA;classes can use this class to provide flattening behavior for their paths&#xA;without having to perform the interpolation calculations themselves.&#xA;&#xA;@version 1.6 06/29/98&#xA;@author Jim Graham&#xA;" annotatedElement="fe7a8dd5-4036-49c2-b553-19636d538fdd"/>
              <interfaceRealization xmi:id="14e14759-9c91-4fc2-8155-21c8fff923f6" name="" supplier="13e4aff4-7ec3-423b-90fa-54c61bdf6926" client="fe7a8dd5-4036-49c2-b553-19636d538fdd" contract="13e4aff4-7ec3-423b-90fa-54c61bdf6926"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="cb51ab1a-c7f9-4452-8179-caff52f97d4b" name="Rectangle2D" isAbstract="true">
              <ownedComment xmi:id="a5b65b54-9ec4-4e92-95b2-22a13ed79709" body="The &lt;code>Rectangle2D&lt;/code> class describes a rectangle&#xA;defined by a location (x,&amp;nbsp;y) and dimension&#xA;(w&amp;nbsp;x&amp;nbsp;h).&#xA;&lt;p>&#xA;This class is only the abstract superclass for all objects that&#xA;store a 2D rectangle.&#xA;The actual storage representation of the coordinates is left to&#xA;the subclass.&#xA;&#xA;@version &#x9;1.29, 12/19/03&#xA;@author&#x9;Jim Graham&#xA;" annotatedElement="cb51ab1a-c7f9-4452-8179-caff52f97d4b"/>
              <generalization xmi:id="dd5a71d4-b740-44e3-a539-109e16371752" isSubstitutable="true" general="50b2e9b7-e711-4b31-8e9d-145739e78ba0"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="71a84523-bcf4-4cff-afd2-11f6716e799e" name="Float">
                <ownedComment xmi:id="a0986356-ba08-4373-b26c-b4f7b46744fe" body="The &lt;code>Float&lt;/code> class defines a rectangle specified in float&#xA;coordinates.&#xA;@since 1.2&#xA;" annotatedElement="71a84523-bcf4-4cff-afd2-11f6716e799e"/>
                <generalization xmi:id="bede1730-f877-44dc-b186-da015a0ac006" isSubstitutable="true" general="cb51ab1a-c7f9-4452-8179-caff52f97d4b"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="3aa510cb-a05d-483e-ac55-52586e64790d" name="Double">
                <ownedComment xmi:id="6ce6201f-04d2-46b1-bf4e-64e921fe5d85" body="The &lt;code>Double&lt;/code> class defines a rectangle specified in&#xA;double coordinates.&#xA;@since 1.2&#xA;" annotatedElement="3aa510cb-a05d-483e-ac55-52586e64790d"/>
                <generalization xmi:id="32447a8a-832b-4e69-b0dd-04f518ae4688" isSubstitutable="true" general="cb51ab1a-c7f9-4452-8179-caff52f97d4b"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ede6ac5b-2a16-45eb-8363-cac6d7b0a8a7" name="AreaIterator" visibility="package" clientDependency="921a2e82-1c4a-4d70-bc97-6bf6142a14fa">
              <interfaceRealization xmi:id="921a2e82-1c4a-4d70-bc97-6bf6142a14fa" name="" supplier="13e4aff4-7ec3-423b-90fa-54c61bdf6926" client="ede6ac5b-2a16-45eb-8363-cac6d7b0a8a7" contract="13e4aff4-7ec3-423b-90fa-54c61bdf6926"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="23d1f439-c936-40c4-9f1b-290e6c5f0ce3" name="GeneralPathIterator" visibility="package" clientDependency="b1ad18c5-b371-43a1-be56-f54bb37fccfe">
              <ownedComment xmi:id="cf40468b-2120-4cdf-884b-632c5df40e89" body="This class represents the iterator for General Paths.&#xA;It can be used to retrieve all of the elements in a GeneralPath.&#xA;The {@link GeneralPath#getPathIterator}&#xA;method is used to create a&#xA;GeneralPathIterator for a particular GeneralPath.&#xA;The iterator can be used to iterator the path only once.&#xA;Subsequent iterations require a new iterator.&#xA;&#xA;@see GeneralPath&#xA;&#xA;@version 10 Feb 1997&#xA;@author&#x9;Jim Graham&#xA;" annotatedElement="23d1f439-c936-40c4-9f1b-290e6c5f0ce3"/>
              <interfaceRealization xmi:id="b1ad18c5-b371-43a1-be56-f54bb37fccfe" name="" supplier="13e4aff4-7ec3-423b-90fa-54c61bdf6926" client="23d1f439-c936-40c4-9f1b-290e6c5f0ce3" contract="13e4aff4-7ec3-423b-90fa-54c61bdf6926"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b270226a-4904-49c9-becf-ad6267c924ea" name="CubicCurve2D" clientDependency="33ff2b47-4b71-45ba-9c5b-c0919c74fc27 d227d8e8-2b67-48cc-8da9-d1e543d87d40" isAbstract="true">
              <ownedComment xmi:id="ea7a9fe3-3bc6-4e88-87cc-5c7646ef2be3" body="The &lt;code>CubicCurve2D&lt;/code> class defines a cubic parametric curve&#xA;segment in (x,&amp;nbsp; y) coordinate space.&#xA;&lt;p>&#xA;This class is only the abstract superclass for all objects which&#xA;store a 2D cubic curve segment.&#xA;The actual storage representation of the coordinates is left to&#xA;the subclass.&#xA;&#xA;@version &#x9;1.29, 12/19/03&#xA;@author&#x9;Jim Graham&#xA;" annotatedElement="b270226a-4904-49c9-becf-ad6267c924ea"/>
              <interfaceRealization xmi:id="33ff2b47-4b71-45ba-9c5b-c0919c74fc27" name="" supplier="b8a81ec0-3dfc-4493-81d6-e7eca1bb10aa" client="b270226a-4904-49c9-becf-ad6267c924ea" contract="b8a81ec0-3dfc-4493-81d6-e7eca1bb10aa"/>
              <interfaceRealization xmi:id="d227d8e8-2b67-48cc-8da9-d1e543d87d40" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="b270226a-4904-49c9-becf-ad6267c924ea" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="2749bdec-a67e-4875-b67d-de86086327ae" name="Float">
                <ownedComment xmi:id="6853e098-2e1d-421f-86a1-6ed52da632ef" body="A cubic parametric curve segment specified with float coordinates.&#xA;" annotatedElement="2749bdec-a67e-4875-b67d-de86086327ae"/>
                <generalization xmi:id="5846c92b-f713-41be-8a6d-a48d0e4a80b3" isSubstitutable="true" general="b270226a-4904-49c9-becf-ad6267c924ea"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="3b80f00d-8df7-4f1e-aca1-2bd833084f74" name="Double">
                <ownedComment xmi:id="720677b5-3810-4551-be9e-d7f794e05ecb" body="A cubic parametric curve segment specified with double coordinates.&#xA;" annotatedElement="3b80f00d-8df7-4f1e-aca1-2bd833084f74"/>
                <generalization xmi:id="68f962c6-addd-4554-b443-683c1dacc8c0" isSubstitutable="true" general="b270226a-4904-49c9-becf-ad6267c924ea"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="bf232a00-31ab-462f-9688-d85ceec9eb10" name="Point2D" clientDependency="f320664c-88ee-48d5-9872-0216d11d47f6" isAbstract="true">
              <ownedComment xmi:id="a59795aa-8b96-4be8-96a7-0625257b1e58" body="The &lt;code>Point2D&lt;/code> class defines a point representing a location&#xA;in (x,&amp;nbsp;y) coordinate space.&#xA;&lt;p>&#xA;This class is only the abstract superclass for all objects that&#xA;store a 2D coordinate.&#xA;The actual storage representation of the coordinates is left to&#xA;the subclass.&#xA;&#xA;@version &#x9;1.18, 12/19/03&#xA;@author&#x9;Jim Graham&#xA;" annotatedElement="bf232a00-31ab-462f-9688-d85ceec9eb10"/>
              <interfaceRealization xmi:id="f320664c-88ee-48d5-9872-0216d11d47f6" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="bf232a00-31ab-462f-9688-d85ceec9eb10" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="aa21c2e7-9def-4d4d-bda9-afed8f199e3f" name="Float">
                <ownedComment xmi:id="bf9439c1-bb0b-4f2e-a39a-e4dbcb87f822" body="The &lt;code>Float&lt;/code> class defines a point specified in float&#xA;precision.&#xA;" annotatedElement="aa21c2e7-9def-4d4d-bda9-afed8f199e3f"/>
                <generalization xmi:id="ba13c655-1892-4e65-9b96-a61914f6e359" isSubstitutable="true" general="bf232a00-31ab-462f-9688-d85ceec9eb10"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="959efde9-ec2e-46f8-939d-40ba8c0db372" name="Double">
                <ownedComment xmi:id="d117559d-e939-47ad-bb72-1405a6d3eb44" body="The &lt;code>Double&lt;/code> class defines a point specified in&#xA;&lt;code>double&lt;/code> precision.&#xA;" annotatedElement="959efde9-ec2e-46f8-939d-40ba8c0db372"/>
                <generalization xmi:id="7a667016-0675-4217-9260-fd25491a8d4c" isSubstitutable="true" general="bf232a00-31ab-462f-9688-d85ceec9eb10"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="796b64c2-6381-4d6d-9a5a-cb56343b1342" name="QuadCurve2D" clientDependency="5046e66f-24aa-4ba2-91be-5b87a211da3e 59465d8f-1f22-491b-a902-fa35fbd52a4f" isAbstract="true">
              <ownedComment xmi:id="c13acde9-a4fa-4abd-b82c-93ab564ffbb9" body="The &lt;code>QuadCurve2D&lt;/code> class defines a quadratic parametric curve&#xA;segment in (x,&amp;nbsp;y) coordinate space.&#xA;&lt;p>&#xA;This class is only the abstract superclass for all objects that&#xA;store a 2D quadratic curve segment.&#xA;The actual storage representation of the coordinates is left to&#xA;the subclass.&#xA;&#xA;@version &#x9;1.29, 12/19/03&#xA;@author&#x9;Jim Graham&#xA;" annotatedElement="796b64c2-6381-4d6d-9a5a-cb56343b1342"/>
              <interfaceRealization xmi:id="59465d8f-1f22-491b-a902-fa35fbd52a4f" name="" supplier="b8a81ec0-3dfc-4493-81d6-e7eca1bb10aa" client="796b64c2-6381-4d6d-9a5a-cb56343b1342" contract="b8a81ec0-3dfc-4493-81d6-e7eca1bb10aa"/>
              <interfaceRealization xmi:id="5046e66f-24aa-4ba2-91be-5b87a211da3e" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="796b64c2-6381-4d6d-9a5a-cb56343b1342" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="b5af4674-2248-4152-ac4b-5a12900a0d07" name="Float">
                <ownedComment xmi:id="7b4268b4-68cb-4fd6-b2d3-9b94ce66885a" body="A quadratic parametric curve segment specified with&#xA;&lt;code>float&lt;/code> coordinates.&#xA;" annotatedElement="b5af4674-2248-4152-ac4b-5a12900a0d07"/>
                <generalization xmi:id="25bd5e7d-987a-4d00-80d5-a301d15d3b20" isSubstitutable="true" general="796b64c2-6381-4d6d-9a5a-cb56343b1342"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6cdee790-241b-4f5f-a3f7-0d6d5ae3f41e" name="Double">
                <ownedComment xmi:id="f315e200-8418-4e6f-8ebd-eb0600d2876f" body="A quadratic parametric curve segment specified with&#xA;&lt;code>double&lt;/code> coordinates.&#xA;" annotatedElement="6cdee790-241b-4f5f-a3f7-0d6d5ae3f41e"/>
                <generalization xmi:id="73b8a674-bcf1-44eb-8a82-58685497b109" isSubstitutable="true" general="796b64c2-6381-4d6d-9a5a-cb56343b1342"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="dcf314f1-8bf1-4599-aae0-ca04d63bc68f" name="ArcIterator" visibility="package" clientDependency="1b319c9b-dc15-47e6-8591-2362fcb19972">
              <ownedComment xmi:id="6c25578a-14e6-4fe3-b9e7-a8c383d1e947" body="A utility class to iterate over the path segments of an arc&#xA;through the PathIterator interface.&#xA;&#xA;@version 10 Feb 1997&#xA;@author&#x9;Jim Graham&#xA;" annotatedElement="dcf314f1-8bf1-4599-aae0-ca04d63bc68f"/>
              <interfaceRealization xmi:id="1b319c9b-dc15-47e6-8591-2362fcb19972" name="" supplier="13e4aff4-7ec3-423b-90fa-54c61bdf6926" client="dcf314f1-8bf1-4599-aae0-ca04d63bc68f" contract="13e4aff4-7ec3-423b-90fa-54c61bdf6926"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8081961d-b314-4c26-a6d7-5180c9536d53" name="RectIterator" visibility="package" clientDependency="b3619c9c-66fb-4364-b2e3-696a62aaf22b">
              <ownedComment xmi:id="e95405ab-be18-475c-ad83-c3c8fe75af33" body="A utility class to iterate over the path segments of a rectangle&#xA;through the PathIterator interface.&#xA;&#xA;@version 10 Feb 1997&#xA;@author&#x9;Jim Graham&#xA;" annotatedElement="8081961d-b314-4c26-a6d7-5180c9536d53"/>
              <interfaceRealization xmi:id="b3619c9c-66fb-4364-b2e3-696a62aaf22b" name="" supplier="13e4aff4-7ec3-423b-90fa-54c61bdf6926" client="8081961d-b314-4c26-a6d7-5180c9536d53" contract="13e4aff4-7ec3-423b-90fa-54c61bdf6926"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0b838b98-9ce6-4c3b-901f-b6145e7d58d6" name="IllegalPathStateException">
              <ownedComment xmi:id="348bf108-244f-4076-8271-9e63c0408492" body="The &lt;code>IllegalPathStateException&lt;/code> represents an&#xA;exception that is thrown if an operation is performed on a path&#xA;that is in an illegal state with respect to the particular&#xA;operation being performed, such as appending a path segment&#xA;to a {@link GeneralPath} without an initial moveto.&#xA;&#xA;@version &#x9;1.12, 12/19/03&#xA;" annotatedElement="0b838b98-9ce6-4c3b-901f-b6145e7d58d6"/>
              <generalization xmi:id="6f837808-4da4-44d2-a097-fca8fe9b210f" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="50b2e9b7-e711-4b31-8e9d-145739e78ba0" name="RectangularShape" clientDependency="cdde1fb5-a114-4fbf-a9bb-6ac541aca92c 4d172c61-4cd1-4210-8a26-fabd3a0fbf34" isAbstract="true">
              <ownedComment xmi:id="12326eae-97e4-4d78-9462-826c129e8cf8" body="&lt;code>RectangularShape&lt;/code> is the base class for a number of&#xA;{@link Shape} objects whose geometry is defined by a rectangular frame.&#xA;This class does not directly specify any specific geometry by&#xA;itself, but merely provides manipulation methods inherited by&#xA;a whole category of &lt;code>Shape&lt;/code> objects.&#xA;The manipulation methods provided by this class can be used to&#xA;query and modify the rectangular frame, which provides a reference&#xA;for the subclasses to define their geometry.&#xA;&#xA;@version &#x9;1.18, 12/19/03&#xA;@author&#x9;Jim Graham&#xA;" annotatedElement="50b2e9b7-e711-4b31-8e9d-145739e78ba0"/>
              <interfaceRealization xmi:id="4d172c61-4cd1-4210-8a26-fabd3a0fbf34" name="" supplier="b8a81ec0-3dfc-4493-81d6-e7eca1bb10aa" client="50b2e9b7-e711-4b31-8e9d-145739e78ba0" contract="b8a81ec0-3dfc-4493-81d6-e7eca1bb10aa"/>
              <interfaceRealization xmi:id="cdde1fb5-a114-4fbf-a9bb-6ac541aca92c" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="50b2e9b7-e711-4b31-8e9d-145739e78ba0" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9b52d0d3-4615-409f-90c2-e8387a13f896" name="CubicIterator" visibility="package" clientDependency="e8347a76-ee11-4198-ab7e-b34c419df59a">
              <ownedComment xmi:id="d81bb368-c5e9-4a88-8d7a-c426f4b19899" body="A utility class to iterate over the path segments of a cubic curve&#xA;segment through the PathIterator interface.&#xA;&#xA;@version 10 Feb 1997&#xA;@author&#x9;Jim Graham&#xA;" annotatedElement="9b52d0d3-4615-409f-90c2-e8387a13f896"/>
              <interfaceRealization xmi:id="e8347a76-ee11-4198-ab7e-b34c419df59a" name="" supplier="13e4aff4-7ec3-423b-90fa-54c61bdf6926" client="9b52d0d3-4615-409f-90c2-e8387a13f896" contract="13e4aff4-7ec3-423b-90fa-54c61bdf6926"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="dcad1802-772c-4103-bd06-e9f2e67ec0c2" name="GeneralPath" clientDependency="4a404880-1417-428b-8dec-7c6aae94c73b a1f41efa-5d1b-45c3-812a-b6aeb2dfd1e1" isLeaf="true">
              <ownedComment xmi:id="90cfbdf1-67da-414c-936f-b8982f71cff7" body="The &lt;code>GeneralPath&lt;/code> class represents a geometric path&#xA;constructed from straight lines, and quadratic and cubic&#xA;(B&amp;eacute;zier) curves.  It can contain multiple subpaths.&#xA;&lt;p>&#xA;The winding rule specifies how the interior of a path is&#xA;determined.  There are two types of winding rules:&#xA;EVEN_ODD and NON_ZERO.&#xA;&lt;p>&#xA;An EVEN_ODD winding rule means that enclosed regions&#xA;of the path alternate between interior and exterior areas as&#xA;traversed from the outside of the path towards a point inside&#xA;the region.&#xA;&lt;p>&#xA;A NON_ZERO winding rule means that if a ray is&#xA;drawn in any direction from a given point to infinity&#xA;and the places where the path intersects&#xA;the ray are examined, the point is inside of the path if and only if&#xA;the number of times that the path crosses the ray from&#xA;left to right does not equal the  number of times that the path crosses&#xA;the ray from right to left.&#xA;@version 1.59, 12/19/03&#xA;@author Jim Graham&#xA;" annotatedElement="dcad1802-772c-4103-bd06-e9f2e67ec0c2"/>
              <interfaceRealization xmi:id="4a404880-1417-428b-8dec-7c6aae94c73b" name="" supplier="b8a81ec0-3dfc-4493-81d6-e7eca1bb10aa" client="dcad1802-772c-4103-bd06-e9f2e67ec0c2" contract="b8a81ec0-3dfc-4493-81d6-e7eca1bb10aa"/>
              <interfaceRealization xmi:id="a1f41efa-5d1b-45c3-812a-b6aeb2dfd1e1" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="dcad1802-772c-4103-bd06-e9f2e67ec0c2" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="3de25df0-1e20-4f09-9e5f-830074690bcc" name="Ellipse2D" isAbstract="true">
              <ownedComment xmi:id="06a77bbe-84ae-4083-8d73-015c2b4f388d" body="The &lt;code>Ellipse2D&lt;/code> class describes an ellipse that is defined&#xA;by a bounding rectangle.&#xA;&lt;p>&#xA;This class is only the abstract superclass for all objects which&#xA;store a 2D ellipse.&#xA;The actual storage representation of the coordinates is left to&#xA;the subclass.&#xA;&#xA;@version 1.16, 12/19/03&#xA;@author&#x9;Jim Graham&#xA;" annotatedElement="3de25df0-1e20-4f09-9e5f-830074690bcc"/>
              <generalization xmi:id="e0bfd9f1-f7a3-4806-a517-f3dd02bd5901" isSubstitutable="true" general="50b2e9b7-e711-4b31-8e9d-145739e78ba0"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="ab842881-0a28-4704-9ffd-0e1463a4e231" name="Float">
                <ownedComment xmi:id="110ceabe-7f50-4086-9e00-ed97c73d122e" body="The &lt;code>Float&lt;/code> class defines an ellipse specified&#xA;in &lt;code>float&lt;/code> precision.&#xA;" annotatedElement="ab842881-0a28-4704-9ffd-0e1463a4e231"/>
                <generalization xmi:id="0ae669c1-80f9-4b88-ab11-caa4342103b0" isSubstitutable="true" general="3de25df0-1e20-4f09-9e5f-830074690bcc"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8caa1440-7826-4a15-85bd-b7032657e2c0" name="Double">
                <ownedComment xmi:id="4fb7869e-1298-452b-8c6c-e9400bf735e0" body="The &lt;code>Double&lt;/code> class defines an ellipse specified&#xA;in &lt;code>double&lt;/code> precision.&#xA;" annotatedElement="8caa1440-7826-4a15-85bd-b7032657e2c0"/>
                <generalization xmi:id="f84c6436-405e-4bb4-b58b-2e53deaaa2a0" isSubstitutable="true" general="3de25df0-1e20-4f09-9e5f-830074690bcc"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8d5c8e0b-1f1f-4c38-b38d-af31308ab2d0" name="Area" clientDependency="b7b6f29c-83ed-4332-b635-4278b70242cd 41d490d4-9f02-4231-98d0-539ecd750f80">
              <ownedComment xmi:id="a8d319e2-855a-4253-96f5-cf43c9263cb2" body="The &lt;code>Area&lt;/code> class is a device-independent specification of an&#xA;arbitrarily-shaped area.  The &lt;code>Area&lt;/code> object is defined as an&#xA;object that performs certain binary CAG (Constructive Area Geometry)&#xA;operations on other area-enclosing geometries, such as rectangles,&#xA;ellipses, and polygons. The CAG operations are Add(union), Subtract,&#xA;Intersect, and ExclusiveOR. For example, an &lt;code>Area&lt;/code> can be&#xA;made up of the area of a rectangle minus the area of an ellipse.&#xA;" annotatedElement="8d5c8e0b-1f1f-4c38-b38d-af31308ab2d0"/>
              <interfaceRealization xmi:id="41d490d4-9f02-4231-98d0-539ecd750f80" name="" supplier="b8a81ec0-3dfc-4493-81d6-e7eca1bb10aa" client="8d5c8e0b-1f1f-4c38-b38d-af31308ab2d0" contract="b8a81ec0-3dfc-4493-81d6-e7eca1bb10aa"/>
              <interfaceRealization xmi:id="b7b6f29c-83ed-4332-b635-4278b70242cd" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="8d5c8e0b-1f1f-4c38-b38d-af31308ab2d0" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="cc486897-1d94-42a2-9d92-c549a20bf8d7" name="QuadIterator" visibility="package" clientDependency="57535cdf-f494-4bdf-8007-e9c76a7b2765">
              <ownedComment xmi:id="c7411084-8d92-432b-9dae-f5e10d7e9e37" body="A utility class to iterate over the path segments of a quadratic curve&#xA;segment through the PathIterator interface.&#xA;&#xA;@version 10 Feb 1997&#xA;@author&#x9;Jim Graham&#xA;" annotatedElement="cc486897-1d94-42a2-9d92-c549a20bf8d7"/>
              <interfaceRealization xmi:id="57535cdf-f494-4bdf-8007-e9c76a7b2765" name="" supplier="13e4aff4-7ec3-423b-90fa-54c61bdf6926" client="cc486897-1d94-42a2-9d92-c549a20bf8d7" contract="13e4aff4-7ec3-423b-90fa-54c61bdf6926"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b90b3fdd-f1e0-4bad-b529-9873a917bbae" name="Arc2D" isAbstract="true">
              <ownedComment xmi:id="79fa8b1a-3344-4595-bbad-357ce37b6e6a" body="&lt;CODE>Arc2D&lt;/CODE> is the abstract superclass for all objects that&#xA;store a 2D arc defined by a bounding rectangle,&#xA;start angle, angular extent (length of the arc), and a closure type&#xA;(&lt;CODE>OPEN&lt;/CODE>, &lt;CODE>CHORD&lt;/CODE>, or &lt;CODE>PIE&lt;/CODE>).&#xA;&lt;p>&#xA;The bounding rectangle defines the outer boundary of the full ellipse&#xA;of which this arc is a partial section.&#xA;The angles are specified relative to the non-square extents of the&#xA;bounding rectangle such that 45 degrees always falls on the line from&#xA;the center of the ellipse to the upper right corner of the bounding&#xA;rectangle.&#xA;As a result, if the bounding rectangle is noticeably longer along one&#xA;axis than the other, the angles to the start and end of the arc segment&#xA;will be skewed farther along the longer axis of the bounds.&#xA;&lt;p>&#xA;The actual storage representation of the coordinates is left to&#xA;the subclass.&#xA;&#xA;@version 10 Feb 1997&#xA;@author&#x9;Jim Graham&#xA;" annotatedElement="b90b3fdd-f1e0-4bad-b529-9873a917bbae"/>
              <generalization xmi:id="7a9f8898-cde2-41e9-bedd-c8d6451995ab" isSubstitutable="true" general="50b2e9b7-e711-4b31-8e9d-145739e78ba0"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="93a4432c-2156-4498-a9aa-517045feef5f" name="Float">
                <ownedComment xmi:id="e70fb4a1-cacd-4e48-9028-1b6f5a8fdd17" body="This class defines an arc specified in float precision.&#xA;" annotatedElement="93a4432c-2156-4498-a9aa-517045feef5f"/>
                <generalization xmi:id="3bc0ae40-1733-49fa-84f1-758be67965eb" isSubstitutable="true" general="b90b3fdd-f1e0-4bad-b529-9873a917bbae"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="2b7fe6c1-4a2c-4aa6-8317-61b6595592e8" name="Double">
                <ownedComment xmi:id="ac9c0d8d-eda2-49a8-8503-aafb529611a2" body="This class defines an arc specified in double precision.&#xA;" annotatedElement="2b7fe6c1-4a2c-4aa6-8317-61b6595592e8"/>
                <generalization xmi:id="f629671e-b98d-4359-9561-bc5dcb13c5a1" isSubstitutable="true" general="b90b3fdd-f1e0-4bad-b529-9873a917bbae"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1f7d1aca-408f-440f-9b63-af3e617ebb63" name="Line2D" clientDependency="b19ca0f0-fa81-4345-924c-cc7d091f0928 f1d2d32d-ae36-4a28-a3e8-9e6eee30e631" isAbstract="true">
              <ownedComment xmi:id="9cdb2b6d-1c17-4f40-bb26-e8c2cf2b1176" body="This &lt;code>Line2D&lt;/code> represents a line segment in (x,&amp;nbsp;y)&#xA;coordinate space.  This class, like all of the Java 2D API, uses a&#xA;default coordinate system called &lt;i>user space&lt;/i> in which the y-axis&#xA;values increase downward and x-axis values increase to the right.  For&#xA;more information on the user space coordinate system, see the&#xA;&lt;a href=&quot;http://java.sun.com/j2se/1.3/docs/guide/2d/spec/j2d-intro.fm2.html#61857&quot;>&#xA;Coordinate Systems&lt;/a> section of the Java 2D Programmer's Guide.&#xA;&lt;p>&#xA;This class is only the abstract superclass for all objects that&#xA;store a 2D line segment.&#xA;The actual storage representation of the coordinates is left to&#xA;the subclass.&#xA;&#xA;@version &#x9;1.28, 12/19/03&#xA;@author&#x9;Jim Graham&#xA;" annotatedElement="1f7d1aca-408f-440f-9b63-af3e617ebb63"/>
              <interfaceRealization xmi:id="b19ca0f0-fa81-4345-924c-cc7d091f0928" name="" supplier="b8a81ec0-3dfc-4493-81d6-e7eca1bb10aa" client="1f7d1aca-408f-440f-9b63-af3e617ebb63" contract="b8a81ec0-3dfc-4493-81d6-e7eca1bb10aa"/>
              <interfaceRealization xmi:id="f1d2d32d-ae36-4a28-a3e8-9e6eee30e631" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="1f7d1aca-408f-440f-9b63-af3e617ebb63" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6d2cf805-89ef-47f3-b0ac-1d1b0eb5b08a" name="Float">
                <ownedComment xmi:id="9543f872-cfbb-445c-81b4-9f4fa475191b" body="A line segment specified with float coordinates.&#xA;" annotatedElement="6d2cf805-89ef-47f3-b0ac-1d1b0eb5b08a"/>
                <generalization xmi:id="779733e9-c2d7-4bde-9e63-cf133ba5bc4e" isSubstitutable="true" general="1f7d1aca-408f-440f-9b63-af3e617ebb63"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="ada1bb28-e339-4a8b-9f1f-23c2291de192" name="Double">
                <ownedComment xmi:id="cf995b71-7583-4bca-a5d0-a7e25c9440a0" body="A line segment specified with double coordinates.&#xA;" annotatedElement="ada1bb28-e339-4a8b-9f1f-23c2291de192"/>
                <generalization xmi:id="f752f2d6-1f32-4a1a-8f40-ece2b3d2820b" isSubstitutable="true" general="1f7d1aca-408f-440f-9b63-af3e617ebb63"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="84a46309-773b-440b-aac2-b2b3fcd5b23a" name="Dimension2D" clientDependency="10c4c2a0-c234-4a01-bb26-3f04481b27e2" isAbstract="true">
              <ownedComment xmi:id="0a7c851c-ebf9-41e0-a186-05cb37f5b396" body="The &lt;code>Dimension2D&lt;/code> class is to encapsulate a width&#xA;and a height dimension.&#xA;&lt;p>&#xA;This class is only the abstract superclass for all objects that&#xA;store a 2D dimension.&#xA;The actual storage representation of the sizes is left to&#xA;the subclass.&#xA;&#xA;@version &#x9;1.13, 12/19/03&#xA;@author&#x9;Jim Graham&#xA;" annotatedElement="84a46309-773b-440b-aac2-b2b3fcd5b23a"/>
              <interfaceRealization xmi:id="10c4c2a0-c234-4a01-bb26-3f04481b27e2" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="84a46309-773b-440b-aac2-b2b3fcd5b23a" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9ef20291-de04-4d9d-ae36-b59779c76b07" name="LineIterator" visibility="package" clientDependency="8c9759fc-9775-4dcc-bfc2-f044ecb82155">
              <ownedComment xmi:id="3e3371ed-3828-4e7f-8b99-f2ae8ea35d95" body="A utility class to iterate over the path segments of a line segment&#xA;through the PathIterator interface.&#xA;&#xA;@version &#x9;1.10, 12/19/03&#xA;@author&#x9;Jim Graham&#xA;" annotatedElement="9ef20291-de04-4d9d-ae36-b59779c76b07"/>
              <interfaceRealization xmi:id="8c9759fc-9775-4dcc-bfc2-f044ecb82155" name="" supplier="13e4aff4-7ec3-423b-90fa-54c61bdf6926" client="9ef20291-de04-4d9d-ae36-b59779c76b07" contract="13e4aff4-7ec3-423b-90fa-54c61bdf6926"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="534c9cf9-df72-4c57-841e-e749aec928b0" name="NoninvertibleTransformException">
              <ownedComment xmi:id="c316f880-9ebd-4099-85d3-23bc6134328e" body="The &lt;code>NoninvertibleTransformException&lt;/code> class represents&#xA;an exception that is thrown if an operation is performed requiring&#xA;the inverse of an {@link AffineTransform} object but the&#xA;&lt;code>AffineTransform&lt;/code> is in a non-invertible state.&#xA;@version &#x9;1.18, 12/19/03&#xA;" annotatedElement="534c9cf9-df72-4c57-841e-e749aec928b0"/>
              <generalization xmi:id="39fcab08-6f60-4e49-b022-2533dfcd185f" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="38a2bc9c-5775-46a6-baf4-77d7be9cafbf" name="RoundRectIterator" visibility="package" clientDependency="a94e14a2-c5f7-43da-a112-7e7d8134b0aa">
              <ownedComment xmi:id="da43540d-9422-4004-8d39-5a1581d0dc3a" body="A utility class to iterate over the path segments of an rounded rectangle&#xA;through the PathIterator interface.&#xA;&#xA;@version 10 Feb 1997&#xA;@author&#x9;Jim Graham&#xA;" annotatedElement="38a2bc9c-5775-46a6-baf4-77d7be9cafbf"/>
              <interfaceRealization xmi:id="a94e14a2-c5f7-43da-a112-7e7d8134b0aa" name="" supplier="13e4aff4-7ec3-423b-90fa-54c61bdf6926" client="38a2bc9c-5775-46a6-baf4-77d7be9cafbf" contract="13e4aff4-7ec3-423b-90fa-54c61bdf6926"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a67527df-7d5c-409e-aad5-9decaf161b1b" name="PrintJob" isAbstract="true">
            <ownedComment xmi:id="fef989c3-27e3-4dfb-84ae-f08dff5907bb" body="An abstract class which initiates and executes a print job.&#xA;It provides access to a print graphics object which renders&#xA;to an appropriate print device.&#xA;&#xA;@see Toolkit#getPrintJob&#xA;&#xA;@version &#x9;1.13 12/19/03&#xA;@author &#x9;Amy Fowler&#xA;" annotatedElement="a67527df-7d5c-409e-aad5-9decaf161b1b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e3a74ec8-777d-4e5f-a182-464963236fdd" name="Insets" clientDependency="5215c0a8-b402-4479-9c05-78745c2c3b70 ab40a355-a3fa-474f-9c2f-01b73f33ef1f">
            <ownedComment xmi:id="6fe50dcb-0f24-49e2-b2ec-0fbeb229830a" body="An &lt;code>Insets&lt;/code> object is a representation of the borders&#xA;of a container. It specifies the space that a container must leave&#xA;at each of its edges. The space can be a border, a blank space, or&#xA;a title.&#xA;&#xA;@version &#x9;1.30, 12/19/03&#xA;@author &#x9;Arthur van Hoff&#xA;@author &#x9;Sami Shaio&#xA;@see         java.awt.LayoutManager&#xA;@see         java.awt.Container&#xA;@since       JDK1.0&#xA;" annotatedElement="e3a74ec8-777d-4e5f-a182-464963236fdd"/>
            <interfaceRealization xmi:id="5215c0a8-b402-4479-9c05-78745c2c3b70" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="e3a74ec8-777d-4e5f-a182-464963236fdd" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="ab40a355-a3fa-474f-9c2f-01b73f33ef1f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="e3a74ec8-777d-4e5f-a182-464963236fdd" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="130411c8-864e-46f6-924f-1e6241dc6bc8" name="FontFormatException">
            <ownedComment xmi:id="f3893f22-1e22-4d7e-8d9a-067bab568839" body="Thrown by method createFont in the &lt;code>Font&lt;/code> class to indicate&#xA;that the specified font is bad.&#xA;&#xA;@author  Parry Kejriwal&#xA;@version 1.8, 12/19/03&#xA;@see     java.awt.Font&#xA;@since   1.3&#xA;" annotatedElement="130411c8-864e-46f6-924f-1e6241dc6bc8"/>
            <generalization xmi:id="2fbc766d-dd9e-4dac-a970-63b07ef8f80a" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="831cf87f-2eee-4ffa-aded-23c2e5dfbb3b" name="CardLayout" clientDependency="c0d81515-2fc6-4621-93b6-b7014a2f89f3 2e7d95fe-f5b5-46c7-b1ba-c0252b7be096">
            <ownedComment xmi:id="cf8e3e90-cfcc-4722-96e5-843a12a2c70c" body="A &lt;code>CardLayout&lt;/code> object is a layout manager for a&#xA;container. It treats each component in the container as a card.&#xA;Only one card is visible at a time, and the container acts as&#xA;a stack of cards. The first component added to a&#xA;&lt;code>CardLayout&lt;/code> object is the visible component when the&#xA;container is first displayed.&#xA;&lt;p>&#xA;The ordering of cards is determined by the container's own internal&#xA;ordering of its component objects. &lt;code>CardLayout&lt;/code>&#xA;defines a set of methods that allow an application to flip&#xA;through these cards sequentially, or to show a specified card.&#xA;The {@link CardLayout#addLayoutComponent}&#xA;method can be used to associate a string identifier with a given card&#xA;for fast random access.&#xA;&#xA;@version &#x9;1.40 05/18/04&#xA;@author &#x9;Arthur van Hoff&#xA;@see         java.awt.Container&#xA;@since       JDK1.0&#xA;" annotatedElement="831cf87f-2eee-4ffa-aded-23c2e5dfbb3b"/>
            <interfaceRealization xmi:id="c0d81515-2fc6-4621-93b6-b7014a2f89f3" name="" supplier="a42fe497-3d64-40e3-8aae-e48bec8b7d93" client="831cf87f-2eee-4ffa-aded-23c2e5dfbb3b" contract="a42fe497-3d64-40e3-8aae-e48bec8b7d93"/>
            <interfaceRealization xmi:id="2e7d95fe-f5b5-46c7-b1ba-c0252b7be096" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="831cf87f-2eee-4ffa-aded-23c2e5dfbb3b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="bfbab658-6a3d-4858-8e4e-2730ea77b891" name="Card" visibility="package" clientDependency="8d6d392a-7433-49fe-b59d-97f858c96fdb">
              <interfaceRealization xmi:id="8d6d392a-7433-49fe-b59d-97f858c96fdb" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="bfbab658-6a3d-4858-8e4e-2730ea77b891" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6f2ca193-05d8-41df-b71a-a59fa5cf0c37" name="Frame" clientDependency="2fac5a73-638c-4d6b-8011-9585ab20519c">
            <ownedComment xmi:id="1a0eda73-ff9a-4ea0-89b2-5f822dbdd26c" body="A &lt;code>Frame&lt;/code> is a top-level window with a title and a border.&#xA;&lt;p>&#xA;The size of the frame includes any area designated for the&#xA;border.  The dimensions of the border area may be obtained&#xA;using the &lt;code>getInsets&lt;/code> method, however, since&#xA;these dimensions are platform-dependent, a valid insets&#xA;value cannot be obtained until the frame is made displayable&#xA;by either calling &lt;code>pack&lt;/code> or &lt;code>show&lt;/code>.&#xA;Since the border area is included in the overall size of the&#xA;frame, the border effectively obscures a portion of the frame,&#xA;constraining the area available for rendering and/or displaying&#xA;subcomponents to the rectangle which has an upper-left corner&#xA;location of &lt;code>(insets.left, insets.top)&lt;/code>, and has a size of&#xA;&lt;code>width - (insets.left + insets.right)&lt;/code> by&#xA;&lt;code>height - (insets.top + insets.bottom)&lt;/code>.&#xA;&lt;p>&#xA;The default layout for a frame is &lt;code>BorderLayout&lt;/code>.&#xA;&lt;p>&#xA;A frame may have its native decorations (i.e. &lt;code>Frame&lt;/code>&#xA;and &lt;code>Titlebar&lt;/code>) turned off&#xA;with &lt;code>setUndecorated&lt;/code>. This can only be done while the frame&#xA;is not {@link Component#isDisplayable() displayable}.&#xA;&lt;p>&#xA;In a multi-screen environment, you can create a &lt;code>Frame&lt;/code>&#xA;on a different screen device by constructing the &lt;code>Frame&lt;/code>&#xA;with {@link #Frame(GraphicsConfiguration)} or&#xA;{@link #Frame(String title, GraphicsConfiguration)}.  The&#xA;&lt;code>GraphicsConfiguration&lt;/code> object is one of the&#xA;&lt;code>GraphicsConfiguration&lt;/code> objects of the target screen&#xA;device.&#xA;&lt;p>&#xA;In a virtual device multi-screen environment in which the desktop&#xA;area could span multiple physical screen devices, the bounds of all&#xA;configurations are relative to the virtual-coordinate system.  The&#xA;origin of the virtual-coordinate system is at the upper left-hand&#xA;corner of the primary physical screen.  Depending on the location&#xA;of the primary screen in the virtual device, negative coordinates&#xA;are possible, as shown in the following figure.&#xA;&lt;p>&#xA;&lt;img src=&quot;doc-files/MultiScreen.gif&quot;&#xA;alt=&quot;Diagram of virtual device encompassing three physical screens and one primary physical screen. The primary physical screen&#xA;shows (0,0) coords while a different physical screen shows (-80,-100) coords.&quot;&#xA;ALIGN=center HSPACE=10 VSPACE=7>&#xA;&lt;p>&#xA;In such an environment, when calling &lt;code>setLocation&lt;/code>,&#xA;you must pass a virtual coordinate to this method.  Similarly,&#xA;calling &lt;code>getLocationOnScreen&lt;/code> on a &lt;code>Frame&lt;/code>&#xA;returns virtual device coordinates.  Call the &lt;code>getBounds&lt;/code>&#xA;method of a &lt;code>GraphicsConfiguration&lt;/code> to find its origin in&#xA;the virtual coordinate system.&#xA;&lt;p>&#xA;The following code sets the&#xA;location of the &lt;code>Frame&lt;/code> at (10, 10) relative&#xA;to the origin of the physical screen of the corresponding&#xA;&lt;code>GraphicsConfiguration&lt;/code>.  If the bounds of the&#xA;&lt;code>GraphicsConfiguration&lt;/code> is not taken into account, the&#xA;&lt;code>Frame&lt;/code> location would be set at (10, 10) relative to the&#xA;virtual-coordinate system and would appear on the primary physical&#xA;screen, which might be different from the physical screen of the&#xA;specified &lt;code>GraphicsConfiguration&lt;/code>.&#xA;&#xA;&lt;pre>&#xA;Frame f = new Frame(GraphicsConfiguration gc);&#xA;Rectangle bounds = gc.getBounds();&#xA;f.setLocation(10 + bounds.x, 10 + bounds.y);&#xA;&lt;/pre>&#xA;&#xA;&lt;p>&#xA;Frames are capable of generating the following types of&#xA;&lt;code>WindowEvent&lt;/code>s:&#xA;&lt;ul>&#xA;&lt;li>&lt;code>WINDOW_OPENED&lt;/code>&#xA;&lt;li>&lt;code>WINDOW_CLOSING&lt;/code>:&#xA;&lt;br>If the program doesn't&#xA;explicitly hide or dispose the window while processing&#xA;this event, the window close operation is canceled.&#xA;&lt;li>&lt;code>WINDOW_CLOSED&lt;/code>&#xA;&lt;li>&lt;code>WINDOW_ICONIFIED&lt;/code>&#xA;&lt;li>&lt;code>WINDOW_DEICONIFIED&lt;/code>&#xA;&lt;li>&lt;code>WINDOW_ACTIVATED&lt;/code>&#xA;&lt;li>&lt;code>WINDOW_DEACTIVATED&lt;/code>&#xA;&lt;li>&lt;code>WINDOW_GAINED_FOCUS&lt;/code>&#xA;&lt;li>&lt;code>WINDOW_LOST_FOCUS&lt;/code>&#xA;&lt;li>&lt;code>WINDOW_STATE_CHANGED&lt;/code>&#xA;&lt;/ul>&#xA;&#xA;@version &#x9;1.147, 05/18/04&#xA;@author &#x9;Sami Shaio&#xA;@see WindowEvent&#xA;@see Window#addWindowListener&#xA;@since       JDK1.0&#xA;" annotatedElement="6f2ca193-05d8-41df-b71a-a59fa5cf0c37"/>
            <generalization xmi:id="f15c52ce-c20a-4b05-88d8-92221a7dac3d" isSubstitutable="true" general="faf9dec5-0a30-4718-8e3b-b6424fcd0d20"/>
            <interfaceRealization xmi:id="2fac5a73-638c-4d6b-8011-9585ab20519c" name="" supplier="8e52e80c-2e25-4f4d-9f99-bdc0e420c2de" client="6f2ca193-05d8-41df-b71a-a59fa5cf0c37" contract="8e52e80c-2e25-4f4d-9f99-bdc0e420c2de"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c13c176c-d79c-46be-a38e-289e28607811" name="AccessibleAWTFrame" visibility="protected">
              <ownedComment xmi:id="335e44b1-a6ec-4876-bf03-969f4f00d338" body="This class implements accessibility support for the&#xA;&lt;code>Frame&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to frame user-interface elements.&#xA;" annotatedElement="c13c176c-d79c-46be-a38e-289e28607811"/>
              <generalization xmi:id="66e2dcd1-39d1-4f58-a028-d1d19d9fe9b6" isSubstitutable="true" general="d832de57-0f38-42c5-a24f-61a67b23d7e5"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7a07e8a1-5895-461b-8c96-be829fe5a0b3" name="AlphaComposite" clientDependency="ee2731e7-4a6c-4716-819d-1e4c270ae174" isLeaf="true">
            <ownedComment xmi:id="4a4ccd3e-854e-4328-b173-41b4c5b4fc1c" body="The &lt;code>AlphaComposite&lt;/code> class implements basic alpha&#xA;compositing rules for combining source and destination colors&#xA;to achieve blending and transparency effects with graphics and&#xA;images.&#xA;The specific rules implemented by this class are the basic set&#xA;of 12 rules described in&#xA;T. Porter and T. Duff, &quot;Compositing Digital Images&quot;, SIGGRAPH 84,&#xA;253-259.&#xA;The rest of this documentation assumes some familiarity with the&#xA;definitions and concepts outlined in that paper.&#xA;&#xA;&lt;p>&#xA;This class extends the standard equations defined by Porter and&#xA;Duff to include one additional factor.&#xA;An instance of the &lt;code>AlphaComposite&lt;/code> class can contain&#xA;an alpha value that is used to modify the opacity or coverage of&#xA;every source pixel before it is used in the blending equations.&#xA;&#xA;&lt;p>&#xA;It is important to note that the equations defined by the Porter&#xA;and Duff paper are all defined to operate on color components&#xA;that are premultiplied by their corresponding alpha components.&#xA;Since the &lt;code>ColorModel&lt;/code> and &lt;code>Raster&lt;/code> classes&#xA;allow the storage of pixel data in either premultiplied or&#xA;non-premultiplied form, all input data must be normalized into&#xA;premultiplied form before applying the equations and all results&#xA;might need to be adjusted back to the form required by the destination&#xA;before the pixel values are stored.&#xA;&#xA;&lt;p>&#xA;Also note that this class defines only the equations&#xA;for combining color and alpha values in a purely mathematical&#xA;sense. The accurate application of its equations depends&#xA;on the way the data is retrieved from its sources and stored&#xA;in its destinations.&#xA;See &lt;a href=&quot;#caveats&quot;>Implementation Caveats&lt;/a>&#xA;for further information.&#xA;&#xA;&lt;p>&#xA;The following factors are used in the description of the blending&#xA;equation in the Porter and Duff paper:&#xA;&#xA;&lt;blockquote>&#xA;&lt;table summary=&quot;layout&quot;>&#xA;&lt;tr>&lt;th align=left>Factor&amp;nbsp;&amp;nbsp;&lt;th align=left>Definition&#xA;&lt;tr>&lt;td>&lt;em>A&lt;sub>s&lt;/sub>&lt;/em>&lt;td>the alpha component of the source pixel&#xA;&lt;tr>&lt;td>&lt;em>C&lt;sub>s&lt;/sub>&lt;/em>&lt;td>a color component of the source pixel in premultiplied form&#xA;&lt;tr>&lt;td>&lt;em>A&lt;sub>d&lt;/sub>&lt;/em>&lt;td>the alpha component of the destination pixel&#xA;&lt;tr>&lt;td>&lt;em>C&lt;sub>d&lt;/sub>&lt;/em>&lt;td>a color component of the destination pixel in premultiplied form&#xA;&lt;tr>&lt;td>&lt;em>F&lt;sub>s&lt;/sub>&lt;/em>&lt;td>the fraction of the source pixel that contributes to the output&#xA;&lt;tr>&lt;td>&lt;em>F&lt;sub>d&lt;/sub>&lt;/em>&lt;td>the fraction of the destination pixel that contributes&#xA;to the output&#xA;&lt;tr>&lt;td>&lt;em>A&lt;sub>r&lt;/sub>&lt;/em>&lt;td>the alpha component of the result&#xA;&lt;tr>&lt;td>&lt;em>C&lt;sub>r&lt;/sub>&lt;/em>&lt;td>a color component of the result in premultiplied form&#xA;&lt;/table>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;Using these factors, Porter and Duff define 12 ways of choosing&#xA;the blending factors &lt;em>F&lt;sub>s&lt;/sub>&lt;/em> and &lt;em>F&lt;sub>d&lt;/sub>&lt;/em> to&#xA;produce each of 12 desirable visual effects.&#xA;The equations for determining &lt;em>F&lt;sub>s&lt;/sub>&lt;/em> and &lt;em>F&lt;sub>d&lt;/sub>&lt;/em>&#xA;are given in the descriptions of the 12 static fields&#xA;that specify visual effects.&#xA;For example,&#xA;the description for&#xA;&lt;a href=&quot;#SRC_OVER&quot;>&lt;code>SRC_OVER&lt;/code>&lt;/a>&#xA;specifies that &lt;em>F&lt;sub>s&lt;/sub>&lt;/em> = 1 and &lt;em>F&lt;sub>d&lt;/sub>&lt;/em> = (1-&lt;em>A&lt;sub>s&lt;/sub>&lt;/em>).&#xA;Once a set of equations for determining the blending factors is&#xA;known they can then be applied to each pixel to produce a result&#xA;using the following set of equations:&#xA;&#xA;&lt;pre>&#xA;&lt;em>F&lt;sub>s&lt;/sub>&lt;/em> = &lt;em>f&lt;/em>(&lt;em>A&lt;sub>d&lt;/sub>&lt;/em>)&#xA;&lt;em>F&lt;sub>d&lt;/sub>&lt;/em> = &lt;em>f&lt;/em>(&lt;em>A&lt;sub>s&lt;/sub>&lt;/em>)&#xA;&lt;em>A&lt;sub>r&lt;/sub>&lt;/em> = &lt;em>A&lt;sub>s&lt;/sub>&lt;/em>*&lt;em>F&lt;sub>s&lt;/sub>&lt;/em> + &lt;em>A&lt;sub>d&lt;/sub>&lt;/em>*&lt;em>F&lt;sub>d&lt;/sub>&lt;/em>&#xA;&lt;em>C&lt;sub>r&lt;/sub>&lt;/em> = &lt;em>C&lt;sub>s&lt;/sub>&lt;/em>*&lt;em>F&lt;sub>s&lt;/sub>&lt;/em> + &lt;em>C&lt;sub>d&lt;/sub>&lt;/em>*&lt;em>F&lt;sub>d&lt;/sub>&lt;/em>&lt;/pre>&#xA;&#xA;&lt;p>&#xA;The following factors will be used to discuss our extensions to&#xA;the blending equation in the Porter and Duff paper:&#xA;&#xA;&lt;blockquote>&#xA;&lt;table summary=&quot;layout&quot;>&#xA;&lt;tr>&lt;th align=left>Factor&amp;nbsp;&amp;nbsp;&lt;th align=left>Definition&#xA;&lt;tr>&lt;td>&lt;em>C&lt;sub>sr&lt;/sub>&lt;/em> &lt;td>one of the raw color components of the source pixel&#xA;&lt;tr>&lt;td>&lt;em>C&lt;sub>dr&lt;/sub>&lt;/em> &lt;td>one of the raw color components of the destination pixel&#xA;&lt;tr>&lt;td>&lt;em>A&lt;sub>ac&lt;/sub>&lt;/em>  &lt;td>the &quot;extra&quot; alpha component from the AlphaComposite instance&#xA;&lt;tr>&lt;td>&lt;em>A&lt;sub>sr&lt;/sub>&lt;/em> &lt;td>the raw alpha component of the source pixel&#xA;&lt;tr>&lt;td>&lt;em>A&lt;sub>dr&lt;/sub>&lt;/em>&lt;td>the raw alpha component of the destination pixel&#xA;&lt;tr>&lt;td>&lt;em>A&lt;sub>df&lt;/sub>&lt;/em> &lt;td>the final alpha component stored in the destination&#xA;&lt;tr>&lt;td>&lt;em>C&lt;sub>df&lt;/sub>&lt;/em> &lt;td>the final raw color component stored in the destination&#xA;&lt;/table>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;h3>Preparing Inputs&lt;/h3>&#xA;&#xA;&lt;p>&#xA;The &lt;code>AlphaComposite&lt;/code> class defines an additional alpha&#xA;value that is applied to the source alpha.&#xA;This value is applied as if an implicit SRC_IN rule were first&#xA;applied to the source pixel against a pixel with the indicated&#xA;alpha by multiplying both the raw source alpha and the raw&#xA;source colors by the alpha in the &lt;code>AlphaComposite&lt;/code>.&#xA;This leads to the following equation for producing the alpha&#xA;used in the Porter and Duff blending equation:&#xA;&#xA;&lt;pre>&#xA;&lt;em>A&lt;sub>s&lt;/sub>&lt;/em> = &lt;em>A&lt;sub>sr&lt;/sub>&lt;/em> * &lt;em>A&lt;sub>ac&lt;/sub>&lt;/em> &lt;/pre>&#xA;&#xA;All of the raw source color components need to be multiplied&#xA;by the alpha in the &lt;code>AlphaComposite&lt;/code> instance.&#xA;Additionally, if the source was not in premultiplied form&#xA;then the color components also need to be multiplied by the&#xA;source alpha.&#xA;Thus, the equation for producing the source color components&#xA;for the Porter and Duff equation depends on whether the source&#xA;pixels are premultiplied or not:&#xA;&#xA;&lt;pre>&#xA;&lt;em>C&lt;sub>s&lt;/sub>&lt;/em> = &lt;em>C&lt;sub>sr&lt;/sub>&lt;/em> * &lt;em>A&lt;sub>sr&lt;/sub>&lt;/em> * &lt;em>A&lt;sub>ac&lt;/sub>&lt;/em>     (if source is not premultiplied)&#xA;&lt;em>C&lt;sub>s&lt;/sub>&lt;/em> = &lt;em>C&lt;sub>sr&lt;/sub>&lt;/em> * &lt;em>A&lt;sub>ac&lt;/sub>&lt;/em>           (if source is premultiplied) &lt;/pre>&#xA;&#xA;No adjustment needs to be made to the destination alpha:&#xA;&#xA;&lt;pre>&#xA;&lt;em>A&lt;sub>d&lt;/sub>&lt;/em> = &lt;em>A&lt;sub>dr&lt;/sub>&lt;/em> &lt;/pre>&#xA;&#xA;&lt;p>&#xA;The destination color components need to be adjusted only if&#xA;they are not in premultiplied form:&#xA;&#xA;&lt;pre>&#xA;&lt;em>C&lt;sub>d&lt;/sub>&lt;/em> = &lt;em>C&lt;sub>dr&lt;/sub>&lt;/em> * &lt;em>A&lt;sub>d&lt;/sub>&lt;/em>    (if destination is not premultiplied)&#xA;&lt;em>C&lt;sub>d&lt;/sub>&lt;/em> = &lt;em>C&lt;sub>dr&lt;/sub>&lt;/em>         (if destination is premultiplied) &lt;/pre>&#xA;&#xA;&lt;h3>Applying the Blending Equation&lt;/h3>&#xA;&#xA;&lt;p>&#xA;The adjusted &lt;em>A&lt;sub>s&lt;/sub>&lt;/em>, &lt;em>A&lt;sub>d&lt;/sub>&lt;/em>,&#xA;&lt;em>C&lt;sub>s&lt;/sub>&lt;/em>, and &lt;em>C&lt;sub>d&lt;/sub>&lt;/em> are used in the standard&#xA;Porter and Duff equations to calculate the blending factors&#xA;&lt;em>F&lt;sub>s&lt;/sub>&lt;/em> and &lt;em>F&lt;sub>d&lt;/sub>&lt;/em> and then the resulting&#xA;premultiplied components &lt;em>A&lt;sub>r&lt;/sub>&lt;/em> and &lt;em>C&lt;sub>r&lt;/sub>&lt;/em>.&#xA;&#xA;&lt;p>&#xA;&lt;h3>Preparing Results&lt;/h3>&#xA;&#xA;&lt;p>&#xA;The results only need to be adjusted if they are to be stored&#xA;back into a destination buffer that holds data that is not&#xA;premultiplied, using the following equations:&#xA;&#xA;&lt;pre>&#xA;&lt;em>A&lt;sub>df&lt;/sub>&lt;/em> = &lt;em>A&lt;sub>r&lt;/sub>&lt;/em>&#xA;&lt;em>C&lt;sub>df&lt;/sub>&lt;/em> = &lt;em>C&lt;sub>r&lt;/sub>&lt;/em>                 (if dest is premultiplied)&#xA;&lt;em>C&lt;sub>df&lt;/sub>&lt;/em> = &lt;em>C&lt;sub>r&lt;/sub>&lt;/em> / &lt;em>A&lt;sub>r&lt;/sub>&lt;/em>            (if dest is not premultiplied) &lt;/pre>&#xA;&#xA;Note that since the division is undefined if the resulting alpha&#xA;is zero, the division in that case is omitted to avoid the &quot;divide&#xA;by zero&quot; and the color components are left as&#xA;all zeros.&#xA;&#xA;&lt;p>&#xA;&lt;h3>Performance Considerations&lt;/h3>&#xA;&#xA;&lt;p>&#xA;For performance reasons, it is preferrable that&#xA;&lt;code>Raster&lt;/code> objects passed to the &lt;code>compose&lt;/code>&#xA;method of a {@link CompositeContext} object created by the&#xA;&lt;code>AlphaComposite&lt;/code> class have premultiplied data.&#xA;If either the source &lt;code>Raster&lt;/code>&#xA;or the destination &lt;code>Raster&lt;/code>&#xA;is not premultiplied, however,&#xA;appropriate conversions are performed before and after the compositing&#xA;operation.&#xA;&#xA;&lt;h3>&lt;a name=&quot;caveats&quot;>Implementation Caveats&lt;/a>&lt;/h3>&#xA;&#xA;&lt;ul>&#xA;&lt;li>&#xA;Many sources, such as some of the opaque image types listed&#xA;in the &lt;code>BufferedImage&lt;/code> class, do not store alpha values&#xA;for their pixels.  Such sources supply an alpha of 1.0 for&#xA;all of their pixels.&#xA;&#xA;&lt;p>&#xA;&lt;li>&#xA;Many destinations also have no place to store the alpha values&#xA;that result from the blending calculations performed by this class.&#xA;Such destinations thus implicitly discard the resulting&#xA;alpha values that this class produces.&#xA;It is recommended that such destinations should treat their stored&#xA;color values as non-premultiplied and divide the resulting color&#xA;values by the resulting alpha value before storing the color&#xA;values and discarding the alpha value.&#xA;&#xA;&lt;p>&#xA;&lt;li>&#xA;The accuracy of the results depends on the manner in which pixels&#xA;are stored in the destination.&#xA;An image format that provides at least 8 bits of storage per color&#xA;and alpha component is at least adequate for use as a destination&#xA;for a sequence of a few to a dozen compositing operations.&#xA;An image format with fewer than 8 bits of storage per component&#xA;is of limited use for just one or two compositing operations&#xA;before the rounding errors dominate the results.&#xA;An image format&#xA;that does not separately store&#xA;color components is not a&#xA;good candidate for any type of translucent blending.&#xA;For example, &lt;code>BufferedImage.TYPE_BYTE_INDEXED&lt;/code>&#xA;should not be used as a destination for a blending operation&#xA;because every operation&#xA;can introduce large errors, due to&#xA;the need to choose a pixel from a limited palette to match the&#xA;results of the blending equations.&#xA;&#xA;&lt;p>&#xA;&lt;li>&#xA;Nearly all formats store pixels as discrete integers rather than&#xA;the floating point values used in the reference equations above.&#xA;The implementation can either scale the integer pixel&#xA;values into floating point values in the range 0.0 to 1.0 or&#xA;use slightly modified versions of the equations&#xA;that operate entirely in the integer domain and yet produce&#xA;analogous results to the reference equations.&#xA;&#xA;&lt;p>&#xA;Typically the integer values are related to the floating point&#xA;values in such a way that the integer 0 is equated&#xA;to the floating point value 0.0 and the integer&#xA;2^&lt;em>n&lt;/em>-1 (where &lt;em>n&lt;/em> is the number of bits&#xA;in the representation) is equated to 1.0.&#xA;For 8-bit representations, this means that 0x00&#xA;represents 0.0 and 0xff represents&#xA;1.0.&#xA;&#xA;&lt;p>&#xA;&lt;li>&#xA;The internal implementation can approximate some of the equations&#xA;and it can also eliminate some steps to avoid unnecessary operations.&#xA;For example, consider a discrete integer image with non-premultiplied&#xA;alpha values that uses 8 bits per component for storage.&#xA;The stored values for a&#xA;nearly transparent darkened red might be:&#xA;&#xA;&lt;pre>&#xA;(A, R, G, B) = (0x01, 0xb0, 0x00, 0x00)&lt;/pre>&#xA;&#xA;&lt;p>&#xA;If integer math were being used and this value were being&#xA;composited in&#xA;&lt;a href=&quot;#SRC&quot;>&lt;code>SRC&lt;/code>&lt;/a>&#xA;mode with no extra alpha, then the math would&#xA;indicate that the results were (in integer format):&#xA;&#xA;&lt;pre>&#xA;(A, R, G, B) = (0x01, 0x01, 0x00, 0x00)&lt;/pre>&#xA;&#xA;&lt;p>&#xA;Note that the intermediate values, which are always in premultiplied&#xA;form, would only allow the integer red component to be either 0x00&#xA;or 0x01.  When we try to store this result back into a destination&#xA;that is not premultiplied, dividing out the alpha will give us&#xA;very few choices for the non-premultiplied red value.&#xA;In this case an implementation that performs the math in integer&#xA;space without shortcuts is likely to end up with the final pixel&#xA;values of:&#xA;&#xA;&lt;pre>&#xA;(A, R, G, B) = (0x01, 0xff, 0x00, 0x00)&lt;/pre>&#xA;&#xA;&lt;p>&#xA;(Note that 0x01 divided by 0x01 gives you 1.0, which is equivalent&#xA;to the value 0xff in an 8-bit storage format.)&#xA;&#xA;&lt;p>&#xA;Alternately, an implementation that uses floating point math&#xA;might produce more accurate results and end up returning to the&#xA;original pixel value with little, if any, roundoff error.&#xA;Or, an implementation using integer math might decide that since&#xA;the equations boil down to a virtual NOP on the color values&#xA;if performed in a floating point space, it can transfer the&#xA;pixel untouched to the destination and avoid all the math entirely.&#xA;&#xA;&lt;p>&#xA;These implementations all attempt to honor the&#xA;same equations, but use different tradeoffs of integer and&#xA;floating point math and reduced or full equations.&#xA;To account for such differences, it is probably best to&#xA;expect only that the premultiplied form of the results to&#xA;match between implementations and image formats.  In this&#xA;case both answers, expressed in premultiplied form would&#xA;equate to:&#xA;&#xA;&lt;pre>&#xA;(A, R, G, B) = (0x01, 0x01, 0x00, 0x00)&lt;/pre>&#xA;&#xA;&lt;p>&#xA;and thus they would all match.&#xA;&#xA;&lt;p>&#xA;&lt;li>&#xA;Because of the technique of simplifying the equations for&#xA;calculation efficiency, some implementations might perform&#xA;differently when encountering result alpha values of 0.0&#xA;on a non-premultiplied destination.&#xA;Note that the simplification of removing the divide by alpha&#xA;in the case of the SRC rule is technically not valid if the&#xA;denominator (alpha) is 0.&#xA;But, since the results should only be expected to be accurate&#xA;when viewed in premultiplied form, a resulting alpha of 0&#xA;essentially renders the resulting color components irrelevant&#xA;and so exact behavior in this case should not be expected.&#xA;&lt;/ul>&#xA;@see Composite&#xA;@see CompositeContext&#xA;@version 10 Feb 1997&#xA;" annotatedElement="7a07e8a1-5895-461b-8c96-be829fe5a0b3"/>
            <interfaceRealization xmi:id="ee2731e7-4a6c-4716-819d-1e4c270ae174" name="" supplier="86235578-7129-4994-a116-fc732fa0afc9" client="7a07e8a1-5895-461b-8c96-be829fe5a0b3" contract="86235578-7129-4994-a116-fc732fa0afc9"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="59ac6912-87de-469a-8726-9aecc34683b0" name="PaintContext" isAbstract="true">
            <ownedComment xmi:id="470c5cc1-b742-4162-8e5f-5ec6203d96e2" body="The &lt;code>PaintContext&lt;/code> interface defines the encapsulated&#xA;and optimized environment to generate color patterns in device&#xA;space for fill or stroke operations on a&#xA;{@link Graphics2D}.  The &lt;code>PaintContext&lt;/code> provides&#xA;the necessary colors for &lt;code>Graphics2D&lt;/code> operations in the&#xA;form of a {@link Raster} associated with a {@link ColorModel}.&#xA;The &lt;code>PaintContext&lt;/code> maintains state for a particular paint&#xA;operation.  In a multi-threaded environment, several&#xA;contexts can exist simultaneously for a single {@link Paint} object.&#xA;@see Paint&#xA;@version 10 Feb 1997&#xA;" annotatedElement="59ac6912-87de-469a-8726-9aecc34683b0"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e6b906e3-bfa6-4dab-bcae-b0d7d5642dc5" name="GraphicsConfigTemplate" clientDependency="341cdda8-a41b-4780-9dc2-190e5ea8b3a3" isAbstract="true">
            <ownedComment xmi:id="32f40d98-6aed-46a8-afa0-66d33c9246e2" body="The &lt;code>GraphicsConfigTemplate&lt;/code> class is used to obtain a valid&#xA;{@link GraphicsConfiguration}.  A user instantiates one of these&#xA;objects and then sets all non-default attributes as desired.  The&#xA;{@link GraphicsDevice#getBestConfiguration} method found in the&#xA;{@link GraphicsDevice} class is then called with this&#xA;&lt;code>GraphicsConfigTemplate&lt;/code>.  A valid&#xA;&lt;code>GraphicsConfiguration&lt;/code> is returned that meets or exceeds&#xA;what was requested in the &lt;code>GraphicsConfigTemplate&lt;/code>.&#xA;@see GraphicsDevice&#xA;@see GraphicsConfiguration&#xA;&#xA;@version &#x9;1.16, 12/19/03&#xA;@since       1.2&#xA;" annotatedElement="e6b906e3-bfa6-4dab-bcae-b0d7d5642dc5"/>
            <interfaceRealization xmi:id="341cdda8-a41b-4780-9dc2-190e5ea8b3a3" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="e6b906e3-bfa6-4dab-bcae-b0d7d5642dc5" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="b01e586f-b84c-4103-9824-bd16a387a1a8" name="CompositeContext" isAbstract="true">
            <ownedComment xmi:id="eee1191a-dc15-4d24-92ae-45e534ddc7ff" body="The &lt;code>CompositeContext&lt;/code> interface defines the encapsulated&#xA;and optimized environment for a compositing operation.&#xA;&lt;code>CompositeContext&lt;/code> objects maintain state for&#xA;compositing operations.  In a multi-threaded environment, several&#xA;contexts can exist simultaneously for a single {@link Composite}&#xA;object.&#xA;@see Composite&#xA;@version 10 Feb 1997&#xA;" annotatedElement="b01e586f-b84c-4103-9824-bd16a387a1a8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="394d2cfa-44c8-4942-8880-50fcdd255923" name="MediaEntry" visibility="package" isAbstract="true"/>
          <packagedElement xmi:type="uml:Class" xmi:id="6f785790-3cef-4533-a7c3-c544084d297c" name="AWTError">
            <ownedComment xmi:id="124e50e3-62cd-4e83-8dd6-d05266be4d23" body="Thrown when a serious Abstract Window Toolkit error has occurred.&#xA;&#xA;@version &#x9;1.15 12/19/03&#xA;@author &#x9;Arthur van Hoff&#xA;" annotatedElement="6f785790-3cef-4533-a7c3-c544084d297c"/>
            <generalization xmi:id="62265f92-6a18-4685-82f5-8d94dc3a6337" isSubstitutable="true" general="4e4110b0-dae3-4d54-846c-b32f5eb17a30"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d9f51440-30a3-4b62-86a6-d62af160757e" name="Panel" clientDependency="b83f3d6f-d39e-4d20-a99b-4a1222d42330">
            <ownedComment xmi:id="da1f401f-a1d8-4361-9f98-e7ac552ed69e" body="&lt;code>Panel&lt;/code> is the simplest container class. A panel&#xA;provides space in which an application can attach any other&#xA;component, including other panels.&#xA;&lt;p>&#xA;The default layout manager for a panel is the&#xA;&lt;code>FlowLayout&lt;/code> layout manager.&#xA;&#xA;@version &#x9;1.35, 03/01/04&#xA;@author &#x9;Sami Shaio&#xA;@see     java.awt.FlowLayout&#xA;@since   JDK1.0&#xA;" annotatedElement="d9f51440-30a3-4b62-86a6-d62af160757e"/>
            <generalization xmi:id="cae9522a-6074-45b9-99f0-8b8943727eb2" isSubstitutable="true" general="a4edac23-263c-4616-857d-4de97445e12a"/>
            <interfaceRealization xmi:id="b83f3d6f-d39e-4d20-a99b-4a1222d42330" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="d9f51440-30a3-4b62-86a6-d62af160757e" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="09f74687-6bd3-47b9-989f-158513e653fa" name="AccessibleAWTPanel" visibility="protected">
              <ownedComment xmi:id="9c8b74af-3e3d-4f7c-92e2-10abcc1c89b5" body="This class implements accessibility support for the&#xA;&lt;code>Panel&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to panel user-interface elements.&#xA;" annotatedElement="09f74687-6bd3-47b9-989f-158513e653fa"/>
              <generalization xmi:id="8fb3fc3f-831b-498b-8926-802f03077e0f" isSubstitutable="true" general="b3e98866-f74c-49b9-bf05-d16c3c4114d5"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="b967620a-b8bb-4625-b45d-3a6e2e227755" name="print">
            <packagedElement xmi:type="uml:Interface" xmi:id="be40c751-9987-4416-960c-6094cc2b0f92" name="Pageable" isAbstract="true">
              <ownedComment xmi:id="7a4b8700-4e97-4dad-8d3e-43283c3c2929" body="The &lt;code>Pageable&lt;/code> implementation represents a set of&#xA;pages to be printed. The &lt;code>Pageable&lt;/code> object returns&#xA;the total number of pages in the set as well as the&#xA;{@link PageFormat} and {@link Printable} for a specified page.&#xA;@see java.awt.print.PageFormat&#xA;@see java.awt.print.Printable&#xA;" annotatedElement="be40c751-9987-4416-960c-6094cc2b0f92"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="542afc55-adba-409b-8575-0d689c89fd64" name="Paper" clientDependency="edc2d221-125a-421e-88d8-9991cf005b8f">
              <ownedComment xmi:id="e013a649-981f-43b8-9056-f49cb7c1e0cd" body="The &lt;code>Paper&lt;/code> class describes the physical characteristics of&#xA;a piece of paper.&#xA;&lt;p>&#xA;When creating a &lt;code>Paper&lt;/code> object, it is the application's&#xA;responsibility to ensure that the paper size and the imageable area&#xA;are compatible.  For example, if the paper size is changed from&#xA;11 x 17 to 8.5 x 11, the application might need to reduce the&#xA;imageable area so that whatever is printed fits on the page.&#xA;&lt;p>&#xA;@see #setSize(double, double)&#xA;@see #setImageableArea(double, double, double, double)&#xA;" annotatedElement="542afc55-adba-409b-8575-0d689c89fd64"/>
              <interfaceRealization xmi:id="edc2d221-125a-421e-88d8-9991cf005b8f" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="542afc55-adba-409b-8575-0d689c89fd64" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4ff4b0f3-5555-4fa0-aaf9-c8186acd602a" name="PageFormat" clientDependency="3f554291-2a9b-4e24-98df-234100a9d6ca">
              <ownedComment xmi:id="4192576f-da79-4929-a5bb-397feee4a281" body="The &lt;code>PageFormat&lt;/code> class describes the size and&#xA;orientation of a page to be printed.&#xA;" annotatedElement="4ff4b0f3-5555-4fa0-aaf9-c8186acd602a"/>
              <interfaceRealization xmi:id="3f554291-2a9b-4e24-98df-234100a9d6ca" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="4ff4b0f3-5555-4fa0-aaf9-c8186acd602a" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ff70406c-9e17-4639-b14a-374bafb990ee" name="Book" clientDependency="72842335-9b1d-4441-9fed-356ab3558518">
              <ownedComment xmi:id="6e5ea4e5-1d73-4284-a828-91b03b1cede0" body="The &lt;code>Book&lt;/code> class provides a representation of a document in&#xA;which pages may have different page formats and page painters. This&#xA;class uses the {@link Pageable} interface to interact with a&#xA;{@link PrinterJob}.&#xA;@see Pageable&#xA;@see PrinterJob&#xA;" annotatedElement="ff70406c-9e17-4639-b14a-374bafb990ee"/>
              <interfaceRealization xmi:id="72842335-9b1d-4441-9fed-356ab3558518" name="" supplier="be40c751-9987-4416-960c-6094cc2b0f92" client="ff70406c-9e17-4639-b14a-374bafb990ee" contract="be40c751-9987-4416-960c-6094cc2b0f92"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="5624bfaa-1683-41cc-a5c8-45628f79ac3b" name="BookPage" visibility="private">
                <ownedComment xmi:id="0b6184a2-7e85-42d0-af55-55a73fce36ef" body="The BookPage inner class describes an individual&#xA;page in a Book through a PageFormat-Printable pair.&#xA;" annotatedElement="5624bfaa-1683-41cc-a5c8-45628f79ac3b"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="eed5dd4f-23cc-4c5f-b8ba-c2593ce2ba63" name="PrinterJob" isAbstract="true">
              <ownedComment xmi:id="0d7d2d81-a176-452a-a239-7462ab71f47a" body="The &lt;code>PrinterJob&lt;/code> class is the principal class that controls&#xA;printing. An application calls methods in this class to set up a job,&#xA;optionally to invoke a print dialog with the user, and then to print&#xA;the pages of the job.&#xA;" annotatedElement="eed5dd4f-23cc-4c5f-b8ba-c2593ce2ba63"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="01296cff-c211-4c7b-a95c-66971f5df1a8" name="PrinterAbortException">
              <ownedComment xmi:id="8541f5dc-0e18-4a08-b849-90da4d32f124" body="The &lt;code>PrinterAbortException&lt;/code> class is a subclass of&#xA;{@link PrinterException} and is used to indicate that a user&#xA;or application has terminated the print job while it was in&#xA;the process of printing.&#xA;" annotatedElement="01296cff-c211-4c7b-a95c-66971f5df1a8"/>
              <generalization xmi:id="ba116834-d7d3-4017-abaa-bbc93670c607" isSubstitutable="true" general="c03bfbcd-fc62-45d9-8e36-57a17a473a67"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="f54fba22-4a31-4697-8da1-29309df40d39" name="Printable" isAbstract="true">
              <ownedComment xmi:id="8c10e32a-fd96-4951-9b57-ccf2a553e9fb" body="The &lt;code>Printable&lt;/code> interface is implemented&#xA;by the &lt;code>print&lt;/code> methods of the current&#xA;page painter, which is called by the printing&#xA;system to render a page.  When building a&#xA;{@link Pageable}, pairs of {@link PageFormat}&#xA;instances and instances that implement&#xA;this interface are used to describe each page. The&#xA;instance implementing &lt;code>Printable&lt;/code> is called to&#xA;print the page's graphics.&#xA;&lt;p>&#xA;A &lt;code>Printable(..)&lt;/code> may be set on a &lt;code>PrinterJob&lt;/code>.&#xA;When the client subsequently initiates printing by calling&#xA;&lt;code>PrinterJob.print(..)&lt;/code> control&#xA;&lt;p>&#xA;is handed to the printing system until all pages have been printed.&#xA;It does this by calling &lt;code>Printable.print(..)&lt;/code> until&#xA;all pages in the document have been printed.&#xA;In using the &lt;code>Printable&lt;/code> interface the printing&#xA;commits to image the contents of a page whenever&#xA;requested by the printing system.&#xA;&lt;p>&#xA;The parameters to &lt;code>Printable.print(..)&lt;/code> include a&#xA;&lt;code>PageFormat&lt;/code> which describes the printable area of&#xA;the page, needed for calculating the contents that will fit the&#xA;page, and the page index, which specifies the zero-based print&#xA;stream index of the requested page.&#xA;&lt;p>&#xA;For correct printing behaviour, the following points should be&#xA;observed:&#xA;&lt;ul>&#xA;&lt;li> The printing system may request a page index more than once.&#xA;On each occasion equal PageFormat parameters will be supplied.&#xA;&#xA;&lt;li>The printing system will call &lt;code>Printable.print(..)&lt;/code>&#xA;with page indexes which increase monotonically, although as noted above,&#xA;the &lt;code>Printable&lt;/code> should expect multiple calls for a page index&#xA;and that page indexes may be skipped, when page ranges are specified&#xA;by the client, or by a user through a print dialog.&#xA;&#xA;&lt;li>If multiple collated copies of a document are requested, and the&#xA;printer cannot natively support this, then the document may be imaged&#xA;multiple times. Printing will start each copy from the lowest print&#xA;stream page index page.&#xA;&#xA;&lt;li>With the exception of re-imaging an entire document for multiple&#xA;collated copies, the increasing page index order means that when&#xA;page N is requested if a client needs to calculate page break position,&#xA;it may safely discard any state related to pages &lt; N, and make current&#xA;that for page N. &quot;State&quot; usually is just the calculated position in the&#xA;document that corresponds to the start of the page.&#xA;&#xA;&lt;li>When called by the printing system the &lt;code>Printable&lt;/code> must&#xA;inspect and honour the supplied PageFormat parameter as well as the&#xA;page index.&#xA;This is key to correct printing behaviour, and it has the&#xA;implication that the client has the responsibility of tracking&#xA;what content belongs on the specified page.&#xA;&#xA;&lt;li>When the &lt;code>Printable&lt;/code> is obtained from a client-supplied&#xA;&lt;code>Pageable&lt;/code> then the client may provide different PageFormats&#xA;for each page index. Calculations of page breaks must account for this.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;@see java.awt.print.Pageable&#xA;@see java.awt.print.PageFormat&#xA;@see java.awt.print.PrinterJob&#xA;" annotatedElement="f54fba22-4a31-4697-8da1-29309df40d39"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c661b651-8040-415f-8513-391c6a0bfd62" name="PrinterIOException">
              <ownedComment xmi:id="b05fb5df-5441-478f-9b99-54b124d25a8b" body="The &lt;code>PrinterIOException&lt;/code> class is a subclass of&#xA;{@link PrinterException} and is used to indicate that an IO error&#xA;of some sort has occurred while printing.&#xA;&#xA;&lt;p>As of release 1.4, this exception has been retrofitted to conform to&#xA;the general purpose exception-chaining mechanism.  The&#xA;&quot;&lt;code>IOException&lt;/code> that terminated the print job&quot;&#xA;that is provided at construction time and accessed via the&#xA;{@link #getIOException()} method is now known as the &lt;i>cause&lt;/i>,&#xA;and may be accessed via the {@link Throwable#getCause()} method,&#xA;as well as the aforementioned &quot;legacy method.&quot;&#xA;" annotatedElement="c661b651-8040-415f-8513-391c6a0bfd62"/>
              <generalization xmi:id="5dc82b63-6437-421a-9171-a29e0751c72c" isSubstitutable="true" general="c03bfbcd-fc62-45d9-8e36-57a17a473a67"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c03bfbcd-fc62-45d9-8e36-57a17a473a67" name="PrinterException">
              <ownedComment xmi:id="681486f8-bd25-4eed-9536-302cb4ec0d50" body="The &lt;code>PrinterException&lt;/code> class and its subclasses are used&#xA;to indicate that an exceptional condition has occurred in the print&#xA;system.&#xA;" annotatedElement="c03bfbcd-fc62-45d9-8e36-57a17a473a67"/>
              <generalization xmi:id="b489d362-e971-465d-bd84-76cd1b699717" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="5002d00d-41ca-454d-ab0e-9ae5995dca10" name="PrinterGraphics" isAbstract="true">
              <ownedComment xmi:id="d46552be-a12c-4475-93bf-c420875e49b1" body="The &lt;code>PrinterGraphics&lt;/code> interface is implemented by&#xA;{@link java.awt.Graphics} objects that are passed to&#xA;{@link Printable} objects to render a page. It allows an&#xA;application to find the {@link PrinterJob} object that is&#xA;controlling the printing.&#xA;" annotatedElement="5002d00d-41ca-454d-ab0e-9ae5995dca10"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4e6f9243-a1c9-4dac-91c7-e3a377356bf9" name="HeadlessException">
            <ownedComment xmi:id="0659577a-9e08-4444-b899-1cfa4d8b3555" body="Thrown when code that is dependent on a keyboard, display, or mouse&#xA;is called in an environment that does not support a keyboard, display,&#xA;or mouse.&#xA;&#xA;@since 1.4&#xA;@author  Michael Martak&#xA;" annotatedElement="4e6f9243-a1c9-4dac-91c7-e3a377356bf9"/>
            <generalization xmi:id="02fdb68e-d945-4d34-96b2-c6ef77473511" isSubstitutable="true" general="f84657cb-3f68-473e-a4be-858306aab044"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5bf4e7f1-1438-41b4-bab2-5006a7060030" name="CheckboxMenuItem" clientDependency="beae0a3d-1799-4f46-9446-554fc1c6cfe5 6f4a180c-4d05-43ea-aa83-e69b7f39a76d">
            <ownedComment xmi:id="bc537f02-533e-4a0b-a760-753a1fa25564" body="This class represents a check box that can be included in a menu.&#xA;Selecting the check box in the menu changes its state from&#xA;&quot;on&quot; to &quot;off&quot; or from &quot;off&quot; to &quot;on.&quot;&#xA;&lt;p>&#xA;The following picture depicts a menu which contains an instance&#xA;of &lt;code>CheckBoxMenuItem&lt;/code>:&#xA;&lt;p>&#xA;&lt;img src=&quot;doc-files/MenuBar-1.gif&quot;&#xA;alt=&quot;Menu labeled Examples, containing items Basic, Simple, Check, and More Examples. The Check item is a CheckBoxMenuItem instance, in the off state.&quot;&#xA;ALIGN=center HSPACE=10 VSPACE=7>&#xA;&lt;p>&#xA;The item labeled &lt;code>Check&lt;/code> shows a check box menu item&#xA;in its &quot;off&quot; state.&#xA;&lt;p>&#xA;When a check box menu item is selected, AWT sends an item event to&#xA;the item. Since the event is an instance of &lt;code>ItemEvent&lt;/code>,&#xA;the &lt;code>processEvent&lt;/code> method examines the event and passes&#xA;it along to &lt;code>processItemEvent&lt;/code>. The latter method redirects&#xA;the event to any &lt;code>ItemListener&lt;/code> objects that have&#xA;registered an interest in item events generated by this menu item.&#xA;&#xA;@version 1.69, 05/05/04&#xA;@author &#x9;Sami Shaio&#xA;@see         java.awt.event.ItemEvent&#xA;@see         java.awt.event.ItemListener&#xA;@since       JDK1.0&#xA;" annotatedElement="5bf4e7f1-1438-41b4-bab2-5006a7060030"/>
            <generalization xmi:id="4a9b6ad5-2f66-4af1-ad59-19b212a904c0" isSubstitutable="true" general="353ee79a-f600-47ed-ad15-12524e1f8586"/>
            <interfaceRealization xmi:id="6f4a180c-4d05-43ea-aa83-e69b7f39a76d" name="" supplier="db09b331-737d-46b0-b88c-ec77f93dd925" client="5bf4e7f1-1438-41b4-bab2-5006a7060030" contract="db09b331-737d-46b0-b88c-ec77f93dd925"/>
            <interfaceRealization xmi:id="beae0a3d-1799-4f46-9446-554fc1c6cfe5" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="5bf4e7f1-1438-41b4-bab2-5006a7060030" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="5540da56-cb29-46b8-855c-4f107771fd33" name="AccessibleAWTCheckboxMenuItem" visibility="protected" clientDependency="93e74735-4740-43a8-b5ae-c71602e12144 a46a430e-643d-4760-a724-a57257378157">
              <ownedComment xmi:id="276768a6-9824-4e15-897e-6024f2757dd8" body="Inner class of CheckboxMenuItem used to provide default support for&#xA;accessibility.  This class is not meant to be used directly by&#xA;application developers, but is instead meant only to be&#xA;subclassed by menu component developers.&#xA;&lt;p>&#xA;This class implements accessibility support for the&#xA;&lt;code>CheckboxMenuItem&lt;/code> class.  It provides an implementation&#xA;of the Java Accessibility API appropriate to checkbox menu item&#xA;user-interface elements.&#xA;" annotatedElement="5540da56-cb29-46b8-855c-4f107771fd33"/>
              <generalization xmi:id="e78a3147-d8ea-4c70-9a05-f203ca5c7dee" isSubstitutable="true" general="81ddf40d-e8b3-468e-94ef-75dd0a5b1e8c"/>
              <interfaceRealization xmi:id="93e74735-4740-43a8-b5ae-c71602e12144" name="" supplier="1f04210f-dd56-4dbb-861c-7a19813caf4c" client="5540da56-cb29-46b8-855c-4f107771fd33" contract="1f04210f-dd56-4dbb-861c-7a19813caf4c"/>
              <interfaceRealization xmi:id="a46a430e-643d-4760-a724-a57257378157" name="" supplier="48ff1225-61c7-495b-a398-c2903fb1210d" client="5540da56-cb29-46b8-855c-4f107771fd33" contract="48ff1225-61c7-495b-a398-c2903fb1210d"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8f531a24-0552-4b41-b3b5-25b5bb8ec953" name="KeyboardFocusManager" clientDependency="c9858259-2c64-480c-8567-f8422c762bc1 5a2a5fd5-42c9-49ce-a46f-3f00df4c74fa" isAbstract="true">
            <ownedComment xmi:id="de23a612-c0fc-41db-9252-d993af606295" body="The KeyboardFocusManager is responsible for managing the active and focused&#xA;Windows, and the current focus owner. The focus owner is defined as the&#xA;Component in an application that will typically receive all KeyEvents&#xA;generated by the user. The focused Window is the Window that is, or&#xA;contains, the focus owner. Only a Frame or a Dialog can be the active&#xA;Window. The native windowing system may denote the active Window or its&#xA;children with special decorations, such as a highlighted title bar. The&#xA;active Window is always either the focused Window, or the first Frame or&#xA;Dialog that is an owner of the focused Window.&#xA;&lt;p>&#xA;The KeyboardFocusManager is both a centralized location for client code to&#xA;query for the focus owner and initiate focus changes, and an event&#xA;dispatcher for all FocusEvents, WindowEvents related to focus, and&#xA;KeyEvents.&#xA;&lt;p>&#xA;Some browsers partition applets in different code bases into separate&#xA;contexts, and establish walls between these contexts. In such a scenario,&#xA;there will be one KeyboardFocusManager per context. Other browsers place all&#xA;applets into the same context, implying that there will be only a single,&#xA;global KeyboardFocusManager for all applets. This behavior is&#xA;implementation-dependent. Consult your browser's documentation for more&#xA;information. No matter how many contexts there may be, however, there can&#xA;never be more than one focus owner, focused Window, or active Window, per&#xA;ClassLoader.&#xA;&lt;p>&#xA;Please see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html&quot;>&#xA;How to Use the Focus Subsystem&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>, and the&#xA;&lt;a href=&quot;../../java/awt/doc-files/FocusSpec.html&quot;>Focus Specification&lt;/a>&#xA;for more information.&#xA;&#xA;@author David Mendenhall&#xA;@version 1.58, 05/05/04&#xA;&#xA;@see Window&#xA;@see Frame&#xA;@see Dialog&#xA;@see java.awt.event.FocusEvent&#xA;@see java.awt.event.WindowEvent&#xA;@see java.awt.event.KeyEvent&#xA;@since 1.4&#xA;" annotatedElement="8f531a24-0552-4b41-b3b5-25b5bb8ec953"/>
            <interfaceRealization xmi:id="c9858259-2c64-480c-8567-f8422c762bc1" name="" supplier="0760177e-269e-40b2-b28a-97e7fe889ad6" client="8f531a24-0552-4b41-b3b5-25b5bb8ec953" contract="0760177e-269e-40b2-b28a-97e7fe889ad6"/>
            <interfaceRealization xmi:id="5a2a5fd5-42c9-49ce-a46f-3f00df4c74fa" name="" supplier="2f1b1e62-8a9c-46dd-9cc8-d1b81e50a14d" client="8f531a24-0552-4b41-b3b5-25b5bb8ec953" contract="2f1b1e62-8a9c-46dd-9cc8-d1b81e50a14d"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="7b134bc2-7779-48ce-a785-966080c3a8cb" name="LightweightFocusRequest" visibility="private" isLeaf="true"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="5119c6b4-50ca-4a0f-b3c8-bff971c7047a" name="HeavyweightFocusRequest" visibility="private" isLeaf="true"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="52090655-2c3d-49d9-ad55-0592b03e869b" name="GridBagLayout" clientDependency="6f400649-2c79-48f0-9a87-58cc7113b0c4 1ae7cbdb-0996-4021-ab2b-c904d816b022">
            <ownedComment xmi:id="a67193af-3ee0-45ca-9221-5180adddd1d0" body="The &lt;code>GridBagLayout&lt;/code> class is a flexible layout&#xA;manager that aligns components vertically and horizontally,&#xA;without requiring that the components be of the same size.&#xA;Each &lt;code>GridBagLayout&lt;/code> object maintains a dynamic,&#xA;rectangular grid of cells, with each component occupying&#xA;one or more cells, called its &lt;em>display area&lt;/em>.&#xA;&lt;p>&#xA;Each component managed by a &lt;code>GridBagLayout&lt;/code> is associated with&#xA;an instance of {@link GridBagConstraints}.  The constraints object&#xA;specifies where a component's display area should be located on the grid&#xA;and how the component should be positioned within its display area.  In&#xA;addition to its constraints object, the &lt;code>GridBagLayout&lt;/code> also&#xA;considers each component's minimum and preferred sizes in order to&#xA;determine a component's size.&#xA;&lt;p>&#xA;The overall orientation of the grid depends on the container's&#xA;{@link ComponentOrientation} property.  For horizontal left-to-right&#xA;orientations, grid coordinate (0,0) is in the upper left corner of the&#xA;container with x increasing to the right and y increasing downward.  For&#xA;horizontal right-to-left orientations, grid coordinate (0,0) is in the upper&#xA;right corner of the container with x increasing to the left and y&#xA;increasing downward.&#xA;&lt;p>&#xA;To use a grid bag layout effectively, you must customize one or more&#xA;of the &lt;code>GridBagConstraints&lt;/code> objects that are associated&#xA;with its components. You customize a &lt;code>GridBagConstraints&lt;/code>&#xA;object by setting one or more of its instance variables:&#xA;&lt;p>&#xA;&lt;dl>&#xA;&lt;dt>{@link GridBagConstraints#gridx},&#xA;{@link GridBagConstraints#gridy}&#xA;&lt;dd>Specifies the cell containing the leading corner of the component's&#xA;display area, where the cell at the origin of the grid has address&#xA;&lt;code>gridx&amp;nbsp;=&amp;nbsp;0&lt;/code>,&#xA;&lt;code>gridy&amp;nbsp;=&amp;nbsp;0&lt;/code>.  For horizontal left-to-right layout,&#xA;a component's leading corner is its upper left.  For horizontal&#xA;right-to-left layout, a component's leading corner is its upper right.&#xA;Use &lt;code>GridBagConstraints.RELATIVE&lt;/code> (the default value)&#xA;to specify that the component be placed immediately following&#xA;(along the x axis for &lt;code>gridx&lt;/code> or the y axis for&#xA;&lt;code>gridy&lt;/code>) the component that was added to the container&#xA;just before this component was added.&#xA;&lt;dt>{@link GridBagConstraints#gridwidth},&#xA;{@link GridBagConstraints#gridheight}&#xA;&lt;dd>Specifies the number of cells in a row (for &lt;code>gridwidth&lt;/code>)&#xA;or column (for &lt;code>gridheight&lt;/code>)&#xA;in the component's display area.&#xA;The default value is 1.&#xA;Use &lt;code>GridBagConstraints.REMAINDER&lt;/code> to specify&#xA;that the component's display area will be from &lt;code>gridx&lt;/code>&#xA;to the last cell in the row (for &lt;code>gridwidth&lt;/code>)&#xA;or from &lt;code>gridy&lt;/code> to the last cell in the column&#xA;(for &lt;code>gridheight&lt;/code>).&#xA;&#xA;Use &lt;code>GridBagConstraints.RELATIVE&lt;/code> to specify&#xA;that the component's display area will be from &lt;code>gridx&lt;/code>&#xA;to the next to the last cell in its row (for &lt;code>gridwidth&lt;/code>&#xA;or from &lt;code>gridy&lt;/code> to the next to the last cell in its&#xA;column (for &lt;code>gridheight&lt;/code>).&#xA;&#xA;&lt;dt>{@link GridBagConstraints#fill}&#xA;&lt;dd>Used when the component's display area&#xA;is larger than the component's requested size&#xA;to determine whether (and how) to resize the component.&#xA;Possible values are&#xA;&lt;code>GridBagConstraints.NONE&lt;/code> (the default),&#xA;&lt;code>GridBagConstraints.HORIZONTAL&lt;/code>&#xA;(make the component wide enough to fill its display area&#xA;horizontally, but don't change its height),&#xA;&lt;code>GridBagConstraints.VERTICAL&lt;/code>&#xA;(make the component tall enough to fill its display area&#xA;vertically, but don't change its width), and&#xA;&lt;code>GridBagConstraints.BOTH&lt;/code>&#xA;(make the component fill its display area entirely).&#xA;&lt;dt>{@link GridBagConstraints#ipadx},&#xA;{@link GridBagConstraints#ipady}&#xA;&lt;dd>Specifies the component's internal padding within the layout,&#xA;how much to add to the minimum size of the component.&#xA;The width of the component will be at least its minimum width&#xA;plus &lt;code>ipadx&lt;/code> pixels. Similarly, the height of&#xA;the component will be at least the minimum height plus&#xA;&lt;code>ipady&lt;/code> pixels.&#xA;&lt;dt>{@link GridBagConstraints#insets}&#xA;&lt;dd>Specifies the component's external padding, the minimum&#xA;amount of space between the component and the edges of its display area.&#xA;&lt;dt>{@link GridBagConstraints#anchor}&#xA;&lt;dd>Used when the component is smaller than its display area&#xA;to determine where (within the display area) to place the component.&#xA;There are two kinds of possible values: relative and absolute.  Relative&#xA;values are interpreted relative to the container's&#xA;&lt;code>ComponentOrientation&lt;/code> property while absolute values&#xA;are not.  Valid values are:&lt;/dd>&#xA;&lt;p>&#xA;&lt;center>&lt;table BORDER=0 COLS=2 WIDTH=800 SUMMARY=&quot;absolute and relative values as described above&quot;>&#xA;&lt;tr>&#xA;&lt;th>&lt;P ALIGN=&quot;LEFT&quot;>Absolute Values&lt;/th>&#xA;&lt;th>&lt;P ALIGN=&quot;LEFT&quot;>Relative Values&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&#xA;&lt;li>&lt;code>GridBagConstraints.NORTH&lt;/code>&lt;/li>&#xA;&lt;li>&lt;code>GridBagConstraints.SOUTH&lt;/code>&lt;/li>&#xA;&lt;li>&lt;code>GridBagConstraints.WEST&lt;/code>&lt;/li>&#xA;&lt;li>&lt;code>GridBagConstraints.EAST&lt;/code>&lt;/li>&#xA;&lt;li>&lt;code>GridBagConstraints.NORTHWEST&lt;/code>&lt;/li>&#xA;&lt;li>&lt;code>GridBagConstraints.NORTHEAST&lt;/code>&lt;/li>&#xA;&lt;li>&lt;code>GridBagConstraints.SOUTHWEST&lt;/code>&lt;/li>&#xA;&lt;li>&lt;code>GridBagConstraints.SOUTHEAST&lt;/code>&lt;/li>&#xA;&lt;li>&lt;code>GridBagConstraints.CENTER&lt;/code> (the default)&lt;/li>&#xA;&lt;/td>&#xA;&lt;td>&#xA;&lt;li>&lt;code>GridBagConstraints.PAGE_START&lt;/code>&lt;/li>&#xA;&lt;li>&lt;code>GridBagConstraints.PAGE_END&lt;/code>&lt;/li>&#xA;&lt;li>&lt;code>GridBagConstraints.LINE_START&lt;/code>&lt;/li>&#xA;&lt;li>&lt;code>GridBagConstraints.LINE_END&lt;/code>&lt;/li>&#xA;&lt;li>&lt;code>GridBagConstraints.FIRST_LINE_START&lt;/code>&lt;/li>&#xA;&lt;li>&lt;code>GridBagConstraints.FIRST_LINE_END&lt;/code>&lt;/li>&#xA;&lt;li>&lt;code>GridBagConstraints.LAST_LINE_START&lt;/code>&lt;/li>&#xA;&lt;li>&lt;code>GridBagConstraints.LAST_LINE_END&lt;/code>&lt;/li>&#xA;&lt;/ul>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&lt;/center>&lt;p>&#xA;&lt;dt>{@link GridBagConstraints#weightx},&#xA;{@link GridBagConstraints#weighty}&#xA;&lt;dd>Used to determine how to distribute space, which is&#xA;important for specifying resizing behavior.&#xA;Unless you specify a weight for at least one component&#xA;in a row (&lt;code>weightx&lt;/code>) and column (&lt;code>weighty&lt;/code>),&#xA;all the components clump together in the center of their container.&#xA;This is because when the weight is zero (the default),&#xA;the &lt;code>GridBagLayout&lt;/code> object puts any extra space&#xA;between its grid of cells and the edges of the container.&#xA;&lt;/dl>&#xA;&lt;p>&#xA;The following figures show ten components (all buttons)&#xA;managed by a grid bag layout.  Figure 1 shows the layout for a horizontal,&#xA;left-to-right container and Figure 2 shows the layout for a horizontal,&#xA;right-to-left container.&#xA;&lt;p>&#xA;&lt;center>&lt;table COLS=2 WIDTH=600 summary=&quot;layout&quot;>&#xA;&lt;tr ALIGN=CENTER>&#xA;&lt;td>&#xA;&lt;img src=&quot;doc-files/GridBagLayout-1.gif&quot; alt=&quot;The preceeding text describes this graphic (Figure 1).&quot; ALIGN=center HSPACE=10 VSPACE=7>&#xA;&lt;/td>&#xA;&lt;td>&#xA;&lt;img src=&quot;doc-files/GridBagLayout-2.gif&quot; alt=&quot;The preceeding text describes this graphic (Figure 2).&quot; ALIGN=center HSPACE=10 VSPACE=7>&#xA;&lt;/td>&#xA;&lt;tr ALIGN=CENTER>&#xA;&lt;td>Figure 1: Horizontal, Left-to-Right&lt;/td>&#xA;&lt;td>Figure 2: Horizontal, Right-to-Left&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&lt;/center>&#xA;&lt;p>&#xA;Each of the ten components has the &lt;code>fill&lt;/code> field&#xA;of its associated &lt;code>GridBagConstraints&lt;/code> object&#xA;set to &lt;code>GridBagConstraints.BOTH&lt;/code>.&#xA;In addition, the components have the following non-default constraints:&#xA;&lt;p>&#xA;&lt;ul>&#xA;&lt;li>Button1, Button2, Button3: &lt;code>weightx&amp;nbsp;=&amp;nbsp;1.0&lt;/code>&#xA;&lt;li>Button4: &lt;code>weightx&amp;nbsp;=&amp;nbsp;1.0&lt;/code>,&#xA;&lt;code>gridwidth&amp;nbsp;=&amp;nbsp;GridBagConstraints.REMAINDER&lt;/code>&#xA;&lt;li>Button5: &lt;code>gridwidth&amp;nbsp;=&amp;nbsp;GridBagConstraints.REMAINDER&lt;/code>&#xA;&lt;li>Button6: &lt;code>gridwidth&amp;nbsp;=&amp;nbsp;GridBagConstraints.RELATIVE&lt;/code>&#xA;&lt;li>Button7: &lt;code>gridwidth&amp;nbsp;=&amp;nbsp;GridBagConstraints.REMAINDER&lt;/code>&#xA;&lt;li>Button8: &lt;code>gridheight&amp;nbsp;=&amp;nbsp;2&lt;/code>,&#xA;&lt;code>weighty&amp;nbsp;=&amp;nbsp;1.0&lt;/code>&#xA;&lt;li>Button9, Button 10:&#xA;&lt;code>gridwidth&amp;nbsp;=&amp;nbsp;GridBagConstraints.REMAINDER&lt;/code>&#xA;&lt;/ul>&#xA;&lt;p>&#xA;Here is the code that implements the example shown above:&#xA;&lt;p>&#xA;&lt;hr>&lt;blockquote>&lt;pre>&#xA;import java.awt.*;&#xA;import java.util.*;&#xA;import java.applet.Applet;&#xA;&#xA;public class GridBagEx1 extends Applet {&#xA;&#xA;protected void makebutton(String name,&#xA;GridBagLayout gridbag,&#xA;GridBagConstraints c) {&#xA;Button button = new Button(name);&#xA;gridbag.setConstraints(button, c);&#xA;add(button);&#xA;}&#xA;&#xA;public void init() {&#xA;GridBagLayout gridbag = new GridBagLayout();&#xA;GridBagConstraints c = new GridBagConstraints();&#xA;&#xA;setFont(new Font(&quot;SansSerif&quot;, Font.PLAIN, 14));&#xA;setLayout(gridbag);&#xA;&#xA;c.fill = GridBagConstraints.BOTH;&#xA;c.weightx = 1.0;&#xA;makebutton(&quot;Button1&quot;, gridbag, c);&#xA;makebutton(&quot;Button2&quot;, gridbag, c);&#xA;makebutton(&quot;Button3&quot;, gridbag, c);&#xA;&#xA;c.gridwidth = GridBagConstraints.REMAINDER; //end row&#xA;makebutton(&quot;Button4&quot;, gridbag, c);&#xA;&#xA;c.weightx = 0.0;&#x9;&#x9;   //reset to the default&#xA;makebutton(&quot;Button5&quot;, gridbag, c); //another row&#xA;&#xA;c.gridwidth = GridBagConstraints.RELATIVE; //next-to-last in row&#xA;makebutton(&quot;Button6&quot;, gridbag, c);&#xA;&#xA;c.gridwidth = GridBagConstraints.REMAINDER; //end row&#xA;makebutton(&quot;Button7&quot;, gridbag, c);&#xA;&#xA;c.gridwidth = 1;&#x9;   &#x9;   //reset to the default&#xA;c.gridheight = 2;&#xA;c.weighty = 1.0;&#xA;makebutton(&quot;Button8&quot;, gridbag, c);&#xA;&#xA;c.weighty = 0.0;&#x9;&#x9;   //reset to the default&#xA;c.gridwidth = GridBagConstraints.REMAINDER; //end row&#xA;c.gridheight = 1;&#x9;&#x9;   //reset to the default&#xA;makebutton(&quot;Button9&quot;, gridbag, c);&#xA;makebutton(&quot;Button10&quot;, gridbag, c);&#xA;&#xA;setSize(300, 100);&#xA;}&#xA;&#xA;public static void main(String args[]) {&#xA;Frame f = new Frame(&quot;GridBag Layout Example&quot;);&#xA;GridBagEx1 ex1 = new GridBagEx1();&#xA;&#xA;ex1.init();&#xA;&#xA;f.add(&quot;Center&quot;, ex1);&#xA;f.pack();&#xA;f.setSize(f.getPreferredSize());&#xA;f.show();&#xA;}&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&lt;hr>&#xA;&lt;p>&#xA;@version &#x9;1.64, 06/08/04&#xA;@author Doug Stein&#xA;@see       java.awt.GridBagConstraints&#xA;@see       java.awt.ComponentOrientation&#xA;@since JDK1.0&#xA;" annotatedElement="52090655-2c3d-49d9-ad55-0592b03e869b"/>
            <interfaceRealization xmi:id="6f400649-2c79-48f0-9a87-58cc7113b0c4" name="" supplier="a42fe497-3d64-40e3-8aae-e48bec8b7d93" client="52090655-2c3d-49d9-ad55-0592b03e869b" contract="a42fe497-3d64-40e3-8aae-e48bec8b7d93"/>
            <interfaceRealization xmi:id="1ae7cbdb-0996-4021-ab2b-c904d816b022" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="52090655-2c3d-49d9-ad55-0592b03e869b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1a9c74a9-bb00-480d-8c3c-be771f9b792c" name="GridBagLayoutInfo" visibility="package" clientDependency="b2251269-3538-4282-a66b-810a866a9451">
            <interfaceRealization xmi:id="b2251269-3538-4282-a66b-810a866a9451" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="1a9c74a9-bb00-480d-8c3c-be771f9b792c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="7515f8ad-109f-499a-a4a5-5eeba6170ad2" name="Map&lt;Object, Object>">
            <templateBinding xmi:id="5b9675ff-6ea8-438d-af1b-95b4b672dbb1" signature="6fa510d5-30ff-4915-9f85-f28c17685f05">
              <parameterSubstitution xmi:id="f2f7e991-e1d2-4836-87e8-df06844b84d5" formal="c51fa5e3-696f-4fba-aca1-bf27a9542c44" actual="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
              <parameterSubstitution xmi:id="874b74ff-32b3-4fa2-af56-45ba91b3a917" formal="f697aee6-8b2e-4b17-abc4-4158aecc3c87" actual="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ae98e8af-ea7c-403d-8c88-c48043536c19" name="AWTKeyStroke" clientDependency="950be2ea-c08b-4eec-8b9a-886a8a6a0126">
            <ownedComment xmi:id="8dff6f34-934b-49e8-9c3e-ff927923d869" body="An &lt;code>AWTKeyStroke&lt;/code> represents a key action on the&#xA;keyboard, or equivalent input device. &lt;code>AWTKeyStroke&lt;/code>s&#xA;can correspond to only a press or release of a&#xA;particular key, just as &lt;code>KEY_PRESSED&lt;/code> and&#xA;&lt;code>KEY_RELEASED&lt;/code> &lt;code>KeyEvent&lt;/code>s do;&#xA;alternately, they can correspond to typing a specific Java character, just&#xA;as &lt;code>KEY_TYPED&lt;/code> &lt;code>KeyEvent&lt;/code>s do.&#xA;In all cases, &lt;code>AWTKeyStroke&lt;/code>s can specify modifiers&#xA;(alt, shift, control, meta, or a combination thereof) which must be present&#xA;during the action for an exact match.&#xA;&lt;p>&#xA;&lt;code>AWTKeyStrokes&lt;/code> are immutable, and are intended&#xA;to be unique. Client code should never create an&#xA;&lt;code>AWTKeyStroke&lt;/code> on its own, but should instead use&#xA;a variant of &lt;code>getAWTKeyStroke&lt;/code>. Client use of these factory&#xA;methods allows the &lt;code>AWTKeyStroke&lt;/code> implementation&#xA;to cache and share instances efficiently.&#xA;&#xA;@see #getAWTKeyStroke&#xA;&#xA;@version 1.23, 05/05/04&#xA;@author Arnaud Weber&#xA;@author David Mendenhall&#xA;@since 1.4&#xA;" annotatedElement="ae98e8af-ea7c-403d-8c88-c48043536c19"/>
            <interfaceRealization xmi:id="950be2ea-c08b-4eec-8b9a-886a8a6a0126" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ae98e8af-ea7c-403d-8c88-c48043536c19" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="59a461a4-0325-4f6e-ab25-483b0eade5af" name="Stroke" isAbstract="true">
            <ownedComment xmi:id="715b1ad1-110a-4413-91b7-dcf2fc3a18f6" body="The &lt;code>Stroke&lt;/code> interface allows a&#xA;{@link Graphics2D} object to obtain a {@link Shape} that is the&#xA;decorated outline, or stylistic representation of the outline,&#xA;of the specified &lt;code>Shape&lt;/code>.&#xA;Stroking a &lt;code>Shape&lt;/code> is like tracing its outline with a&#xA;marking pen of the appropriate size and shape.&#xA;The area where the pen would place ink is the area enclosed by the&#xA;outline &lt;code>Shape&lt;/code>.&#xA;&lt;p>&#xA;The methods of the &lt;code>Graphics2D&lt;/code> interface that use the&#xA;outline &lt;code>Shape&lt;/code> returned by a &lt;code>Stroke&lt;/code> object&#xA;include &lt;code>draw&lt;/code> and any other methods that are&#xA;implemented in terms of that method, such as&#xA;&lt;code>drawLine&lt;/code>, &lt;code>drawRect&lt;/code>,&#xA;&lt;code>drawRoundRect&lt;/code>, &lt;code>drawOval&lt;/code>,&#xA;&lt;code>drawArc&lt;/code>, &lt;code>drawPolyline&lt;/code>,&#xA;and &lt;code>drawPolygon&lt;/code>.&#xA;&lt;p>&#xA;The objects of the classes implementing &lt;code>Stroke&lt;/code>&#xA;must be read-only because &lt;code>Graphics2D&lt;/code> does not&#xA;clone these objects either when they are set as an attribute&#xA;with the &lt;code>setStroke&lt;/code> method or when the&#xA;&lt;code>Graphics2D&lt;/code> object is itself cloned.&#xA;If a &lt;code>Stroke&lt;/code> object is modified after it is set in&#xA;the &lt;code>Graphics2D&lt;/code> context then the behavior&#xA;of subsequent rendering would be undefined.&#xA;@see BasicStroke&#xA;@see Graphics2D#setStroke&#xA;@version 1.22, 12/19/03&#xA;" annotatedElement="59a461a4-0325-4f6e-ab25-483b0eade5af"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4d925b7b-d68e-4e13-b87b-98bdb93e9024" name="Component" clientDependency="65e9dc77-d382-4cd5-b0ed-6bc169c4388e bb86c6b6-7e63-4d6b-85b9-913b08b541ac e6355b3b-bca8-45e0-8a6e-153fa6988d8b" isAbstract="true">
            <ownedComment xmi:id="de4bb885-574c-4bb4-952a-acb37e3fba21" body="A &lt;em>component&lt;/em> is an object having a graphical representation&#xA;that can be displayed on the screen and that can interact with the&#xA;user. Examples of components are the buttons, checkboxes, and scrollbars&#xA;of a typical graphical user interface. &lt;p>&#xA;The &lt;code>Component&lt;/code> class is the abstract superclass of&#xA;the nonmenu-related Abstract Window Toolkit components. Class&#xA;&lt;code>Component&lt;/code> can also be extended directly to create a&#xA;lightweight component. A lightweight component is a component that is&#xA;not associated with a native opaque window.&#xA;&lt;p>&#xA;&lt;h3>Serialization&lt;/h3>&#xA;It is important to note that only AWT listeners which conform&#xA;to the &lt;code>Serializable&lt;/code> protocol will be saved when&#xA;the object is stored.  If an AWT object has listeners that&#xA;aren't marked serializable, they will be dropped at&#xA;&lt;code>writeObject&lt;/code> time.  Developers will need, as always,&#xA;to consider the implications of making an object serializable.&#xA;One situation to watch out for is this:&#xA;&lt;pre>&#xA;import java.awt.*;&#xA;import java.awt.event.*;&#xA;import java.io.Serializable;&#xA;&#xA;class MyApp implements ActionListener, Serializable&#xA;{&#xA;BigObjectThatShouldNotBeSerializedWithAButton bigOne;&#xA;Button aButton = new Button();&#xA;&#xA;MyApp()&#xA;{&#xA;Oops, now aButton has a listener with a reference&#xA;to bigOne!&#xA;aButton.addActionListener(this);&#xA;}&#xA;&#xA;public void actionPerformed(ActionEvent e)&#xA;{&#xA;System.out.println(&quot;Hello There&quot;);&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;In this example, serializing &lt;code>aButton&lt;/code> by itself&#xA;will cause &lt;code>MyApp&lt;/code> and everything it refers to&#xA;to be serialized as well.  The problem is that the listener&#xA;is serializable by coincidence, not by design.  To separate&#xA;the decisions about &lt;code>MyApp&lt;/code> and the&#xA;&lt;code>ActionListener&lt;/code> being serializable one can use a&#xA;nested class, as in the following example:&#xA;&lt;pre>&#xA;import java.awt.*;&#xA;import java.awt.event.*;&#xA;import java.io.Serializable;&#xA;&#xA;class MyApp java.io.Serializable&#xA;{&#xA;BigObjectThatShouldNotBeSerializedWithAButton bigOne;&#xA;Button aButton = new Button();&#xA;&#xA;class MyActionListener implements ActionListener&#xA;{&#xA;public void actionPerformed(ActionEvent e)&#xA;{&#xA;System.out.println(&quot;Hello There&quot;);&#xA;}&#xA;}&#xA;&#xA;MyApp()&#xA;{&#xA;aButton.addActionListener(new MyActionListener());&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&lt;p>&#xA;&lt;b>Note&lt;/b>: For more information on the paint mechanisms utilitized&#xA;by AWT and Swing, including information on how to write the most&#xA;efficient painting code, see&#xA;&lt;a href=&quot;http://java.sun.com/products/jfc/tsc/articles/painting/index.html&quot;>Painting in AWT and Swing&lt;/a>.&#xA;&lt;p>&#xA;For details on the focus subsystem, see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html&quot;>&#xA;How to Use the Focus Subsystem&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>, and the&#xA;&lt;a href=&quot;../../java/awt/doc-files/FocusSpec.html&quot;>Focus Specification&lt;/a>&#xA;for more information.&#xA;&#xA;@version     1.387, 06/18/04&#xA;@author      Arthur van Hoff&#xA;@author      Sami Shaio&#xA;" annotatedElement="4d925b7b-d68e-4e13-b87b-98bdb93e9024"/>
            <interfaceRealization xmi:id="65e9dc77-d382-4cd5-b0ed-6bc169c4388e" name="" supplier="72ede030-0691-4953-be91-11a6a0047536" client="4d925b7b-d68e-4e13-b87b-98bdb93e9024" contract="72ede030-0691-4953-be91-11a6a0047536"/>
            <interfaceRealization xmi:id="bb86c6b6-7e63-4d6b-85b9-913b08b541ac" name="" supplier="8e52e80c-2e25-4f4d-9f99-bdc0e420c2de" client="4d925b7b-d68e-4e13-b87b-98bdb93e9024" contract="8e52e80c-2e25-4f4d-9f99-bdc0e420c2de"/>
            <interfaceRealization xmi:id="e6355b3b-bca8-45e0-8a6e-153fa6988d8b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4d925b7b-d68e-4e13-b87b-98bdb93e9024" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="cc432440-1200-4fa7-b9c9-e2675b2b3065" name="AWTTreeLock" visibility="package"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="4ca602d5-d9f9-49d2-bfaa-3cee8948372e" name="FlipBufferStrategy" visibility="protected">
              <ownedComment xmi:id="31caac50-855d-48d0-9e61-86f089686e62" body="Inner class for flipping buffers on a component.  That component must&#xA;be a &lt;code>Canvas&lt;/code> or &lt;code>Window&lt;/code>.&#xA;@see Canvas&#xA;@see Window&#xA;@see java.awt.image.BufferStrategy&#xA;@author Michael Martak&#xA;@since 1.4&#xA;" annotatedElement="4ca602d5-d9f9-49d2-bfaa-3cee8948372e"/>
              <generalization xmi:id="347d12a4-af04-40a2-9c36-f70596b688cd" isSubstitutable="true" general="bf6bb345-0a6c-4067-afab-dfdb0fc407b3"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="0e8926ef-c251-4fff-beac-1d25b313dfa7" name="BltBufferStrategy" visibility="protected">
              <ownedComment xmi:id="db1bbecd-9cef-4be5-b0cc-367b14bc8d14" body="Inner class for blitting offscreen surfaces to a component.&#xA;&#xA;@author Michael Martak&#xA;@since 1.4&#xA;" annotatedElement="0e8926ef-c251-4fff-beac-1d25b313dfa7"/>
              <generalization xmi:id="98525822-3700-4d6b-ae7c-17e658e88eb4" isSubstitutable="true" general="bf6bb345-0a6c-4067-afab-dfdb0fc407b3"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="fcfa073b-e6b3-45c7-8ceb-aac36077b16e" name="SingleBufferStrategy" visibility="private">
              <ownedComment xmi:id="f0b2c564-6f89-4a6b-af37-83a4b05eab00" body="Inner class for flipping buffers on a component.  That component must&#xA;be a &lt;code>Canvas&lt;/code> or &lt;code>Window&lt;/code>.&#xA;@see Canvas&#xA;@see Window&#xA;@see java.awt.image.BufferStrategy&#xA;@author Michael Martak&#xA;@since 1.4&#xA;" annotatedElement="fcfa073b-e6b3-45c7-8ceb-aac36077b16e"/>
              <generalization xmi:id="0344a4fa-1401-4cae-9f1f-7f47ffd7e271" isSubstitutable="true" general="bf6bb345-0a6c-4067-afab-dfdb0fc407b3"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="0f9f88a6-5e16-4ab8-b3f2-cabf8226a395" name="NativeInLightFixer" visibility="package" clientDependency="2059febf-332d-4622-9335-324d1e6b0a5a bff730df-4004-4691-b7d9-156d748ff16b" isLeaf="true">
              <ownedComment xmi:id="a30335f6-f344-4e83-9780-f22b893040c2" body="This odd class is to help out a native component that has been&#xA;embedded in a lightweight component.  Moving lightweight&#xA;components around and changing their visibility is not seen&#xA;by the native window system.  This is a feature for lightweights,&#xA;but a problem for native components that depend upon the&#xA;lightweights.  An instance of this class listens to the lightweight&#xA;parents of an associated native component (the outer class).&#xA;&#xA;@author  Timothy Prinzing&#xA;" annotatedElement="0f9f88a6-5e16-4ab8-b3f2-cabf8226a395"/>
              <interfaceRealization xmi:id="bff730df-4004-4691-b7d9-156d748ff16b" name="" supplier="476f85cb-73d6-493e-8dda-f7ed06712460" client="0f9f88a6-5e16-4ab8-b3f2-cabf8226a395" contract="476f85cb-73d6-493e-8dda-f7ed06712460"/>
              <interfaceRealization xmi:id="2059febf-332d-4622-9335-324d1e6b0a5a" name="" supplier="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8" client="0f9f88a6-5e16-4ab8-b3f2-cabf8226a395" contract="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="e8a07816-0ac5-4ca1-990d-2e0e3f63e181" name="AccessibleAWTComponent" visibility="protected" clientDependency="a62e0da4-07f9-44a4-a60f-f51ae6059e09 aed1f22d-8895-4265-ba83-dc6eb7e1f327" isAbstract="true">
              <ownedComment xmi:id="97e46489-22eb-4e51-a969-04c2b97939a5" body="Inner class of Component used to provide default support for&#xA;accessibility.  This class is not meant to be used directly by&#xA;application developers, but is instead meant only to be&#xA;subclassed by component developers.&#xA;&lt;p>&#xA;The class used to obtain the accessible role for this object.&#xA;" annotatedElement="e8a07816-0ac5-4ca1-990d-2e0e3f63e181"/>
              <generalization xmi:id="1d4b82cc-0c79-40b7-8082-b80be18f55ac" isSubstitutable="true" general="5e5fecb3-251d-4b0e-b142-9f3aac1d4c57"/>
              <interfaceRealization xmi:id="aed1f22d-8895-4265-ba83-dc6eb7e1f327" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="e8a07816-0ac5-4ca1-990d-2e0e3f63e181" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="a62e0da4-07f9-44a4-a60f-f51ae6059e09" name="" supplier="a13045dc-df1a-4751-8aff-9b7e320e05bf" client="e8a07816-0ac5-4ca1-990d-2e0e3f63e181" contract="a13045dc-df1a-4751-8aff-9b7e320e05bf"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8db7d537-ef07-4a89-91be-4b2374deac54" name="AccessibleAWTComponentHandler" visibility="protected" clientDependency="58e9b625-a0ac-4bdb-bd39-7e61c2122130">
                <ownedComment xmi:id="641f83c2-bf7a-443b-bfa5-e811f0603013" body="Fire PropertyChange listener, if one is registered,&#xA;when shown/hidden..&#xA;" annotatedElement="8db7d537-ef07-4a89-91be-4b2374deac54"/>
                <interfaceRealization xmi:id="58e9b625-a0ac-4bdb-bd39-7e61c2122130" name="" supplier="476f85cb-73d6-493e-8dda-f7ed06712460" client="8db7d537-ef07-4a89-91be-4b2374deac54" contract="476f85cb-73d6-493e-8dda-f7ed06712460"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="922ef783-e79e-401f-b229-727086f1b19a" name="AccessibleAWTFocusHandler" visibility="protected" clientDependency="fa527ed8-8a69-4fee-9a05-cfedf9e907de">
                <ownedComment xmi:id="df5fafc3-fca8-4e80-9e81-e18da347da84" body="Fire PropertyChange listener, if one is registered,&#xA;when focus events happen&#xA;" annotatedElement="922ef783-e79e-401f-b229-727086f1b19a"/>
                <interfaceRealization xmi:id="fa527ed8-8a69-4fee-9a05-cfedf9e907de" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="922ef783-e79e-401f-b229-727086f1b19a" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
              </nestedClassifier>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="205796b4-482b-4eb8-842c-3917c5d4ae99" name="Checkbox" clientDependency="c2f83bca-e666-4c98-a4b2-8b4182cac9a7 9f03fa13-4bed-49a8-922a-e3a159fc0199">
            <ownedComment xmi:id="fc8f69e3-6f6d-4556-b0be-2c63e4bd433a" body="A check box is a graphical component that can be in either an&#xA;&quot;on&quot; (&lt;code>true&lt;/code>) or &quot;off&quot; (&lt;code>false&lt;/code>) state.&#xA;Clicking on a check box changes its state from&#xA;&quot;on&quot; to &quot;off,&quot; or from &quot;off&quot; to &quot;on.&quot;&#xA;&lt;p>&#xA;The following code example creates a set of check boxes in&#xA;a grid layout:&#xA;&lt;p>&#xA;&lt;hr>&lt;blockquote>&lt;pre>&#xA;setLayout(new GridLayout(3, 1));&#xA;add(new Checkbox(&quot;one&quot;, null, true));&#xA;add(new Checkbox(&quot;two&quot;));&#xA;add(new Checkbox(&quot;three&quot;));&#xA;&lt;/pre>&lt;/blockquote>&lt;hr>&#xA;&lt;p>&#xA;This image depicts the check boxes and grid layout&#xA;created by this code example:&#xA;&lt;p>&#xA;&lt;img src=&quot;doc-files/Checkbox-1.gif&quot; alt=&quot;The following context describes the graphic.&quot;&#xA;ALIGN=center HSPACE=10 VSPACE=7>&#xA;&lt;p>&#xA;The button labeled &lt;code>one&lt;/code> is in the &quot;on&quot; state, and the&#xA;other two are in the &quot;off&quot; state. In this example, which uses the&#xA;&lt;code>GridLayout&lt;/code> class, the states of the three check&#xA;boxes are set independently.&#xA;&lt;p>&#xA;Alternatively, several check boxes can be grouped together under&#xA;the control of a single object, using the&#xA;&lt;code>CheckboxGroup&lt;/code> class.&#xA;In a check box group, at most one button can be in the &quot;on&quot;&#xA;state at any given time. Clicking on a check box to turn it on&#xA;forces any other check box in the same group that is on&#xA;into the &quot;off&quot; state.&#xA;&#xA;@version&#x9;1.84 05/05/04&#xA;@author &#x9;Sami Shaio&#xA;@see         java.awt.GridLayout&#xA;@see         java.awt.CheckboxGroup&#xA;@since       JDK1.0&#xA;" annotatedElement="205796b4-482b-4eb8-842c-3917c5d4ae99"/>
            <generalization xmi:id="8bebf97b-6a70-4f84-b49f-45015a496df2" isSubstitutable="true" general="4d925b7b-d68e-4e13-b87b-98bdb93e9024"/>
            <interfaceRealization xmi:id="c2f83bca-e666-4c98-a4b2-8b4182cac9a7" name="" supplier="db09b331-737d-46b0-b88c-ec77f93dd925" client="205796b4-482b-4eb8-842c-3917c5d4ae99" contract="db09b331-737d-46b0-b88c-ec77f93dd925"/>
            <interfaceRealization xmi:id="9f03fa13-4bed-49a8-922a-e3a159fc0199" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="205796b4-482b-4eb8-842c-3917c5d4ae99" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="3afed454-e55b-47c3-a3db-245d16023fb2" name="AccessibleAWTCheckbox" visibility="protected" clientDependency="4fcfd15e-3e19-4429-9a0c-db0a1c0439a0 1831e341-506f-4808-b547-95747eec32f9 5a4be527-a814-4947-8108-c03dec00f40c">
              <ownedComment xmi:id="8b73a9a2-a0f4-4039-a704-3573bd1b5ead" body="This class implements accessibility support for the&#xA;&lt;code>Checkbox&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to checkbox user-interface elements.&#xA;" annotatedElement="3afed454-e55b-47c3-a3db-245d16023fb2"/>
              <generalization xmi:id="b1bcea71-bc0b-460a-8550-98f04026c3b1" isSubstitutable="true" general="e8a07816-0ac5-4ca1-990d-2e0e3f63e181"/>
              <interfaceRealization xmi:id="4fcfd15e-3e19-4429-9a0c-db0a1c0439a0" name="" supplier="1dd642cc-ad4c-43b8-91c1-a201cb5d8292" client="3afed454-e55b-47c3-a3db-245d16023fb2" contract="1dd642cc-ad4c-43b8-91c1-a201cb5d8292"/>
              <interfaceRealization xmi:id="1831e341-506f-4808-b547-95747eec32f9" name="" supplier="1f04210f-dd56-4dbb-861c-7a19813caf4c" client="3afed454-e55b-47c3-a3db-245d16023fb2" contract="1f04210f-dd56-4dbb-861c-7a19813caf4c"/>
              <interfaceRealization xmi:id="5a4be527-a814-4947-8108-c03dec00f40c" name="" supplier="48ff1225-61c7-495b-a398-c2903fb1210d" client="3afed454-e55b-47c3-a3db-245d16023fb2" contract="48ff1225-61c7-495b-a398-c2903fb1210d"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="353ee79a-f600-47ed-ad15-12524e1f8586" name="MenuItem" clientDependency="053b85fb-c9c8-4345-8935-3da97a2aca5f">
            <ownedComment xmi:id="814a786a-edcf-43ef-9b06-fc983bf10de8" body="All items in a menu must belong to the class&#xA;&lt;code>MenuItem&lt;/code>, or one of its subclasses.&#xA;&lt;p>&#xA;The default &lt;code>MenuItem&lt;/code> object embodies&#xA;a simple labeled menu item.&#xA;&lt;p>&#xA;This picture of a menu bar shows five menu items:&#xA;&lt;IMG SRC=&quot;doc-files/MenuBar-1.gif&quot; alt=&quot;The following text describes this graphic.&quot;&#xA;ALIGN=CENTER HSPACE=10 VSPACE=7>&#xA;&lt;br CLEAR=LEFT>&#xA;The first two items are simple menu items, labeled&#xA;&lt;code>&quot;Basic&quot;&lt;/code> and &lt;code>&quot;Simple&quot;&lt;/code>.&#xA;Following these two items is a separator, which is itself&#xA;a menu item, created with the label &lt;code>&quot;-&quot;&lt;/code>.&#xA;Next is an instance of &lt;code>CheckboxMenuItem&lt;/code>&#xA;labeled &lt;code>&quot;Check&quot;&lt;/code>. The final menu item is a&#xA;submenu labeled &lt;code>&quot;More&amp;nbsp;Examples&quot;&lt;/code>,&#xA;and this submenu is an instance of &lt;code>Menu&lt;/code>.&#xA;&lt;p>&#xA;When a menu item is selected, AWT sends an action event to&#xA;the menu item. Since the event is an&#xA;instance of &lt;code>ActionEvent&lt;/code>, the &lt;code>processEvent&lt;/code>&#xA;method examines the event and passes it along to&#xA;&lt;code>processActionEvent&lt;/code>. The latter method redirects the&#xA;event to any &lt;code>ActionListener&lt;/code> objects that have&#xA;registered an interest in action events generated by this&#xA;menu item.&#xA;&lt;P>&#xA;Note that the subclass &lt;code>Menu&lt;/code> overrides this behavior and&#xA;does not send any event to the frame until one of its subitems is&#xA;selected.&#xA;&#xA;@version 1.88, 05/18/04&#xA;@author Sami Shaio&#xA;" annotatedElement="353ee79a-f600-47ed-ad15-12524e1f8586"/>
            <generalization xmi:id="9e9b130a-4544-4db3-b0e0-11df82b5d024" isSubstitutable="true" general="20e690b8-90b8-4ba4-9d26-ee62b56b0463"/>
            <interfaceRealization xmi:id="053b85fb-c9c8-4345-8935-3da97a2aca5f" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="353ee79a-f600-47ed-ad15-12524e1f8586" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="81ddf40d-e8b3-468e-94ef-75dd0a5b1e8c" name="AccessibleAWTMenuItem" visibility="protected" clientDependency="b6d3d0de-371d-4b65-b6c5-d68c998a91a4 7197ff5d-15f8-4390-9bbc-9332b89e6d89">
              <ownedComment xmi:id="0994c39f-57e2-4fef-afea-6e6ab5d8fb81" body="Inner class of MenuItem used to provide default support for&#xA;accessibility.  This class is not meant to be used directly by&#xA;application developers, but is instead meant only to be&#xA;subclassed by menu component developers.&#xA;&lt;p>&#xA;This class implements accessibility support for the&#xA;&lt;code>MenuItem&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to menu item user-interface elements.&#xA;" annotatedElement="81ddf40d-e8b3-468e-94ef-75dd0a5b1e8c"/>
              <generalization xmi:id="ebaf4c65-54a5-4bf4-bae7-5d65cf7bdad4" isSubstitutable="true" general="d2222e9d-77ab-4e2d-8380-aae50ae771b8"/>
              <interfaceRealization xmi:id="b6d3d0de-371d-4b65-b6c5-d68c998a91a4" name="" supplier="1f04210f-dd56-4dbb-861c-7a19813caf4c" client="81ddf40d-e8b3-468e-94ef-75dd0a5b1e8c" contract="1f04210f-dd56-4dbb-861c-7a19813caf4c"/>
              <interfaceRealization xmi:id="7197ff5d-15f8-4390-9bbc-9332b89e6d89" name="" supplier="48ff1225-61c7-495b-a398-c2903fb1210d" client="81ddf40d-e8b3-468e-94ef-75dd0a5b1e8c" contract="48ff1225-61c7-495b-a398-c2903fb1210d"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="462af831-74c5-4e61-b619-6af0b4d6069a" name="event">
            <packagedElement xmi:type="uml:Interface" xmi:id="d0d97f9c-d8a0-4583-b30e-176f42c3f7e7" name="KeyListener" isAbstract="true">
              <ownedComment xmi:id="5d3f153c-6295-4548-8b40-009b9a8e940e" body="The listener interface for receiving keyboard events (keystrokes).&#xA;The class that is interested in processing a keyboard event&#xA;either implements this interface (and all the methods it&#xA;contains) or extends the abstract &lt;code>KeyAdapter&lt;/code> class&#xA;(overriding only the methods of interest).&#xA;&lt;P>&#xA;The listener object created from that class is then registered with a&#xA;component using the component's &lt;code>addKeyListener&lt;/code>&#xA;method. A keyboard event is generated when a key is pressed, released,&#xA;or typed. The relevant method in the listener&#xA;object is then invoked, and the &lt;code>KeyEvent&lt;/code> is passed to it.&#xA;&#xA;@author Carl Quinn&#xA;@version 1.18 12/19/03&#xA;&#xA;@see KeyAdapter&#xA;@see KeyEvent&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/keylistener.html&quot;>Tutorial: Writing a Key Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@since 1.1&#xA;" annotatedElement="d0d97f9c-d8a0-4583-b30e-176f42c3f7e7"/>
              <generalization xmi:id="bc0a9186-9614-4acc-aadf-47ae49b2365a" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5bb31d90-0c65-4c6c-802e-294add78dc85" name="PaintEvent">
              <ownedComment xmi:id="a41e6314-8d56-4a89-9665-c61cf44c9362" body="The component-level paint event.&#xA;This event is a special type which is used to ensure that&#xA;paint/update method calls are serialized along with the other&#xA;events delivered from the event queue.  This event is not&#xA;designed to be used with the Event Listener model; programs&#xA;should continue to override paint/update methods in order&#xA;render themselves properly.&#xA;&#xA;@author Amy Fowler&#xA;@version 1.20, 12/19/03&#xA;@since 1.1&#xA;" annotatedElement="5bb31d90-0c65-4c6c-802e-294add78dc85"/>
              <generalization xmi:id="0e120a62-63b0-453e-a6e1-ce81b6460caa" isSubstitutable="true" general="4da432f5-a62a-400d-ba1c-65a9a1bd1818"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="c4e4a91d-3aeb-48b7-836b-feaf66fc4ce9" name="HierarchyListener" isAbstract="true">
              <ownedComment xmi:id="e6e99840-6a1a-4ebf-91df-5a0a8962b748" body="The listener interface for receiving hierarchy changed events.&#xA;The class that is interested in processing a hierarchy changed event&#xA;should implement this interface.&#xA;The listener object created from that class is then registered with a&#xA;Component using the Component's &lt;code>addHierarchyListener&lt;/code>&#xA;method. When the hierarchy to which the Component belongs changes, the&#xA;&lt;code>hierarchyChanged&lt;/code> method in the listener object is invoked,&#xA;and the &lt;code>HierarchyEvent&lt;/code> is passed to it.&#xA;&lt;p>&#xA;Hierarchy events are provided for notification purposes ONLY;&#xA;The AWT will automatically handle changes to the hierarchy internally so&#xA;that GUI layout, displayability, and visibility work properly regardless&#xA;of whether a program registers a &lt;code>HierarchyListener&lt;/code> or not.&#xA;&#xA;@author&#x9;David Mendenhall&#xA;@version&#x9;1.8, 12/19/03&#xA;@see&#x9;&#x9;HierarchyEvent&#xA;@since &#x9;1.3&#xA;" annotatedElement="c4e4a91d-3aeb-48b7-836b-feaf66fc4ce9"/>
              <generalization xmi:id="00143e73-8023-4aef-844b-01dba973ccec" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="1dd642cc-ad4c-43b8-91c1-a201cb5d8292" name="ItemListener" isAbstract="true">
              <ownedComment xmi:id="286c3a45-e67e-44c4-9949-cf87f42d9cdf" body="The listener interface for receiving item events.&#xA;The class that is interested in processing an item event&#xA;implements this interface. The object created with that&#xA;class is then registered with a component using the&#xA;component's &lt;code>addItemListener&lt;/code> method. When an&#xA;item-selection event occurs, the listener object's&#xA;&lt;code>itemStateChanged&lt;/code> method is invoked.&#xA;&#xA;@author Amy Fowler&#xA;@version 1.18 12/19/03&#xA;&#xA;@see java.awt.ItemSelectable&#xA;@see ItemEvent&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/itemlistener.html&quot;>Tutorial: Writing an Item Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@since 1.1&#xA;" annotatedElement="1dd642cc-ad4c-43b8-91c1-a201cb5d8292"/>
              <generalization xmi:id="c704a77f-6974-4ce3-a96e-a0180df73817" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5c8dfea9-baf1-4552-a38a-6df557e54ef2" name="ContainerEvent">
              <ownedComment xmi:id="bd20179c-3026-44db-ac75-98891105564f" body="A low-level event which indicates that a container's contents&#xA;changed because a component was added or removed.&#xA;&lt;P>&#xA;Container events are provided for notification purposes ONLY;&#xA;The AWT will automatically handle changes to the containers&#xA;contents internally so that the program works properly regardless of&#xA;whether the program is receiving these events or not.&#xA;&lt;P>&#xA;This low-level event is generated by a container object (such as a&#xA;Panel) when a component is added to it or removed from it.&#xA;The event is passed to every &lt;code>ContainerListener&lt;/code>&#xA;or &lt;code>ContainerAdapter&lt;/code> object which registered to receive such&#xA;events using the component's &lt;code>addContainerListener&lt;/code> method.&#xA;(&lt;code>ContainerAdapter&lt;/code> objects implement the&#xA;&lt;code>ContainerListener&lt;/code> interface.) Each such listener object&#xA;gets this &lt;code>ContainerEvent&lt;/code> when the event occurs.&#xA;&#xA;@see ContainerAdapter&#xA;@see ContainerListener&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/containerlistener.html&quot;>Tutorial: Writing a Container Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@author Tim Prinzing&#xA;@author Amy Fowler&#xA;@version 1.18 12/19/03&#xA;@since 1.1&#xA;" annotatedElement="5c8dfea9-baf1-4552-a38a-6df557e54ef2"/>
              <generalization xmi:id="cc1d9e75-8f41-49d0-bcef-bf522e3729ee" isSubstitutable="true" general="4da432f5-a62a-400d-ba1c-65a9a1bd1818"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="10e4e6c3-2cab-452a-8c68-e73d26025126" name="WindowEvent">
              <ownedComment xmi:id="10949709-c2ca-442b-8609-e67bd0f5d4ce" body="A low-level event that indicates that a window has changed its status. This&#xA;low-level event is generated by a Window object when it is opened, closed,&#xA;activated, deactivated, iconified, or deiconified, or when focus is&#xA;transfered into or out of the Window.&#xA;&lt;P>&#xA;The event is passed to every &lt;code>WindowListener&lt;/code>&#xA;or &lt;code>WindowAdapter&lt;/code> object which registered to receive such&#xA;events using the window's &lt;code>addWindowListener&lt;/code> method.&#xA;(&lt;code>WindowAdapter&lt;/code> objects implement the&#xA;&lt;code>WindowListener&lt;/code> interface.) Each such listener object&#xA;gets this &lt;code>WindowEvent&lt;/code> when the event occurs.&#xA;&#xA;@author Carl Quinn&#xA;@author Amy Fowler&#xA;@version 1.34, 12/19/03&#xA;&#xA;@see WindowAdapter&#xA;@see WindowListener&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/windowlistener.html&quot;>Tutorial: Writing a Window Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@since JDK1.1&#xA;" annotatedElement="10e4e6c3-2cab-452a-8c68-e73d26025126"/>
              <generalization xmi:id="e026d846-45cf-4063-a5b3-8f31c8295fcb" isSubstitutable="true" general="4da432f5-a62a-400d-ba1c-65a9a1bd1818"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a5061c34-2297-4cd7-9141-0337cb55d0ee" name="InvocationEvent" clientDependency="34535e45-c593-4770-a65b-d91e08bfe230">
              <ownedComment xmi:id="47d9739e-ae8c-47fa-9474-f7442c39d9bb" body="An event which executes the &lt;code>run()&lt;/code> method on a &lt;code>Runnable&#xA;&lt;/code> when dispatched by the AWT event dispatcher thread. This class can&#xA;be used as a reference implementation of &lt;code>ActiveEvent&lt;/code> rather&#xA;than declaring a new class and defining &lt;code>dispatch()&lt;/code>.&lt;p>&#xA;&#xA;Instances of this class are placed on the &lt;code>EventQueue&lt;/code> by calls&#xA;to &lt;code>invokeLater&lt;/code> and &lt;code>invokeAndWait&lt;/code>. Client code&#xA;can use this fact to write replacement functions for &lt;code>invokeLater&#xA;&lt;/code> and &lt;code>invokeAndWait&lt;/code> without writing special-case code&#xA;in any &lt;code>AWTEventListener&lt;/code> objects.&#xA;&#xA;@author&#x9;Fred Ecks&#xA;@author&#x9;David Mendenhall&#xA;@version&#x9;1.18, 02/05/04&#xA;&#xA;@see&#x9;&#x9;java.awt.ActiveEvent&#xA;@see&#x9;&#x9;java.awt.EventQueue#invokeLater&#xA;@see&#x9;&#x9;java.awt.EventQueue#invokeAndWait&#xA;@see&#x9;&#x9;AWTEventListener&#xA;&#xA;@since &#x9;1.2&#xA;" annotatedElement="a5061c34-2297-4cd7-9141-0337cb55d0ee"/>
              <generalization xmi:id="099d2184-eb79-4fa4-9cad-c953ddc48f8f" isSubstitutable="true" general="dc3e23e7-09df-4daf-b0e1-0ea40dc8c9ee"/>
              <interfaceRealization xmi:id="34535e45-c593-4770-a65b-d91e08bfe230" name="" supplier="d01349b1-01dd-475a-9c96-0be46c8b820f" client="a5061c34-2297-4cd7-9141-0337cb55d0ee" contract="d01349b1-01dd-475a-9c96-0be46c8b820f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="dd49882a-599d-4f6d-8bd0-46e7e982719b" name="FocusEvent">
              <ownedComment xmi:id="58398842-e258-48a4-8d3e-609e0f57fbdc" body="A low-level event which indicates that a Component has gained or lost the&#xA;input focus. This low-level event is generated by a Component (such as a&#xA;TextField). The event is passed to every &lt;code>FocusListener&lt;/code> or&#xA;&lt;code>FocusAdapter&lt;/code> object which registered to receive such events&#xA;using the Component's &lt;code>addFocusListener&lt;/code> method. (&lt;code>&#xA;FocusAdapter&lt;/code> objects implement the &lt;code>FocusListener&lt;/code>&#xA;interface.) Each such listener object gets this &lt;code>FocusEvent&lt;/code> when&#xA;the event occurs.&#xA;&lt;p>&#xA;There are two levels of focus events: permanent and temporary. Permanent&#xA;focus change events occur when focus is directly moved from one Component to&#xA;another, such as through a call to requestFocus() or as the user uses the&#xA;TAB key to traverse Components. Temporary focus change events occur when&#xA;focus is temporarily lost for a Component as the indirect result of another&#xA;operation, such as Window deactivation or a Scrollbar drag. In this case,&#xA;the original focus state will automatically be restored once that operation&#xA;is finished, or, for the case of Window deactivation, when the Window is&#xA;reactivated. Both permanent and temporary focus events are delivered using&#xA;the FOCUS_GAINED and FOCUS_LOST event ids; the level may be distinguished in&#xA;the event using the isTemporary() method.&#xA;&#xA;@see FocusAdapter&#xA;@see FocusListener&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/focuslistener.html&quot;>Tutorial: Writing a Focus Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@author Carl Quinn&#xA;@author Amy Fowler&#xA;@version 1.30 12/19/03&#xA;@since 1.1&#xA;" annotatedElement="dd49882a-599d-4f6d-8bd0-46e7e982719b"/>
              <generalization xmi:id="972d02b8-eba3-4173-9e5d-f2b4dc256a79" isSubstitutable="true" general="4da432f5-a62a-400d-ba1c-65a9a1bd1818"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="73ccb2d2-1c8e-47dd-9fab-585b6c335dcf" name="KeyEvent">
              <ownedComment xmi:id="4319c97a-ee50-41e4-91d0-0c8e3479d82f" body="An event which indicates that a keystroke occurred in a component.&#xA;&lt;p>&#xA;This low-level event is generated by a component object (such as a text&#xA;field) when a key is pressed, released, or typed.&#xA;The event is passed to every &lt;code>KeyListener&lt;/code>&#xA;or &lt;code>KeyAdapter&lt;/code> object which registered to receive such&#xA;events using the component's &lt;code>addKeyListener&lt;/code> method.&#xA;(&lt;code>KeyAdapter&lt;/code> objects implement the&#xA;&lt;code>KeyListener&lt;/code> interface.)  Each such listener object&#xA;gets this &lt;code>KeyEvent&lt;/code> when the event occurs.&#xA;&lt;p>&#xA;&lt;em>&quot;Key typed&quot; events&lt;/em> are higher-level and generally do not depend on&#xA;the platform or keyboard layout.  They are generated when a Unicode character&#xA;is entered, and are the preferred way to find out about character input.&#xA;In the simplest case, a key typed event is produced by a single key press&#xA;(e.g., 'a').  Often, however, characters are produced by series of key&#xA;presses (e.g., 'shift' + 'a'), and the mapping from key pressed events to&#xA;key typed events may be many-to-one or many-to-many.  Key releases are not&#xA;usually necessary to generate a key typed event, but there are some cases&#xA;where the key typed event is not generated until a key is released (e.g.,&#xA;entering ASCII sequences via the Alt-Numpad method in Windows).&#xA;No key typed events are generated for keys that don't generate Unicode&#xA;characters (e.g., action keys, modifier keys, etc.).&#xA;&lt;p>&#xA;The getKeyChar method always returns a valid Unicode character or&#xA;CHAR_UNDEFINED.  Character input is reported by KEY_TYPED events:&#xA;KEY_PRESSED and KEY_RELEASED events are not necessarily associated&#xA;with character input.  Therefore, the result of the getKeyChar method&#xA;is guaranteed to be meaningful only for KEY_TYPED events.&#xA;&lt;p>&#xA;For key pressed and key released events, the getKeyCode method returns&#xA;the event's keyCode.  For key typed events, the getKeyCode method&#xA;always returns VK_UNDEFINED.&#xA;&#xA;&lt;p>&#xA;&lt;em>&quot;Key pressed&quot; and &quot;key released&quot; events&lt;/em> are lower-level and depend&#xA;on the platform and keyboard layout. They are generated whenever a key is&#xA;pressed or released, and are the only way to find out about keys that don't&#xA;generate character input (e.g., action keys, modifier keys, etc.). The key&#xA;being pressed or released is indicated by the getKeyCode method, which returns&#xA;a virtual key code.&#xA;&#xA;&lt;p>&#xA;&lt;em>Virtual key codes&lt;/em> are used to report which keyboard key has&#xA;been pressed, rather than a character generated by the combination&#xA;of one or more keystrokes (such as &quot;A&quot;, which comes from shift and &quot;a&quot;).&#xA;&#xA;&lt;p>&#xA;For example, pressing the Shift key will cause a KEY_PRESSED event&#xA;with a VK_SHIFT keyCode, while pressing the 'a' key will result in&#xA;a VK_A keyCode.  After the 'a' key is released, a KEY_RELEASED event&#xA;will be fired with VK_A. Separately, a KEY_TYPED event with a keyChar&#xA;value of 'A' is generated.&#xA;&#xA;&lt;p>&#xA;Notes:&#xA;&lt;ul>&#xA;&lt;li>Key combinations which do not result in Unicode characters, such as action&#xA;keys like F1 and the HELP key, do not generate KEY_TYPED events.&#xA;&lt;li>Not all keyboards or systems are capable of generating all&#xA;virtual key codes.  No attempt is made in Java to generate these keys&#xA;artificially.&#xA;&lt;li>Virtual key codes do not identify a physical key: they depend on the&#xA;platform and keyboard layout. For example, the key that generates VK_Q&#xA;when using a U.S. keyboard layout will generate VK_A when using a French&#xA;keyboard layout.&#xA;&lt;li>Not all characters have a keycode associated with them.  For example,&#xA;there is no keycode for the question mark because there is no keyboard&#xA;for which it appears on the primary layer.&#xA;&lt;li>In order to support the platform-independent handling of action keys,&#xA;the Java platform uses a few additional virtual key constants for functions&#xA;that would otherwise have to be recognized by interpreting virtual key codes&#xA;and modifiers. For example, for Japanese Windows keyboards, VK_ALL_CANDIDATES&#xA;is returned instead of VK_CONVERT with the ALT modifier.&#xA;&lt;/ul>&#xA;&#xA;&lt;p>&#xA;WARNING: Aside from those keys that are defined by the Java language&#xA;(VK_ENTER, VK_BACK_SPACE, and VK_TAB), do not rely on the values of the VK_&#xA;constants.  Sun reserves the right to change these values as needed&#xA;to accomodate a wider range of keyboards in the future.&#xA;&#xA;@author Carl Quinn&#xA;@author Amy Fowler&#xA;@author Norbert Lindenberg&#xA;@version 1.75 05/18/04&#xA;&#xA;@see KeyAdapter&#xA;@see KeyListener&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/keylistener.html&quot;>Tutorial: Writing a Key Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@since 1.1&#xA;" annotatedElement="73ccb2d2-1c8e-47dd-9fab-585b6c335dcf"/>
              <generalization xmi:id="c55b51da-bf79-47d2-8f4c-c46545d440cb" isSubstitutable="true" general="7cd59f25-4403-4abb-9972-8a4a7a6d268d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2dfddc1a-97de-4f4b-ba4d-1d7f79cba599" name="TextEvent">
              <ownedComment xmi:id="93298505-63fd-4756-a7db-2c7ec4ba3deb" body="A semantic event which indicates that an object's text changed.&#xA;This high-level event is generated by an object (such as a TextComponent)&#xA;when its text changes. The event is passed to&#xA;every &lt;code>TextListener&lt;/code> object which registered to receive such&#xA;events using the component's &lt;code>addTextListener&lt;/code> method.&#xA;&lt;P>&#xA;The object that implements the &lt;code>TextListener&lt;/code> interface gets&#xA;this &lt;code>TextEvent&lt;/code> when the event occurs. The listener is&#xA;spared the details of processing individual mouse movements and key strokes&#xA;Instead, it can process a &quot;meaningful&quot; (semantic) event like &quot;text changed&quot;.&#xA;&#xA;@author Georges Saab&#xA;@version 1.16 12/19/03&#xA;&#xA;@see java.awt.TextComponent&#xA;@see TextListener&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/textlistener.html&quot;>Tutorial: Writing a Text Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@since 1.1&#xA;" annotatedElement="2dfddc1a-97de-4f4b-ba4d-1d7f79cba599"/>
              <generalization xmi:id="b0989f34-3e3f-408b-87d8-3b99237ccd91" isSubstitutable="true" general="dc3e23e7-09df-4daf-b0e1-0ea40dc8c9ee"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="74331044-3525-424b-b9bc-44661d0d96a6" name="MouseEvent">
              <ownedComment xmi:id="6d2310b7-a6f0-44b4-a5f7-17a50067b17f" body="An event which indicates that a mouse action occurred in a component.&#xA;A mouse action is considered to occur in a particular component if and only&#xA;if the mouse cursor is over the unobscured part of the component's bounds&#xA;when the action happens.&#xA;Component bounds can be obscurred by the visible component's children or by a&#xA;menu or by a top-level window.&#xA;This event is used both for mouse events (click, enter, exit) and mouse&#xA;motion events (moves and drags).&#xA;&lt;P>&#xA;This low-level event is generated by a component object for:&#xA;&lt;ul>&#xA;&lt;li>Mouse Events&#xA;&lt;ul>&#xA;&lt;li>a mouse button is pressed&#xA;&lt;li>a mouse button is released&#xA;&lt;li>a mouse button is clicked (pressed and released)&#xA;&lt;li>the mouse cursor enters the unobscured part of component's geometry&#xA;&lt;li>the mouse cursor exits the unobscured part of component's geometry&#xA;&lt;/ul>&#xA;&lt;li> Mouse Motion Events&#xA;&lt;ul>&#xA;&lt;li>the mouse is moved&#xA;&lt;li>the mouse is dragged&#xA;&lt;/ul>&#xA;&lt;/ul>&#xA;&lt;P>&#xA;A &lt;code>MouseEvent&lt;/code> object is passed to every&#xA;&lt;code>MouseListener&lt;/code>&#xA;or &lt;code>MouseAdapter&lt;/code> object which is registered to receive&#xA;the &quot;interesting&quot; mouse events using the component's&#xA;&lt;code>addMouseListener&lt;/code> method.&#xA;(&lt;code>MouseAdapter&lt;/code> objects implement the&#xA;&lt;code>MouseListener&lt;/code> interface.) Each such listener object&#xA;gets a &lt;code>MouseEvent&lt;/code> containing the mouse event.&#xA;&lt;P>&#xA;A &lt;code>MouseEvent&lt;/code> object is also passed to every&#xA;&lt;code>MouseMotionListener&lt;/code> or&#xA;&lt;code>MouseMotionAdapter&lt;/code> object which is registered to receive&#xA;mouse motion events using the component's&#xA;&lt;code>addMouseMotionListener&lt;/code>&#xA;method. (&lt;code>MouseMotionAdapter&lt;/code> objects implement the&#xA;&lt;code>MouseMotionListener&lt;/code> interface.) Each such listener object&#xA;gets a &lt;code>MouseEvent&lt;/code> containing the mouse motion event.&#xA;&lt;P>&#xA;When a mouse button is clicked, events are generated and sent to the&#xA;registered &lt;code>MouseListener&lt;/code>s.&#xA;The state of modal keys can be retrieved using {@link InputEvent#getModifiers}&#xA;and {@link InputEvent#getModifiersEx}.&#xA;The button mask returned by {@link InputEvent#getModifiers} reflects&#xA;only the button that changed state, not the current state of all buttons.&#xA;(Note: Due to overlap in the values of ALT_MASK/BUTTON2_MASK and&#xA;META_MASK/BUTTON3_MASK, this is not always true for mouse events involving&#xA;modifier keys).&#xA;To get the state of all buttons and modifier keys, use&#xA;{@link InputEvent#getModifiersEx}.&#xA;The button which has changed state is returned by {@link MouseEvent#getButton}&#xA;&lt;P>&#xA;For example, if the first mouse button is pressed, events are sent in the&#xA;following order:&#xA;&lt;PRE>&#xA;&lt;b   >id           &lt;/b   >   &lt;b   >modifiers   &lt;/b   > &lt;b   >button &lt;/b   >&#xA;&lt;code>MOUSE_PRESSED&lt;/code>:  &lt;code>BUTTON1_MASK&lt;/code> &lt;code>BUTTON1&lt;/code>&#xA;&lt;code>MOUSE_RELEASED&lt;/code>: &lt;code>BUTTON1_MASK&lt;/code> &lt;code>BUTTON1&lt;/code>&#xA;&lt;code>MOUSE_CLICKED&lt;/code>:  &lt;code>BUTTON1_MASK&lt;/code> &lt;code>BUTTON1&lt;/code>&#xA;&lt;/PRE>&#xA;When multiple mouse buttons are pressed, each press, release, and click&#xA;results in a separate event.&#xA;&lt;P>&#xA;For example, if the user presses &lt;b>button 1&lt;/b> followed by&#xA;&lt;b>button 2&lt;/b>, and then releases them in the same order,&#xA;the following sequence of events is generated:&#xA;&lt;PRE>&#xA;&lt;b   >id           &lt;/b   >   &lt;b   >modifiers   &lt;/b   > &lt;b   >button &lt;/b   >&#xA;&lt;code>MOUSE_PRESSED&lt;/code>:  &lt;code>BUTTON1_MASK&lt;/code> &lt;code>BUTTON1&lt;/code>&#xA;&lt;code>MOUSE_PRESSED&lt;/code>:  &lt;code>BUTTON2_MASK&lt;/code> &lt;code>BUTTON2&lt;/code>&#xA;&lt;code>MOUSE_RELEASED&lt;/code>: &lt;code>BUTTON1_MASK&lt;/code> &lt;code>BUTTON1&lt;/code>&#xA;&lt;code>MOUSE_CLICKED&lt;/code>:  &lt;code>BUTTON1_MASK&lt;/code> &lt;code>BUTTON1&lt;/code>&#xA;&lt;code>MOUSE_RELEASED&lt;/code>: &lt;code>BUTTON2_MASK&lt;/code> &lt;code>BUTTON2&lt;/code>&#xA;&lt;code>MOUSE_CLICKED&lt;/code>:  &lt;code>BUTTON2_MASK&lt;/code> &lt;code>BUTTON2&lt;/code>&#xA;&lt;/PRE>&#xA;If &lt;b>button 2&lt;/b> is released first, the&#xA;&lt;code>MOUSE_RELEASED&lt;/code>/&lt;code>MOUSE_CLICKED&lt;/code> pair&#xA;for &lt;code>BUTTON2_MASK&lt;/code> arrives first,&#xA;followed by the pair for &lt;code>BUTTON1_MASK&lt;/code>.&#xA;&lt;p>&#xA;&#xA;&lt;code>MOUSE_DRAGGED&lt;/code> events are delivered to the &lt;code>Component&lt;/code>&#xA;in which the mouse button was pressed until the mouse button is released&#xA;(regardless of whether the mouse position is within the bounds of the&#xA;&lt;code>Component&lt;/code>).  Due to platform-dependent Drag&amp;Drop implementations,&#xA;&lt;code>MOUSE_DRAGGED&lt;/code> events may not be delivered during a native&#xA;Drag&amp;Drop operation.&#xA;&#xA;In a multi-screen environment mouse drag events are delivered to the&#xA;&lt;code>Component&lt;/code> even if the mouse position is outside the bounds of the&#xA;&lt;code>GraphicsConfiguration&lt;/code> associated with that&#xA;&lt;code>Component&lt;/code>. However, the reported position for mouse drag events&#xA;in this case may differ from the actual mouse position:&#xA;&lt;ul>&#xA;&lt;li>In a multi-screen environment without a virtual device:&#xA;&lt;br>&#xA;The reported coordinates for mouse drag events are clipped to fit within the&#xA;bounds of the &lt;code>GraphicsConfiguration&lt;/code> associated with&#xA;the &lt;code>Component&lt;/code>.&#xA;&lt;li>In a multi-screen environment with a virtual device:&#xA;&lt;br>&#xA;The reported coordinates for mouse drag events are clipped to fit within the&#xA;bounds of the virtual device associated with the &lt;code>Component&lt;/code>.&#xA;&lt;/ul>&#xA;&#xA;@author Carl Quinn&#xA;1.49, 12/19/03&#xA;&#xA;@see MouseAdapter&#xA;@see MouseListener&#xA;@see MouseMotionAdapter&#xA;@see MouseMotionListener&#xA;@see MouseWheelListener&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/mouselistener.html&quot;>Tutorial: Writing a Mouse Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/mousemotionlistener.html&quot;>Tutorial: Writing a Mouse Motion Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@since 1.1&#xA;" annotatedElement="74331044-3525-424b-b9bc-44661d0d96a6"/>
              <generalization xmi:id="954f288e-25a9-4a1d-8ba2-935718ad25ef" isSubstitutable="true" general="7cd59f25-4403-4abb-9972-8a4a7a6d268d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c265bb0a-6dff-42cf-a129-02e80f45c683" name="ContainerAdapter" clientDependency="4c36c0be-b566-4313-b816-0e4239bb189f" isAbstract="true">
              <ownedComment xmi:id="9cf426ac-cd91-4054-ba5c-272aa3f227ef" body="An abstract adapter class for receiving container events.&#xA;The methods in this class are empty. This class exists as&#xA;convenience for creating listener objects.&#xA;&lt;P>&#xA;Extend this class to create a &lt;code>ContainerEvent&lt;/code> listener&#xA;and override the methods for the events of interest. (If you implement the&#xA;&lt;code>ContainerListener&lt;/code> interface, you have to define all of&#xA;the methods in it. This abstract class defines null methods for them&#xA;all, so you can only have to define methods for events you care about.)&#xA;&lt;P>&#xA;Create a listener object using the extended class and then register it with&#xA;a component using the component's &lt;code>addContainerListener&lt;/code>&#xA;method. When the container's contents change because a component has&#xA;been added or removed, the relevant method in the listener object is invoked,&#xA;and the &lt;code>ContainerEvent&lt;/code> is passed to it.&#xA;&#xA;@see ContainerEvent&#xA;@see ContainerListener&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/containerlistener.html&quot;>Tutorial: Writing a Container Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@author Amy Fowler&#xA;@version 1.12 12/19/03&#xA;@since 1.1&#xA;" annotatedElement="c265bb0a-6dff-42cf-a129-02e80f45c683"/>
              <interfaceRealization xmi:id="4c36c0be-b566-4313-b816-0e4239bb189f" name="" supplier="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8" client="c265bb0a-6dff-42cf-a129-02e80f45c683" contract="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f25bf0b3-ab24-4482-b370-ffa198e3dea2" name="MouseWheelEvent">
              <ownedComment xmi:id="8b03a638-f8e3-4b14-88ea-37d6ac5bab40" body="An event which indicates that the mouse wheel was rotated in a component.&#xA;&lt;P>&#xA;A wheel mouse is a mouse which has a wheel in place of the middle button.&#xA;This wheel can be rotated towards or away from the user.  Mouse wheels are&#xA;most often used for scrolling, though other uses are possible.&#xA;&lt;P>&#xA;A MouseWheelEvent object is passed to every &lt;code>MouseWheelListener&lt;/code>&#xA;object which registered to receive the &quot;interesting&quot; mouse events using the&#xA;component's &lt;code>addMouseWheelListener&lt;/code> method.  Each such listener&#xA;object gets a &lt;code>MouseEvent&lt;/code> containing the mouse event.&#xA;&lt;P>&#xA;Due to the mouse wheel's special relationship to scrolling Components,&#xA;MouseWheelEvents are delivered somewhat differently than other MouseEvents.&#xA;This is because while other MouseEvents usually affect a change on&#xA;the Component directly under the mouse&#xA;cursor (for instance, when clicking a button), MouseWheelEvents often have&#xA;an effect away from the mouse cursor (moving the wheel while&#xA;over a Component inside a ScrollPane should scroll one of the&#xA;Scrollbars on the ScrollPane).&#xA;&lt;P>&#xA;MouseWheelEvents start delivery from the Component underneath the&#xA;mouse cursor.  If MouseWheelEvents are not enabled on the&#xA;Component, the event is delivered to the first ancestor&#xA;Container with MouseWheelEvents enabled.  This will usually be&#xA;a ScrollPane with wheel scrolling enabled.  The source&#xA;Component and x,y coordinates will be relative to the event's&#xA;final destination (the ScrollPane).  This allows a complex&#xA;GUI to be installed without modification into a ScrollPane, and&#xA;for all MouseWheelEvents to be delivered to the ScrollPane for&#xA;scrolling.&#xA;&lt;P>&#xA;Some AWT Components are implemented using native widgets which&#xA;display their own scrollbars and handle their own scrolling.&#xA;The particular Components for which this is true will vary from&#xA;platform to platform.  When the mouse wheel is&#xA;moved over one of these Components, the event is delivered straight to&#xA;the native widget, and not propagated to ancestors.&#xA;&lt;P>&#xA;Platforms offer customization of the amount of scrolling that&#xA;should take place when the mouse wheel is moved.  The two most&#xA;common settings are to scroll a certain number of &quot;units&quot;&#xA;(commonly lines of text in a text-based component) or an entire &quot;block&quot;&#xA;(similar to page-up/page-down).  The MouseWheelEvent offers&#xA;methods for conforming to the underlying platform settings.  These&#xA;platform settings can be changed at any time by the user.  MouseWheelEvents&#xA;reflect the most recent settings.&#xA;&#xA;@author Brent Christian&#xA;@version 1.9 12/19/03&#xA;@see MouseWheelListener&#xA;@see java.awt.ScrollPane&#xA;@see java.awt.ScrollPane#setWheelScrollingEnabled(boolean)&#xA;@see javax.swing.JScrollPane&#xA;@see javax.swing.JScrollPane#setWheelScrollingEnabled(boolean)&#xA;@since 1.4&#xA;" annotatedElement="f25bf0b3-ab24-4482-b370-ffa198e3dea2"/>
              <generalization xmi:id="7044fd53-8296-4102-b030-f94c8d0960fb" isSubstitutable="true" general="74331044-3525-424b-b9bc-44661d0d96a6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4f4f75e7-42ae-4792-a8d3-efa24fbec1b6" name="KeyAdapter" clientDependency="990a3895-b681-4e9b-85b4-afad2b2b406a" isAbstract="true">
              <ownedComment xmi:id="18bbe98f-3514-456a-b554-17192bb507e3" body="An abstract adapter class for receiving keyboard events.&#xA;The methods in this class are empty. This class exists as&#xA;convenience for creating listener objects.&#xA;&lt;P>&#xA;Extend this class to create a &lt;code>KeyEvent&lt;/code> listener&#xA;and override the methods for the events of interest. (If you implement the&#xA;&lt;code>KeyListener&lt;/code> interface, you have to define all of&#xA;the methods in it. This abstract class defines null methods for them&#xA;all, so you can only have to define methods for events you care about.)&#xA;&lt;P>&#xA;Create a listener object using the extended class and then register it with&#xA;a component using the component's &lt;code>addKeyListener&lt;/code>&#xA;method. When a key is pressed, released, or typed,&#xA;the relevant method in the listener object is invoked,&#xA;and the &lt;code>KeyEvent&lt;/code> is passed to it.&#xA;&#xA;@author Carl Quinn&#xA;@version 1.17 12/19/03&#xA;&#xA;@see KeyEvent&#xA;@see KeyListener&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/keylistener.html&quot;>Tutorial: Writing a Key Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@since 1.1&#xA;" annotatedElement="4f4f75e7-42ae-4792-a8d3-efa24fbec1b6"/>
              <interfaceRealization xmi:id="990a3895-b681-4e9b-85b4-afad2b2b406a" name="" supplier="d0d97f9c-d8a0-4583-b30e-176f42c3f7e7" client="4f4f75e7-42ae-4792-a8d3-efa24fbec1b6" contract="d0d97f9c-d8a0-4583-b30e-176f42c3f7e7"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7cd59f25-4403-4abb-9972-8a4a7a6d268d" name="InputEvent" isAbstract="true">
              <ownedComment xmi:id="9e92c3f7-6395-4e93-ae7b-78c263b1d25d" body="The root event class for all component-level input events.&#xA;&#xA;Input events are delivered to listeners before they are&#xA;processed normally by the source where they originated.&#xA;This allows listeners and component subclasses to &quot;consume&quot;&#xA;the event so that the source will not process them in their&#xA;default manner.  For example, consuming mousePressed events&#xA;on a Button component will prevent the Button from being&#xA;activated.&#xA;&#xA;@author Carl Quinn&#xA;@version 1.34 06/02/04&#xA;&#xA;@see KeyEvent&#xA;@see KeyAdapter&#xA;@see MouseEvent&#xA;@see MouseAdapter&#xA;@see MouseMotionAdapter&#xA;&#xA;@since 1.1&#xA;" annotatedElement="7cd59f25-4403-4abb-9972-8a4a7a6d268d"/>
              <generalization xmi:id="5b4c8b5a-c478-4d6d-9dfd-26b913904313" isSubstitutable="true" general="4da432f5-a62a-400d-ba1c-65a9a1bd1818"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="53b3c159-7523-4e58-a3a3-3971308e2311" name="FocusAdapter" clientDependency="64478345-dba5-456f-a90c-35eb0897a51a" isAbstract="true">
              <ownedComment xmi:id="d1c95e2d-3197-4d65-8e96-25656ae3f1d5" body="An abstract adapter class for receiving keyboard focus events.&#xA;The methods in this class are empty. This class exists as&#xA;convenience for creating listener objects.&#xA;&lt;P>&#xA;Extend this class to create a &lt;code>FocusEvent&lt;/code> listener&#xA;and override the methods for the events of interest. (If you implement the&#xA;&lt;code>FocusListener&lt;/code> interface, you have to define all of&#xA;the methods in it. This abstract class defines null methods for them&#xA;all, so you can only have to define methods for events you care about.)&#xA;&lt;P>&#xA;Create a listener object using the extended class and then register it with&#xA;a component using the component's &lt;code>addFocusListener&lt;/code>&#xA;method. When the component gains or loses the keyboard focus,&#xA;the relevant method in the listener object is invoked,&#xA;and the &lt;code>FocusEvent&lt;/code> is passed to it.&#xA;&#xA;@see FocusEvent&#xA;@see FocusListener&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/focuslistener.html&quot;>Tutorial: Writing a Focus Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@author Carl Quinn&#xA;@version 1.16 12/19/03&#xA;@since 1.1&#xA;" annotatedElement="53b3c159-7523-4e58-a3a3-3971308e2311"/>
              <interfaceRealization xmi:id="64478345-dba5-456f-a90c-35eb0897a51a" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="53b3c159-7523-4e58-a3a3-3971308e2311" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8" name="ContainerListener" isAbstract="true">
              <ownedComment xmi:id="c9d9b12f-32c3-4c17-8b2b-6ad4cbf402a7" body="The listener interface for receiving container events.&#xA;The class that is interested in processing a container event&#xA;either implements this interface (and all the methods it&#xA;contains) or extends the abstract &lt;code>ContainerAdapter&lt;/code> class&#xA;(overriding only the methods of interest).&#xA;The listener object created from that class is then registered with a&#xA;component using the component's &lt;code>addContainerListener&lt;/code>&#xA;method. When the container's contents change because a component&#xA;has been added or removed, the relevant method in the listener object&#xA;is invoked, and the &lt;code>ContainerEvent&lt;/code> is passed to it.&#xA;&lt;P>&#xA;Container events are provided for notification purposes ONLY;&#xA;The AWT will automatically handle add and remove operations&#xA;internally so the program works properly regardless of&#xA;whether the program registers a &lt;code>ComponentListener&lt;/code> or not.&#xA;&#xA;@see ContainerAdapter&#xA;@see ContainerEvent&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/containerlistener.html&quot;>Tutorial: Writing a Container Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@author Tim Prinzing&#xA;@author Amy Fowler&#xA;@version 1.11 12/19/03&#xA;@since 1.1&#xA;" annotatedElement="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8"/>
              <generalization xmi:id="335fc665-a26d-4c4e-afcc-4939b69a904e" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0db79cd4-0757-4282-b2c3-730fa54c5c55" name="MouseAdapter" clientDependency="ff4e4020-9f19-4840-b79f-a6a1792e838d" isAbstract="true">
              <ownedComment xmi:id="8dc6fe94-8eec-46a7-be40-fc094335ccae" body="An abstract adapter class for receiving mouse events.&#xA;The methods in this class are empty. This class exists as&#xA;convenience for creating listener objects.&#xA;&lt;P>&#xA;Mouse events let you track when a mouse is pressed, released, clicked,&#xA;when it enters a component, and when it exits.&#xA;(To track mouse moves and mouse drags, use the MouseMotionAdapter.)&#xA;&lt;P>&#xA;Extend this class to create a &lt;code>MouseEvent&lt;/code> listener&#xA;and override the methods for the events of interest. (If you implement the&#xA;&lt;code>MouseListener&lt;/code> interface, you have to define all of&#xA;the methods in it. This abstract class defines null methods for them&#xA;all, so you can only have to define methods for events you care about.)&#xA;&lt;P>&#xA;Create a listener object using the extended class and then register it with&#xA;a component using the component's &lt;code>addMouseListener&lt;/code>&#xA;method. When a mouse button is pressed, released, or clicked (pressed and&#xA;released), or when the mouse cursor enters or exits the component,&#xA;the relevant method in the listener object is invoked&#xA;and the &lt;code>MouseEvent&lt;/code> is passed to it.&#xA;&#xA;@author Carl Quinn&#xA;@version 1.8 08/02/97&#xA;&#xA;@see MouseEvent&#xA;@see MouseListener&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/mouselistener.html&quot;>Tutorial: Writing a Mouse Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@since 1.1&#xA;" annotatedElement="0db79cd4-0757-4282-b2c3-730fa54c5c55"/>
              <interfaceRealization xmi:id="ff4e4020-9f19-4840-b79f-a6a1792e838d" name="" supplier="d2bfccf2-94c5-4882-8d84-613f4ad53195" client="0db79cd4-0757-4282-b2c3-730fa54c5c55" contract="d2bfccf2-94c5-4882-8d84-613f4ad53195"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="49ae8e8d-0375-4267-9255-cf39e99fbf26" name="HierarchyBoundsAdapter" clientDependency="30f43415-c71b-4788-88da-b02eec1a2df0" isAbstract="true">
              <ownedComment xmi:id="6521b1bb-748e-45cb-9d93-865c3d49e683" body="An abstract adapter class for receiving ancestor moved and resized events.&#xA;The methods in this class are empty. This class exists as a&#xA;convenience for creating listener objects.&#xA;&lt;p>&#xA;Extend this class and override the method for the event of interest. (If&#xA;you implement the &lt;code>HierarchyBoundsListener&lt;/code> interface, you have&#xA;to define both methods in it. This abstract class defines null methods for&#xA;them both, so you only have to define the method for the event you care&#xA;about.)&#xA;&lt;p>&#xA;Create a listener object using your class and then register it with a&#xA;Component using the Component's &lt;code>addHierarchyBoundsListener&lt;/code>&#xA;method. When the hierarchy to which the Component belongs changes by&#xA;resize or movement of an ancestor, the relevant method in the listener&#xA;object is invoked, and the &lt;code>HierarchyEvent&lt;/code> is passed to it.&#xA;&#xA;@author&#x9;David Mendenhall&#xA;@version&#x9;1.7, 12/19/03&#xA;@see&#x9;&#x9;HierarchyBoundsListener&#xA;@see&#x9;&#x9;HierarchyEvent&#xA;@since &#x9;1.3&#xA;" annotatedElement="49ae8e8d-0375-4267-9255-cf39e99fbf26"/>
              <interfaceRealization xmi:id="30f43415-c71b-4788-88da-b02eec1a2df0" name="" supplier="3a77cff3-1214-487d-9d86-9d71a42c9b2f" client="49ae8e8d-0375-4267-9255-cf39e99fbf26" contract="3a77cff3-1214-487d-9d86-9d71a42c9b2f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="88711cfb-6c51-470c-ba69-487856ccc3e2" name="AdjustmentListener" isAbstract="true">
              <ownedComment xmi:id="4350df52-dbfc-4d2f-b356-a3745a13e6e7" body="The listener interface for receiving adjustment events.&#xA;&#xA;@author Amy Fowler&#xA;@version 1.14 12/19/03&#xA;@since 1.1&#xA;" annotatedElement="88711cfb-6c51-470c-ba69-487856ccc3e2"/>
              <generalization xmi:id="1d894538-3615-43ce-8015-2b8ad5a3107f" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="13af116c-20fd-4c6f-ae93-48a9d8924995" name="ActionEvent">
              <ownedComment xmi:id="7bfe8125-87fc-474d-92d8-d793d769c9ac" body="A semantic event which indicates that a component-defined action occurred.&#xA;This high-level event is generated by a component (such as a&#xA;&lt;code>Button&lt;/code>) when&#xA;the component-specific action occurs (such as being pressed).&#xA;The event is passed to every every &lt;code>ActionListener&lt;/code> object&#xA;that registered to receive such events using the component's&#xA;&lt;code>addActionListener&lt;/code> method.&#xA;&lt;p>&#xA;&lt;b>Note:&lt;/b> To invoke an &lt;code>ActionEvent&lt;/code> on a&#xA;&lt;code>Button&lt;/code> using the keyboard, use the Space bar.&#xA;&lt;P>&#xA;The object that implements the &lt;code>ActionListener&lt;/code> interface&#xA;gets this &lt;code>ActionEvent&lt;/code> when the event occurs. The listener&#xA;is therefore spared the details of processing individual mouse movements&#xA;and mouse clicks, and can instead process a &quot;meaningful&quot; (semantic)&#xA;event like &quot;button pressed&quot;.&#xA;&#xA;@see ActionListener&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/eventmodel.html&quot;>Tutorial: Java 1.1 Event Model&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@author Carl Quinn&#xA;@version 1.29 01/28/04&#xA;@since 1.1&#xA;" annotatedElement="13af116c-20fd-4c6f-ae93-48a9d8924995"/>
              <generalization xmi:id="c9d0268c-e71c-4816-82c9-92c772e30e7b" isSubstitutable="true" general="dc3e23e7-09df-4daf-b0e1-0ea40dc8c9ee"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c62b6855-f076-469e-8ae8-293da3551e44" name="NativeLibLoader" visibility="package"/>
            <packagedElement xmi:type="uml:Interface" xmi:id="8747391f-bebd-47e3-888b-8e509ac223c9" name="MouseMotionListener" isAbstract="true">
              <ownedComment xmi:id="370c6d73-9567-44b0-9b17-77a1cb1acd32" body="The listener interface for receiving mouse motion events on a component.&#xA;(For clicks and other mouse events, use the &lt;code>MouseListener&lt;/code>.)&#xA;&lt;P>&#xA;The class that is interested in processing a mouse motion event&#xA;either implements this interface (and all the methods it&#xA;contains) or extends the abstract &lt;code>MouseMotionAdapter&lt;/code> class&#xA;(overriding only the methods of interest).&#xA;&lt;P>&#xA;The listener object created from that class is then registered with a&#xA;component using the component's &lt;code>addMouseMotionListener&lt;/code>&#xA;method. A mouse motion event is generated when the mouse is moved&#xA;or dragged. (Many such events will be generated). When a mouse motion event&#xA;occurs, the relevant method in the listener object is invoked, and&#xA;the &lt;code>MouseEvent&lt;/code> is passed to it.&#xA;&#xA;@author Amy Fowler&#xA;@version 1.15, 12/19/03&#xA;&#xA;@see MouseMotionAdapter&#xA;@see MouseEvent&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/mousemotionlistener.html&quot;>Tutorial: Writing a Mouse Motion Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@since 1.1&#xA;" annotatedElement="8747391f-bebd-47e3-888b-8e509ac223c9"/>
              <generalization xmi:id="93066dab-8f56-4e78-bc32-195856ab24b2" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="64b6febb-515e-4889-819b-876de66fed4b" name="WindowFocusListener" isAbstract="true">
              <ownedComment xmi:id="81a81447-eea3-4fd2-84b7-3235ef079e10" body="The listener interface for receiving &lt;code>WindowEvents&lt;/code>, including&#xA;&lt;code>WINDOW_GAINED_FOCUS&lt;/code> and &lt;code>WINDOW_LOST_FOCUS&lt;/code> events.&#xA;The class that is interested in processing a &lt;code>WindowEvent&lt;/code>&#xA;either implements this interface (and&#xA;all the methods it contains) or extends the abstract&#xA;&lt;code>WindowAdapter&lt;/code> class (overriding only the methods of interest).&#xA;The listener object created from that class is then registered with a&#xA;&lt;code>Window&lt;/code>&#xA;using the &lt;code>Window&lt;/code>'s &lt;code>addWindowFocusListener&lt;/code> method.&#xA;When the &lt;code>Window&lt;/code>'s&#xA;status changes by virtue of it being opened, closed, activated, deactivated,&#xA;iconified, or deiconified, or by focus being transfered into or out of the&#xA;&lt;code>Window&lt;/code>, the relevant method in the listener object is invoked,&#xA;and the &lt;code>WindowEvent&lt;/code> is passed to it.&#xA;&#xA;@author David Mendenhall&#xA;@version 1.6, 12/19/03&#xA;&#xA;@see WindowAdapter&#xA;@see WindowEvent&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/windowlistener.html&quot;>Tutorial: Writing a Window Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@since 1.4&#xA;" annotatedElement="64b6febb-515e-4889-819b-876de66fed4b"/>
              <generalization xmi:id="669421db-4c35-4d1e-abe1-64420e306e37" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e55b2885-f63b-40a0-bc6b-8d70a9ac5697" name="AWTEventListenerProxy" clientDependency="52de55f1-c5fe-42e0-9a65-3320ddc3644d">
              <ownedComment xmi:id="4916d97b-af9c-47d2-9c01-1d39c38566cf" body="A class which extends the &lt;code>EventListenerProxy&lt;/code>, specifically&#xA;for adding an &lt;code>AWTEventListener&lt;/code> for a specific event mask.&#xA;Instances of this class can be added as &lt;code>AWTEventListener&lt;/code>s to&#xA;a Toolkit object.&#xA;&lt;p>&#xA;The &lt;code>getAWTEventListeners&lt;/code> method of Toolkit can&#xA;return a mixture of &lt;code>AWTEventListener&lt;/code> and&#xA;&lt;code>AWTEventListenerProxy&lt;/code> objects.&#xA;&#xA;@see java.awt.Toolkit&#xA;@see java.util.EventListenerProxy&#xA;@since 1.4&#xA;" annotatedElement="e55b2885-f63b-40a0-bc6b-8d70a9ac5697"/>
              <generalization xmi:id="c86baedf-c54b-49ea-8eee-d736b3158184" isSubstitutable="true" general="fc8c4f27-1bc3-4bb6-9c57-74c2e8a8de51"/>
              <interfaceRealization xmi:id="52de55f1-c5fe-42e0-9a65-3320ddc3644d" name="" supplier="44edb2fe-b050-4f4b-84d0-05d4b3301cb8" client="e55b2885-f63b-40a0-bc6b-8d70a9ac5697" contract="44edb2fe-b050-4f4b-84d0-05d4b3301cb8"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="44edb2fe-b050-4f4b-84d0-05d4b3301cb8" name="AWTEventListener" isAbstract="true">
              <ownedComment xmi:id="594138ca-4b2c-474a-8b06-0479efa8e668" body="The listener interface for receiving notification of events&#xA;dispatched to objects that are instances of Component or&#xA;MenuComponent or their subclasses.  Unlike the other EventListeners&#xA;in this package, AWTEventListeners passively observe events&#xA;being dispatched in the AWT, system-wide.  Most applications&#xA;should never use this class; applications which might use&#xA;AWTEventListeners include event recorders for automated testing,&#xA;and facilities such as the Java Accessibility package.&#xA;&lt;p>&#xA;The class that is interested in monitoring AWT events&#xA;implements this interface, and the object created with that&#xA;class is registered with the Toolkit, using the Toolkit's&#xA;&lt;code>addAWTEventListener&lt;/code> method.  When an event is&#xA;dispatched anywhere in the AWT, that object's&#xA;&lt;code>eventDispatched&lt;/code> method is invoked.&#xA;&#xA;@see java.awt.AWTEvent&#xA;@see java.awt.Toolkit#addAWTEventListener&#xA;@see java.awt.Toolkit#removeAWTEventListener&#xA;&#xA;@author Fred Ecks&#xA;@version 1.10, 12/19/03&#xA;@since 1.2&#xA;" annotatedElement="44edb2fe-b050-4f4b-84d0-05d4b3301cb8"/>
              <generalization xmi:id="1e8370c4-4687-43ea-aa68-b437afb68437" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="10e58da0-0032-467f-9dec-983a8fcb7211" name="WindowListener" isAbstract="true">
              <ownedComment xmi:id="2663f6a5-299e-43e0-b3aa-d25807f91da9" body="The listener interface for receiving window events.&#xA;The class that is interested in processing a window event&#xA;either implements this interface (and all the methods it&#xA;contains) or extends the abstract &lt;code>WindowAdapter&lt;/code> class&#xA;(overriding only the methods of interest).&#xA;The listener object created from that class is then registered with a&#xA;Window using the window's &lt;code>addWindowListener&lt;/code>&#xA;method. When the window's status changes by virtue of being opened,&#xA;closed, activated or deactivated, iconified or deiconified,&#xA;the relevant method in the listener object is invoked, and the&#xA;&lt;code>WindowEvent&lt;/code> is passed to it.&#xA;&#xA;@author Carl Quinn&#xA;@version 1.21, 12/19/03&#xA;&#xA;@see WindowAdapter&#xA;@see WindowEvent&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/events/windowlistener.html&quot;>Tutorial: How to Write Window Listeners&lt;/a>&#xA;&#xA;@since 1.1&#xA;" annotatedElement="10e58da0-0032-467f-9dec-983a8fcb7211"/>
              <generalization xmi:id="57a84137-7de7-4b13-9155-884a214468b7" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="19e2c388-7739-4b91-ac63-32a68488c375" name="WindowStateListener" isAbstract="true">
              <ownedComment xmi:id="fafda9bb-b598-4215-92d2-c04efe2afa38" body="The listener interface for receiving window state events.&#xA;&lt;p>&#xA;The class that is interested in processing a window state event&#xA;either implements this interface (and all the methods it contains)&#xA;or extends the abstract &lt;code>WindowAdapter&lt;/code> class&#xA;(overriding only the methods of interest).&#xA;&lt;p>&#xA;The listener object created from that class is then registered with&#xA;a window using the &lt;code>Window&lt;/code>'s&#xA;&lt;code>addWindowStateListener&lt;/code> method.  When the window's&#xA;state changes by virtue of being iconified, maximized etc., the&#xA;&lt;code>windowStateChanged&lt;/code> method in the listener object is&#xA;invoked, and the &lt;code>WindowEvent&lt;/code> is passed to it.&#xA;&#xA;@see java.awt.event.WindowAdapter&#xA;@see java.awt.event.WindowEvent&#xA;&#xA;@since 1.4&#xA;" annotatedElement="19e2c388-7739-4b91-ac63-32a68488c375"/>
              <generalization xmi:id="9b351bf4-2735-486c-9067-9c66c3064ed6" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7855d918-8b40-44a1-8c39-6734221748f7" name="ItemEvent">
              <ownedComment xmi:id="38181e5e-ad23-4eb0-bf4e-fcf089e27481" body="A semantic event which indicates that an item was selected or deselected.&#xA;This high-level event is generated by an ItemSelectable object (such as a&#xA;List) when an item is selected or deselected by the user.&#xA;The event is passed to every &lt;code>ItemListener&lt;/code> object which&#xA;registered to receive such events using the component's&#xA;&lt;code>addItemListener&lt;/code> method.&#xA;&lt;P>&#xA;The object that implements the &lt;code>ItemListener&lt;/code> interface gets&#xA;this &lt;code>ItemEvent&lt;/code> when the event occurs. The listener is&#xA;spared the details of processing individual mouse movements and mouse&#xA;clicks, and can instead process a &quot;meaningful&quot; (semantic) event like&#xA;&quot;item selected&quot; or &quot;item deselected&quot;.&#xA;&#xA;@version 1.28 12/19/03&#xA;@author Carl Quinn&#xA;&#xA;@see java.awt.ItemSelectable&#xA;@see ItemListener&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/itemlistener.html&quot;>Tutorial: Writing an Item Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@since 1.1&#xA;" annotatedElement="7855d918-8b40-44a1-8c39-6734221748f7"/>
              <generalization xmi:id="9729fa74-f662-4a46-91b8-f9f688f4b9c1" isSubstitutable="true" general="dc3e23e7-09df-4daf-b0e1-0ea40dc8c9ee"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="dc0a40a1-ffad-4052-a8b3-987f3ef72c2d" name="TextListener" isAbstract="true">
              <ownedComment xmi:id="b0d189ca-3a93-4b32-afef-fdbc40f46be1" body="The listener interface for receiving text events.&#xA;&#xA;The class that is interested in processing a text event&#xA;implements this interface. The object created with that&#xA;class is then registered with a component using the&#xA;component's &lt;code>addTextListener&lt;/code> method. When the&#xA;component's text changes, the listener object's&#xA;&lt;code>textValueChanged&lt;/code> method is invoked.&#xA;&#xA;@author Georges Saab&#xA;@version 1.12 12/19/03&#xA;&#xA;@see TextEvent&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/textlistener.html&quot;>Tutorial: Writing a Text Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@since 1.1&#xA;" annotatedElement="dc0a40a1-ffad-4052-a8b3-987f3ef72c2d"/>
              <generalization xmi:id="26e7f195-c0a9-4da7-8984-7a1d3e217b91" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8e908659-53e3-4daf-b1e1-dc64b00db367" name="ComponentAdapter" clientDependency="becf9ac2-f117-4382-8f74-a77695717997" isAbstract="true">
              <ownedComment xmi:id="27cb8fb5-7d7d-43e6-a07a-1abd3c295994" body="An abstract adapter class for receiving component events.&#xA;The methods in this class are empty. This class exists as&#xA;convenience for creating listener objects.&#xA;&lt;P>&#xA;Extend this class to create a &lt;code>ComponentEvent&lt;/code> listener&#xA;and override the methods for the events of interest. (If you implement the&#xA;&lt;code>ComponentListener&lt;/code> interface, you have to define all of&#xA;the methods in it. This abstract class defines null methods for them&#xA;all, so you can only have to define methods for events you care about.)&#xA;&lt;P>&#xA;Create a listener object using your class and then register it with a&#xA;component using the component's &lt;code>addComponentListener&lt;/code>&#xA;method. When the component's size, location, or visibility&#xA;changes, the relevant method in the listener object is invoked,&#xA;and the &lt;code>ComponentEvent&lt;/code> is passed to it.&#xA;&#xA;@see ComponentEvent&#xA;@see ComponentListener&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/componentlistener.html&quot;>Tutorial: Writing a Component Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@author Carl Quinn&#xA;@version 1.16 12/19/03&#xA;@since 1.1&#xA;" annotatedElement="8e908659-53e3-4daf-b1e1-dc64b00db367"/>
              <interfaceRealization xmi:id="becf9ac2-f117-4382-8f74-a77695717997" name="" supplier="476f85cb-73d6-493e-8dda-f7ed06712460" client="8e908659-53e3-4daf-b1e1-dc64b00db367" contract="476f85cb-73d6-493e-8dda-f7ed06712460"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d2bfccf2-94c5-4882-8d84-613f4ad53195" name="MouseListener" isAbstract="true">
              <ownedComment xmi:id="5473706a-84af-473c-8b73-6dd60f08da3c" body="The listener interface for receiving &quot;interesting&quot; mouse events&#xA;(press, release, click, enter, and exit) on a component.&#xA;(To track mouse moves and mouse drags, use the&#xA;&lt;code>MouseMotionListener&lt;/code>.)&#xA;&lt;P>&#xA;The class that is interested in processing a mouse event&#xA;either implements this interface (and all the methods it&#xA;contains) or extends the abstract &lt;code>MouseAdapter&lt;/code> class&#xA;(overriding only the methods of interest).&#xA;&lt;P>&#xA;The listener object created from that class is then registered with a&#xA;component using the component's &lt;code>addMouseListener&lt;/code>&#xA;method. A mouse event is generated when the mouse is pressed, released&#xA;clicked (pressed and released). A mouse event is also generated when&#xA;the mouse cursor enters or leaves a component. When a mouse event&#xA;occurs, the relevant method in the listener object is invoked, and&#xA;the &lt;code>MouseEvent&lt;/code> is passed to it.&#xA;&#xA;@author Carl Quinn&#xA;@version 1.17, 12/19/03&#xA;&#xA;@see MouseAdapter&#xA;@see MouseEvent&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/mouselistener.html&quot;>Tutorial: Writing a Mouse Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@since 1.1&#xA;" annotatedElement="d2bfccf2-94c5-4882-8d84-613f4ad53195"/>
              <generalization xmi:id="f2e9a69f-0d20-4354-946c-b940701d03e2" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c4170e60-77bc-47e4-9e97-bb6c9e79fa74" name="HierarchyEvent">
              <ownedComment xmi:id="82d5e9e4-4a7f-4e3a-83a6-35cc256172e3" body="An event which indicates a change to the &lt;code>Component&lt;/code>&#xA;hierarchy to which a &lt;code>Component&lt;/code> belongs.&#xA;&lt;ul>&#xA;&lt;li>Hierarchy Change Events (HierarchyListener)&#xA;&lt;ul>&#xA;&lt;li> addition of an ancestor&#xA;&lt;li> removal of an ancestor&#xA;&lt;li> hierarchy made displayable&#xA;&lt;li> hierarchy made undisplayable&#xA;&lt;li> hierarchy shown on the screen (both visible and displayable)&#xA;&lt;li> hierarchy hidden on the screen (either invisible or undisplayable)&#xA;&lt;/ul>&#xA;&lt;li>Ancestor Reshape Events (HierarchyBoundsListener)&#xA;&lt;ul>&#xA;&lt;li> an ancestor was resized&#xA;&lt;li> an ancestor was moved&#xA;&lt;/ul>&#xA;&lt;/ul>&#xA;&lt;p>&#xA;Hierarchy events are provided for notification purposes ONLY.&#xA;The AWT will automatically handle changes to the hierarchy internally so&#xA;that GUI layout and displayability works properly regardless of whether a&#xA;program is receiving these events or not.&#xA;&lt;p>&#xA;This event is generated by a Container object (such as a Panel) when the&#xA;Container is added, removed, moved, or resized, and passed down the&#xA;hierarchy. It is also generated by a Component object when that object's&#xA;&lt;code>addNotify&lt;/code>, &lt;code>removeNotify&lt;/code>, &lt;code>show&lt;/code>, or&#xA;&lt;code>hide&lt;/code> method is called. ANCESTOR_MOVED and ANCESTOR_RESIZED&#xA;events are dispatched to every &lt;code>HierarchyBoundsListener&lt;/code> or&#xA;&lt;code>HierarchyBoundsAdapter&lt;/code> object which registered to receive&#xA;such events using the Component's &lt;code>addHierarchyBoundsListener&lt;/code>&#xA;method. (&lt;code>HierarchyBoundsAdapter&lt;/code> objects implement the &lt;code>&#xA;HierarchyBoundsListener&lt;/code> interface.) HIERARCHY_CHANGED events are&#xA;dispatched to every &lt;code>HierarchyListener&lt;/code> object which registered&#xA;to receive such events using the Component's &lt;code>addHierarchyListener&#xA;&lt;/code> method. Each such listener object gets this &lt;code>HierarchyEvent&#xA;&lt;/code> when the event occurs.&#xA;&#xA;@author&#x9;David Mendenhall&#xA;@version&#x9;1.12, 12/19/03&#xA;@see&#x9;&#x9;HierarchyListener&#xA;@see&#x9;&#x9;HierarchyBoundsAdapter&#xA;@see&#x9;&#x9;HierarchyBoundsListener&#xA;@since &#x9;1.3&#xA;" annotatedElement="c4170e60-77bc-47e4-9e97-bb6c9e79fa74"/>
              <generalization xmi:id="059dcb0c-aa10-4dfa-93dd-9181c337df10" isSubstitutable="true" general="dc3e23e7-09df-4daf-b0e1-0ea40dc8c9ee"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="476f85cb-73d6-493e-8dda-f7ed06712460" name="ComponentListener" isAbstract="true">
              <ownedComment xmi:id="0b1269de-26b6-4537-800c-d38f12b4a41d" body="The listener interface for receiving component events.&#xA;The class that is interested in processing a component event&#xA;either implements this interface (and all the methods it&#xA;contains) or extends the abstract &lt;code>ComponentAdapter&lt;/code> class&#xA;(overriding only the methods of interest).&#xA;The listener object created from that class is then registered with a&#xA;component using the component's &lt;code>addComponentListener&lt;/code>&#xA;method. When the component's size, location, or visibility&#xA;changes, the relevant method in the listener object is invoked,&#xA;and the &lt;code>ComponentEvent&lt;/code> is passed to it.&#xA;&lt;P>&#xA;Component events are provided for notification purposes ONLY;&#xA;The AWT will automatically handle component moves and resizes&#xA;internally so that GUI layout works properly regardless of&#xA;whether a program registers a &lt;code>ComponentListener&lt;/code> or not.&#xA;&#xA;@see ComponentAdapter&#xA;@see ComponentEvent&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/componentlistener.html&quot;>Tutorial: Writing a Component Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@author Carl Quinn&#xA;@version 1.16 12/19/03&#xA;@since 1.1&#xA;" annotatedElement="476f85cb-73d6-493e-8dda-f7ed06712460"/>
              <generalization xmi:id="b6790fce-f11f-41c9-a3ec-7f783be80d06" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5dad95dc-9bb2-4d59-93d3-463e9d684e40" name="AdjustmentEvent">
              <ownedComment xmi:id="49d9049f-3b1a-4f56-ab52-8defb3eaf794" body="The adjustment event emitted by Adjustable objects.&#xA;@see java.awt.Adjustable&#xA;@see AdjustmentListener&#xA;&#xA;@author Amy Fowler&#xA;@version 1.27 12/19/03&#xA;@since 1.1&#xA;" annotatedElement="5dad95dc-9bb2-4d59-93d3-463e9d684e40"/>
              <generalization xmi:id="c5c60204-6265-4a4d-b136-5c717184f5cd" isSubstitutable="true" general="dc3e23e7-09df-4daf-b0e1-0ea40dc8c9ee"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="b011c554-5346-47cd-b6d0-947168b914f2" name="InputMethodListener" isAbstract="true">
              <ownedComment xmi:id="42420010-0b8f-4eec-8b6e-38c9dfa98bed" body="The listener interface for receiving input method events. A text editing&#xA;component has to install an input method event listener in order to work&#xA;with input methods.&#xA;&#xA;&lt;p>&#xA;The text editing component also has to provide an instance of InputMethodRequests.&#xA;&#xA;@author JavaSoft Asia/Pacific&#xA;@version 1.11 12/19/03&#xA;@see InputMethodEvent&#xA;@see java.awt.im.InputMethodRequests&#xA;@since 1.2&#xA;" annotatedElement="b011c554-5346-47cd-b6d0-947168b914f2"/>
              <generalization xmi:id="f66d7cdc-6700-4718-844e-c6f23b2a6891" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4da432f5-a62a-400d-ba1c-65a9a1bd1818" name="ComponentEvent">
              <ownedComment xmi:id="bd3cac2e-d7ee-4cca-922c-e88ea7648474" body="A low-level event which indicates that a component moved, changed&#xA;size, or changed visibility (also, the root class for the other&#xA;component-level events).&#xA;&lt;P>&#xA;Component events are provided for notification purposes ONLY;&#xA;The AWT will automatically handle component moves and resizes&#xA;internally so that GUI layout works properly regardless of&#xA;whether a program is receiving these events or not.&#xA;&lt;P>&#xA;In addition to serving as the base class for other component-related&#xA;events (InputEvent, FocusEvent, WindowEvent, ContainerEvent),&#xA;this class defines the events that indicate changes in&#xA;a component's size, position, or visibility.&#xA;&lt;P>&#xA;This low-level event is generated by a component object (such as a&#xA;List) when the component is moved, resized, rendered invisible, or made&#xA;visible again. The event is passed to every &lt;code>ComponentListener&lt;/code>&#xA;or &lt;code>ComponentAdapter&lt;/code> object which registered to receive such&#xA;events using the component's &lt;code>addComponentListener&lt;/code> method.&#xA;(&lt;code>ComponentAdapter&lt;/code> objects implement the&#xA;&lt;code>ComponentListener&lt;/code> interface.) Each such listener object&#xA;gets this &lt;code>ComponentEvent&lt;/code> when the event occurs.&#xA;&#xA;@see ComponentAdapter&#xA;@see ComponentListener&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/componentlistener.html&quot;>Tutorial: Writing a Component Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@author Carl Quinn&#xA;@version 1.27 12/19/03&#xA;@since 1.1&#xA;" annotatedElement="4da432f5-a62a-400d-ba1c-65a9a1bd1818"/>
              <generalization xmi:id="9d6d1718-5fd7-4448-bff8-30fe6164bcc4" isSubstitutable="true" general="dc3e23e7-09df-4daf-b0e1-0ea40dc8c9ee"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="5aeb340d-26cb-44e4-8320-a8d8eff4ca3c" name="MouseWheelListener" isAbstract="true">
              <ownedComment xmi:id="c183a1ce-b6b8-4b9b-9966-623760bae139" body="The listener interface for receiving mouse wheel events on a component.&#xA;(For clicks and other mouse events, use the &lt;code>MouseListener&lt;/code>.&#xA;For mouse movement and drags, use the &lt;code>MouseMotionListener&lt;/code>.)&#xA;&lt;P>&#xA;The class that is interested in processing a mouse wheel event&#xA;implements this interface (and all the methods it contains).&#xA;&lt;P>&#xA;The listener object created from that class is then registered with a&#xA;component using the component's &lt;code>addMouseWheelListener&lt;/code>&#xA;method. A mouse wheel event is generated when the mouse wheel is rotated.&#xA;When a mouse wheel event occurs, that object's &lt;code>mouseWheelMoved&lt;/code>&#xA;method is invoked.&#xA;&lt;p>&#xA;For information on how mouse wheel events are dispatched, see&#xA;the class description for {@link MouseWheelEvent}.&#xA;&#xA;@author Brent Christian&#xA;@version 1.5 12/19/03&#xA;@see MouseWheelEvent&#xA;@since 1.4&#xA;" annotatedElement="5aeb340d-26cb-44e4-8320-a8d8eff4ca3c"/>
              <generalization xmi:id="b33bdcda-55d3-451c-a3c4-f9bb580161c5" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="881e1f63-ea05-4933-82ba-17d8d70f9be1" name="ActionListener" isAbstract="true">
              <ownedComment xmi:id="d1950341-1412-41c0-9e4e-3185af790e92" body="The listener interface for receiving action events.&#xA;The class that is interested in processing an action event&#xA;implements this interface, and the object created with that&#xA;class is registered with a component, using the component's&#xA;&lt;code>addActionListener&lt;/code> method. When the action event&#xA;occurs, that object's &lt;code>actionPerformed&lt;/code> method is&#xA;invoked.&#xA;&#xA;@see ActionEvent&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/eventmodel.html&quot;>Tutorial: Java 1.1 Event Model&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@author Carl Quinn&#xA;@version 1.16 12/19/03&#xA;@since 1.1&#xA;" annotatedElement="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
              <generalization xmi:id="b7d09526-b1bd-4c90-8fd0-5347fb79ed54" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="569edcca-f9c2-4c19-854b-a7ea38aaff69" name="WindowAdapter" clientDependency="02f22ef7-7e14-4fc0-8f57-628df3e3de84 cc1efbe4-8cb7-4226-9c0d-2b842826c3dd 6f808a80-93c2-4d58-b896-f800dc825f25" isAbstract="true">
              <ownedComment xmi:id="84b1e94e-94e6-4d61-ba63-3d2d3ee388c5" body="An abstract adapter class for receiving window events.&#xA;The methods in this class are empty. This class exists as&#xA;convenience for creating listener objects.&#xA;&lt;P>&#xA;Extend this class to create a &lt;code>WindowEvent&lt;/code> listener&#xA;and override the methods for the events of interest. (If you implement the&#xA;&lt;code>WindowListener&lt;/code> interface, you have to define all of&#xA;the methods in it. This abstract class defines null methods for them&#xA;all, so you can only have to define methods for events you care about.)&#xA;&lt;P>&#xA;Create a listener object using the extended class and then register it with&#xA;a Window using the window's &lt;code>addWindowListener&lt;/code>&#xA;method. When the window's status changes by virtue of being opened,&#xA;closed, activated or deactivated, iconified or deiconified,&#xA;the relevant method in the listener&#xA;object is invoked, and the &lt;code>WindowEvent&lt;/code> is passed to it.&#xA;&#xA;@see WindowEvent&#xA;@see WindowListener&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/windowlistener.html&quot;>Tutorial: Writing a Window Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@author Carl Quinn&#xA;@author Amy Fowler&#xA;@author David Mendenhall&#xA;@version 1.20, 12/19/03&#xA;@since 1.1&#xA;" annotatedElement="569edcca-f9c2-4c19-854b-a7ea38aaff69"/>
              <interfaceRealization xmi:id="02f22ef7-7e14-4fc0-8f57-628df3e3de84" name="" supplier="10e58da0-0032-467f-9dec-983a8fcb7211" client="569edcca-f9c2-4c19-854b-a7ea38aaff69" contract="10e58da0-0032-467f-9dec-983a8fcb7211"/>
              <interfaceRealization xmi:id="cc1efbe4-8cb7-4226-9c0d-2b842826c3dd" name="" supplier="19e2c388-7739-4b91-ac63-32a68488c375" client="569edcca-f9c2-4c19-854b-a7ea38aaff69" contract="19e2c388-7739-4b91-ac63-32a68488c375"/>
              <interfaceRealization xmi:id="6f808a80-93c2-4d58-b896-f800dc825f25" name="" supplier="64b6febb-515e-4889-819b-876de66fed4b" client="569edcca-f9c2-4c19-854b-a7ea38aaff69" contract="64b6febb-515e-4889-819b-876de66fed4b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="3a77cff3-1214-487d-9d86-9d71a42c9b2f" name="HierarchyBoundsListener" isAbstract="true">
              <ownedComment xmi:id="e97860ee-9ff1-417b-a6a0-2465aacfc117" body="The listener interface for receiving ancestor moved and resized events.&#xA;The class that is interested in processing these events either implements&#xA;this interface (and all the methods it contains) or extends the abstract&#xA;&lt;code>HierarchyBoundsAdapter&lt;/code> class (overriding only the method of&#xA;interest).&#xA;The listener object created from that class is then registered with a&#xA;Component using the Component's &lt;code>addHierarchyBoundsListener&lt;/code>&#xA;method. When the hierarchy to which the Component belongs changes by&#xA;the resizing or movement of an ancestor, the relevant method in the listener&#xA;object is invoked, and the &lt;code>HierarchyEvent&lt;/code> is passed to it.&#xA;&lt;p>&#xA;Hierarchy events are provided for notification purposes ONLY;&#xA;The AWT will automatically handle changes to the hierarchy internally so&#xA;that GUI layout works properly regardless of whether a&#xA;program registers an &lt;code>HierarchyBoundsListener&lt;/code> or not.&#xA;&#xA;@author&#x9;David Mendenhall&#xA;@version&#x9;1.7, 12/19/03&#xA;@see&#x9;&#x9;HierarchyBoundsAdapter&#xA;@see&#x9;&#x9;HierarchyEvent&#xA;@since &#x9;1.3&#xA;" annotatedElement="3a77cff3-1214-487d-9d86-9d71a42c9b2f"/>
              <generalization xmi:id="a349e5e5-475c-4baf-8565-ecd53076280d" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="78c02022-5533-497c-8742-d33826e44a9c" name="MouseMotionAdapter" clientDependency="3487c4d3-221e-4248-bac0-4413ead73366" isAbstract="true">
              <ownedComment xmi:id="0551c20e-a22d-406c-ac8b-a3fc0f0bb207" body="An abstract adapter class for receiving mouse motion events.&#xA;The methods in this class are empty. This class exists as&#xA;convenience for creating listener objects.&#xA;&lt;P>&#xA;Mouse motion events occur when a mouse is moved or dragged.&#xA;(Many such events will be generated in a normal program.&#xA;To track clicks and other mouse events, use the MouseAdapter.)&#xA;&lt;P>&#xA;Extend this class to create a &lt;code>MouseEvent&lt;/code> listener&#xA;and override the methods for the events of interest. (If you implement the&#xA;&lt;code>MouseMotionListener&lt;/code> interface, you have to define all of&#xA;the methods in it. This abstract class defines null methods for them&#xA;all, so you can only have to define methods for events you care about.)&#xA;&lt;P>&#xA;Create a listener object using the extended class and then register it with&#xA;a component using the component's &lt;code>addMouseMotionListener&lt;/code>&#xA;method. When the mouse is moved or dragged, the relevant method in the&#xA;listener object is invoked and the &lt;code>MouseEvent&lt;/code> is passed to it.&#xA;&#xA;@author Amy Fowler&#xA;@version 1.15 12/19/03&#xA;&#xA;@see MouseEvent&#xA;@see MouseMotionListener&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/mousemotionlistener.html&quot;>Tutorial: Writing a Mouse Motion Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@since 1.1&#xA;" annotatedElement="78c02022-5533-497c-8742-d33826e44a9c"/>
              <interfaceRealization xmi:id="3487c4d3-221e-4248-bac0-4413ead73366" name="" supplier="8747391f-bebd-47e3-888b-8e509ac223c9" client="78c02022-5533-497c-8742-d33826e44a9c" contract="8747391f-bebd-47e3-888b-8e509ac223c9"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="96291d1f-c8b1-4d93-be2c-623c9dbcb046" name="FocusListener" isAbstract="true">
              <ownedComment xmi:id="0b7410c9-5322-4593-a3ba-7cba3915857d" body="The listener interface for receiving keyboard focus events on&#xA;a component.&#xA;The class that is interested in processing a focus event&#xA;either implements this interface (and all the methods it&#xA;contains) or extends the abstract &lt;code>FocusAdapter&lt;/code> class&#xA;(overriding only the methods of interest).&#xA;The listener object created from that class is then registered with a&#xA;component using the component's &lt;code>addFocusListener&lt;/code>&#xA;method. When the component gains or loses the keyboard focus,&#xA;the relevant method in the listener object&#xA;is invoked, and the &lt;code>FocusEvent&lt;/code> is passed to it.&#xA;&#xA;@see FocusAdapter&#xA;@see FocusEvent&#xA;@see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/post1.0/ui/focuslistener.html&quot;>Tutorial: Writing a Focus Listener&lt;/a>&#xA;@see &lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>Reference: The Java Class Libraries (update file)&lt;/a>&#xA;&#xA;@author Carl Quinn&#xA;@version 1.15 12/19/03&#xA;@since 1.1&#xA;" annotatedElement="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
              <generalization xmi:id="4dbd87e0-3df9-4b98-a63b-d72c49729459" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="56465396-c17e-4845-8552-162295eb99e0" name="InputMethodEvent">
              <ownedComment xmi:id="07d6b4a2-fceb-4c9d-b0c2-78ba3a88e685" body="Input method events contain information about text that is being&#xA;composed using an input method. Whenever the text changes, the&#xA;input method sends an event. If the text component that's currently&#xA;using the input method is an active client, the event is dispatched&#xA;to that component. Otherwise, it is dispatched to a separate&#xA;composition window.&#xA;&#xA;&lt;p>&#xA;The text included with the input method event consists of two parts:&#xA;committed text and composed text. Either part may be empty. The two&#xA;parts together replace any uncommitted composed text sent in previous events,&#xA;or the currently selected committed text.&#xA;Committed text should be integrated into the text component's persistent&#xA;data, it will not be sent again. Composed text may be sent repeatedly,&#xA;with changes to reflect the user's editing operations. Committed text&#xA;always precedes composed text.&#xA;&#xA;@author JavaSoft Asia/Pacific&#xA;@version 1.22 12/19/03&#xA;@since 1.2&#xA;" annotatedElement="56465396-c17e-4845-8552-162295eb99e0"/>
              <generalization xmi:id="bdcd789d-ebc1-41f3-9580-a9ffb5787606" isSubstitutable="true" general="dc3e23e7-09df-4daf-b0e1-0ea40dc8c9ee"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e06f5c2c-3567-4144-8b35-a420e82a5ee1" name="FileDialog">
            <ownedComment xmi:id="af1f8e8a-2fc6-4bfe-a860-b2c780f77518" body="The &lt;code>FileDialog&lt;/code> class displays a dialog window&#xA;from which the user can select a file.&#xA;&lt;p>&#xA;Since it is a modal dialog, when the application calls&#xA;its &lt;code>show&lt;/code> method to display the dialog,&#xA;it blocks the rest of the application until the user has&#xA;chosen a file.&#xA;&#xA;@see Window#show&#xA;&#xA;@version &#x9;1.53, 12/19/03&#xA;@author &#x9;Sami Shaio&#xA;@author &#x9;Arthur van Hoff&#xA;@since       JDK1.0&#xA;" annotatedElement="e06f5c2c-3567-4144-8b35-a420e82a5ee1"/>
            <generalization xmi:id="91b2d8e7-493c-4be8-8f35-8de67cecdd08" isSubstitutable="true" general="71118c4b-1846-422b-86d3-bca9c1c356c5"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="d924691d-7f62-4a35-b347-74bb5a84e7c7" name="PrintGraphics" isAbstract="true">
            <ownedComment xmi:id="cb79a3c9-c35d-40c2-bbb2-327f4d087f3a" body="An abstract class which provides a print graphics context for a page.&#xA;&#xA;@version &#x9;1.12 12/19/03&#xA;@author &#x9;Amy Fowler&#xA;" annotatedElement="d924691d-7f62-4a35-b347-74bb5a84e7c7"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5aa608f2-43cf-4666-8843-12349195fbf7" name="ScrollPaneAdjustable" clientDependency="8a077aa9-382c-4447-93f7-bc145a666fea 44f33037-d03b-4e11-b151-d5981d0b7b40">
            <ownedComment xmi:id="727abf73-4e8a-40a2-b83f-de0a8970840e" body="This class represents the state of a horizontal or vertical&#xA;scrollbar of a &lt;code>ScrollPane&lt;/code>.  Objects of this class are&#xA;returned by &lt;code>ScrollPane&lt;/code> methods.&#xA;&#xA;@version     1.9 12/19/03&#xA;@since&#x9;1.4&#xA;" annotatedElement="5aa608f2-43cf-4666-8843-12349195fbf7"/>
            <interfaceRealization xmi:id="8a077aa9-382c-4447-93f7-bc145a666fea" name="" supplier="39efaa72-49ea-4322-8011-eae19f7cd24b" client="5aa608f2-43cf-4666-8843-12349195fbf7" contract="39efaa72-49ea-4322-8011-eae19f7cd24b"/>
            <interfaceRealization xmi:id="44f33037-d03b-4e11-b151-d5981d0b7b40" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="5aa608f2-43cf-4666-8843-12349195fbf7" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="aa79d5ad-0ef2-4744-99db-0c3881841684" name="GraphicsDevice" isAbstract="true">
            <ownedComment xmi:id="ebc3045e-d63f-4eed-8169-fe1facd2dbff" body="The &lt;code>GraphicsDevice&lt;/code> class describes the graphics devices&#xA;that might be available in a particular graphics environment.  These&#xA;include screen and printer devices. Note that there can be many screens&#xA;and many printers in an instance of {@link GraphicsEnvironment}. Each&#xA;graphics device has one or more {@link GraphicsConfiguration} objects&#xA;associated with it.  These objects specify the different configurations&#xA;in which the &lt;code>GraphicsDevice&lt;/code> can be used.&#xA;&lt;p>&#xA;In a multi-screen environment, the &lt;code>GraphicsConfiguration&lt;/code>&#xA;objects can be used to render components on multiple screens.  The&#xA;following code sample demonstrates how to create a &lt;code>JFrame&lt;/code>&#xA;object for each &lt;code>GraphicsConfiguration&lt;/code> on each screen&#xA;device in the &lt;code>GraphicsEnvironment&lt;/code>:&#xA;&lt;pre>&#xA;GraphicsEnvironment ge = GraphicsEnvironment.&#xA;getLocalGraphicsEnvironment();&#xA;GraphicsDevice[] gs = ge.getScreenDevices();&#xA;for (int j = 0; j &lt; gs.length; j++) {&#xA;GraphicsDevice gd = gs[j];&#xA;GraphicsConfiguration[] gc =&#xA;gd.getConfigurations();&#xA;for (int i=0; i &lt; gc.length; i++) {&#xA;JFrame f = new&#xA;JFrame(gs[j].getDefaultConfiguration());&#xA;Canvas c = new Canvas(gc[i]);&#xA;Rectangle gcBounds = gc[i].getBounds();&#xA;int xoffs = gcBounds.x;&#xA;int yoffs = gcBounds.y;&#xA;f.getContentPane().add(c);&#xA;f.setLocation((i*50)+xoffs, (i*60)+yoffs);&#xA;f.show();&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;@see GraphicsEnvironment&#xA;@see GraphicsConfiguration&#xA;@version 1.30, 12/19/03&#xA;" annotatedElement="aa79d5ad-0ef2-4744-99db-0c3881841684"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="96320cca-f8aa-48c7-85e7-a6926f84954d" name="Label" clientDependency="3e56f3f0-129c-4761-85ad-0d9b14247dc1">
            <ownedComment xmi:id="c187589c-fdcc-4d52-a408-2e05c8315c66" body="A &lt;code>Label&lt;/code> object is a component for placing text in a&#xA;container. A label displays a single line of read-only text.&#xA;The text can be changed by the application, but a user cannot edit it&#xA;directly.&#xA;&lt;p>&#xA;For example, the code&amp;nbsp;.&amp;nbsp;.&amp;nbsp;.&#xA;&lt;p>&#xA;&lt;hr>&lt;blockquote>&lt;pre>&#xA;setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));&#xA;add(new Label(&quot;Hi There!&quot;));&#xA;add(new Label(&quot;Another Label&quot;));&#xA;&lt;/pre>&lt;/blockquote>&lt;hr>&#xA;&lt;p>&#xA;produces the following labels:&#xA;&lt;p>&#xA;&lt;img src=&quot;doc-files/Label-1.gif&quot; alt=&quot;Two labels: 'Hi There!' and 'Another label'&quot;&#xA;ALIGN=center HSPACE=10 VSPACE=7>&#xA;&#xA;@version&#x9;1.57, 03/16/04&#xA;@author &#x9;Sami Shaio&#xA;@since       JDK1.0&#xA;" annotatedElement="96320cca-f8aa-48c7-85e7-a6926f84954d"/>
            <generalization xmi:id="c8cc09cb-ee28-4ed2-b9a5-d33ac9d79fdb" isSubstitutable="true" general="4d925b7b-d68e-4e13-b87b-98bdb93e9024"/>
            <interfaceRealization xmi:id="3e56f3f0-129c-4761-85ad-0d9b14247dc1" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="96320cca-f8aa-48c7-85e7-a6926f84954d" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="de3ce744-33de-4c91-9764-8b5fb4466e46" name="AccessibleAWTLabel" visibility="protected">
              <ownedComment xmi:id="533b0edc-6056-4606-825a-ed1c6092e55a" body="This class implements accessibility support for the&#xA;&lt;code>Label&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to label user-interface elements.&#xA;" annotatedElement="de3ce744-33de-4c91-9764-8b5fb4466e46"/>
              <generalization xmi:id="c9149a97-48d1-44be-8034-4944c5a6d4ef" isSubstitutable="true" general="e8a07816-0ac5-4ca1-990d-2e0e3f63e181"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="12059136-5698-46b9-a76c-2b6557e1b511" name="AWTException">
            <ownedComment xmi:id="f75ef25d-bf9f-4ceb-b18b-dd8eb41a3686" body="Signals that an Absract Window Toolkit exception has occurred.&#xA;&#xA;@version &#x9;1.16 12/19/03&#xA;@author &#x9;Arthur van Hoff&#xA;" annotatedElement="12059136-5698-46b9-a76c-2b6557e1b511"/>
            <generalization xmi:id="0a10b859-7dda-4360-aed0-16a3c36284aa" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="aa901667-df95-4674-b852-2debda096ff3" name="dnd">
            <packagedElement xmi:type="uml:Class" xmi:id="50640aab-4f07-4a39-8c42-c955f1f2b874" name="DropTargetDropEvent">
              <ownedComment xmi:id="ec34e14e-7290-4749-a879-387005d91b8c" body="The &lt;code>DropTargetDropEvent&lt;/code> is delivered&#xA;via the &lt;code>DropTargetListener&lt;/code> drop() method.&#xA;&lt;p>&#xA;The &lt;code>DropTargetDropEvent&lt;/code> reports the &lt;i>source drop actions&lt;/i>&#xA;and the &lt;i>user drop action&lt;/i> that reflect the current state of the&#xA;drag-and-drop operation.&#xA;&lt;p>&#xA;&lt;i>Source drop actions&lt;/i> is a bitwise mask of &lt;code>DnDConstants&lt;/code>&#xA;that represents the set of drop actions supported by the drag source for&#xA;this drag-and-drop operation.&#xA;&lt;p>&#xA;&lt;i>User drop action&lt;/i> depends on the drop actions supported by the drag&#xA;source and the drop action selected by the user. The user can select a drop&#xA;action by pressing modifier keys during the drag operation:&#xA;&lt;pre>&#xA;Ctrl + Shift -> ACTION_LINK&#xA;Ctrl         -> ACTION_COPY&#xA;Shift        -> ACTION_MOVE&#xA;&lt;/pre>&#xA;If the user selects a drop action, the &lt;i>user drop action&lt;/i> is one of&#xA;&lt;code>DnDConstants&lt;/code> that represents the selected drop action if this&#xA;drop action is supported by the drag source or&#xA;&lt;code>DnDConstants.ACTION_NONE&lt;/code> if this drop action is not supported&#xA;by the drag source.&#xA;&lt;p>&#xA;If the user doesn't select a drop action, the set of&#xA;&lt;code>DnDConstants&lt;/code> that represents the set of drop actions supported&#xA;by the drag source is searched for &lt;code>DnDConstants.ACTION_MOVE&lt;/code>,&#xA;then for &lt;code>DnDConstants.ACTION_COPY&lt;/code>, then for&#xA;&lt;code>DnDConstants.ACTION_LINK&lt;/code> and the &lt;i>user drop action&lt;/i> is the&#xA;first constant found. If no constant is found the &lt;i>user drop action&lt;/i>&#xA;is &lt;code>DnDConstants.ACTION_NONE&lt;/code>.&#xA;&#xA;@version &#x9;1.28, 05/05/04&#xA;@since 1.2&#xA;" annotatedElement="50640aab-4f07-4a39-8c42-c955f1f2b874"/>
              <generalization xmi:id="4ceb72b8-ce11-4bfe-b876-f407d9c2aa5a" isSubstitutable="true" general="981f2cdc-f168-4dac-a4d8-26c9abb3399b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="bc05fb8c-6d22-4108-9c58-a2ba19f967ec" name="DragGestureRecognizer" clientDependency="39881d14-7ced-491d-af28-19ef0ec9fb88" isAbstract="true">
              <ownedComment xmi:id="9a129ee8-5a06-4c20-b067-07443eb86603" body="The &lt;code>DragGestureRecognizer&lt;/code> is an&#xA;abstract base class for the specification&#xA;of a platform-dependent listener that can be associated with a particular&#xA;&lt;code>Component&lt;/code> in order to&#xA;identify platform-dependent drag initiating gestures.&#xA;&lt;p>&#xA;The appropriate &lt;code>DragGestureRecognizer&lt;/code>&#xA;subclass is obtained from the&#xA;&lt;code>DragSource&lt;/code> asssociated with&#xA;a particular &lt;code>Component&lt;/code>, or from the &lt;code>Toolkit&lt;/code>&#xA;object via its createDragGestureRecognizer() method.&#xA;&lt;p>&#xA;Once the &lt;code>DragGestureRecognizer&lt;/code>&#xA;is associated with a particular &lt;code>Component&lt;/code>&#xA;it will register the appropriate listener interfaces on that&#xA;&lt;code>Component&lt;/code>&#xA;in order to track the input events delivered to the &lt;code>Component&lt;/code>.&#xA;&lt;p>&#xA;Once the &lt;code>DragGestureRecognizer&lt;/code> identifies a sequence of events&#xA;on the &lt;code>Component&lt;/code> as a drag initiating gesture, it will notify&#xA;its unicast &lt;code>DragGestureListener&lt;/code> by&#xA;invoking its gestureRecognized() method.&#xA;&lt;P>&#xA;When a concrete &lt;code>DragGestureRecognizer&lt;/code>&#xA;instance detects a drag initiating&#xA;gesture on the &lt;code>Component&lt;/code> it is associated with,&#xA;it will fire a &lt;code>DragGestureEvent&lt;/code> to&#xA;the &lt;code>DragGestureListener&lt;/code> registered on&#xA;its unicast event source for &lt;code>DragGestureListener&lt;/code>&#xA;events. This &lt;code>DragGestureListener&lt;/code> is responsible&#xA;for causing the associated&#xA;&lt;code>DragSource&lt;/code> to start the Drag and Drop operation (if&#xA;appropriate).&#xA;&lt;P>&#xA;@author Laurence P. G. Cable&#xA;@version 1.20&#xA;@see java.awt.dnd.DragGestureListener&#xA;@see java.awt.dnd.DragGestureEvent&#xA;@see java.awt.dnd.DragSource&#xA;" annotatedElement="bc05fb8c-6d22-4108-9c58-a2ba19f967ec"/>
              <interfaceRealization xmi:id="39881d14-7ced-491d-af28-19ef0ec9fb88" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="bc05fb8c-6d22-4108-9c58-a2ba19f967ec" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b21ec904-a326-4bed-8c0e-fd535d4d0fdd" name="DropTargetContext" clientDependency="42802981-eac3-48d6-8013-2a6243403598">
              <ownedComment xmi:id="dd096a89-7042-49c3-90dc-76ba5098893c" body="A &lt;code>DropTargetContext&lt;/code> is created&#xA;whenever the logical cursor associated&#xA;with a Drag and Drop operation coincides with the visible geometry of&#xA;a &lt;code>Component&lt;/code> associated with a &lt;code>DropTarget&lt;/code>.&#xA;The &lt;code>DropTargetContext&lt;/code> provides&#xA;the mechanism for a potential receiver&#xA;of a drop operation to both provide the end user with the appropriate&#xA;drag under feedback, but also to effect the subsequent data transfer&#xA;if appropriate.&#xA;&#xA;@version &#x9;1.37, 05/05/04&#xA;@since 1.2&#xA;" annotatedElement="b21ec904-a326-4bed-8c0e-fd535d4d0fdd"/>
              <interfaceRealization xmi:id="42802981-eac3-48d6-8013-2a6243403598" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="b21ec904-a326-4bed-8c0e-fd535d4d0fdd" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="bc50a3f7-39db-441b-92c5-3055e23b9ad2" name="TransferableProxy" visibility="protected" clientDependency="f9fd312c-1a0e-4c6d-b915-8e8b48c48f29">
                <ownedComment xmi:id="3f9a722f-11a7-4331-ad77-8296d55813f3" body="&lt;code>TransferableProxy&lt;/code> is a helper inner class that implements&#xA;&lt;code>Transferable&lt;/code> interface and serves as a proxy for another&#xA;&lt;code>Transferable&lt;/code> object which represents data transfer for&#xA;a particular drag-n-drop operation.&#xA;&lt;p>&#xA;The proxy forwards all requests to the encapsulated transferable&#xA;and automatically performs additional conversion on the data&#xA;returned by the encapsulated transferable in case of local transfer.&#xA;" annotatedElement="bc50a3f7-39db-441b-92c5-3055e23b9ad2"/>
                <interfaceRealization xmi:id="f9fd312c-1a0e-4c6d-b915-8e8b48c48f29" name="" supplier="93975c92-87b1-4831-a429-d2cc70682ac8" client="bc50a3f7-39db-441b-92c5-3055e23b9ad2" contract="93975c92-87b1-4831-a429-d2cc70682ac8"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="af965482-c87a-436d-bb86-6093b8457574" name="DnDEventMulticaster" visibility="package" clientDependency="cae437d7-f9eb-442a-9c5e-97de2c770ed0 481eb057-38fa-49ee-868f-05f40bb58e9f">
              <ownedComment xmi:id="97e90e3f-4775-45b3-b56c-31beb3d39f79" body="A class extends &lt;code>AWTEventMulticaster&lt;/code> to implement efficient and&#xA;thread-safe multi-cast event dispatching for the drag-and-drop events defined&#xA;in the java.awt.dnd package.&#xA;&#xA;@version &#x9;1.5, 12/19/03&#xA;@since &#x9;1.4&#xA;@see AWTEventMulticaster&#xA;" annotatedElement="af965482-c87a-436d-bb86-6093b8457574"/>
              <generalization xmi:id="4af16618-dc57-40bc-bbe8-ceb00ea9b690" isSubstitutable="true" general="3dc6691a-e14e-466f-983f-ece5e2e63eda"/>
              <interfaceRealization xmi:id="cae437d7-f9eb-442a-9c5e-97de2c770ed0" name="" supplier="41b73f00-ad15-4def-a4f2-1f322121f0c1" client="af965482-c87a-436d-bb86-6093b8457574" contract="41b73f00-ad15-4def-a4f2-1f322121f0c1"/>
              <interfaceRealization xmi:id="481eb057-38fa-49ee-868f-05f40bb58e9f" name="" supplier="e7580a30-b9ac-42f9-8745-f84c12f048bb" client="af965482-c87a-436d-bb86-6093b8457574" contract="e7580a30-b9ac-42f9-8745-f84c12f048bb"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6bb82647-9dc8-46df-aad3-bb2dcaf5a0fe" name="DropTargetAdapter" clientDependency="ad438f38-c703-4725-bd16-25ef1c954d4b" isAbstract="true">
              <ownedComment xmi:id="bd6b4848-1834-437c-ada1-713be9ef3b1a" body="An abstract adapter class for receiving drop target events. The methods in&#xA;this class are empty. This class exists only as a convenience for creating&#xA;listener objects.&#xA;&lt;p>&#xA;Extend this class to create a &lt;code>DropTargetEvent&lt;/code> listener&#xA;and override the methods for the events of interest. (If you implement the&#xA;&lt;code>DropTargetListener&lt;/code> interface, you have to define all of&#xA;the methods in it. This abstract class defines a null implementation for&#xA;every method except &lt;code>drop(DropTargetDropEvent)&lt;/code>, so you only have&#xA;to define methods for events you care about.) You must provide an&#xA;implementation for at least &lt;code>drop(DropTargetDropEvent)&lt;/code>. This&#xA;method cannot have a null implementation because its specification requires&#xA;that you either accept or reject the drop, and, if accepted, indicate&#xA;whether the drop was successful.&#xA;&lt;p>&#xA;Create a listener object using the extended class and then register it with&#xA;a &lt;code>DropTarget&lt;/code>. When the drag enters, moves over, or exits&#xA;the operable part of the drop site for that &lt;code>DropTarget&lt;/code>, when&#xA;the drop action changes, and when the drop occurs, the relevant method in&#xA;the listener object is invoked, and the &lt;code>DropTargetEvent&lt;/code> is&#xA;passed to it.&#xA;&lt;p>&#xA;The operable part of the drop site for the &lt;code>DropTarget&lt;/code> is&#xA;the part of the associated &lt;code>Component&lt;/code>'s geometry that is not&#xA;obscured by an overlapping top-level window or by another&#xA;&lt;code>Component&lt;/code> higher in the Z-order that has an associated active&#xA;&lt;code>DropTarget&lt;/code>.&#xA;&lt;p>&#xA;During the drag, the data associated with the current drag operation can be&#xA;retrieved by calling &lt;code>getTransferable()&lt;/code> on&#xA;&lt;code>DropTargetDragEvent&lt;/code> instances passed to the listener's&#xA;methods.&#xA;&lt;p>&#xA;Note that &lt;code>getTransferable()&lt;/code> on the&#xA;&lt;code>DropTargetDragEvent&lt;/code> instance should only be called within the&#xA;respective listener's method and all the necessary data should be retrieved&#xA;from the returned &lt;code>Transferable&lt;/code> before that method returns.&#xA;&#xA;@see DropTargetEvent&#xA;@see DropTargetListener&#xA;&#xA;@author David Mendenhall&#xA;@version 1.7, 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="6bb82647-9dc8-46df-aad3-bb2dcaf5a0fe"/>
              <interfaceRealization xmi:id="ad438f38-c703-4725-bd16-25ef1c954d4b" name="" supplier="2d2b5782-0c86-4da3-a722-9835891eb353" client="6bb82647-9dc8-46df-aad3-bb2dcaf5a0fe" contract="2d2b5782-0c86-4da3-a722-9835891eb353"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="16fbbcc9-4656-4619-b2bb-b5672e17b70b" name="DragSourceContext" clientDependency="0784cfea-5e26-46dc-8149-d9a8f3c2fff9 e513e28b-5e49-41eb-8d5e-cbdf096a54ae f36f4c3c-081c-4799-8695-5fc1a1255a7a">
              <ownedComment xmi:id="fac62496-dd36-4348-970a-d6f0b33f4948" body="The &lt;code>DragSourceContext&lt;/code> class is responsible for managing the&#xA;initiator side of the Drag and Drop protocol. In particular, it is responsible&#xA;for managing drag event notifications to the &lt;code>DragSourceListener&lt;/code>s&#xA;and &lt;code>DragSourceMotionListener&lt;/code>s, and providing the&#xA;&lt;code>Transferable&lt;/code> representing the source data for the drag operation.&#xA;&lt;p>&#xA;Note that the &lt;code>DragSourceContext&lt;/code> itself&#xA;implements the &lt;code>DragSourceListener&lt;/code> and&#xA;&lt;code>DragSourceMotionListener&lt;/code> interfaces.&#xA;This is to allow the platform peer&#xA;(the &lt;code>DragSourceContextPeer&lt;/code> instance)&#xA;created by the &lt;code>DragSource&lt;/code> to notify&#xA;the &lt;code>DragSourceContext&lt;/code> of&#xA;state changes in the ongoing operation. This allows the&#xA;&lt;code>DragSourceContext&lt;/code> to interpose&#xA;itself between the platform and the&#xA;listeners provided by the initiator of the drag operation.&#xA;&#xA;@see DragSourceListener&#xA;@see DragSourceMotionListener&#xA;@version 1.51, 12/19/03&#xA;@since 1.2&#xA;" annotatedElement="16fbbcc9-4656-4619-b2bb-b5672e17b70b"/>
              <interfaceRealization xmi:id="e513e28b-5e49-41eb-8d5e-cbdf096a54ae" name="" supplier="41b73f00-ad15-4def-a4f2-1f322121f0c1" client="16fbbcc9-4656-4619-b2bb-b5672e17b70b" contract="41b73f00-ad15-4def-a4f2-1f322121f0c1"/>
              <interfaceRealization xmi:id="0784cfea-5e26-46dc-8149-d9a8f3c2fff9" name="" supplier="e7580a30-b9ac-42f9-8745-f84c12f048bb" client="16fbbcc9-4656-4619-b2bb-b5672e17b70b" contract="e7580a30-b9ac-42f9-8745-f84c12f048bb"/>
              <interfaceRealization xmi:id="f36f4c3c-081c-4799-8695-5fc1a1255a7a" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="16fbbcc9-4656-4619-b2bb-b5672e17b70b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="41b73f00-ad15-4def-a4f2-1f322121f0c1" name="DragSourceListener" isAbstract="true">
              <ownedComment xmi:id="8c50c037-dd0c-4b6a-a766-7aa1eb08ed87" body="The &lt;code>DragSourceListener&lt;/code> defines the&#xA;event interface for originators of&#xA;Drag and Drop operations to track the state of the user's gesture, and to&#xA;provide appropriate &quot;drag over&quot;&#xA;feedback to the user throughout the&#xA;Drag and Drop operation.&#xA;&lt;p>&#xA;The drop site is &lt;i>associated with the previous &lt;code>dragEnter()&lt;/code>&#xA;invocation&lt;/i> if the latest invocation of &lt;code>dragEnter()&lt;/code> on this&#xA;listener:&#xA;&lt;ul>&#xA;&lt;li>corresponds to that drop site and&#xA;&lt;li> is not followed by a &lt;code>dragExit()&lt;/code> invocation on this listener.&#xA;&lt;/ul>&#xA;&#xA;@version &#x9;1.20, 12/19/03&#xA;@since 1.2&#xA;" annotatedElement="41b73f00-ad15-4def-a4f2-1f322121f0c1"/>
              <generalization xmi:id="d8baf4fc-9ea7-46ca-bfff-5c683fdc1197" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c8455cc2-e905-4fcb-a5ec-1889a031eea8" name="SerializationTester" visibility="package" isLeaf="true">
              <ownedComment xmi:id="e84af3e6-5a1e-48ef-af57-6cedaf2ec335" body="Tests if an object can truly be serialized by serializing it to a null&#xA;OutputStream.&#xA;&#xA;@version 1.5, 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="c8455cc2-e905-4fcb-a5ec-1889a031eea8"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5b388678-15a5-4222-bdb5-1e9c1140bb80" name="DropTargetDragEvent">
              <ownedComment xmi:id="b7b70f1e-dcaa-4b14-8ca9-ed337e5e6699" body="The &lt;code>DropTargetDragEvent&lt;/code> is delivered to a&#xA;&lt;code>DropTargetListener&lt;/code> via its&#xA;dragEnter() and dragOver() methods.&#xA;&lt;p>&#xA;The &lt;code>DropTargetDragEvent&lt;/code> reports the &lt;i>source drop actions&lt;/i>&#xA;and the &lt;i>user drop action&lt;/i> that reflect the current state of&#xA;the drag operation.&#xA;&lt;p>&#xA;&lt;i>Source drop actions&lt;/i> is a bitwise mask of &lt;code>DnDConstants&lt;/code>&#xA;that represents the set of drop actions supported by the drag source for&#xA;this drag operation.&#xA;&lt;p>&#xA;&lt;i>User drop action&lt;/i> depends on the drop actions supported by the drag&#xA;source and the drop action selected by the user. The user can select a drop&#xA;action by pressing modifier keys during the drag operation:&#xA;&lt;pre>&#xA;Ctrl + Shift -> ACTION_LINK&#xA;Ctrl         -> ACTION_COPY&#xA;Shift        -> ACTION_MOVE&#xA;&lt;/pre>&#xA;If the user selects a drop action, the &lt;i>user drop action&lt;/i> is one of&#xA;&lt;code>DnDConstants&lt;/code> that represents the selected drop action if this&#xA;drop action is supported by the drag source or&#xA;&lt;code>DnDConstants.ACTION_NONE&lt;/code> if this drop action is not supported&#xA;by the drag source.&#xA;&lt;p>&#xA;If the user doesn't select a drop action, the set of&#xA;&lt;code>DnDConstants&lt;/code> that represents the set of drop actions supported&#xA;by the drag source is searched for &lt;code>DnDConstants.ACTION_MOVE&lt;/code>,&#xA;then for &lt;code>DnDConstants.ACTION_COPY&lt;/code>, then for&#xA;&lt;code>DnDConstants.ACTION_LINK&lt;/code> and the &lt;i>user drop action&lt;/i> is the&#xA;first constant found. If no constant is found the &lt;i>user drop action&lt;/i>&#xA;is &lt;code>DnDConstants.ACTION_NONE&lt;/code>.&#xA;&#xA;@version &#x9;1.24, 05/05/04&#xA;@since 1.2&#xA;" annotatedElement="5b388678-15a5-4222-bdb5-1e9c1140bb80"/>
              <generalization xmi:id="9413f817-956f-4370-9564-c1d66c236606" isSubstitutable="true" general="981f2cdc-f168-4dac-a4d8-26c9abb3399b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e279405d-a00a-498a-920d-937e4e0711ef" name="DragSource" clientDependency="bf53ea12-70a0-4f49-ae5e-163d130993b4">
              <ownedComment xmi:id="3a332186-d1c2-452e-95eb-64780c522485" body="The &lt;code>DragSource&lt;/code> is the entity responsible&#xA;for the initiation of the Drag&#xA;and Drop operation, and may be used in a number of scenarios:&#xA;&lt;UL>&#xA;&lt;LI>1 default instance per JVM for the lifetime of that JVM.&#xA;&lt;LI>1 instance per class of potential Drag Initiator object (e.g&#xA;TextField). [implementation dependent]&#xA;&lt;LI>1 per instance of a particular&#xA;&lt;code>Component&lt;/code>, or application specific&#xA;object associated with a &lt;code>Component&lt;/code>&#xA;instance in the GUI. [implementation dependent]&#xA;&lt;LI>Some other arbitrary association. [implementation dependent]&#xA;&lt;/UL>&#xA;&#xA;Once the &lt;code>DragSource&lt;/code> is&#xA;obtained, a &lt;code>DragGestureRecognizer&lt;/code> should&#xA;also be obtained to associate the &lt;code>DragSource&lt;/code>&#xA;with a particular&#xA;&lt;code>Component&lt;/code>.&#xA;&lt;P>&#xA;The initial interpretation of the user's gesture,&#xA;and the subsequent starting of the drag operation&#xA;are the responsibility of the implementing&#xA;&lt;code>Component&lt;/code>, which is usually&#xA;implemented by a &lt;code>DragGestureRecognizer&lt;/code>.&#xA;&lt;P>&#xA;When a drag gesture occurs, the&#xA;&lt;code>DragSource&lt;/code>'s&#xA;startDrag() method shall be&#xA;invoked in order to cause processing&#xA;of the user's navigational&#xA;gestures and delivery of Drag and Drop&#xA;protocol notifications. A&#xA;&lt;code>DragSource&lt;/code> shall only&#xA;permit a single Drag and Drop operation to be&#xA;current at any one time, and shall&#xA;reject any further startDrag() requests&#xA;by throwing an &lt;code>IllegalDnDOperationException&lt;/code>&#xA;until such time as the extant operation is complete.&#xA;&lt;P>&#xA;The startDrag() method invokes the&#xA;createDragSourceContext() method to&#xA;instantiate an appropriate&#xA;&lt;code>DragSourceContext&lt;/code>&#xA;and associate the &lt;code>DragSourceContextPeer&lt;/code>&#xA;with that.&#xA;&lt;P>&#xA;If the Drag and Drop System is&#xA;unable to initiate a drag operation for&#xA;some reason, the startDrag() method throws&#xA;a &lt;code>java.awt.dnd.InvalidDnDOperationException&lt;/code>&#xA;to signal such a condition. Typically this&#xA;exception is thrown when the underlying platform&#xA;system is either not in a state to&#xA;initiate a drag, or the parameters specified are invalid.&#xA;&lt;P>&#xA;Note that during the drag, the&#xA;set of operations exposed by the source&#xA;at the start of the drag operation may not change&#xA;until the operation is complete.&#xA;The operation(s) are constant for the&#xA;duration of the operation with respect to the&#xA;&lt;code>DragSource&lt;/code>.&#xA;&#xA;@version &#x9;1.45, 05/05/04&#xA;@since 1.2&#xA;" annotatedElement="e279405d-a00a-498a-920d-937e4e0711ef"/>
              <interfaceRealization xmi:id="bf53ea12-70a0-4f49-ae5e-163d130993b4" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="e279405d-a00a-498a-920d-937e4e0711ef" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8b152399-e85f-41a1-b3b9-344df4d973d9" name="DragSourceEvent">
              <ownedComment xmi:id="3f7e302a-cc00-4bff-ab77-e223514955d9" body="This class is the base class for&#xA;&lt;code>DragSourceDragEvent&lt;/code> and&#xA;&lt;code>DragSourceDropEvent&lt;/code>.&#xA;&lt;p>&#xA;&lt;code>DragSourceEvent&lt;/code>s are generated whenever the drag enters, moves&#xA;over, or exits a drop site, when the drop action changes, and when the drag&#xA;ends. The location for the generated &lt;code>DragSourceEvent&lt;/code> specifies&#xA;the mouse cursor location in screen coordinates at the moment this event&#xA;occured.&#xA;&lt;p>&#xA;In a multi-screen environment without a virtual device, the cursor location is&#xA;specified in the coordinate system of the &lt;i>initiator&lt;/i>&#xA;&lt;code>GraphicsConfiguration&lt;/code>. The &lt;i>initiator&lt;/i>&#xA;&lt;code>GraphicsConfiguration&lt;/code> is the &lt;code>GraphicsConfiguration&lt;/code>&#xA;of the &lt;code>Component&lt;/code> on which the drag gesture for the current drag&#xA;operation was recognized. If the cursor location is outside the bounds of&#xA;the initiator &lt;code>GraphicsConfiguration&lt;/code>, the reported coordinates are&#xA;clipped to fit within the bounds of that &lt;code>GraphicsConfiguration&lt;/code>.&#xA;&lt;p>&#xA;In a multi-screen environment with a virtual device, the location is specified&#xA;in the corresponding virtual coordinate system. If the cursor location is&#xA;outside the bounds of the virtual device the reported coordinates are&#xA;clipped to fit within the bounds of the virtual device.&#xA;&#xA;@since 1.2&#xA;" annotatedElement="8b152399-e85f-41a1-b3b9-344df4d973d9"/>
              <generalization xmi:id="b8260def-0821-41ad-8850-271179016221" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="863e1fe2-0e66-4a94-92c3-534e83b700ab" name="DnDConstants" isLeaf="true">
              <ownedComment xmi:id="262cfa00-25f6-498c-b574-154f99df9ad2" body="This class contains constant values representing&#xA;the type of action(s) to be performed by a Drag and Drop operation.&#xA;@version &#x9;1.19, 12/19/03&#xA;@since 1.2&#xA;" annotatedElement="863e1fe2-0e66-4a94-92c3-534e83b700ab"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="378d1753-21b6-4ca2-bfc2-0be1927df167" name="DragSourceDragEvent">
              <ownedComment xmi:id="bfcb3673-14df-4de9-8b5e-017408d5c782" body="The &lt;code>DragSourceDragEvent&lt;/code> is&#xA;delivered from the &lt;code>DragSourceContextPeer&lt;/code>,&#xA;via the &lt;code>DragSourceContext&lt;/code>, to the &lt;code>DragSourceListener&lt;/code>&#xA;registered with that &lt;code>DragSourceContext&lt;/code> and with its associated&#xA;&lt;code>DragSource&lt;/code>.&#xA;&lt;p>&#xA;The &lt;code>DragSourceDragEvent&lt;/code> reports the &lt;i>target drop action&lt;/i>&#xA;and the &lt;i>user drop action&lt;/i> that reflect the current state of&#xA;the drag operation.&#xA;&lt;p>&#xA;&lt;i>Target drop action&lt;/i> is one of &lt;code>DnDConstants&lt;/code> that represents&#xA;the drop action selected by the current drop target if this drop action is&#xA;supported by the drag source or &lt;code>DnDConstants.ACTION_NONE&lt;/code> if this&#xA;drop action is not supported by the drag source.&#xA;&lt;p>&#xA;&lt;i>User drop action&lt;/i> depends on the drop actions supported by the drag&#xA;source and the drop action selected by the user. The user can select a drop&#xA;action by pressing modifier keys during the drag operation:&#xA;&lt;pre>&#xA;Ctrl + Shift -> ACTION_LINK&#xA;Ctrl         -> ACTION_COPY&#xA;Shift        -> ACTION_MOVE&#xA;&lt;/pre>&#xA;If the user selects a drop action, the &lt;i>user drop action&lt;/i> is one of&#xA;&lt;code>DnDConstants&lt;/code> that represents the selected drop action if this&#xA;drop action is supported by the drag source or&#xA;&lt;code>DnDConstants.ACTION_NONE&lt;/code> if this drop action is not supported&#xA;by the drag source.&#xA;&lt;p>&#xA;If the user doesn't select a drop action, the set of&#xA;&lt;code>DnDConstants&lt;/code> that represents the set of drop actions supported&#xA;by the drag source is searched for &lt;code>DnDConstants.ACTION_MOVE&lt;/code>,&#xA;then for &lt;code>DnDConstants.ACTION_COPY&lt;/code>, then for&#xA;&lt;code>DnDConstants.ACTION_LINK&lt;/code> and the &lt;i>user drop action&lt;/i> is the&#xA;first constant found. If no constant is found the &lt;i>user drop action&lt;/i>&#xA;is &lt;code>DnDConstants.ACTION_NONE&lt;/code>.&#xA;&#xA;@version &#x9;1.29, 12/19/03&#xA;@since 1.2&#xA;&#xA;" annotatedElement="378d1753-21b6-4ca2-bfc2-0be1927df167"/>
              <generalization xmi:id="97846fff-2a45-4486-bb0a-a6c22a0ea4db" isSubstitutable="true" general="8b152399-e85f-41a1-b3b9-344df4d973d9"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5841bb3d-9aa7-4fa1-9f67-42ecba31e34b" name="DragSourceDropEvent">
              <ownedComment xmi:id="dd46b915-5921-4f5c-b6e6-f2958479250c" body="The &lt;code>DragSourceDropEvent&lt;/code> is delivered&#xA;from the &lt;code>DragSourceContextPeer&lt;/code>,&#xA;via the &lt;code>DragSourceContext&lt;/code>, to the &lt;code>dragDropEnd&lt;/code>&#xA;method of &lt;code>DragSourceListener&lt;/code>s registered with that&#xA;&lt;code>DragSourceContext&lt;/code> and with its associated&#xA;&lt;code>DragSource&lt;/code>.&#xA;It contains sufficient information for the&#xA;originator of the operation&#xA;to provide appropriate feedback to the end user&#xA;when the operation completes.&#xA;&lt;P>&#xA;@version &#x9;1.19, 12/19/03&#xA;&lt;P>&#xA;@since 1.2&#xA;" annotatedElement="5841bb3d-9aa7-4fa1-9f67-42ecba31e34b"/>
              <generalization xmi:id="b6099c6a-baa6-4187-8824-1af84da27ae0" isSubstitutable="true" general="8b152399-e85f-41a1-b3b9-344df4d973d9"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="a338a689-f561-4ad3-bc01-b616c738b4e7" name="peer">
              <packagedElement xmi:type="uml:Interface" xmi:id="c14ef9eb-162c-4b58-922d-ca331aeb8db1" name="DragSourceContextPeer" isAbstract="true">
                <ownedComment xmi:id="2d10c430-caf6-4f97-a725-e14ca3695115" body="&lt;p>&#xA;This interface is supplied by the underlying window system platform to&#xA;expose the behaviors of the Drag and Drop system to an originator of&#xA;the same&#xA;&lt;/p>&#xA;&#xA;@version &#x9;1.15, 12/19/03&#xA;@since 1.2&#xA;&#xA;" annotatedElement="c14ef9eb-162c-4b58-922d-ca331aeb8db1"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="f9bb8f70-860c-41e1-bca3-14abc192ef87" name="DropTargetContextPeer" isAbstract="true">
                <ownedComment xmi:id="470d2f41-69a6-4de5-a0c9-e3079068290c" body="&lt;p>&#xA;This interface is exposed by the underlying window system platform to&#xA;enable control of platform DnD operations&#xA;&lt;/p>&#xA;&#xA;@version &#x9;1.13, 12/19/03&#xA;@since 1.2&#xA;&#xA;" annotatedElement="f9bb8f70-860c-41e1-bca3-14abc192ef87"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="eccd06d0-5f44-424d-8c8c-4da97b782917" name="DropTargetPeer" isAbstract="true">
                <ownedComment xmi:id="845df8b0-b5dc-4e1f-8b54-bb189cc1cf2f" body="&lt;p>&#xA;The DropTargetPeer class is the interface to the platform dependent&#xA;DnD facilities. Since the DnD system is based on the native platform's&#xA;facilities, a DropTargetPeer will be associated with a ComponentPeer&#xA;of the nearsest enclosing native Container (in the case of lightweights)&#xA;&lt;/p>&#xA;&#xA;@version &#x9;1.10, 12/19/03&#xA;@since 1.2&#xA;&#xA;" annotatedElement="eccd06d0-5f44-424d-8c8c-4da97b782917"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8a165233-0c5d-4378-b947-76c03c5c37d1" name="MouseDragGestureRecognizer" clientDependency="377c5c9c-24b8-44a3-84cf-dbd6b7fc4a93 3883c548-2aa4-491d-a326-aaba46b88797" isAbstract="true">
              <ownedComment xmi:id="83caedd2-f02b-4006-9aa6-52cfdf2c2690" body="This abstract subclass of &lt;code>DragGestureRecognizer&lt;/code>&#xA;defines a &lt;code>DragGestureRecognizer&lt;/code>&#xA;for mouse-based gestures.&#xA;&#xA;Each platform implements its own concrete subclass of this class,&#xA;available via the Toolkit.createDragGestureRecognizer() method,&#xA;to encapsulate&#xA;the recognition of the platform dependent mouse gesture(s) that initiate&#xA;a Drag and Drop operation.&#xA;&lt;p>&#xA;Mouse drag gesture recognizers should honor the&#xA;drag gesture motion threshold, available through&#xA;{@link DragSource#getDragThreshold}.&#xA;A drag gesture should be recognized only when the distance&#xA;in either the horizontal or vertical direction between&#xA;the location of the latest mouse dragged event and the&#xA;location of the corresponding mouse button pressed event&#xA;is greater than the drag gesture motion threshold.&#xA;&lt;p>&#xA;Drag gesture recognizers created with&#xA;{@link DragSource#createDefaultDragGestureRecognizer}&#xA;follow this convention.&#xA;&#xA;@author Laurence P. G. Cable&#xA;@version 1.14&#xA;&#xA;@see java.awt.dnd.DragGestureListener&#xA;@see java.awt.dnd.DragGestureEvent&#xA;@see java.awt.dnd.DragSource&#xA;" annotatedElement="8a165233-0c5d-4378-b947-76c03c5c37d1"/>
              <generalization xmi:id="b7de4605-a83b-440a-8171-aeef7a3c6602" isSubstitutable="true" general="bc05fb8c-6d22-4108-9c58-a2ba19f967ec"/>
              <interfaceRealization xmi:id="3883c548-2aa4-491d-a326-aaba46b88797" name="" supplier="d2bfccf2-94c5-4882-8d84-613f4ad53195" client="8a165233-0c5d-4378-b947-76c03c5c37d1" contract="d2bfccf2-94c5-4882-8d84-613f4ad53195"/>
              <interfaceRealization xmi:id="377c5c9c-24b8-44a3-84cf-dbd6b7fc4a93" name="" supplier="8747391f-bebd-47e3-888b-8e509ac223c9" client="8a165233-0c5d-4378-b947-76c03c5c37d1" contract="8747391f-bebd-47e3-888b-8e509ac223c9"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ca69e585-f653-47a6-a543-12bd409e449c" name="InvalidDnDOperationException">
              <ownedComment xmi:id="1718de3f-1031-403f-b97e-56724c6ba2e7" body="This exception is thrown by various methods in the java.awt.dnd package.&#xA;It is usually thrown to indicate that the target in question is unable&#xA;to undertake the requested operation that the present time, since the&#xA;undrelying DnD system is not in the appropriate state.&#xA;&#xA;@version &#x9;1.12, 12/19/03&#xA;@since 1.2&#xA;" annotatedElement="ca69e585-f653-47a6-a543-12bd409e449c"/>
              <generalization xmi:id="c96bae03-7bfd-46c6-bd29-bf7f9c3ede6b" isSubstitutable="true" general="f9e1d07d-a558-48c5-a45e-01540d385078"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="981f2cdc-f168-4dac-a4d8-26c9abb3399b" name="DropTargetEvent">
              <ownedComment xmi:id="05bf49d5-c636-4d69-b715-69e280634c0e" body="The &lt;code>DropTargetEvent&lt;/code> is the base&#xA;class for both the &lt;code>DropTargetDragEvent&lt;/code>&#xA;and the &lt;code>DropTargetDropEvent&lt;/code>.&#xA;It encapsulates the current state of the Drag and&#xA;Drop operations, in particular the current&#xA;&lt;code>DropTargetContext&lt;/code>.&#xA;&#xA;@version &#x9;1.18, 12/19/03&#xA;@since 1.2&#xA;&#xA;" annotatedElement="981f2cdc-f168-4dac-a4d8-26c9abb3399b"/>
              <generalization xmi:id="b0ed2cfa-cbe3-4713-b559-658a38a3b15e" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="e7580a30-b9ac-42f9-8745-f84c12f048bb" name="DragSourceMotionListener" isAbstract="true">
              <ownedComment xmi:id="303f1771-9710-4b8f-b758-07385aa512f3" body="A listener interface for receiving mouse motion events during a drag&#xA;operation.&#xA;&lt;p>&#xA;The class that is interested in processing mouse motion events during&#xA;a drag operation either implements this interface or extends the abstract&#xA;&lt;code>DragSourceAdapter&lt;/code> class (overriding only the methods of&#xA;interest).&#xA;&lt;p>&#xA;Create a listener object using that class and then register it with&#xA;a &lt;code>DragSource&lt;/code>. Whenever the mouse moves during a drag&#xA;operation initiated with this &lt;code>DragSource&lt;/code>, that object's&#xA;&lt;code>dragMouseMoved&lt;/code> method is invoked, and the&#xA;&lt;code>DragSourceDragEvent&lt;/code> is passed to it.&#xA;&#xA;@see DragSourceDragEvent&#xA;@see DragSource&#xA;@see DragSourceListener&#xA;@see DragSourceAdapter&#xA;&#xA;@version 1.4, 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="e7580a30-b9ac-42f9-8745-f84c12f048bb"/>
              <generalization xmi:id="35b5813e-43e0-4fa4-9454-483c5f9be673" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2faaeb6a-cbf5-4758-9805-844b5d36ea14" name="DropTarget" clientDependency="78bda16e-9c53-47ed-9744-cdd8ad363ee2 a63ca3fa-1166-4bd7-9546-c103dccb96de">
              <ownedComment xmi:id="4eb95ac9-9201-4510-b7bc-92bf0cf9aa24" body="The &lt;code>DropTarget&lt;/code> is associated&#xA;with a &lt;code>Component&lt;/code> when that &lt;code>Component&lt;/code>&#xA;wishes&#xA;to accept drops during Drag and Drop operations.&#xA;&lt;P>&#xA;Each&#xA;&lt;code>DropTarget&lt;/code> is associated with a &lt;code>FlavorMap&lt;/code>.&#xA;The default &lt;code>FlavorMap&lt;/code> hereafter designates the&#xA;&lt;code>FlavorMap&lt;/code> returned by &lt;code>SystemFlavorMap.getDefaultFlavorMap()&lt;/code>.&#xA;&#xA;@version &#x9;1.48, 12/19/03&#xA;@since 1.2&#xA;" annotatedElement="2faaeb6a-cbf5-4758-9805-844b5d36ea14"/>
              <interfaceRealization xmi:id="a63ca3fa-1166-4bd7-9546-c103dccb96de" name="" supplier="2d2b5782-0c86-4da3-a722-9835891eb353" client="2faaeb6a-cbf5-4758-9805-844b5d36ea14" contract="2d2b5782-0c86-4da3-a722-9835891eb353"/>
              <interfaceRealization xmi:id="78bda16e-9c53-47ed-9744-cdd8ad363ee2" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="2faaeb6a-cbf5-4758-9805-844b5d36ea14" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="ef98941a-c363-4cba-80be-e7bf4735d26d" name="DropTargetAutoScroller" visibility="protected" clientDependency="b35dd77a-79db-47e0-91e0-74fb3ea1ed3b">
                <ownedComment xmi:id="d2d9b0f7-e53c-49b5-a707-84d83936cfdf" body="this protected nested class implements autoscrolling&#xA;" annotatedElement="ef98941a-c363-4cba-80be-e7bf4735d26d"/>
                <interfaceRealization xmi:id="b35dd77a-79db-47e0-91e0-74fb3ea1ed3b" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="ef98941a-c363-4cba-80be-e7bf4735d26d" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="063af486-f780-47a4-92d2-011d35393a0a" name="DragSourceAdapter" clientDependency="85ca5438-7fa2-4ca1-abcc-ae22de17feb3 dedf3e9e-3513-4c86-96be-810371a675ff" isAbstract="true">
              <ownedComment xmi:id="d0ea9aa1-2b3f-432e-831e-454321a7be3f" body="An abstract adapter class for receiving drag source events. The methods in&#xA;this class are empty. This class exists only as a convenience for creating&#xA;listener objects.&#xA;&lt;p>&#xA;Extend this class to create a &lt;code>DragSourceEvent&lt;/code> listener&#xA;and override the methods for the events of interest. (If you implement the&#xA;&lt;code>DragSourceListener&lt;/code> interface, you have to define all of&#xA;the methods in it. This abstract class defines null methods for them&#xA;all, so you only have to define methods for events you care about.)&#xA;&lt;p>&#xA;Create a listener object using the extended class and then register it with&#xA;a &lt;code>DragSource&lt;/code>. When the drag enters, moves over, or exits&#xA;a drop site, when the drop action changes, and when the drag ends, the&#xA;relevant method in the listener object is invoked, and the&#xA;&lt;code>DragSourceEvent&lt;/code> is passed to it.&#xA;&lt;p>&#xA;The drop site is &lt;i>associated with the previous &lt;code>dragEnter()&lt;/code>&#xA;invocation&lt;/i> if the latest invocation of &lt;code>dragEnter()&lt;/code> on this&#xA;adapter corresponds to that drop site and is not followed by a&#xA;&lt;code>dragExit()&lt;/code> invocation on this adapter.&#xA;&#xA;@see DragSourceEvent&#xA;@see DragSourceListener&#xA;@see DragSourceMotionListener&#xA;&#xA;@author David Mendenhall&#xA;@version 1.6, 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="063af486-f780-47a4-92d2-011d35393a0a"/>
              <interfaceRealization xmi:id="85ca5438-7fa2-4ca1-abcc-ae22de17feb3" name="" supplier="41b73f00-ad15-4def-a4f2-1f322121f0c1" client="063af486-f780-47a4-92d2-011d35393a0a" contract="41b73f00-ad15-4def-a4f2-1f322121f0c1"/>
              <interfaceRealization xmi:id="dedf3e9e-3513-4c86-96be-810371a675ff" name="" supplier="e7580a30-b9ac-42f9-8745-f84c12f048bb" client="063af486-f780-47a4-92d2-011d35393a0a" contract="e7580a30-b9ac-42f9-8745-f84c12f048bb"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="2d2b5782-0c86-4da3-a722-9835891eb353" name="DropTargetListener" isAbstract="true">
              <ownedComment xmi:id="f909196f-120b-4ca0-bbe7-1c08323ba952" body="The &lt;code>DropTargetListener&lt;/code> interface&#xA;is the callback interface used by the&#xA;&lt;code>DropTarget&lt;/code> class to provide&#xA;notification of DnD operations that involve&#xA;the subject &lt;code>DropTarget&lt;/code>. Methods of&#xA;this interface may be implemented to provide&#xA;&quot;drag under&quot; visual feedback to the user throughout&#xA;the Drag and Drop operation.&#xA;&lt;p>&#xA;Create a listener object by implementing the interface and then register it&#xA;with a &lt;code>DropTarget&lt;/code>. When the drag enters, moves over, or exits&#xA;the operable part of the drop site for that &lt;code>DropTarget&lt;/code>, when&#xA;the drop action changes, and when the drop occurs, the relevant method in&#xA;the listener object is invoked, and the &lt;code>DropTargetEvent&lt;/code> is&#xA;passed to it.&#xA;&lt;p>&#xA;The operable part of the drop site for the &lt;code>DropTarget&lt;/code> is&#xA;the part of the associated &lt;code>Component&lt;/code>'s geometry that is not&#xA;obscured by an overlapping top-level window or by another&#xA;&lt;code>Component&lt;/code> higher in the Z-order that has an associated active&#xA;&lt;code>DropTarget&lt;/code>.&#xA;&lt;p>&#xA;During the drag, the data associated with the current drag operation can be&#xA;retrieved by calling &lt;code>getTransferable()&lt;/code> on&#xA;&lt;code>DropTargetDragEvent&lt;/code> instances passed to the listener's&#xA;methods.&#xA;&lt;p>&#xA;Note that &lt;code>getTransferable()&lt;/code> on the&#xA;&lt;code>DropTargetDragEvent&lt;/code> instance should only be called within the&#xA;respective listener's method and all the necessary data should be retrieved&#xA;from the returned &lt;code>Transferable&lt;/code> before that method returns.&#xA;&#xA;@version &#x9;1.22, 12/19/03&#xA;@since 1.2&#xA;" annotatedElement="2d2b5782-0c86-4da3-a722-9835891eb353"/>
              <generalization xmi:id="f9a90496-b212-4c4e-acef-e6f8f98457c0" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="09b46730-9455-42a2-a2ce-e09b8963e217" name="DragGestureListener" isAbstract="true">
              <ownedComment xmi:id="ea5c07af-13e5-497d-bf10-143e256120cc" body="This interface is sourced from a &lt;code>DragGestureRecognizer&lt;/code>&#xA;and is invoked&#xA;when an object of that (sub)class detects a drag initiating&#xA;gesture.&#xA;&lt;p>&#xA;The implementor of this interface is responsible for starting the drag&#xA;as a result of receiving such notification.&#xA;&#xA;@see java.awt.dnd.DragGestureRecognizer&#xA;@see java.awt.dnd.DragGestureEvent&#xA;@see java.awt.dnd.DragSource&#xA;" annotatedElement="09b46730-9455-42a2-a2ce-e09b8963e217"/>
              <generalization xmi:id="f31a9cf3-7a3d-4fb7-ba7f-31cf4859afda" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6431e46b-56f3-4fc2-ac37-bd147007c167" name="DragGestureEvent">
              <ownedComment xmi:id="c06c9ea5-57f9-4607-a770-01625fa3fea0" body="A &lt;code>DragGestureEvent&lt;/code> is passed&#xA;to &lt;code>DragGestureListener&lt;/code>'s&#xA;dragGestureRecognized() method&#xA;when a particular &lt;code>DragGestureRecognizer&lt;/code> detects that a&#xA;platform dependent drag initiating gesture has occurred&#xA;on the &lt;code>Component&lt;/code> that it is tracking.&#xA;&#xA;@version 1.23&#xA;@see java.awt.dnd.DragGestureRecognizer&#xA;@see java.awt.dnd.DragGestureListener&#xA;@see java.awt.dnd.DragSource&#xA;" annotatedElement="6431e46b-56f3-4fc2-ac37-bd147007c167"/>
              <generalization xmi:id="3ec69d41-886a-46e0-b600-00617443b4b8" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="36cededc-ef25-4600-8fda-545bdcfeb66e" name="Autoscroll" isAbstract="true">
              <ownedComment xmi:id="6bfb333b-5a8d-474f-b14b-5a9907240362" body="During DnD operations it is possible that a user may wish to drop the&#xA;subject of the operation on a region of a scrollable GUI control that is&#xA;not currently visible to the user.&#xA;&lt;p>&#xA;In such situations it is desirable that the GUI control detect this&#xA;and institute a scroll operation in order to make obscured region(s)&#xA;visible to the user. This feature is known as autoscrolling.&#xA;&lt;p>&#xA;If a GUI control is both an active &lt;code>DropTarget&lt;/code>&#xA;and is also scrollable, it&#xA;can receive notifications of autoscrolling gestures by the user from&#xA;the DnD system by implementing this interface.&#xA;&lt;p>&#xA;An autoscrolling gesture is initiated by the user by keeping the drag&#xA;cursor motionless with a border region of the &lt;code>Component&lt;/code>,&#xA;referred to as&#xA;the &quot;autoscrolling region&quot;, for a predefined period of time, this will&#xA;result in repeated scroll requests to the &lt;code>Component&lt;/code>&#xA;until the drag &lt;code>Cursor&lt;/code> resumes its motion.&#xA;&#xA;@version &#x9;1.13, 12/19/03&#xA;@since 1.2&#xA;" annotatedElement="36cededc-ef25-4600-8fda-545bdcfeb66e"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b39f03e7-a893-4db5-afe2-6ed7217740f4" name="EventQueue">
            <ownedComment xmi:id="b30ba02d-c366-4318-8f42-756afb15dd53" body="&lt;code>EventQueue&lt;/code> is a platform-independent class&#xA;that queues events, both from the underlying peer classes&#xA;and from trusted application classes.&#xA;&lt;p>&#xA;It encapsulates asynchronous event dispatch machinery which&#xA;extracts events from the queue and dispatches them by calling&#xA;{@link #dispatchEvent(AWTEvent) dispatchEvent(AWTEvent)} method&#xA;on this &lt;code>EventQueue&lt;/code> with the event to be dispatched&#xA;as an argument.  The particular behavior of this machinery is&#xA;implementation-dependent.  The only requirements are that events&#xA;which were actually enqueued to this queue (note that events&#xA;being posted to the &lt;code>EventQueue&lt;/code> can be coalesced)&#xA;are dispatched:&#xA;&lt;dl>&#xA;&lt;dt> Sequentially.&#xA;&lt;dd> That is, it is not permitted that several events from&#xA;this queue are dispatched simultaneously.&#xA;&lt;dt> In the same order as they are enqueued.&#xA;&lt;dd> That is, if &lt;code>AWTEvent&lt;/code>&amp;nbsp;A is enqueued&#xA;to the &lt;code>EventQueue&lt;/code> before&#xA;&lt;code>AWTEvent&lt;/code>&amp;nbsp;B then event B will not be&#xA;dispatched before event A.&#xA;&lt;/dl>&#xA;&lt;p>&#xA;Some browsers partition applets in different code bases into&#xA;separate contexts, and establish walls between these contexts.&#xA;In such a scenario, there will be one &lt;code>EventQueue&lt;/code>&#xA;per context. Other browsers place all applets into the same&#xA;context, implying that there will be only a single, global&#xA;&lt;code>EventQueue&lt;/code> for all applets. This behavior is&#xA;implementation-dependent.  Consult your browser's documentation&#xA;for more information.&#xA;&lt;p>&#xA;For information on the threading issues of the event dispatch&#xA;machinery, see &lt;a href=&quot;doc-files/AWTThreadIssues.html&quot;>AWT Threading&#xA;Issues&lt;/a>.&#xA;&#xA;@author Thomas Ball&#xA;@author Fred Ecks&#xA;@author David Mendenhall&#xA;&#xA;@version &#x9;1.96, 06/28/04&#xA;@since &#x9;1.1&#xA;" annotatedElement="b39f03e7-a893-4db5-afe2-6ed7217740f4"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6416dd0b-c2a7-466b-a592-feec84e0a126" name="TexturePaint" clientDependency="04eb57e7-73bc-49e6-acda-00f69b8c6ebb">
            <ownedComment xmi:id="3484ad09-f461-4111-8e60-3457bf812990" body="The &lt;code>TexturePaint&lt;/code> class provides a way to fill a&#xA;{@link Shape} with a texture that is specified as&#xA;a {@link BufferedImage}. The size of the &lt;code>BufferedImage&lt;/code>&#xA;object should be small because the &lt;code>BufferedImage&lt;/code> data&#xA;is copied by the &lt;code>TexturePaint&lt;/code> object.&#xA;At construction time, the texture is anchored to the upper&#xA;left corner of a {@link Rectangle2D} that is&#xA;specified in user space.  Texture is computed for&#xA;locations in the device space by conceptually replicating the&#xA;specified &lt;code>Rectangle2D&lt;/code> infinitely in all directions&#xA;in user space and mapping the &lt;code>BufferedImage&lt;/code> to each&#xA;replicated &lt;code>Rectangle2D&lt;/code>.&#xA;@see Paint&#xA;@see Graphics2D#setPaint&#xA;@version 1.39, 12/19/03&#xA;" annotatedElement="6416dd0b-c2a7-466b-a592-feec84e0a126"/>
            <interfaceRealization xmi:id="04eb57e7-73bc-49e6-acda-00f69b8c6ebb" name="" supplier="c02d0204-63be-4360-b4c5-08316e96df10" client="6416dd0b-c2a7-466b-a592-feec84e0a126" contract="c02d0204-63be-4360-b4c5-08316e96df10"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="faf9dec5-0a30-4718-8e3b-b6424fcd0d20" name="Window" clientDependency="a664ba48-c9e8-4d16-a5a6-5700788ca314">
            <ownedComment xmi:id="5a94947b-c4e4-4e41-88b7-6118860d0451" body="A &lt;code>Window&lt;/code> object is a top-level window with no borders and no&#xA;menubar.&#xA;The default layout for a window is &lt;code>BorderLayout&lt;/code>.&#xA;&lt;p>&#xA;A window must have either a frame, dialog, or another window defined as its&#xA;owner when it's constructed.&#xA;&lt;p>&#xA;In a multi-screen environment, you can create a &lt;code>Window&lt;/code>&#xA;on a different screen device by constructing the &lt;code>Window&lt;/code>&#xA;with {@link #Window(Window, GraphicsConfiguration)}.  The&#xA;&lt;code>GraphicsConfiguration&lt;/code> object is one of the&#xA;&lt;code>GraphicsConfiguration&lt;/code> objects of the target screen device.&#xA;&lt;p>&#xA;In a virtual device multi-screen environment in which the desktop&#xA;area could span multiple physical screen devices, the bounds of all&#xA;configurations are relative to the virtual device coordinate system.&#xA;The origin of the virtual-coordinate system is at the upper left-hand&#xA;corner of the primary physical screen.  Depending on the location of&#xA;the primary screen in the virtual device, negative coordinates are&#xA;possible, as shown in the following figure.&#xA;&lt;p>&#xA;&lt;img src=&quot;doc-files/MultiScreen.gif&quot;&#xA;alt=&quot;Diagram shows virtual device containing 4 physical screens. Primary physical screen shows coords (0,0), other screen shows (-80,-100).&quot;&#xA;ALIGN=center HSPACE=10 VSPACE=7>&#xA;&lt;p>&#xA;In such an environment, when calling &lt;code>setLocation&lt;/code>,&#xA;you must pass a virtual coordinate to this method.  Similarly,&#xA;calling &lt;code>getLocationOnScreen&lt;/code> on a &lt;code>Window&lt;/code> returns&#xA;virtual device coordinates.  Call the &lt;code>getBounds&lt;/code> method&#xA;of a &lt;code>GraphicsConfiguration&lt;/code> to find its origin in the virtual&#xA;coordinate system.&#xA;&lt;p>&#xA;The following code sets the location of a &lt;code>Window&lt;/code>&#xA;at (10, 10) relative to the origin of the physical screen&#xA;of the corresponding &lt;code>GraphicsConfiguration&lt;/code>.  If the&#xA;bounds of the &lt;code>GraphicsConfiguration&lt;/code> is not taken&#xA;into account, the &lt;code>Window&lt;/code> location would be set&#xA;at (10, 10) relative to the virtual-coordinate system and would appear&#xA;on the primary physical screen, which might be different from the&#xA;physical screen of the specified &lt;code>GraphicsConfiguration&lt;/code>.&#xA;&#xA;&lt;pre>&#xA;Window w = new Window(Window owner, GraphicsConfiguration gc);&#xA;Rectangle bounds = gc.getBounds();&#xA;w.setLocation(10 + bounds.x, 10 + bounds.y);&#xA;&lt;/pre>&#xA;&#xA;&lt;p>&#xA;Note: the location and size of top-level windows (including&#xA;&lt;code>Window&lt;/code>s, &lt;code>Frame&lt;/code>s, and &lt;code>Dialog&lt;/code>s)&#xA;are under the control of the desktop's window management system.&#xA;Calls to &lt;code>setLocation&lt;/code>, &lt;code>setSize&lt;/code>, and&#xA;&lt;code>setBounds&lt;/code> are requests (not directives) which are&#xA;forwarded to the window management system.  Every effort will be&#xA;made to honor such requests.  However, in some cases the window&#xA;management system may ignore such requests, or modify the requested&#xA;geometry in order to place and size the &lt;code>Window&lt;/code> in a way&#xA;that more closely matches the desktop settings.&#xA;&#xA;Due to the asynchronous nature of native event handling, the results&#xA;returned by &lt;code>getBounds&lt;/code>, &lt;code>getLocation&lt;/code>,&#xA;&lt;code>getLocationOnScreen&lt;/code>, and &lt;code>getSize&lt;/code> might not&#xA;reflect the actual geometry of the Window on screen until the last&#xA;request has been processed.  During the processing of subsequent&#xA;requests these values might change accordingly while the window&#xA;management system fulfills the requests.&#xA;&#xA;&lt;p>&#xA;Windows are capable of generating the following WindowEvents:&#xA;WindowOpened, WindowClosed, WindowGainedFocus, WindowLostFocus.&#xA;&#xA;@version &#x9;1.208, 06/28/04&#xA;@author &#x9;Sami Shaio&#xA;@author &#x9;Arthur van Hoff&#xA;@see WindowEvent&#xA;@see #addWindowListener&#xA;@see java.awt.BorderLayout&#xA;@since       JDK1.0&#xA;" annotatedElement="faf9dec5-0a30-4718-8e3b-b6424fcd0d20"/>
            <generalization xmi:id="253d8fcf-a466-493b-8a0c-9954e40eab51" isSubstitutable="true" general="a4edac23-263c-4616-857d-4de97445e12a"/>
            <interfaceRealization xmi:id="a664ba48-c9e8-4d16-a5a6-5700788ca314" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="faf9dec5-0a30-4718-8e3b-b6424fcd0d20" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="d832de57-0f38-42c5-a24f-61a67b23d7e5" name="AccessibleAWTWindow" visibility="protected">
              <ownedComment xmi:id="dc57e84e-5caf-4e46-94c3-3dd822c6bb53" body="This class implements accessibility support for the&#xA;&lt;code>Window&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to window user-interface elements.&#xA;" annotatedElement="d832de57-0f38-42c5-a24f-61a67b23d7e5"/>
              <generalization xmi:id="072d7bbe-0074-46bb-bc74-a3cc8bbe907a" isSubstitutable="true" general="b3e98866-f74c-49b9-bf05-d16c3c4114d5"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="509f69bf-d4d5-4268-8439-7f6cdf923046" name="LightweightDispatcher" visibility="package" clientDependency="55df9414-c0be-4772-b442-cec2540de305 c0809526-2c18-4bbc-853e-ba83c98c8250">
            <ownedComment xmi:id="05ab16b2-d4e3-4795-868a-e920743fbbd9" body="Class to manage the dispatching of MouseEvents to the lightweight descendants&#xA;and SunDropTargetEvents to both lightweight and heavyweight descendants&#xA;contained by a native container.&#xA;&#xA;NOTE: the class name is not appropriate anymore, but we cannot change it&#xA;because we must keep serialization compatibility.&#xA;&#xA;@author Timothy Prinzing&#xA;" annotatedElement="509f69bf-d4d5-4268-8439-7f6cdf923046"/>
            <interfaceRealization xmi:id="55df9414-c0be-4772-b442-cec2540de305" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="509f69bf-d4d5-4268-8439-7f6cdf923046" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="c0809526-2c18-4bbc-853e-ba83c98c8250" name="" supplier="44edb2fe-b050-4f4b-84d0-05d4b3301cb8" client="509f69bf-d4d5-4268-8439-7f6cdf923046" contract="44edb2fe-b050-4f4b-84d0-05d4b3301cb8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8da32acc-bce6-47b1-b027-f3d46f5e805b" name="Event" clientDependency="ed6be501-feb4-4a80-9226-580b190e34c2">
            <ownedComment xmi:id="13f4562d-1303-43fb-a542-acb838d83f09" body="&lt;b>NOTE:&lt;/b> The &lt;code>Event&lt;/code> class is obsolete and is&#xA;available only for backwards compatilibility.  It has been replaced&#xA;by the &lt;code>AWTEvent&lt;/code> class and its subclasses.&#xA;&lt;p>&#xA;&lt;code>Event&lt;/code> is a platform-independent class that&#xA;encapsulates events from the platform's Graphical User&#xA;Interface in the Java&amp;nbsp;1.0 event model. In Java&amp;nbsp;1.1&#xA;and later versions, the &lt;code>Event&lt;/code> class is maintained&#xA;only for backwards compatibilty. The information in this&#xA;class description is provided to assist programmers in&#xA;converting Java&amp;nbsp;1.0 programs to the new event model.&#xA;&lt;p>&#xA;In the Java&amp;nbsp;1.0 event model, an event contains an&#xA;{@link Event#id} field&#xA;that indicates what type of event it is and which other&#xA;&lt;code>Event&lt;/code> variables are relevant for the event.&#xA;&lt;p>&#xA;For keyboard events, {@link Event#key}&#xA;contains a value indicating which key was activated, and&#xA;{@link Event#modifiers} contains the&#xA;modifiers for that event.  For the KEY_PRESS and KEY_RELEASE&#xA;event ids, the value of &lt;code>key&lt;/code> is the unicode&#xA;character code for the key. For KEY_ACTION and&#xA;KEY_ACTION_RELEASE, the value of &lt;code>key&lt;/code> is&#xA;one of the defined action-key identifiers in the&#xA;&lt;code>Event&lt;/code> class (&lt;code>PGUP&lt;/code>,&#xA;&lt;code>PGDN&lt;/code>, &lt;code>F1&lt;/code>, &lt;code>F2&lt;/code>, etc).&#xA;&#xA;@version 1.75 12/19/03&#xA;@author     Sami Shaio&#xA;@since      JDK1.0&#xA;" annotatedElement="8da32acc-bce6-47b1-b027-f3d46f5e805b"/>
            <interfaceRealization xmi:id="ed6be501-feb4-4a80-9226-580b190e34c2" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="8da32acc-bce6-47b1-b027-f3d46f5e805b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c8425454-99c3-4cd4-baa8-82b55ee36670" name="BufferCapabilities" clientDependency="32758f62-64bc-47a1-8db8-0a676ee86190">
            <ownedComment xmi:id="0f80f97f-17c5-4976-8a72-a59c8f0193b3" body="Capabilities and properties of buffers.&#xA;&#xA;@see java.awt.image.BufferStrategy#getCapabilities()&#xA;@see GraphicsConfiguration#getBufferCapabilities&#xA;@author Michael Martak&#xA;@since 1.4&#xA;" annotatedElement="c8425454-99c3-4cd4-baa8-82b55ee36670"/>
            <interfaceRealization xmi:id="32758f62-64bc-47a1-8db8-0a676ee86190" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="c8425454-99c3-4cd4-baa8-82b55ee36670" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="04ca4364-e74f-42f4-b036-76581a979314" name="FlipContents" isLeaf="true">
              <ownedComment xmi:id="46a9192e-6261-4ae5-9848-ce35dfeb8104" body="A type-safe enumeration of the possible back buffer contents after&#xA;page-flipping&#xA;" annotatedElement="04ca4364-e74f-42f4-b036-76581a979314"/>
              <generalization xmi:id="13090a91-6290-4e28-9831-0fa012790885" isSubstitutable="true" general="02ec514a-9014-4beb-944b-e6a997872b3f"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f86e317d-f45a-4585-90ac-06ebc3fdcb8f" name="EventDispatchThread" visibility="package">
            <ownedComment xmi:id="2b681e54-f3a1-4cff-bf91-e203453a0022" body="EventDispatchThread is a package-private AWT class which takes&#xA;events off the EventQueue and dispatches them to the appropriate&#xA;AWT components.&#xA;&#xA;The Thread starts a &quot;permanent&quot; event pump with a call to&#xA;pumpEvents(Conditional) in its run() method. Event handlers can choose to&#xA;block this event pump at any time, but should start a new pump (&lt;b>not&lt;/b>&#xA;a new EventDispatchThread) by again calling pumpEvents(Conditional). This&#xA;secondary event pump will exit automatically as soon as the Condtional&#xA;evaluate()s to false and an additional Event is pumped and dispatched.&#xA;&#xA;@author Tom Ball&#xA;@author Amy Fowler&#xA;@author Fred Ecks&#xA;@author David Mendenhall&#xA;&#xA;@version 1.52, 12/19/03&#xA;@since 1.1&#xA;" annotatedElement="f86e317d-f45a-4585-90ac-06ebc3fdcb8f"/>
            <generalization xmi:id="a054ded4-08e7-465a-97fd-b75fb0965519" isSubstitutable="true" general="c9830202-c9c4-48c6-a18c-376520128934"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a730af52-a8b5-4bed-9fb1-4ecfc383742b" name="StopDispatchEvent" visibility="package" clientDependency="a6a3ad86-b964-4dd4-a938-f99c788bb269">
              <generalization xmi:id="26d0c66d-7c1c-4ca1-b224-3909c09764d0" isSubstitutable="true" general="dc3e23e7-09df-4daf-b0e1-0ea40dc8c9ee"/>
              <interfaceRealization xmi:id="a6a3ad86-b964-4dd4-a938-f99c788bb269" name="" supplier="d01349b1-01dd-475a-9c96-0be46c8b820f" client="a730af52-a8b5-4bed-9fb1-4ecfc383742b" contract="d01349b1-01dd-475a-9c96-0be46c8b820f"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7286e673-0d1a-456b-83a4-8f00d94ce8c6" name="CheckboxGroup" clientDependency="d0895286-eccf-4bdf-b404-56ad715a66c1">
            <ownedComment xmi:id="135cae64-2bb6-44e9-b538-5296b0f1e1eb" body="The &lt;code>CheckboxGroup&lt;/code> class is used to group together&#xA;a set of &lt;code>Checkbox&lt;/code> buttons.&#xA;&lt;p>&#xA;Exactly one check box button in a &lt;code>CheckboxGroup&lt;/code> can&#xA;be in the &quot;on&quot; state at any given time. Pushing any&#xA;button sets its state to &quot;on&quot; and forces any other button that&#xA;is in the &quot;on&quot; state into the &quot;off&quot; state.&#xA;&lt;p>&#xA;The following code example produces a new check box group,&#xA;with three check boxes:&#xA;&lt;p>&#xA;&lt;hr>&lt;blockquote>&lt;pre>&#xA;setLayout(new GridLayout(3, 1));&#xA;CheckboxGroup cbg = new CheckboxGroup();&#xA;add(new Checkbox(&quot;one&quot;, cbg, true));&#xA;add(new Checkbox(&quot;two&quot;, cbg, false));&#xA;add(new Checkbox(&quot;three&quot;, cbg, false));&#xA;&lt;/pre>&lt;/blockquote>&lt;hr>&#xA;&lt;p>&#xA;This image depicts the check box group created by this example:&#xA;&lt;p>&#xA;&lt;img src=&quot;doc-files/CheckboxGroup-1.gif&quot;&#xA;alt=&quot;Shows three checkboxes, arranged vertically, labeled one, two, and three. Checkbox one is in the on state.&quot;&#xA;ALIGN=center HSPACE=10 VSPACE=7>&#xA;&lt;p>&#xA;@version &#x9;1.36 05/18/04&#xA;@author &#x9;Sami Shaio&#xA;@see         java.awt.Checkbox&#xA;@since       JDK1.0&#xA;" annotatedElement="7286e673-0d1a-456b-83a4-8f00d94ce8c6"/>
            <interfaceRealization xmi:id="d0895286-eccf-4bdf-b404-56ad715a66c1" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="7286e673-0d1a-456b-83a4-8f00d94ce8c6" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f5b40f0a-b8af-4d80-9a14-b9d4561ddb58" name="GraphicsEnvironment" isAbstract="true">
            <ownedComment xmi:id="78b43d93-2f74-4a9c-a2e5-2d301b55fd81" body="The &lt;code>GraphicsEnvironment&lt;/code> class describes the collection&#xA;of {@link GraphicsDevice} objects and {@link java.awt.Font} objects&#xA;available to a Java(tm) application on a particular platform.&#xA;The resources in this &lt;code>GraphicsEnvironment&lt;/code> might be local&#xA;or on a remote machine.  &lt;code>GraphicsDevice&lt;/code> objects can be&#xA;screens, printers or image buffers and are the destination of&#xA;{@link Graphics2D} drawing methods.  Each &lt;code>GraphicsDevice&lt;/code>&#xA;has a number of {@link GraphicsConfiguration} objects associated with&#xA;it.  These objects specify the different configurations in which the&#xA;&lt;code>GraphicsDevice&lt;/code> can be used.&#xA;@see GraphicsDevice&#xA;@see GraphicsConfiguration&#xA;@version &#x9;1.62, 04/13/04&#xA;" annotatedElement="f5b40f0a-b8af-4d80-9a14-b9d4561ddb58"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9067f23b-bd9f-4cb8-9a28-fc32653e791e" name="SentEvent" visibility="package" clientDependency="2fb1dc86-d3cd-47b6-b3fc-0030afedbde3">
            <ownedComment xmi:id="b9a7768f-592b-4790-95e2-80d5ab428c14" body="A wrapping tag for a nested AWTEvent which indicates that the event was&#xA;sent from another AppContext. The destination AppContext should handle the&#xA;event even if it is currently blocked waiting for a SequencedEvent or&#xA;another SentEvent to be handled.&#xA;&#xA;@version 1.6, 12/19/03&#xA;@author David Mendenhall&#xA;" annotatedElement="9067f23b-bd9f-4cb8-9a28-fc32653e791e"/>
            <generalization xmi:id="8547700c-a5df-4d4c-9ef1-ff3b7f69a8b9" isSubstitutable="true" general="dc3e23e7-09df-4daf-b0e1-0ea40dc8c9ee"/>
            <interfaceRealization xmi:id="2fb1dc86-d3cd-47b6-b3fc-0030afedbde3" name="" supplier="d01349b1-01dd-475a-9c96-0be46c8b820f" client="9067f23b-bd9f-4cb8-9a28-fc32653e791e" contract="d01349b1-01dd-475a-9c96-0be46c8b820f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="c02d0204-63be-4360-b4c5-08316e96df10" name="Paint" isAbstract="true">
            <ownedComment xmi:id="e47d9139-c4de-4411-832d-964c08d45ec4" body="This &lt;code>Paint&lt;/code> interface defines how color patterns&#xA;can be generated for {@link Graphics2D} operations.  A class&#xA;implementing the &lt;code>Paint&lt;/code> interface is added to the&#xA;&lt;code>Graphics2D&lt;/code> context in order to define the color&#xA;pattern used by the &lt;code>draw&lt;/code> and &lt;code>fill&lt;/code> methods.&#xA;&lt;p>&#xA;Instances of classes implementing &lt;code>Paint&lt;/code> must be&#xA;read-only because the &lt;code>Graphics2D&lt;/code> does not clone&#xA;these objects when they are set as an attribute with the&#xA;&lt;code>setPaint&lt;/code> method or when the &lt;code>Graphics2D&lt;/code>&#xA;object is itself cloned.&#xA;@see PaintContext&#xA;@see Color&#xA;@see GradientPaint&#xA;@see TexturePaint&#xA;@see Graphics2D#setPaint&#xA;@version 1.27, 12/19/03&#xA;" annotatedElement="c02d0204-63be-4360-b4c5-08316e96df10"/>
            <generalization xmi:id="6ca621a7-a5b1-4881-b894-00ef05c0b27a" isSubstitutable="true" general="a47e023b-6285-43d3-875d-b3f38c61be25"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="834853da-f403-4316-8be3-fa5c27683704" name="PageAttributes" clientDependency="0e6ef13e-47e0-4b08-aa6c-acbd7993231d" isLeaf="true">
            <ownedComment xmi:id="d2018a5c-79a9-4edc-8fef-14cd85506833" body="A set of attributes which control the output of a printed page.&#xA;&lt;p>&#xA;Instances of this class control the color state, paper size (media type),&#xA;orientation, logical origin, print quality, and resolution of every&#xA;page which uses the instance. Attribute names are compliant with the&#xA;Internet Printing Protocol (IPP) 1.1 where possible. Attribute values&#xA;are partially compliant where possible.&#xA;&lt;p>&#xA;To use a method which takes an inner class type, pass a reference to&#xA;one of the constant fields of the inner class. Client code cannot create&#xA;new instances of the inner class types because none of those classes&#xA;has a public constructor. For example, to set the color state to&#xA;monochrome, use the following code:&#xA;&lt;pre>&#xA;import java.awt.PageAttributes;&#xA;&#xA;public class MonochromeExample {&#xA;public void setMonochrome(PageAttributes pageAttributes) {&#xA;pageAttributes.setColor(PageAttributes.ColorType.MONOCHROME);&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&lt;p>&#xA;Every IPP attribute which supports an &lt;i>attributeName&lt;/i>-default value&#xA;has a corresponding &lt;code>set&lt;i>attributeName&lt;/i>ToDefault&lt;/code> method.&#xA;Default value fields are not provided.&#xA;&#xA;@version&#x9;1.7, 12/19/03&#xA;@author&#x9;David Mendenhall&#xA;" annotatedElement="834853da-f403-4316-8be3-fa5c27683704"/>
            <interfaceRealization xmi:id="0e6ef13e-47e0-4b08-aa6c-acbd7993231d" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="834853da-f403-4316-8be3-fa5c27683704" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="d5b99e12-9b5a-4799-9687-ddd3974d0a9c" name="ColorType" isLeaf="true">
              <ownedComment xmi:id="be04543d-369c-4d9c-986d-04fc4c850fa2" body="A type-safe enumeration of possible color states.&#xA;" annotatedElement="d5b99e12-9b5a-4799-9687-ddd3974d0a9c"/>
              <generalization xmi:id="ba72b095-1747-4436-86d9-b221938ecdaa" isSubstitutable="true" general="02ec514a-9014-4beb-944b-e6a997872b3f"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a3048663-7093-4c33-a56b-0db296df42ff" name="MediaType" isLeaf="true">
              <ownedComment xmi:id="d6c315bb-055b-4c13-b6f7-dc1c38e550bc" body="A type-safe enumeration of possible paper sizes. These sizes are in&#xA;compliance with IPP 1.1.&#xA;" annotatedElement="a3048663-7093-4c33-a56b-0db296df42ff"/>
              <generalization xmi:id="c9eaf263-0be7-4f48-8a9b-b22b28e97ae8" isSubstitutable="true" general="02ec514a-9014-4beb-944b-e6a997872b3f"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ab241875-fcea-4b34-8408-05a723e12fd1" name="OrientationRequestedType" isLeaf="true">
              <ownedComment xmi:id="aa84f4a1-882b-44a4-9a97-8589a5b17e09" body="A type-safe enumeration of possible orientations. These orientations&#xA;are in partial compliance with IPP 1.1.&#xA;" annotatedElement="ab241875-fcea-4b34-8408-05a723e12fd1"/>
              <generalization xmi:id="5afb7350-9c62-4864-adf3-c389317b2b73" isSubstitutable="true" general="02ec514a-9014-4beb-944b-e6a997872b3f"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="62243fc6-04ac-4f57-b8df-5172537b62f1" name="OriginType" isLeaf="true">
              <ownedComment xmi:id="76645fe0-57d3-4696-9b2c-4231691f416e" body="A type-safe enumeration of possible origins.&#xA;" annotatedElement="62243fc6-04ac-4f57-b8df-5172537b62f1"/>
              <generalization xmi:id="02aae184-91eb-4dac-8440-73ef837ccd60" isSubstitutable="true" general="02ec514a-9014-4beb-944b-e6a997872b3f"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="06f3f3d4-9d88-4e7a-b22a-db1bc8b2e72d" name="PrintQualityType" isLeaf="true">
              <ownedComment xmi:id="57ab22e5-c086-4139-8f20-9b435c40b97b" body="A type-safe enumeration of possible print qualities. These print&#xA;qualities are in compliance with IPP 1.1.&#xA;" annotatedElement="06f3f3d4-9d88-4e7a-b22a-db1bc8b2e72d"/>
              <generalization xmi:id="5d584c08-9ef0-4d3e-810f-10866ac6fcd7" isSubstitutable="true" general="02ec514a-9014-4beb-944b-e6a997872b3f"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a4edac23-263c-4616-857d-4de97445e12a" name="Container">
            <ownedComment xmi:id="067c588d-14c7-4b76-bbbc-45a66a30da05" body="A generic Abstract Window Toolkit(AWT) container object is a component&#xA;that can contain other AWT components.&#xA;&lt;p>&#xA;Components added to a container are tracked in a list.  The order&#xA;of the list will define the components' front-to-back stacking order&#xA;within the container.  If no index is specified when adding a&#xA;component to a container, it will be added to the end of the list&#xA;(and hence to the bottom of the stacking order).&#xA;&lt;p>&#xA;&lt;b>Note&lt;/b>: For details on the focus subsystem, see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html&quot;>&#xA;How to Use the Focus Subsystem&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>, and the&#xA;&lt;a href=&quot;../../java/awt/doc-files/FocusSpec.html&quot;>Focus Specification&lt;/a>&#xA;for more information.&#xA;&#xA;@version &#x9;1.267, 05/18/04&#xA;@author &#x9;Arthur van Hoff&#xA;@author &#x9;Sami Shaio&#xA;@see       #add(java.awt.Component, int)&#xA;@see       #getComponent(int)&#xA;@see       LayoutManager&#xA;@since     JDK1.0&#xA;" annotatedElement="a4edac23-263c-4616-857d-4de97445e12a"/>
            <generalization xmi:id="43213b69-c912-4d6a-b2d8-615a15163624" isSubstitutable="true" general="4d925b7b-d68e-4e13-b87b-98bdb93e9024"/>
            <nestedClassifier xmi:type="uml:Interface" xmi:id="cdd49b85-b2f9-4428-a74b-c55a3c675c53" name="EventTargetFilter" visibility="package" isAbstract="true"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="9ba99a50-b10b-4f99-b83f-7b8fda527753" name="MouseEventTargetFilter" visibility="package" clientDependency="edba8ade-adb8-4b46-bfa6-c0d282fdbaa5">
              <interfaceRealization xmi:id="edba8ade-adb8-4b46-bfa6-c0d282fdbaa5" name="" supplier="cdd49b85-b2f9-4428-a74b-c55a3c675c53" client="9ba99a50-b10b-4f99-b83f-7b8fda527753" contract="cdd49b85-b2f9-4428-a74b-c55a3c675c53"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="3070a048-a31a-4663-bb75-4694a07ccce4" name="DropTargetEventTargetFilter" visibility="package" clientDependency="e0db4c4a-519e-4bc7-b4b9-6e92fe26d6f6">
              <interfaceRealization xmi:id="e0db4c4a-519e-4bc7-b4b9-6e92fe26d6f6" name="" supplier="cdd49b85-b2f9-4428-a74b-c55a3c675c53" client="3070a048-a31a-4663-bb75-4694a07ccce4" contract="cdd49b85-b2f9-4428-a74b-c55a3c675c53"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="b3e98866-f74c-49b9-bf05-d16c3c4114d5" name="AccessibleAWTContainer" visibility="protected">
              <ownedComment xmi:id="2f6c4553-ecb6-43c5-93bf-c6ffb2ac43e7" body="Inner class of Container used to provide default support for&#xA;accessibility.  This class is not meant to be used directly by&#xA;application developers, but is instead meant only to be&#xA;subclassed by container developers.&#xA;&lt;p>&#xA;The class used to obtain the accessible role for this object,&#xA;as well as implementing many of the methods in the&#xA;AccessibleContainer interface.&#xA;" annotatedElement="b3e98866-f74c-49b9-bf05-d16c3c4114d5"/>
              <generalization xmi:id="16c42667-deba-4ef5-82bf-83de28295023" isSubstitutable="true" general="e8a07816-0ac5-4ca1-990d-2e0e3f63e181"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="c86362d6-4613-433f-a7e2-a6f6be069381" name="AccessibleContainerHandler" visibility="protected" clientDependency="c3ae074f-95f1-4182-b1cd-aa2d7c58a1e0">
                <ownedComment xmi:id="3ba7f9ce-3d4a-4783-9a26-d63eb5c8b79c" body="Fire &lt;code>PropertyChange&lt;/code> listener, if one is registered,&#xA;when children are added or removed.&#xA;" annotatedElement="c86362d6-4613-433f-a7e2-a6f6be069381"/>
                <interfaceRealization xmi:id="c3ae074f-95f1-4182-b1cd-aa2d7c58a1e0" name="" supplier="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8" client="c86362d6-4613-433f-a7e2-a6f6be069381" contract="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8"/>
              </nestedClassifier>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="755548a2-1a89-4ab3-b9a9-fbd2f98b6cc0" name="WakingRunnable" visibility="package" clientDependency="5ae3c6ff-b90a-415c-9d1e-6a520539b9f8" isLeaf="true">
              <interfaceRealization xmi:id="5ae3c6ff-b90a-415c-9d1e-6a520539b9f8" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="755548a2-1a89-4ab3-b9a9-fbd2f98b6cc0" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="80ce0e2c-30ad-43c9-b048-03cf7abf9639" name="ContainerOrderFocusTraversalPolicy" clientDependency="51ff5e60-10e6-40fa-b4a0-22032fc9017c">
            <ownedComment xmi:id="64f1f869-c301-4af9-9ea2-85b4a66d7d62" body="A FocusTraversalPolicy that determines traversal order based on the order&#xA;of child Components in a Container. From a particular focus cycle root, the&#xA;policy makes a pre-order traversal of the Component hierarchy, and traverses&#xA;a Container's children according to the ordering of the array returned by&#xA;&lt;code>Container.getComponents()&lt;/code>. Portions of the hierarchy that are&#xA;not visible and displayable will not be searched.&#xA;&lt;p>&#xA;By default, ContainerOrderFocusTraversalPolicy implicitly transfers focus&#xA;down-cycle. That is, during normal forward focus traversal, the Component&#xA;traversed after a focus cycle root will be the focus-cycle-root's default&#xA;Component to focus. This behavior can be disabled using the&#xA;&lt;code>setImplicitDownCycleTraversal&lt;/code> method.&#xA;&lt;p>&#xA;By default, methods of this class with return a Component only if it is&#xA;visible, displayable, enabled, and focusable. Subclasses can modify this&#xA;behavior by overriding the &lt;code>accept&lt;/code> method.&#xA;&lt;p>&#xA;This policy takes into account &lt;a&#xA;href=&quot;doc-files/FocusSpec.html#FocusTraversalPolicyProviders&quot;>focus traversal&#xA;policy providers&lt;/a>.  When searching for first/last/next/previous Component,&#xA;if a focus traversal policy provider is encountered, its focus traversal&#xA;policy is used to perform the search operation.&#xA;&#xA;@author David Mendenhall&#xA;@version 1.8, 12/19/03&#xA;&#xA;@see Container#getComponents&#xA;@since 1.4&#xA;" annotatedElement="80ce0e2c-30ad-43c9-b048-03cf7abf9639"/>
            <generalization xmi:id="b38950f2-f592-4b24-8768-b0188337e4d0" isSubstitutable="true" general="df62e602-f506-498f-9270-a657feeffa38"/>
            <interfaceRealization xmi:id="51ff5e60-10e6-40fa-b4a0-22032fc9017c" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="80ce0e2c-30ad-43c9-b048-03cf7abf9639" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0c49b2c1-5fdf-4f87-bd30-b83a8ccb7e2f" name="MediaTracker" clientDependency="5ff03bb3-efec-4b92-b6ab-58571a0f0ce4">
            <ownedComment xmi:id="54955166-dad8-4310-a40d-a513d08273b5" body="The &lt;code>MediaTracker&lt;/code> class is a utility class to track&#xA;the status of a number of media objects. Media objects could&#xA;include audio clips as well as images, though currently only&#xA;images are supported.&#xA;&lt;p>&#xA;To use a media tracker, create an instance of&#xA;&lt;code>MediaTracker&lt;/code> and call its &lt;code>addImage&lt;/code>&#xA;method for each image to be tracked. In addition, each image can&#xA;be assigned a unique identifier. This identifier controls the&#xA;priority order in which the images are fetched. It can also be used&#xA;to identify unique subsets of the images that can be waited on&#xA;independently. Images with a lower ID are loaded in preference to&#xA;those with a higher ID number.&#xA;&#xA;&lt;p>&#xA;&#xA;Tracking an animated image&#xA;might not always be useful&#xA;due to the multi-part nature of animated image&#xA;loading and painting,&#xA;but it is supported.&#xA;&lt;code>MediaTracker&lt;/code> treats an animated image&#xA;as completely loaded&#xA;when the first frame is completely loaded.&#xA;At that point, the &lt;code>MediaTracker&lt;/code>&#xA;signals any waiters&#xA;that the image is completely loaded.&#xA;If no &lt;code>ImageObserver&lt;/code>s are observing the image&#xA;when the first frame has finished loading,&#xA;the image might flush itself&#xA;to conserve resources&#xA;(see {@link Image#flush()}).&#xA;&#xA;&lt;p>&#xA;Here is an example of using &lt;code>MediaTracker&lt;/code>:&#xA;&lt;p>&#xA;&lt;hr>&lt;blockquote>&lt;pre>&#xA;import java.applet.Applet;&#xA;import java.awt.Color;&#xA;import java.awt.Image;&#xA;import java.awt.Graphics;&#xA;import java.awt.MediaTracker;&#xA;&#xA;public class ImageBlaster extends Applet implements Runnable {&#xA;MediaTracker tracker;&#xA;Image bg;&#xA;Image anim[] = new Image[5];&#xA;int index;&#xA;Thread animator;&#xA;&#xA;Get the images for the background (id == 0)&#xA;and the animation frames (id == 1)&#xA;and add them to the MediaTracker&#xA;public void init() {&#xA;tracker = new MediaTracker(this);&#xA;bg = getImage(getDocumentBase(),&#xA;&quot;images/background.gif&quot;);&#xA;tracker.addImage(bg, 0);&#xA;for (int i = 0; i &lt; 5; i++) {&#xA;anim[i] = getImage(getDocumentBase(),&#xA;&quot;images/anim&quot;+i+&quot;.gif&quot;);&#xA;tracker.addImage(anim[i], 1);&#xA;}&#xA;}&#xA;&#xA;Start the animation thread.&#xA;public void start() {&#xA;animator = new Thread(this);&#xA;animator.start();&#xA;}&#xA;&#xA;Stop the animation thread.&#xA;public void stop() {&#xA;animator = null;&#xA;}&#xA;&#xA;Run the animation thread.&#xA;First wait for the background image to fully load&#xA;and paint.  Then wait for all of the animation&#xA;frames to finish loading. Finally, loop and&#xA;increment the animation frame index.&#xA;public void run() {&#xA;try {&#xA;tracker.waitForID(0);&#xA;tracker.waitForID(1);&#xA;} catch (InterruptedException e) {&#xA;return;&#xA;}&#xA;Thread me = Thread.currentThread();&#xA;while (animator == me) {&#xA;try {&#xA;Thread.sleep(100);&#xA;} catch (InterruptedException e) {&#xA;break;&#xA;}&#xA;synchronized (this) {&#xA;index++;&#xA;if (index >= anim.length) {&#xA;index = 0;&#xA;}&#xA;}&#xA;repaint();&#xA;}&#xA;}&#xA;&#xA;The background image fills the frame so we&#xA;don't need to clear the applet on repaints.&#xA;Just call the paint method.&#xA;public void update(Graphics g) {&#xA;paint(g);&#xA;}&#xA;&#xA;Paint a large red rectangle if there are any errors&#xA;loading the images.  Otherwise always paint the&#xA;background so that it appears incrementally as it&#xA;is loading.  Finally, only paint the current animation&#xA;frame if all of the frames (id == 1) are done loading,&#xA;so that we don't get partial animations.&#xA;public void paint(Graphics g) {&#xA;if ((tracker.statusAll(false) &amp; MediaTracker.ERRORED) != 0) {&#xA;g.setColor(Color.red);&#xA;g.fillRect(0, 0, size().width, size().height);&#xA;return;&#xA;}&#xA;g.drawImage(bg, 0, 0, this);&#xA;if (tracker.statusID(1, false) == MediaTracker.COMPLETE) {&#xA;g.drawImage(anim[index], 10, 10, this);&#xA;}&#xA;}&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&lt;hr>&#xA;&#xA;@version &#x9;1.42, 12/19/03&#xA;@author &#x9;Jim Graham&#xA;@since       JDK1.0&#xA;" annotatedElement="0c49b2c1-5fdf-4f87-bd30-b83a8ccb7e2f"/>
            <interfaceRealization xmi:id="5ff03bb3-efec-4b92-b6ab-58571a0f0ce4" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0c49b2c1-5fdf-4f87-bd30-b83a8ccb7e2f" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="87ad7a61-eba5-430c-be1a-7513431bc73b" name="GridBagConstraints" clientDependency="9aadb9c8-a0ec-4f37-ade4-8d94c0d86691 25e81dd3-cd97-49e6-93de-62b7ad3a9f71">
            <ownedComment xmi:id="26afbd57-a65f-4499-ade0-92823a2724e0" body="The &lt;code>GridBagConstraints&lt;/code> class specifies constraints&#xA;for components that are laid out using the&#xA;&lt;code>GridBagLayout&lt;/code> class.&#xA;&#xA;@version &#x9;1.34, 03/15/04&#xA;@author Doug Stein&#xA;@see java.awt.GridBagLayout&#xA;@since JDK1.0&#xA;" annotatedElement="87ad7a61-eba5-430c-be1a-7513431bc73b"/>
            <interfaceRealization xmi:id="25e81dd3-cd97-49e6-93de-62b7ad3a9f71" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="87ad7a61-eba5-430c-be1a-7513431bc73b" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="9aadb9c8-a0ec-4f37-ade4-8d94c0d86691" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="87ad7a61-eba5-430c-be1a-7513431bc73b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="39efaa72-49ea-4322-8011-eae19f7cd24b" name="Adjustable" isAbstract="true">
            <ownedComment xmi:id="1655d36d-5241-4de2-97c3-500b33c43ba3" body="The interface for objects which have an adjustable numeric value&#xA;contained within a bounded range of values.&#xA;&#xA;@version 1.18 12/19/03&#xA;@author Amy Fowler&#xA;@author Tim Prinzing&#xA;" annotatedElement="39efaa72-49ea-4322-8011-eae19f7cd24b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="a42fe497-3d64-40e3-8aae-e48bec8b7d93" name="LayoutManager2" isAbstract="true">
            <ownedComment xmi:id="4f091a87-172b-4f60-b5de-9b924c3f4a90" body="Defines an interface for classes that know how to layout Containers&#xA;based on a layout constraints object.&#xA;&#xA;This interface extends the LayoutManager interface to deal with layouts&#xA;explicitly in terms of constraint objects that specify how and where&#xA;components should be added to the layout.&#xA;&lt;p>&#xA;This minimal extension to LayoutManager is intended for tool&#xA;providers who wish to the creation of constraint-based layouts.&#xA;It does not yet provide full, general support for custom&#xA;constraint-based layout managers.&#xA;&#xA;@see LayoutManager&#xA;@see Container&#xA;&#xA;@version&#x9;1.14, 12/19/03&#xA;@author &#x9;Jonni Kanerva&#xA;" annotatedElement="a42fe497-3d64-40e3-8aae-e48bec8b7d93"/>
            <generalization xmi:id="008ff200-d878-4bda-aaca-ee0d949f66fa" isSubstitutable="true" general="c3507179-c29c-40a9-8869-092757900e53"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="02ec514a-9014-4beb-944b-e6a997872b3f" name="AttributeValue" visibility="package" isAbstract="true"/>
          <packagedElement xmi:type="uml:Class" xmi:id="f355334b-be82-454d-a4ad-c985690a4620" name="DefaultKeyboardFocusManager">
            <ownedComment xmi:id="28f09583-ea49-457d-996d-0485897f5ffd" body="The default KeyboardFocusManager for AWT applications. Focus traversal is&#xA;done in response to a Component's focus traversal keys, and using a&#xA;Container's FocusTraversalPolicy.&#xA;&lt;p>&#xA;Please see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html&quot;>&#xA;How to Use the Focus Subsystem&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>, and the&#xA;&lt;a href=&quot;../../java/awt/doc-files/FocusSpec.html&quot;>Focus Specification&lt;/a>&#xA;for more information.&#xA;&#xA;@author David Mendenhall&#xA;@version 1.31, 12/19/03&#xA;&#xA;@see FocusTraversalPolicy&#xA;@see Component#setFocusTraversalKeys&#xA;@see Component#getFocusTraversalKeys&#xA;@since 1.4&#xA;" annotatedElement="f355334b-be82-454d-a4ad-c985690a4620"/>
            <generalization xmi:id="e4298b25-aab7-4bc8-aa1a-97d0ca88434f" isSubstitutable="true" general="8f531a24-0552-4b41-b3b5-25b5bb8ec953"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="67eb884a-9fbc-4801-93ad-6a60828d75a2" name="TypeAheadMarker" visibility="private"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="37763685-64dc-4d14-a7c5-90d3056911d7" name="DefaultKeyboardFocusManagerSentEvent" visibility="private">
              <ownedComment xmi:id="4c31fe19-12eb-425f-9a86-5b4b4fef8042" body="A special type of SentEvent which updates a counter in the target&#xA;KeyboardFocusManager if it is an instance of&#xA;DefaultKeyboardFocusManager.&#xA;" annotatedElement="37763685-64dc-4d14-a7c5-90d3056911d7"/>
              <generalization xmi:id="08b6ca70-2379-4806-9ab6-3515f2094695" isSubstitutable="true" general="9067f23b-bd9f-4cb8-9a28-fc32653e791e"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a3ccb881-493a-4d5b-b12d-0798b0427cb8" name="Button" clientDependency="361b6ba0-5b4e-4e93-b1b4-4a82ff6e6076">
            <ownedComment xmi:id="c07a9fe5-6f3b-42c7-b4ce-d5a59c257a51" body="This class creates a labeled button. The application can cause&#xA;some action to happen when the button is pushed. This image&#xA;depicts three views of a &quot;&lt;code>Quit&lt;/code>&quot; button as it appears&#xA;under the Solaris operating system:&#xA;&lt;p>&#xA;&lt;img src=&quot;doc-files/Button-1.gif&quot; alt=&quot;The following context describes the graphic&quot;&#xA;ALIGN=center HSPACE=10 VSPACE=7>&#xA;&lt;p>&#xA;The first view shows the button as it appears normally.&#xA;The second view shows the button&#xA;when it has input focus. Its outline is darkened to let the&#xA;user know that it is an active object. The third view shows the&#xA;button when the user clicks the mouse over the button, and thus&#xA;requests that an action be performed.&#xA;&lt;p>&#xA;The gesture of clicking on a button with the mouse&#xA;is associated with one instance of &lt;code>ActionEvent&lt;/code>,&#xA;which is sent out when the mouse is both pressed and released&#xA;over the button. If an application is interested in knowing&#xA;when the button has been pressed but not released, as a separate&#xA;gesture, it can specialize &lt;code>processMouseEvent&lt;/code>,&#xA;or it can register itself as a listener for mouse events by&#xA;calling &lt;code>addMouseListener&lt;/code>. Both of these methods are&#xA;defined by &lt;code>Component&lt;/code>, the abstract superclass of&#xA;all components.&#xA;&lt;p>&#xA;When a button is pressed and released, AWT sends an instance&#xA;of &lt;code>ActionEvent&lt;/code> to the button, by calling&#xA;&lt;code>processEvent&lt;/code> on the button. The button's&#xA;&lt;code>processEvent&lt;/code> method receives all events&#xA;for the button; it passes an action event along by&#xA;calling its own &lt;code>processActionEvent&lt;/code> method.&#xA;The latter method passes the action event on to any action&#xA;listeners that have registered an interest in action&#xA;events generated by this button.&#xA;&lt;p>&#xA;If an application wants to perform some action based on&#xA;a button being pressed and released, it should implement&#xA;&lt;code>ActionListener&lt;/code> and register the new listener&#xA;to receive events from this button, by calling the button's&#xA;&lt;code>addActionListener&lt;/code> method. The application can&#xA;make use of the button's action command as a messaging protocol.&#xA;&#xA;@version &#x9;1.77 05/05/04&#xA;@author &#x9;Sami Shaio&#xA;@see         java.awt.event.ActionEvent&#xA;@see         java.awt.event.ActionListener&#xA;@see         java.awt.Component#processMouseEvent&#xA;@see         java.awt.Component#addMouseListener&#xA;@since       JDK1.0&#xA;" annotatedElement="a3ccb881-493a-4d5b-b12d-0798b0427cb8"/>
            <generalization xmi:id="dcb29588-6b2d-4e55-82a7-34d51e3e704a" isSubstitutable="true" general="4d925b7b-d68e-4e13-b87b-98bdb93e9024"/>
            <interfaceRealization xmi:id="361b6ba0-5b4e-4e93-b1b4-4a82ff6e6076" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="a3ccb881-493a-4d5b-b12d-0798b0427cb8" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="d6496fbe-5635-44f7-9c58-6d507c13ce68" name="AccessibleAWTButton" visibility="protected" clientDependency="ccdfb540-6fab-4acb-a306-8d1cd2331bab ffba3076-9e74-475d-91d4-11820939f865">
              <ownedComment xmi:id="98988a4d-9005-4a57-b2bf-c82996ce284a" body="This class implements accessibility support for the&#xA;&lt;code>Button&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to button user-interface elements.&#xA;" annotatedElement="d6496fbe-5635-44f7-9c58-6d507c13ce68"/>
              <generalization xmi:id="ee77ca9c-094d-4271-adff-e6d47902d542" isSubstitutable="true" general="e8a07816-0ac5-4ca1-990d-2e0e3f63e181"/>
              <interfaceRealization xmi:id="ffba3076-9e74-475d-91d4-11820939f865" name="" supplier="1f04210f-dd56-4dbb-861c-7a19813caf4c" client="d6496fbe-5635-44f7-9c58-6d507c13ce68" contract="1f04210f-dd56-4dbb-861c-7a19813caf4c"/>
              <interfaceRealization xmi:id="ccdfb540-6fab-4acb-a306-8d1cd2331bab" name="" supplier="48ff1225-61c7-495b-a398-c2903fb1210d" client="d6496fbe-5635-44f7-9c58-6d507c13ce68" contract="48ff1225-61c7-495b-a398-c2903fb1210d"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1871a109-bab1-4d38-8531-e3b6528c53bc" name="GradientPaint" clientDependency="ba3d9169-71cd-46a3-95c0-9d561a6b45b6">
            <ownedComment xmi:id="ef2196cf-a4e3-4817-86ea-8166a9b87f4b" body="The &lt;code>GradientPaint&lt;/code> class provides a way to fill&#xA;a {@link Shape} with a linear color gradient pattern.&#xA;If {@link Point} P1 with {@link Color} C1 and &lt;code>Point&lt;/code> P2 with&#xA;&lt;code>Color&lt;/code> C2 are specified in user space, the&#xA;&lt;code>Color&lt;/code> on the P1, P2 connecting line is proportionally&#xA;changed from C1 to C2.  Any point P not on the extended P1, P2&#xA;connecting line has the color of the point P' that is the perpendicular&#xA;projection of P on the extended P1, P2 connecting line.&#xA;Points on the extended line outside of the P1, P2 segment can be colored&#xA;in one of two ways.&#xA;&lt;ul>&#xA;&lt;li>&#xA;If the gradient is cyclic then the points on the extended P1, P2&#xA;connecting line cycle back and forth between the colors C1 and C2.&#xA;&lt;li>&#xA;If the gradient is acyclic then points on the P1 side of the segment&#xA;have the constant &lt;code>Color&lt;/code> C1 while points on the P2 side&#xA;have the constant &lt;code>Color&lt;/code> C2.&#xA;&lt;/ul>&#xA;&#xA;@see Paint&#xA;@see Graphics2D#setPaint&#xA;@version 10 Feb 1997&#xA;" annotatedElement="1871a109-bab1-4d38-8531-e3b6528c53bc"/>
            <interfaceRealization xmi:id="ba3d9169-71cd-46a3-95c0-9d561a6b45b6" name="" supplier="c02d0204-63be-4360-b4c5-08316e96df10" client="1871a109-bab1-4d38-8531-e3b6528c53bc" contract="c02d0204-63be-4360-b4c5-08316e96df10"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="0760177e-269e-40b2-b28a-97e7fe889ad6" name="KeyEventDispatcher" isAbstract="true">
            <ownedComment xmi:id="1b8debfc-f595-4e24-8973-bc69fa3bd114" body="A KeyEventDispatcher cooperates with the current KeyboardFocusManager in the&#xA;targeting and dispatching of all KeyEvents. KeyEventDispatchers registered&#xA;with the current KeyboardFocusManager will receive KeyEvents before they are&#xA;dispatched to their targets, allowing each KeyEventDispatcher to retarget&#xA;the event, consume it, dispatch the event itself, or make other changes.&#xA;&lt;p>&#xA;Note that KeyboardFocusManager itself implements KeyEventDispatcher. By&#xA;default, the current KeyboardFocusManager will be the sink for all KeyEvents&#xA;not dispatched by the registered KeyEventDispatchers. The current&#xA;KeyboardFocusManager cannot be completely deregistered as a&#xA;KeyEventDispatcher. However, if a KeyEventDispatcher reports that it&#xA;dispatched the KeyEvent, regardless of whether it actually did so, the&#xA;KeyboardFocusManager will take no further action with regard to the&#xA;KeyEvent. (While it is possible for client code to register the current&#xA;KeyboardFocusManager as a KeyEventDispatcher one or more times, this is&#xA;usually unnecessary and not recommended.)&#xA;&#xA;@author David Mendenhall&#xA;@version 1.5, 12/19/03&#xA;&#xA;@see KeyboardFocusManager#addKeyEventDispatcher&#xA;@see KeyboardFocusManager#removeKeyEventDispatcher&#xA;@since 1.4&#xA;" annotatedElement="0760177e-269e-40b2-b28a-97e7fe889ad6"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="db09b331-737d-46b0-b88c-ec77f93dd925" name="ItemSelectable" isAbstract="true">
            <ownedComment xmi:id="d378ad80-1858-47f0-bd89-436ff59c53bd" body="The interface for objects which contain a set of items for&#xA;which zero or more can be selected.&#xA;&#xA;@version 1.16 12/19/03&#xA;@author Amy Fowler&#xA;" annotatedElement="db09b331-737d-46b0-b88c-ec77f93dd925"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8f7d3ed6-9148-4347-9812-4d15d46874aa" name="List" clientDependency="a4313d14-a8b4-434e-b1ee-5f43aafbb20d c73e14d1-e748-4309-83a8-93f5646912e1">
            <ownedComment xmi:id="096ce6b9-3c46-4df2-ab57-277e2135675e" body="The &lt;code>List&lt;/code> component presents the user with a&#xA;scrolling list of text items. The list can be set up so that&#xA;the user can choose either one item or multiple items.&#xA;&lt;p>&#xA;For example, the code&amp;nbsp;.&amp;nbsp;.&amp;nbsp;.&#xA;&lt;p>&#xA;&lt;hr>&lt;blockquote>&lt;pre>&#xA;List lst = new List(4, false);&#xA;lst.add(&quot;Mercury&quot;);&#xA;lst.add(&quot;Venus&quot;);&#xA;lst.add(&quot;Earth&quot;);&#xA;lst.add(&quot;JavaSoft&quot;);&#xA;lst.add(&quot;Mars&quot;);&#xA;lst.add(&quot;Jupiter&quot;);&#xA;lst.add(&quot;Saturn&quot;);&#xA;lst.add(&quot;Uranus&quot;);&#xA;lst.add(&quot;Neptune&quot;);&#xA;lst.add(&quot;Pluto&quot;);&#xA;cnt.add(lst);&#xA;&lt;/pre>&lt;/blockquote>&lt;hr>&#xA;&lt;p>&#xA;where &lt;code>cnt&lt;/code> is a container, produces the following&#xA;scrolling list:&#xA;&lt;p>&#xA;&lt;img src=&quot;doc-files/List-1.gif&quot;&#xA;alt=&quot;Shows a list containing: Venus, Earth, JavaSoft, and Mars. Javasoft is selected.&quot; ALIGN=center HSPACE=10 VSPACE=7>&#xA;&lt;p>&#xA;If the List allows multiple selections, then clicking on&#xA;an item that is already selected deselects it. In the preceding&#xA;example, only one item from the scrolling list can be selected&#xA;at a time, since the second argument when creating the new scrolling&#xA;list is &lt;code>false&lt;/code>. If the List does not allow multiple&#xA;selections, selecting an item causes any other selected item&#xA;to be deselected.&#xA;&lt;p>&#xA;Note that the list in the example shown was created with four visible&#xA;rows.  Once the list has been created, the number of visible rows&#xA;cannot be changed.  A default &lt;code>List&lt;/code> is created with&#xA;four rows, so that &lt;code>lst = new List()&lt;/code> is equivalent to&#xA;&lt;code>list = new List(4, false)&lt;/code>.&#xA;&lt;p>&#xA;Beginning with Java&amp;nbsp;1.1, the Abstract Window Toolkit&#xA;sends the &lt;code>List&lt;/code> object all mouse, keyboard, and focus events&#xA;that occur over it. (The old AWT event model is being maintained&#xA;only for backwards compatibility, and its use is discouraged.)&#xA;&lt;p>&#xA;When an item is selected or deselected by the user, AWT sends an instance&#xA;of &lt;code>ItemEvent&lt;/code> to the list.&#xA;When the user double-clicks on an item in a scrolling list,&#xA;AWT sends an instance of &lt;code>ActionEvent&lt;/code> to the&#xA;list following the item event. AWT also generates an action event&#xA;when the user presses the return key while an item in the&#xA;list is selected.&#xA;&lt;p>&#xA;If an application wants to perform some action based on an item&#xA;in this list being selected or activated by the user, it should implement&#xA;&lt;code>ItemListener&lt;/code> or &lt;code>ActionListener&lt;/code>&#xA;as appropriate and register the new listener to receive&#xA;events from this list.&#xA;&lt;p>&#xA;For multiple-selection scrolling lists, it is considered a better&#xA;user interface to use an external gesture (such as clicking on a&#xA;button) to trigger the action.&#xA;@version &#x9;1.106, 05/18/04&#xA;@author &#x9;Sami Shaio&#xA;@see         java.awt.event.ItemEvent&#xA;@see         java.awt.event.ItemListener&#xA;@see         java.awt.event.ActionEvent&#xA;@see         java.awt.event.ActionListener&#xA;@since       JDK1.0&#xA;" annotatedElement="8f7d3ed6-9148-4347-9812-4d15d46874aa"/>
            <generalization xmi:id="dbf90274-80c2-485d-b061-8801fd042ee8" isSubstitutable="true" general="4d925b7b-d68e-4e13-b87b-98bdb93e9024"/>
            <interfaceRealization xmi:id="a4313d14-a8b4-434e-b1ee-5f43aafbb20d" name="" supplier="db09b331-737d-46b0-b88c-ec77f93dd925" client="8f7d3ed6-9148-4347-9812-4d15d46874aa" contract="db09b331-737d-46b0-b88c-ec77f93dd925"/>
            <interfaceRealization xmi:id="c73e14d1-e748-4309-83a8-93f5646912e1" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="8f7d3ed6-9148-4347-9812-4d15d46874aa" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="d87a4ca8-f478-4360-b9bd-c2cb175b0f50" name="AccessibleAWTList" visibility="protected" clientDependency="dcabfe58-f1e8-412b-a28b-01001186c4d8 33fdeed8-3167-4545-96a3-42e47180a5b1 be3b357e-04e6-4bbb-9479-b8345dacb759">
              <ownedComment xmi:id="f9160063-ba22-43d2-b1cc-463c12c09cc5" body="This class implements accessibility support for the&#xA;&lt;code>List&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to list user-interface elements.&#xA;" annotatedElement="d87a4ca8-f478-4360-b9bd-c2cb175b0f50"/>
              <generalization xmi:id="90714b1a-84cb-4d31-9c1e-160dbc41f50b" isSubstitutable="true" general="e8a07816-0ac5-4ca1-990d-2e0e3f63e181"/>
              <interfaceRealization xmi:id="33fdeed8-3167-4545-96a3-42e47180a5b1" name="" supplier="0dbef058-3ccc-4038-b98f-eea279be3f13" client="d87a4ca8-f478-4360-b9bd-c2cb175b0f50" contract="0dbef058-3ccc-4038-b98f-eea279be3f13"/>
              <interfaceRealization xmi:id="dcabfe58-f1e8-412b-a28b-01001186c4d8" name="" supplier="1dd642cc-ad4c-43b8-91c1-a201cb5d8292" client="d87a4ca8-f478-4360-b9bd-c2cb175b0f50" contract="1dd642cc-ad4c-43b8-91c1-a201cb5d8292"/>
              <interfaceRealization xmi:id="be3b357e-04e6-4bbb-9479-b8345dacb759" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="d87a4ca8-f478-4360-b9bd-c2cb175b0f50" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="4f3edeaa-a742-447a-9d89-6edae46c2f91" name="AccessibleAWTListChild" visibility="protected" clientDependency="f8bf1581-72a1-4e2b-bd2f-e07d816b15d5">
                <ownedComment xmi:id="1065c6e9-e1a7-41c5-a14b-94b27aada3b9" body="This class implements accessibility support for&#xA;List children.  It provides an implementation of the&#xA;Java Accessibility API appropriate to list children&#xA;user-interface elements.&#xA;" annotatedElement="4f3edeaa-a742-447a-9d89-6edae46c2f91"/>
                <generalization xmi:id="4cb330b1-fcad-4dcb-a818-1e878acc500a" isSubstitutable="true" general="e8a07816-0ac5-4ca1-990d-2e0e3f63e181"/>
                <interfaceRealization xmi:id="f8bf1581-72a1-4e2b-bd2f-e07d816b15d5" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="4f3edeaa-a742-447a-9d89-6edae46c2f91" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
              </nestedClassifier>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="93f5dd0f-d95d-44e3-91da-1ae055375a3d" name="Canvas" clientDependency="3e245ab2-df80-47bd-b03f-10ce76db5b6f">
            <ownedComment xmi:id="70f69511-c080-485c-aa46-2acac350a467" body="A &lt;code>Canvas&lt;/code> component represents a blank rectangular&#xA;area of the screen onto which the application can draw or from&#xA;which the application can trap input events from the user.&#xA;&lt;p>&#xA;An application must subclass the &lt;code>Canvas&lt;/code> class in&#xA;order to get useful functionality such as creating a custom&#xA;component. The &lt;code>paint&lt;/code> method must be overridden&#xA;in order to perform custom graphics on the canvas.&#xA;&#xA;@version &#x9;1.35 03/16/04&#xA;@author &#x9;Sami Shaio&#xA;@since       JDK1.0&#xA;" annotatedElement="93f5dd0f-d95d-44e3-91da-1ae055375a3d"/>
            <generalization xmi:id="f903e321-6a5e-4133-9b59-4c79b0d81c7b" isSubstitutable="true" general="4d925b7b-d68e-4e13-b87b-98bdb93e9024"/>
            <interfaceRealization xmi:id="3e245ab2-df80-47bd-b03f-10ce76db5b6f" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="93f5dd0f-d95d-44e3-91da-1ae055375a3d" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="1e7d93d6-33f0-48ef-9d1e-394484ae4940" name="AccessibleAWTCanvas" visibility="protected">
              <ownedComment xmi:id="9ef21b5a-9d05-405f-9b77-7ef7d62918be" body="This class implements accessibility support for the&#xA;&lt;code>Canvas&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to canvas user-interface elements.&#xA;" annotatedElement="1e7d93d6-33f0-48ef-9d1e-394484ae4940"/>
              <generalization xmi:id="6c81e309-1bdf-4d50-82c4-1dbee6a7e518" isSubstitutable="true" general="e8a07816-0ac5-4ca1-990d-2e0e3f63e181"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="92662abd-1d69-44b8-8fda-1d9f1b08c585" name="SequencedEvent" visibility="package" clientDependency="b7b16e7b-5481-4f2d-ba72-2b320d84bd0e">
            <ownedComment xmi:id="55d11716-a149-401d-b10c-fcd4d7ae51ff" body="A mechanism for ensuring that a series of AWTEvents are executed in a&#xA;precise order, even across multiple AppContexts. The nested events will be&#xA;dispatched in the order in which their wrapping SequencedEvents were&#xA;constructed. The only exception to this rule is if the peer of the target of&#xA;the nested event was destroyed (with a call to Component.removeNotify)&#xA;before the wrapping SequencedEvent was able to be dispatched. In this case,&#xA;the nested event is never dispatched.&#xA;&#xA;@version 1.10, 12/19/03&#xA;@author David Mendenhall&#xA;" annotatedElement="92662abd-1d69-44b8-8fda-1d9f1b08c585"/>
            <generalization xmi:id="ff6caa30-d662-435e-a9bc-0ee0d99fa7fc" isSubstitutable="true" general="dc3e23e7-09df-4daf-b0e1-0ea40dc8c9ee"/>
            <interfaceRealization xmi:id="b7b16e7b-5481-4f2d-ba72-2b320d84bd0e" name="" supplier="d01349b1-01dd-475a-9c96-0be46c8b820f" client="92662abd-1d69-44b8-8fda-1d9f1b08c585" contract="d01349b1-01dd-475a-9c96-0be46c8b820f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="d01349b1-01dd-475a-9c96-0be46c8b820f" name="ActiveEvent" isAbstract="true">
            <ownedComment xmi:id="15a47a18-cbe7-4002-9cb9-48d184758358" body="An interface for events that know how to dispatch themselves.&#xA;By implementing this interface an event can be placed upon the event&#xA;queue and its &lt;code>dispatch()&lt;/code> method will be called when the event&#xA;is dispatched, using the &lt;code>EventDispatchThread&lt;/code>.&#xA;&lt;p>&#xA;This is a very useful mechanism for avoiding deadlocks. If&#xA;a thread is executing in a critical section (i.e., it has entered&#xA;one or more monitors), calling other synchronized code may&#xA;cause deadlocks. To avoid the potential deadlocks, an&#xA;&lt;code>ActiveEvent&lt;/code> can be created to run the second section of&#xA;code at later time. If there is contention on the monitor,&#xA;the second thread will simply block until the first thread&#xA;has finished its work and exited its monitors.&#xA;&lt;p>&#xA;For security reasons, it is often desirable to use an &lt;code>ActiveEvent&lt;/code>&#xA;to avoid calling untrusted code from a critical thread. For&#xA;instance, peer implementations can use this facility to avoid&#xA;making calls into user code from a system thread. Doing so avoids&#xA;potential deadlocks and denial-of-service attacks.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.13 12/19/03&#xA;@since   1.2&#xA;" annotatedElement="d01349b1-01dd-475a-9c96-0be46c8b820f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c700ecd3-2bf6-4b1d-a907-034218ea1059" name="BorderLayout" clientDependency="76179ce9-207c-448f-8e32-d6d48e6ff33f bf0a7228-e0e2-4bad-98c3-21b629cf425d">
            <ownedComment xmi:id="ad510679-d627-41d6-953b-f0c01e68ce02" body="A border layout lays out a container, arranging and resizing&#xA;its components to fit in five regions:&#xA;north, south, east, west, and center.&#xA;Each region may contain no more than one component, and&#xA;is identified by a corresponding constant:&#xA;&lt;code>NORTH&lt;/code>, &lt;code>SOUTH&lt;/code>, &lt;code>EAST&lt;/code>,&#xA;&lt;code>WEST&lt;/code>, and &lt;code>CENTER&lt;/code>.  When adding a&#xA;component to a container with a border layout, use one of these&#xA;five constants, for example:&#xA;&lt;pre>&#xA;Panel p = new Panel();&#xA;p.setLayout(new BorderLayout());&#xA;p.add(new Button(&quot;Okay&quot;), BorderLayout.SOUTH);&#xA;&lt;/pre>&#xA;As a convenience, &lt;code>BorderLayout&lt;/code> interprets the&#xA;absence of a string specification the same as the constant&#xA;&lt;code>CENTER&lt;/code>:&#xA;&lt;pre>&#xA;Panel p2 = new Panel();&#xA;p2.setLayout(new BorderLayout());&#xA;p2.add(new TextArea());  // Same as p.add(new TextArea(), BorderLayout.CENTER);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;In addition, &lt;code>BorderLayout&lt;/code> supports the relative&#xA;positioning constants, &lt;code>PAGE_START&lt;/code>, &lt;code>PAGE_END&lt;/code>,&#xA;&lt;code>LINE_START&lt;/code>, and &lt;code>LINE_END&lt;/code>.&#xA;In a container whose &lt;code>ComponentOrientation&lt;/code> is set to&#xA;&lt;code>ComponentOrientation.LEFT_TO_RIGHT&lt;/code>, these constants map to&#xA;&lt;code>NORTH&lt;/code>, &lt;code>SOUTH&lt;/code>, &lt;code>WEST&lt;/code>, and&#xA;&lt;code>EAST&lt;/code>, respectively.&#xA;&lt;p>&#xA;For compatibility with previous releases, &lt;code>BorderLayout&lt;/code>&#xA;also includes the relative positioning constants &lt;code>BEFORE_FIRST_LINE&lt;/code>,&#xA;&lt;code>AFTER_LAST_LINE&lt;/code>, &lt;code>BEFORE_LINE_BEGINS&lt;/code> and&#xA;&lt;code>AFTER_LINE_ENDS&lt;/code>.  These are equivalent to&#xA;&lt;code>PAGE_START&lt;/code>, &lt;code>PAGE_END&lt;/code>, &lt;code>LINE_START&lt;/code>&#xA;and &lt;code>LINE_END&lt;/code> respectively.  For&#xA;consistency with the relative positioning constants used by other&#xA;components, the latter constants are preferred.&#xA;&lt;p>&#xA;Mixing both absolute and relative positioning constants can lead to&#xA;unpredicable results.  If&#xA;you use both types, the relative constants will take precedence.&#xA;For example, if you add components using both the &lt;code>NORTH&lt;/code>&#xA;and &lt;code>PAGE_START&lt;/code> constants in a container whose&#xA;orientation is &lt;code>LEFT_TO_RIGHT&lt;/code>, only the&#xA;&lt;code>PAGE_START&lt;/code> will be layed out.&#xA;&lt;p>&#xA;NOTE: Currently (in the Java 2 platform v1.2),&#xA;&lt;code>BorderLayout&lt;/code> does not support vertical&#xA;orientations.  The &lt;code>isVertical&lt;/code> setting on the container's&#xA;&lt;code>ComponentOrientation&lt;/code> is not respected.&#xA;&lt;p>&#xA;The components are laid out according to their&#xA;preferred sizes and the constraints of the container's size.&#xA;The &lt;code>NORTH&lt;/code> and &lt;code>SOUTH&lt;/code> components may&#xA;be stretched horizontally; the &lt;code>EAST&lt;/code> and&#xA;&lt;code>WEST&lt;/code> components may be stretched vertically;&#xA;the &lt;code>CENTER&lt;/code> component may stretch both horizontally&#xA;and vertically to fill any space left over.&#xA;&lt;p>&#xA;Here is an example of five buttons in an applet laid out using&#xA;the &lt;code>BorderLayout&lt;/code> layout manager:&#xA;&lt;p>&#xA;&lt;img src=&quot;doc-files/BorderLayout-1.gif&quot;&#xA;alt=&quot;Diagram of an applet demonstrating BorderLayout.&#xA;Each section of the BorderLayout contains a Button corresponding to its position in the layout, one of:&#xA;North, West, Center, East, or South.&quot;&#xA;ALIGN=center HSPACE=10 VSPACE=7>&#xA;&lt;p>&#xA;The code for this applet is as follows:&#xA;&lt;p>&#xA;&lt;hr>&lt;blockquote>&lt;pre>&#xA;import java.awt.*;&#xA;import java.applet.Applet;&#xA;&#xA;public class buttonDir extends Applet {&#xA;public void init() {&#xA;setLayout(new BorderLayout());&#xA;add(new Button(&quot;North&quot;), BorderLayout.NORTH);&#xA;add(new Button(&quot;South&quot;), BorderLayout.SOUTH);&#xA;add(new Button(&quot;East&quot;), BorderLayout.EAST);&#xA;add(new Button(&quot;West&quot;), BorderLayout.WEST);&#xA;add(new Button(&quot;Center&quot;), BorderLayout.CENTER);&#xA;}&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&lt;hr>&#xA;&lt;p>&#xA;@version &#x9;1.56, 05/18/04&#xA;@author &#x9;Arthur van Hoff&#xA;@see         java.awt.Container#add(String, Component)&#xA;@see         java.awt.ComponentOrientation&#xA;@since       JDK1.0&#xA;" annotatedElement="c700ecd3-2bf6-4b1d-a907-034218ea1059"/>
            <interfaceRealization xmi:id="bf0a7228-e0e2-4bad-98c3-21b629cf425d" name="" supplier="a42fe497-3d64-40e3-8aae-e48bec8b7d93" client="c700ecd3-2bf6-4b1d-a907-034218ea1059" contract="a42fe497-3d64-40e3-8aae-e48bec8b7d93"/>
            <interfaceRealization xmi:id="76179ce9-207c-448f-8e32-d6d48e6ff33f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="c700ecd3-2bf6-4b1d-a907-034218ea1059" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c81f00ce-3f4f-4b8d-9441-8c20bdd60325" name="ImageMediaEntry" visibility="package" clientDependency="c48ad0dc-6979-4eff-95b1-30547f9e3ce6 d08144d1-dd48-4fff-be1c-5315cb2384a4">
            <generalization xmi:id="d8e4a336-0403-4b5a-ad4b-0c4a6f9d16e3" isSubstitutable="true" general="394d2cfa-44c8-4942-8880-50fcdd255923"/>
            <interfaceRealization xmi:id="c48ad0dc-6979-4eff-95b1-30547f9e3ce6" name="" supplier="72ede030-0691-4953-be91-11a6a0047536" client="c81f00ce-3f4f-4b8d-9441-8c20bdd60325" contract="72ede030-0691-4953-be91-11a6a0047536"/>
            <interfaceRealization xmi:id="d08144d1-dd48-4fff-be1c-5315cb2384a4" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="c81f00ce-3f4f-4b8d-9441-8c20bdd60325" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e9f7dff9-1837-466b-8557-2fb2c9bbbae5" name="FocusManager" visibility="package" clientDependency="bfb75e76-673d-4c37-ae35-73bbfc90c988">
            <ownedComment xmi:id="fc3d800d-a37c-4982-828f-85fb9992e41e" body="This class is no longer used, but is maintained for Serialization&#xA;backward-compatibility.&#xA;" annotatedElement="e9f7dff9-1837-466b-8557-2fb2c9bbbae5"/>
            <interfaceRealization xmi:id="bfb75e76-673d-4c37-ae35-73bbfc90c988" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="e9f7dff9-1837-466b-8557-2fb2c9bbbae5" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="cb1c10ee-fbdc-456c-a78f-181d512c3685" name="MutableBoolean" visibility="package"/>
          <packagedElement xmi:type="uml:Package" xmi:id="de4d32ca-be51-4dfe-b737-37d30bc42c35" name="color">
            <packagedElement xmi:type="uml:Class" xmi:id="6f5d907c-44bc-4fc3-84eb-bdd33b651e50" name="ICC_ColorSpace">
              <ownedComment xmi:id="982b2399-b114-47b5-9573-744225a581de" body="The ICC_ColorSpace class is an implementation of the abstract&#xA;ColorSpace class.  This representation of&#xA;device independent and device dependent color spaces is based on the&#xA;International Color Consortium Specification ICC.1:2001-12, File Format for&#xA;Color Profiles (see &lt;A href=&quot;http://www.color.org&quot;>http://www.color.org&lt;/A>).&#xA;&lt;p>&#xA;Typically, a Color or ColorModel would be associated with an ICC&#xA;Profile which is either an input, display, or output profile (see&#xA;the ICC specification).  There are other types of ICC Profiles, e.g.&#xA;abstract profiles, device link profiles, and named color profiles,&#xA;which do not contain information appropriate for representing the color&#xA;space of a color, image, or device (see ICC_Profile).&#xA;Attempting to create an ICC_ColorSpace object from an inappropriate ICC&#xA;Profile is an error.&#xA;&lt;p>&#xA;ICC Profiles represent transformations from the color space of&#xA;the profile (e.g. a monitor) to a Profile Connection Space (PCS).&#xA;Profiles of interest for tagging images or colors have a&#xA;PCS which is one of the device independent&#xA;spaces (one CIEXYZ space and two CIELab spaces) defined in the&#xA;ICC Profile Format Specification.  Most profiles of interest&#xA;either have invertible transformations or explicitly specify&#xA;transformations going both directions.  Should an ICC_ColorSpace&#xA;object be used in a way requiring a conversion from PCS to&#xA;the profile's native space and there is inadequate data to&#xA;correctly perform the conversion, the ICC_ColorSpace object will&#xA;produce output in the specified type of color space (e.g. TYPE_RGB,&#xA;TYPE_CMYK, etc.), but the specific color values of the output data&#xA;will be undefined.&#xA;&lt;p>&#xA;The details of this class are not important for simple applets,&#xA;which draw in a default color space or manipulate and display&#xA;imported images with a known color space.  At most, such applets&#xA;would need to get one of the default color spaces via&#xA;ColorSpace.getInstance().&#xA;&lt;p>&#xA;@see ColorSpace&#xA;@see ICC_Profile&#xA;" annotatedElement="6f5d907c-44bc-4fc3-84eb-bdd33b651e50"/>
              <generalization xmi:id="271d5205-3583-4526-aab4-5a577fd6be50" isSubstitutable="true" general="17ac2f16-d537-4cb3-b35a-8ecfd242a883"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="09133c31-becf-4e83-a65a-50d8bb7235c1" name="ICC_ProfileGray">
              <ownedComment xmi:id="1a64ca58-9dad-46ce-b852-2b132ddf4123" body="A subclass of the ICC_Profile class which represents profiles&#xA;which meet the following criteria: the color space type of the&#xA;profile is TYPE_GRAY and the profile includes the grayTRCTag and&#xA;mediaWhitePointTag tags.  Examples of this kind of profile are&#xA;monochrome input profiles, monochrome display profiles, and&#xA;monochrome output profiles.  The getInstance methods in the&#xA;ICC_Profile class will&#xA;return an ICC_ProfileGray object when the above conditions are&#xA;met.  The advantage of this class is that it provides a lookup&#xA;table that Java or native methods may be able to use directly to&#xA;optimize color conversion in some cases.&#xA;&lt;p>&#xA;To transform from a GRAY device profile color space to the CIEXYZ Profile&#xA;Connection Space, the device gray component is transformed by&#xA;a lookup through the tone reproduction curve (TRC).  The result is&#xA;treated as the achromatic component of the PCS.&#xA;&lt;pre>&#xA;&amp;nbsp;               PCSY = grayTRC[deviceGray]&#xA;&lt;/pre>&#xA;The inverse transform is done by converting the PCS Y components to&#xA;device Gray via the inverse of the grayTRC.&#xA;&lt;p>&#xA;" annotatedElement="09133c31-becf-4e83-a65a-50d8bb7235c1"/>
              <generalization xmi:id="aee8c732-df63-4331-893e-bbf3a4e5fa9d" isSubstitutable="true" general="0fd34a3b-8fc8-49d0-bed6-9143bd5f1e2e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="17ac2f16-d537-4cb3-b35a-8ecfd242a883" name="ColorSpace" clientDependency="8b2f6f0f-bef3-4c2c-adfe-e91f7f5ccfd9" isAbstract="true">
              <ownedComment xmi:id="88cffcdd-33b9-465a-9f4f-a9cd0fc3537c" body="This abstract class is used to serve as a color space tag to identify the&#xA;specific color space of a Color object or, via a ColorModel object,&#xA;of an Image, a BufferedImage, or a GraphicsDevice.  It contains&#xA;methods that transform colors in a specific color space to/from sRGB&#xA;and to/from a well-defined CIEXYZ color space.&#xA;&lt;p>&#xA;For purposes of the methods in this class, colors are represented as&#xA;arrays of color components represented as floats in a normalized range&#xA;defined by each ColorSpace.  For many ColorSpaces (e.g. sRGB), this&#xA;range is 0.0 to 1.0.  However, some ColorSpaces have components whose&#xA;values have a different range.  Methods are provided to inquire per&#xA;component minimum and maximum normalized values.&#xA;&lt;p>&#xA;Several variables are defined for purposes of referring to color&#xA;space types (e.g. TYPE_RGB, TYPE_XYZ, etc.) and to refer to specific&#xA;color spaces (e.g. CS_sRGB and CS_CIEXYZ).&#xA;sRGB is a proposed standard RGB color space.  For more information,&#xA;see &lt;A href=&quot;http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html&quot;>&#xA;http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html&#xA;&lt;/A>.&#xA;&lt;p>&#xA;The purpose of the methods to transform to/from the well-defined&#xA;CIEXYZ color space is to support conversions between any two color&#xA;spaces at a reasonably high degree of accuracy.  It is expected that&#xA;particular implementations of subclasses of ColorSpace (e.g.&#xA;ICC_ColorSpace) will support high performance conversion based on&#xA;underlying platform color management systems.&#xA;&lt;p>&#xA;The CS_CIEXYZ space used by the toCIEXYZ/fromCIEXYZ methods can be&#xA;described as follows:&#xA;&lt;pre>&#xA;&amp;nbsp;     CIEXYZ&#xA;&amp;nbsp;     viewing illuminance: 200 lux&#xA;&amp;nbsp;     viewing white point: CIE D50&#xA;&amp;nbsp;     media white point: &quot;that of a perfectly reflecting diffuser&quot; -- D50&#xA;&amp;nbsp;     media black point: 0 lux or 0 Reflectance&#xA;&amp;nbsp;     flare: 1 percent&#xA;&amp;nbsp;     surround: 20percent of the media white point&#xA;&amp;nbsp;     media description: reflection print (i.e., RLAB, Hunt viewing media)&#xA;&amp;nbsp;     note: For developers creating an ICC profile for this conversion&#xA;&amp;nbsp;           space, the following is applicable.  Use a simple Von Kries&#xA;&amp;nbsp;           white point adaptation folded into the 3X3 matrix parameters&#xA;&amp;nbsp;           and fold the flare and surround effects into the three&#xA;&amp;nbsp;           one-dimensional lookup tables (assuming one uses the minimal&#xA;&amp;nbsp;           model for monitors).&#xA;&lt;/pre>&#xA;&#xA;&lt;p>&#xA;@see ICC_ColorSpace&#xA;@version 10 Feb 1997&#xA;" annotatedElement="17ac2f16-d537-4cb3-b35a-8ecfd242a883"/>
              <interfaceRealization xmi:id="8b2f6f0f-bef3-4c2c-adfe-e91f7f5ccfd9" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="17ac2f16-d537-4cb3-b35a-8ecfd242a883" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a3b8b807-d058-4f4a-af5c-37714ad66085" name="ICC_ProfileRGB">
              <ownedComment xmi:id="463eeb1b-ba29-4bb0-ac90-25d29e84abcf" body="The ICC_ProfileRGB class is a subclass of the ICC_Profile class&#xA;that represents profiles which meet the following criteria:&#xA;&lt;ul>&#xA;&lt;li>The profile's color space type is RGB.&lt;/li>&#xA;&lt;li>The profile includes the &lt;code>redColorantTag&lt;/code>,&#xA;&lt;code>greenColorantTag&lt;/code>, &lt;code>blueColorantTag&lt;/code>,&#xA;&lt;code>redTRCTag&lt;/code>, &lt;code>greenTRCTag&lt;/code>,&#xA;&lt;code>blueTRCTag&lt;/code>, and &lt;code>mediaWhitePointTag&lt;/code> tags.&lt;/li>&#xA;&lt;/ul>&#xA;The &lt;code>ICC_Profile&lt;/code> &lt;code>getInstance&lt;/code> method will&#xA;return an &lt;code>ICC_ProfileRGB&lt;/code> object when these conditions are met.&#xA;Three-component, matrix-based input profiles and RGB display profiles are&#xA;examples of this type of profile.&#xA;&lt;p>&#xA;This profile class provides color transform matrices and lookup tables&#xA;that Java or native methods can use directly to&#xA;optimize color conversion in some cases.&#xA;&lt;p>&#xA;To transform from a device profile color space to the CIEXYZ Profile&#xA;Connection Space, each device color component is first linearized by&#xA;a lookup through the corresponding tone reproduction curve (TRC).&#xA;The resulting linear RGB components are converted to the CIEXYZ PCS&#xA;using a a 3x3 matrix constructed from the RGB colorants.&#xA;&lt;pre>&#xA;&#xA;&amp;nbsp;               linearR = redTRC[deviceR]&#xA;&#xA;&amp;nbsp;               linearG = greenTRC[deviceG]&#xA;&#xA;&amp;nbsp;               linearB = blueTRC[deviceB]&#xA;&#xA;&amp;nbsp; _      _       _                                             _   _         _&#xA;&amp;nbsp;[  PCSX  ]     [  redColorantX  greenColorantX  blueColorantX  ] [  linearR  ]&#xA;&amp;nbsp;[        ]     [                                               ] [           ]&#xA;&amp;nbsp;[  PCSY  ]  =  [  redColorantY  greenColorantY  blueColorantY  ] [  linearG  ]&#xA;&amp;nbsp;[        ]     [                                               ] [           ]&#xA;&amp;nbsp;[_ PCSZ _]     [_ redColorantZ  greenColorantZ  blueColorantZ _] [_ linearB _]&#xA;&#xA;&lt;/pre>&#xA;The inverse transform is performed by converting PCS XYZ components to linear&#xA;RGB components through the inverse of the above 3x3 matrix, and then converting&#xA;linear RGB to device RGB through inverses of the TRCs.&#xA;&lt;p>&#xA;" annotatedElement="a3b8b807-d058-4f4a-af5c-37714ad66085"/>
              <generalization xmi:id="a738e429-8549-40a6-bbc4-ba68ff3e0183" isSubstitutable="true" general="0fd34a3b-8fc8-49d0-bed6-9143bd5f1e2e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0fd34a3b-8fc8-49d0-bed6-9143bd5f1e2e" name="ICC_Profile" clientDependency="6d15c826-5577-4f3a-b772-36b8d48546e4">
              <ownedComment xmi:id="97c7c132-97b8-41cb-a2ed-04abc140c2b6" body="A representation of color profile data for device independent and&#xA;device dependent color spaces based on the International Color&#xA;Consortium Specification ICC.1:2001-12, File Format for Color Profiles,&#xA;(see &lt;A href=&quot;http://www.color.org&quot;> http://www.color.org&lt;/A>).&#xA;&lt;p>&#xA;An ICC_ColorSpace object can be constructed from an appropriate&#xA;ICC_Profile.&#xA;Typically, an ICC_ColorSpace would be associated with an ICC&#xA;Profile which is either an input, display, or output profile (see&#xA;the ICC specification).  There are also device link, abstract,&#xA;color space conversion, and named color profiles.  These are less&#xA;useful for tagging a color or image, but are useful for other&#xA;purposes (in particular device link profiles can provide improved&#xA;performance for converting from one device's color space to&#xA;another's).&#xA;&lt;p>&#xA;ICC Profiles represent transformations from the color space of&#xA;the profile (e.g. a monitor) to a Profile Connection Space (PCS).&#xA;Profiles of interest for tagging images or colors have a PCS&#xA;which is one of the two specific device independent&#xA;spaces (one CIEXYZ space and one CIELab space) defined in the&#xA;ICC Profile Format Specification.  Most profiles of interest&#xA;either have invertible transformations or explicitly specify&#xA;transformations going both directions.&#xA;&lt;p>&#xA;@version 10 Feb 1997&#xA;@see ICC_ColorSpace&#xA;" annotatedElement="0fd34a3b-8fc8-49d0-bed6-9143bd5f1e2e"/>
              <interfaceRealization xmi:id="6d15c826-5577-4f3a-b772-36b8d48546e4" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0fd34a3b-8fc8-49d0-bed6-9143bd5f1e2e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ebf42d5d-3736-45ec-b2d3-53fbe27fd316" name="ProfileDataException">
              <ownedComment xmi:id="6ee80d6a-a080-4a40-bf9d-f4eb6c50efc5" body="This exception is thrown when an error occurs in accessing or&#xA;processing an ICC_Profile object.&#xA;" annotatedElement="ebf42d5d-3736-45ec-b2d3-53fbe27fd316"/>
              <generalization xmi:id="74821a93-2d8f-408b-8650-81a511132b6a" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4e8cb55a-4c3f-4069-8233-dea9e6659a17" name="CMMException">
              <ownedComment xmi:id="7b0fd615-713a-44c3-97cc-42f177024df6" body="This exception is thrown if the native CMM returns an error.&#xA;" annotatedElement="4e8cb55a-4c3f-4069-8233-dea9e6659a17"/>
              <generalization xmi:id="5a76431d-c604-41b0-a974-52c46f58f923" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4bcd5d04-5c57-4c63-8142-49a11a816b7b" name="Robot">
            <ownedComment xmi:id="1cc5838f-3ad4-438a-a07d-383dad44a4bf" body="This class is used to generate native system input events&#xA;for the purposes of test automation, self-running demos, and&#xA;other applications where control of the mouse and keyboard&#xA;is needed. The primary purpose of Robot is to facilitate&#xA;automated testing of Java platform implementations.&#xA;&lt;p>&#xA;Using the class to generate input events differs from posting&#xA;events to the AWT event queue or AWT components in that the&#xA;events are generated in the platform's native input&#xA;queue. For example, &lt;code>Robot.mouseMove&lt;/code> will actually move&#xA;the mouse cursor instead of just generating mouse move events.&#xA;&lt;p>&#xA;Note that some platforms require special privileges or extensions&#xA;to access low-level input control. If the current platform configuration&#xA;does not allow input control, an &lt;code>AWTException&lt;/code> will be thrown&#xA;when trying to construct Robot objects. For example, X-Window systems&#xA;will throw the exception if the XTEST 2.2 standard extension is not supported&#xA;(or not enabled) by the X server.&#xA;&lt;p>&#xA;Applications that use Robot for purposes other than self-testing should&#xA;handle these error conditions gracefully.&#xA;&#xA;@version &#x9;1.27, 12/19/03&#xA;@author &#x9;Robi Khan&#xA;@since   &#x9;1.3&#xA;" annotatedElement="4bcd5d04-5c57-4c63-8142-49a11a816b7b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d2ffb4de-d6fb-4ac8-abf2-5e6f98e72ba6" name="Graphics" isAbstract="true">
            <ownedComment xmi:id="e1798dd1-73a6-41ab-be22-c291f3f4cca3" body="The &lt;code>Graphics&lt;/code> class is the abstract base class for&#xA;all graphics contexts that allow an application to draw onto&#xA;components that are realized on various devices, as well as&#xA;onto off-screen images.&#xA;&lt;p>&#xA;A &lt;code>Graphics&lt;/code> object encapsulates state information needed&#xA;for the basic rendering operations that Java supports.  This&#xA;state information includes the following properties:&#xA;&lt;p>&#xA;&lt;ul>&#xA;&lt;li>The &lt;code>Component&lt;/code> object on which to draw.&#xA;&lt;li>A translation origin for rendering and clipping coordinates.&#xA;&lt;li>The current clip.&#xA;&lt;li>The current color.&#xA;&lt;li>The current font.&#xA;&lt;li>The current logical pixel operation function (XOR or Paint).&#xA;&lt;li>The current XOR alternation color&#xA;(see {@link Graphics#setXORMode}).&#xA;&lt;/ul>&#xA;&lt;p>&#xA;Coordinates are infinitely thin and lie between the pixels of the&#xA;output device.&#xA;Operations that draw the outline of a figure operate by traversing&#xA;an infinitely thin path between pixels with a pixel-sized pen that hangs&#xA;down and to the right of the anchor point on the path.&#xA;Operations that fill a figure operate by filling the interior&#xA;of that infinitely thin path.&#xA;Operations that render horizontal text render the ascending&#xA;portion of character glyphs entirely above the baseline coordinate.&#xA;&lt;p>&#xA;The graphics pen hangs down and to the right from the path it traverses.&#xA;This has the following implications:&#xA;&lt;p>&lt;ul>&#xA;&lt;li>If you draw a figure that covers a given rectangle, that&#xA;figure occupies one extra row of pixels on the right and bottom edges&#xA;as compared to filling a figure that is bounded by that same rectangle.&#xA;&lt;li>If you draw a horizontal line along the same &lt;i>y&lt;/i> coordinate as&#xA;the baseline of a line of text, that line is drawn entirely below&#xA;the text, except for any descenders.&#xA;&lt;/ul>&lt;p>&#xA;All coordinates that appear as arguments to the methods of this&#xA;&lt;code>Graphics&lt;/code> object are considered relative to the&#xA;translation origin of this &lt;code>Graphics&lt;/code> object prior to&#xA;the invocation of the method.&#xA;&lt;p>&#xA;All rendering operations modify only pixels which lie within the&#xA;area bounded by the current clip, which is specified by a {@link Shape}&#xA;in user space and is controlled by the program using the&#xA;&lt;code>Graphics&lt;/code> object.  This &lt;i>user clip&lt;/i>&#xA;is transformed into device space and combined with the&#xA;&lt;i>device clip&lt;/i>, which is defined by the visibility of windows and&#xA;device extents.  The combination of the user clip and device clip&#xA;defines the &lt;i>composite clip&lt;/i>, which determines the final clipping&#xA;region.  The user clip cannot be modified by the rendering&#xA;system to reflect the resulting composite clip. The user clip can only&#xA;be changed through the &lt;code>setClip&lt;/code> or &lt;code>clipRect&lt;/code>&#xA;methods.&#xA;All drawing or writing is done in the current color,&#xA;using the current paint mode, and in the current font.&#xA;&#xA;@version &#x9;1.69, 05/18/04&#xA;@author &#x9;Sami Shaio&#xA;@author &#x9;Arthur van Hoff&#xA;@see     java.awt.Component&#xA;@see     java.awt.Graphics#clipRect(int, int, int, int)&#xA;@see     java.awt.Graphics#setColor(java.awt.Color)&#xA;@see     java.awt.Graphics#setPaintMode()&#xA;@see     java.awt.Graphics#setXORMode(java.awt.Color)&#xA;@see     java.awt.Graphics#setFont(java.awt.Font)&#xA;@since       JDK1.0&#xA;" annotatedElement="d2ffb4de-d6fb-4ac8-abf2-5e6f98e72ba6"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="461c4ac0-6c03-4101-9600-ef529ccd449d" name="RenderingHints" clientDependency="09d6a54d-19fa-4bf2-b25a-2e13ab5321eb bdb8ff13-36fa-4780-9ab3-769379e6c8df">
            <ownedComment xmi:id="48c449c6-f1ef-448d-96b7-4133ae2405b9" body="The &lt;code>RenderingHints&lt;/code> class contains rendering hints that can&#xA;be used by the {@link java.awt.Graphics2D} class, and classes that&#xA;implement {@link java.awt.image.BufferedImageOp} and&#xA;{@link java.awt.image.Raster}.&#xA;" annotatedElement="461c4ac0-6c03-4101-9600-ef529ccd449d"/>
            <interfaceRealization xmi:id="09d6a54d-19fa-4bf2-b25a-2e13ab5321eb" name="" supplier="7515f8ad-109f-499a-a4a5-5eeba6170ad2" client="461c4ac0-6c03-4101-9600-ef529ccd449d" contract="7515f8ad-109f-499a-a4a5-5eeba6170ad2"/>
            <interfaceRealization xmi:id="bdb8ff13-36fa-4780-9ab3-769379e6c8df" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="461c4ac0-6c03-4101-9600-ef529ccd449d" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a84cdb68-3246-47dc-83c7-0b76d1426762" name="Key" isAbstract="true">
              <ownedComment xmi:id="09ae22ed-afd6-42e8-bfbb-54f2a122474e" body="Defines the base type of all keys used to control various&#xA;aspects of the rendering and imaging pipelines.  Instances&#xA;of this class are immutable and unique which means that&#xA;tests for matches can be made using the == operator instead&#xA;of the more expensive equals() method.&#xA;" annotatedElement="a84cdb68-3246-47dc-83c7-0b76d1426762"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2429c8c3-8ca3-437b-b1da-79decf00cfa9" name="TexturePaintContext" visibility="package" clientDependency="15e17a55-1dac-419e-8ac3-4c1fd7850464" isAbstract="true">
            <interfaceRealization xmi:id="15e17a55-1dac-419e-8ac3-4c1fd7850464" name="" supplier="59ac6912-87de-469a-8726-9aecc34683b0" client="2429c8c3-8ca3-437b-b1da-79decf00cfa9" contract="59ac6912-87de-469a-8726-9aecc34683b0"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="7b143e82-9988-47e1-955b-1608992aa465" name="Int" visibility="package">
              <generalization xmi:id="a839ff9b-5e13-4181-a5b3-811e10cdc6b8" isSubstitutable="true" general="2429c8c3-8ca3-437b-b1da-79decf00cfa9"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="0831f6be-7ff1-4b44-b914-f7a51b265f22" name="Byte" visibility="package">
              <generalization xmi:id="8e53a339-5320-418e-9c78-48a919452ff1" isSubstitutable="true" general="2429c8c3-8ca3-437b-b1da-79decf00cfa9"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="07fe81b2-d9a4-47ea-880a-b7c2352ac78e" name="ByteFilter" visibility="package">
              <generalization xmi:id="ac03bbad-b3fa-41cb-899d-c851cc9912a3" isSubstitutable="true" general="2429c8c3-8ca3-437b-b1da-79decf00cfa9"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="cf5c6f4e-9cb8-4dc3-92d2-a2228a9fa49d" name="Any" visibility="package">
              <generalization xmi:id="3e9dd63a-781b-4130-9be0-f9b4070347d6" isSubstitutable="true" general="2429c8c3-8ca3-437b-b1da-79decf00cfa9"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1b7231a0-b365-41d9-bd00-d996264345f4" name="SystemColor" clientDependency="e294c44c-211f-4b24-86f2-726bec47f5e0" isLeaf="true">
            <ownedComment xmi:id="180dada5-ff83-4edc-ae14-4a9d04c1273c" body="A class to encapsulate symbolic colors representing the color of&#xA;native GUI objects on a system.  For systems which support the dynamic&#xA;update of the system colors (when the user changes the colors)&#xA;the actual RGB values of these symbolic colors will also change&#xA;dynamically.  In order to compare the &quot;current&quot; RGB value of a&#xA;&lt;code>SystemColor&lt;/code> object with a non-symbolic Color object,&#xA;&lt;code>getRGB&lt;/code> should be used rather than &lt;code>equals&lt;/code>.&#xA;&lt;p>&#xA;Note that the way in which these system colors are applied to GUI objects&#xA;may vary slightly from platform to platform since GUI objects may be&#xA;rendered differently on each platform.&#xA;&lt;p>&#xA;System color values may also be available through the &lt;code>getDesktopProperty&lt;/code>&#xA;method on &lt;code>java.awt.Toolkit&lt;/code>.&#xA;&#xA;@see Toolkit#getDesktopProperty&#xA;&#xA;@version &#x9;1.24, 12/19/03&#xA;@author &#x9;Carl Quinn&#xA;@author      Amy Fowler&#xA;" annotatedElement="1b7231a0-b365-41d9-bd00-d996264345f4"/>
            <generalization xmi:id="f914ed31-453a-4fb1-af0d-131f1e01ff56" isSubstitutable="true" general="7f957e06-ec60-4ae2-9f8c-3d5270acb04a"/>
            <interfaceRealization xmi:id="e294c44c-211f-4b24-86f2-726bec47f5e0" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="1b7231a0-b365-41d9-bd00-d996264345f4" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7cf332a6-d29e-455f-875e-ce9f473cf4f9" name="EventQueueItem" visibility="package"/>
          <packagedElement xmi:type="uml:Class" xmi:id="7f957e06-ec60-4ae2-9f8c-3d5270acb04a" name="Color" clientDependency="6c0521f9-cff8-4788-ac29-69378b35b533 c1e622aa-b7d3-460f-b08c-69bcb7bbc53b">
            <ownedComment xmi:id="cc5de026-540d-4625-8506-072b439ab6a5" body="The &lt;code>Color&lt;/code> class is used to encapsulate colors in the default&#xA;sRGB color space or colors in arbitrary color spaces identified by a&#xA;{@link ColorSpace}.  Every color has an implicit alpha value of 1.0 or&#xA;an explicit one provided in the constructor.  The alpha value&#xA;defines the transparency of a color and can be represented by&#xA;a float value in the range 0.0&amp;nbsp;-&amp;nbsp;1.0 or 0&amp;nbsp;-&amp;nbsp;255.&#xA;An alpha value of 1.0 or 255 means that the color is completely&#xA;opaque and an alpha value of 0 or 0.0 means that the color is&#xA;completely transparent.&#xA;When constructing a &lt;code>Color&lt;/code> with an explicit alpha or&#xA;getting the color/alpha components of a &lt;code>Color&lt;/code>, the color&#xA;components are never premultiplied by the alpha component.&#xA;&lt;p>&#xA;The default color space for the Java 2D(tm) API is sRGB, a proposed&#xA;standard RGB color space.  For further information on sRGB,&#xA;see &lt;A href=&quot;http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html&quot;>&#xA;http://www.w3.org/pub/WWW/Graphics/Color/sRGB.html&#xA;&lt;/A>.&#xA;&lt;p>&#xA;@version &#x9;10 Feb 1997&#xA;@author &#x9;Sami Shaio&#xA;@author &#x9;Arthur van Hoff&#xA;@see&#x9;&#x9;ColorSpace&#xA;@see         AlphaComposite&#xA;" annotatedElement="7f957e06-ec60-4ae2-9f8c-3d5270acb04a"/>
            <interfaceRealization xmi:id="c1e622aa-b7d3-460f-b08c-69bcb7bbc53b" name="" supplier="c02d0204-63be-4360-b4c5-08316e96df10" client="7f957e06-ec60-4ae2-9f8c-3d5270acb04a" contract="c02d0204-63be-4360-b4c5-08316e96df10"/>
            <interfaceRealization xmi:id="6c0521f9-cff8-4788-ac29-69378b35b533" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="7f957e06-ec60-4ae2-9f8c-3d5270acb04a" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d16f7a11-00a3-4474-ba0b-c38ec30ff9f4" name="TextComponent" clientDependency="3bdc14b2-6562-4a9b-9191-a22c7afb408f">
            <ownedComment xmi:id="bdda622e-018a-46e2-9693-e6f658e5e054" body="The &lt;code>TextComponent&lt;/code> class is the superclass of&#xA;any component that allows the editing of some text.&#xA;&lt;p>&#xA;A text component embodies a string of text.  The&#xA;&lt;code>TextComponent&lt;/code> class defines a set of methods&#xA;that determine whether or not this text is editable. If the&#xA;component is editable, it defines another set of methods&#xA;that supports a text insertion caret.&#xA;&lt;p>&#xA;In addition, the class defines methods that are used&#xA;to maintain a current &lt;em>selection&lt;/em> from the text.&#xA;The text selection, a substring of the component's text,&#xA;is the target of editing operations. It is also referred&#xA;to as the &lt;em>selected text&lt;/em>.&#xA;&#xA;@version&#x9;1.83, 05/05/04&#xA;@author &#x9;Sami Shaio&#xA;@author &#x9;Arthur van Hoff&#xA;@since       JDK1.0&#xA;" annotatedElement="d16f7a11-00a3-4474-ba0b-c38ec30ff9f4"/>
            <generalization xmi:id="9f18743d-2a13-4564-a6ac-484a79baa927" isSubstitutable="true" general="4d925b7b-d68e-4e13-b87b-98bdb93e9024"/>
            <interfaceRealization xmi:id="3bdc14b2-6562-4a9b-9191-a22c7afb408f" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="d16f7a11-00a3-4474-ba0b-c38ec30ff9f4" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="b4a7e424-2eb1-4aed-9662-cb03b405d120" name="AccessibleAWTTextComponent" visibility="protected" clientDependency="69e82c78-d8b1-4938-a7d5-02b78cbb2530 ce370598-5b9b-4111-97f3-0573c95a01b3">
              <ownedComment xmi:id="0bef16e9-d781-4dd5-9390-a41c418cfdd9" body="This class implements accessibility support for the&#xA;&lt;code>TextComponent&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to text component user-interface&#xA;elements.&#xA;" annotatedElement="b4a7e424-2eb1-4aed-9662-cb03b405d120"/>
              <generalization xmi:id="fb93d0eb-c4dc-4097-9831-4e21b9ce840b" isSubstitutable="true" general="e8a07816-0ac5-4ca1-990d-2e0e3f63e181"/>
              <interfaceRealization xmi:id="ce370598-5b9b-4111-97f3-0573c95a01b3" name="" supplier="a6772e39-fecf-4aaa-b8ba-55f63854a725" client="b4a7e424-2eb1-4aed-9662-cb03b405d120" contract="a6772e39-fecf-4aaa-b8ba-55f63854a725"/>
              <interfaceRealization xmi:id="69e82c78-d8b1-4938-a7d5-02b78cbb2530" name="" supplier="dc0a40a1-ffad-4052-a8b3-987f3ef72c2d" client="b4a7e424-2eb1-4aed-9662-cb03b405d120" contract="dc0a40a1-ffad-4052-a8b3-987f3ef72c2d"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="146f32ee-ae59-495e-96f8-2d40650e9030" name="Rectangle" clientDependency="9a25c10f-a946-4e78-86f4-3bdfc64902ed 249dfa17-51ff-4aee-9130-f2a9700ddb64">
            <ownedComment xmi:id="8bf927c1-d65f-44bf-89b8-0aff7f1ff02a" body="A &lt;code>Rectangle&lt;/code> specifies an area in a coordinate space that is&#xA;enclosed by the &lt;code>Rectangle&lt;/code> object's top-left point&#xA;(&lt;i>x&lt;/i>,&amp;nbsp;&lt;i>y&lt;/i>)&#xA;in the coordinate space, its width, and its height.&#xA;&lt;p>&#xA;A &lt;code>Rectangle&lt;/code> object's &lt;code>width&lt;/code> and&#xA;&lt;code>height&lt;/code> are &lt;code>public&lt;/code> fields. The constructors&#xA;that create a &lt;code>Rectangle&lt;/code>, and the methods that can modify&#xA;one, do not prevent setting a negative value for width or height.&#xA;&lt;p>&#xA;A &lt;code>Rectangle&lt;/code> whose width or height is negative is considered&#xA;empty. If the &lt;code>Rectangle&lt;/code> is empty, then the&#xA;&lt;code>isEmpty&lt;/code> method returns &lt;code>true&lt;/code>. No point can be&#xA;contained by or inside an empty &lt;code>Rectangle&lt;/code>.  The&#xA;values of &lt;code>width&lt;/code> and &lt;code>height&lt;/code>, however, are still&#xA;valid.  An empty &lt;code>Rectangle&lt;/code> still has a location in the&#xA;coordinate space, and methods that change its size or location remain&#xA;valid. The behavior of methods that operate on more than one&#xA;&lt;code>Rectangle&lt;/code> is undefined if any of the participating&#xA;&lt;code>Rectangle&lt;/code> objects has a negative&#xA;&lt;code>width&lt;/code> or &lt;code>height&lt;/code>. These methods include&#xA;&lt;code>intersects&lt;/code>, &lt;code>intersection&lt;/code>, and&#xA;&lt;code>union&lt;/code>.&#xA;&#xA;@version &#x9;1.70, 05/18/04&#xA;@author &#x9;Sami Shaio&#xA;@since       JDK1.0&#xA;" annotatedElement="146f32ee-ae59-495e-96f8-2d40650e9030"/>
            <generalization xmi:id="d87da0d2-9a14-477f-ae5a-6985727aea94" isSubstitutable="true" general="cb51ab1a-c7f9-4452-8179-caff52f97d4b"/>
            <interfaceRealization xmi:id="249dfa17-51ff-4aee-9130-f2a9700ddb64" name="" supplier="b8a81ec0-3dfc-4493-81d6-e7eca1bb10aa" client="146f32ee-ae59-495e-96f8-2d40650e9030" contract="b8a81ec0-3dfc-4493-81d6-e7eca1bb10aa"/>
            <interfaceRealization xmi:id="9a25c10f-a946-4e78-86f4-3bdfc64902ed" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="146f32ee-ae59-495e-96f8-2d40650e9030" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="273f870e-0e27-411b-b2e3-ad946f5558ba" name="Dimension" clientDependency="1612533a-70c1-4f00-b105-043f372b0bbe">
            <ownedComment xmi:id="7371ad1d-0ea1-4154-9dfa-089ea134e281" body="The &lt;code>Dimension&lt;/code> class encapsulates the width and&#xA;height of a component (in integer precision) in a single object.&#xA;The class is&#xA;associated with certain properties of components. Several methods&#xA;defined by the &lt;code>Component&lt;/code> class and the&#xA;&lt;code>LayoutManager&lt;/code> interface return a&#xA;&lt;code>Dimension&lt;/code> object.&#xA;&lt;p>&#xA;Normally the values of &lt;code>width&lt;/code>&#xA;and &lt;code>height&lt;/code> are non-negative integers.&#xA;The constructors that allow you to create a dimension do&#xA;not prevent you from setting a negative value for these properties.&#xA;If the value of &lt;code>width&lt;/code> or &lt;code>height&lt;/code> is&#xA;negative, the behavior of some methods defined by other objects is&#xA;undefined.&#xA;&#xA;@version &#x9;1.32, 12/19/03&#xA;@author &#x9;Sami Shaio&#xA;@author &#x9;Arthur van Hoff&#xA;@see         java.awt.Component&#xA;@see         java.awt.LayoutManager&#xA;@since       JDK1.0&#xA;" annotatedElement="273f870e-0e27-411b-b2e3-ad946f5558ba"/>
            <generalization xmi:id="a241983f-a9d7-4915-b2be-a76a85ef42c7" isSubstitutable="true" general="84a46309-773b-440b-aac2-b2b3fcd5b23a"/>
            <interfaceRealization xmi:id="1612533a-70c1-4f00-b105-043f372b0bbe" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="273f870e-0e27-411b-b2e3-ad946f5558ba" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="52e56084-37e5-4368-88a9-c10423cded01" name="VKCollection" visibility="package"/>
          <packagedElement xmi:type="uml:Package" xmi:id="f8a0dc45-5b21-4657-8765-011c6fe6b8ec" name="image">
            <packagedElement xmi:type="uml:Class" xmi:id="d18d6014-a7c5-40dc-a1f4-ac465dde9235" name="ComponentColorModel">
              <ownedComment xmi:id="6d2aca03-8612-416b-bb7b-192b1f1e2468" body="A &lt;CODE>ColorModel&lt;/CODE> class that works with pixel values that&#xA;represent color and alpha information as separate samples and that&#xA;store each sample in a separate data element.  This class can be&#xA;used with an arbitrary &lt;CODE>ColorSpace&lt;/CODE>.  The number of&#xA;color samples in the pixel values must be same as the number of&#xA;color components in the &lt;CODE>ColorSpace&lt;/CODE>. There may be a&#xA;single alpha sample.&#xA;&lt;p>&#xA;For those methods that use&#xA;a primitive array pixel representation of type &lt;CODE>transferType&lt;/CODE>,&#xA;the array length is the same as the number of color and alpha samples.&#xA;Color samples are stored first in the array followed by the alpha&#xA;sample, if present.  The order of the color samples is specified&#xA;by the &lt;CODE>ColorSpace&lt;/CODE>.  Typically, this order reflects the&#xA;name of the color space type. For example, for &lt;CODE>TYPE_RGB&lt;/CODE>,&#xA;index 0 corresponds to red, index 1 to green, and index 2 to blue.&#xA;&lt;p>&#xA;The translation from pixel sample values to color/alpha components for&#xA;display or processing purposes is based on a one-to-one correspondence of&#xA;samples to components.&#xA;Depending on the transfer type used to create an instance of&#xA;&lt;code>ComponentColorModel&lt;/code>, the pixel sample values&#xA;represented by that instance may be signed or unsigned and may&#xA;be of integral type or float or double (see below for details).&#xA;The translation from sample values to normalized color/alpha components&#xA;must follow certain rules.  For float and double samples, the translation&#xA;is an identity, i.e. normalized component values are equal to the&#xA;corresponding sample values.  For integral samples, the translation&#xA;should be only a simple scale and offset, where the scale and offset&#xA;constants may be different for each component.  The result of&#xA;applying the scale and offset constants is a set of color/alpha&#xA;component values, which are guaranteed to fall within a certain&#xA;range.  Typically, the range for a color component will be the range&#xA;defined by the &lt;code>getMinValue&lt;/code> and &lt;code>getMaxValue&lt;/code>&#xA;methods of the &lt;code>ColorSpace&lt;/code> class.  The range for an&#xA;alpha component should be 0.0 to 1.0.&#xA;&lt;p>&#xA;Instances of &lt;code>ComponentColorModel&lt;/code> created with transfer types&#xA;&lt;CODE>DataBuffer.TYPE_BYTE&lt;/CODE>, &lt;CODE>DataBuffer.TYPE_USHORT&lt;/CODE>,&#xA;and &lt;CODE>DataBuffer.TYPE_INT&lt;/CODE> have pixel sample values which&#xA;are treated as unsigned integral values.&#xA;The number of bits in a color or alpha sample of a pixel value might not&#xA;be the same as the number of bits for the corresponding color or alpha&#xA;sample passed to the&#xA;&lt;code>ComponentColorModel(ColorSpace, int[], boolean, boolean, int, int)&lt;/code>&#xA;constructor.  In&#xA;that case, this class assumes that the least significant n bits of a sample&#xA;value hold the component value, where n is the number of significant bits&#xA;for the component passed to the constructor.  It also assumes that&#xA;any higher-order bits in a sample value are zero.  Thus, sample values&#xA;range from 0 to 2&lt;sup>n&lt;/sup> - 1.  This class maps these sample values&#xA;to normalized color component values such that 0 maps to the value&#xA;obtained from the &lt;code>ColorSpace's&lt;/code> &lt;code>getMinValue&lt;/code>&#xA;method for each component and 2&lt;sup>n&lt;/sup> - 1 maps to the value&#xA;obtained from &lt;code>getMaxValue&lt;/code>.  To create a&#xA;&lt;code>ComponentColorModel&lt;/code> with a different color sample mapping&#xA;requires subclassing this class and overriding the&#xA;&lt;code>getNormalizedComponents(Object, float[], int)&lt;/code> method.&#xA;The mapping for an alpha sample always maps 0 to 0.0 and&#xA;2&lt;sup>n&lt;/sup> - 1 to 1.0.&#xA;&lt;p>&#xA;For instances with unsigned sample values,&#xA;the unnormalized color/alpha component representation is only&#xA;supported if two conditions hold.  First, sample value value 0 must&#xA;map to normalized component value 0.0 and sample value 2&lt;sup>n&lt;/sup> - 1&#xA;to 1.0.  Second the min/max range of all color components of the&#xA;&lt;code>ColorSpace&lt;/code> must be 0.0 to 1.0.  In this case, the&#xA;component representation is the n least&#xA;significant bits of the corresponding sample.  Thus each component is&#xA;an unsigned integral value between 0 and 2&lt;sup>n&lt;/sup> - 1, where&#xA;n is the number of significant bits for a particular component.&#xA;If these conditions are not met, any method taking an unnormalized&#xA;component argument will throw an &lt;code>IllegalArgumentException&lt;/code>.&#xA;&lt;p>&#xA;Instances of &lt;code>ComponentColorModel&lt;/code> created with transfer types&#xA;&lt;CODE>DataBuffer.TYPE_SHORT&lt;/CODE>, &lt;CODE>DataBuffer.TYPE_FLOAT&lt;/CODE>, and&#xA;&lt;CODE>DataBuffer.TYPE_DOUBLE&lt;/CODE> have pixel sample values which&#xA;are treated as signed short, float, or double values.&#xA;Such instances do not support the unnormalized color/alpha component&#xA;representation, so any methods taking such a representation as an argument&#xA;will throw an &lt;code>IllegalArgumentException&lt;/code> when called on one&#xA;of these instances.  The normalized component values of instances&#xA;of this class have a range which depends on the transfer&#xA;type as follows: for float samples, the full range of the float data&#xA;type; for double samples, the full range of the float data type&#xA;(resulting from casting double to float); for short samples,&#xA;from approximately -maxVal to +maxVal, where maxVal is the per&#xA;component maximum value for the &lt;code>ColorSpace&lt;/code>&#xA;(-32767 maps to -maxVal, 0 maps to 0.0, and 32767 maps&#xA;to +maxVal).  A subclass may override the scaling for short sample&#xA;values to normalized component values by overriding the&#xA;&lt;code>getNormalizedComponents(Object, float[], int)&lt;/code> method.&#xA;For float and double samples, the normalized component values are&#xA;taken to be equal to the corresponding sample values, and subclasses&#xA;should not attempt to add any non-identity scaling for these transfer&#xA;types.&#xA;&lt;p>&#xA;Instances of &lt;code>ComponentColorModel&lt;/code> created with transfer types&#xA;&lt;CODE>DataBuffer.TYPE_SHORT&lt;/CODE>, &lt;CODE>DataBuffer.TYPE_FLOAT&lt;/CODE>, and&#xA;&lt;CODE>DataBuffer.TYPE_DOUBLE&lt;/CODE>&#xA;use all the bits of all sample values.  Thus all color/alpha components&#xA;have 16 bits when using &lt;CODE>DataBuffer.TYPE_SHORT&lt;/CODE>, 32 bits when&#xA;using &lt;CODE>DataBuffer.TYPE_FLOAT&lt;/CODE>, and 64 bits when using&#xA;&lt;CODE>DataBuffer.TYPE_DOUBLE&lt;/CODE>.  When the&#xA;&lt;code>ComponentColorModel(ColorSpace, int[], boolean, boolean, int, int)&lt;/code>&#xA;form of constructor is used with one of these transfer types, the&#xA;bits array argument is ignored.&#xA;&lt;p>&#xA;It is possible to have color/alpha sample values&#xA;which cannot be reasonably interpreted as component values for rendering.&#xA;This can happen when &lt;code>ComponentColorModel&lt;/code> is subclassed to&#xA;override the mapping of unsigned sample values to normalized color&#xA;component values or when signed sample values outside a certain range&#xA;are used.  (As an example, specifying an alpha component as a signed&#xA;short value outside the range 0 to 32767, normalized range 0.0 to 1.0, can&#xA;lead to unexpected results.) It is the&#xA;responsibility of applications to appropriately scale pixel data before&#xA;rendering such that color components fall within the normalized range&#xA;of the &lt;code>ColorSpace&lt;/code> (obtained using the &lt;code>getMinValue&lt;/code>&#xA;and &lt;code>getMaxValue&lt;/code> methods of the &lt;code>ColorSpace&lt;/code> class)&#xA;and the alpha component is between 0.0 and 1.0.  If color or alpha&#xA;component values fall outside these ranges, rendering results are&#xA;indeterminate.&#xA;&lt;p>&#xA;Methods that use a single int pixel representation throw&#xA;an &lt;CODE>IllegalArgumentException&lt;/CODE>, unless the number of components&#xA;for the &lt;CODE>ComponentColorModel&lt;/CODE> is one and the component&#xA;value is unsigned -- in other words,  a single color component using&#xA;a transfer type of &lt;CODE>DataBuffer.TYPE_BYTE&lt;/CODE>,&#xA;&lt;CODE>DataBuffer.TYPE_USHORT&lt;/CODE>, or &lt;CODE>DataBuffer.TYPE_INT&lt;/CODE>&#xA;and no alpha.&#xA;&lt;p>&#xA;A &lt;CODE>ComponentColorModel&lt;/CODE> can be used in conjunction with a&#xA;&lt;CODE>ComponentSampleModel&lt;/CODE>, a &lt;CODE>BandedSampleModel&lt;/CODE>,&#xA;or a &lt;CODE>PixelInterleavedSampleModel&lt;/CODE> to construct a&#xA;&lt;CODE>BufferedImage&lt;/CODE>.&#xA;&#xA;@see ColorModel&#xA;@see ColorSpace&#xA;@see ComponentSampleModel&#xA;@see BandedSampleModel&#xA;@see PixelInterleavedSampleModel&#xA;@see BufferedImage&#xA;&#xA;@version 10 Feb 1997&#xA;" annotatedElement="d18d6014-a7c5-40dc-a1f4-ac465dde9235"/>
              <generalization xmi:id="9a789a26-0c93-467e-b78d-2db80d36d477" isSubstitutable="true" general="19d3c0e1-d2d4-4d8b-8b6a-9353388b02e6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="72ede030-0691-4953-be91-11a6a0047536" name="ImageObserver" isAbstract="true">
              <ownedComment xmi:id="6cf57672-4de6-4f9d-ae7a-c63ce4b0a63f" body="An asynchronous update interface for receiving notifications about&#xA;Image information as the Image is constructed.&#xA;&#xA;@version &#x9;1.27 12/19/03&#xA;@author &#x9;Jim Graham&#xA;" annotatedElement="72ede030-0691-4953-be91-11a6a0047536"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0824e45b-6640-4075-97a8-c1844d51e61b" name="BandedSampleModel" isLeaf="true">
              <ownedComment xmi:id="03d98732-5fd6-4f5e-9856-4e29285ef326" body="This class represents image data which is stored in a band interleaved&#xA;fashion and for&#xA;which each sample of a pixel occupies one data element of the DataBuffer.&#xA;It subclasses ComponentSampleModel but provides a more efficent&#xA;implementation for accessing band interleaved image data than is provided&#xA;by ComponentSampleModel.  This class should typically be used when working&#xA;with images which store sample data for each band in a different bank of the&#xA;DataBuffer. Accessor methods are provided so that image data can be&#xA;manipulated directly. Pixel stride is the number of&#xA;data array elements between two samples for the same band on the same&#xA;scanline. The pixel stride for a BandedSampleModel is one.&#xA;Scanline stride is the number of data array elements between&#xA;a given sample and the corresponding sample in the same column of the next&#xA;scanline.  Band offsets denote the number&#xA;of data array elements from the first data array element of the bank&#xA;of the DataBuffer holding each band to the first sample of the band.&#xA;The bands are numbered from 0 to N-1.&#xA;Bank indices denote the correspondence between a bank of the data buffer&#xA;and a band of image data.  This class supports&#xA;{@link DataBuffer#TYPE_BYTE TYPE_BYTE},&#xA;{@link DataBuffer#TYPE_USHORT TYPE_USHORT},&#xA;{@link DataBuffer#TYPE_SHORT TYPE_SHORT},&#xA;{@link DataBuffer#TYPE_INT TYPE_INT},&#xA;{@link DataBuffer#TYPE_FLOAT TYPE_FLOAT}, and&#xA;{@link DataBuffer#TYPE_DOUBLE TYPE_DOUBLE} datatypes&#xA;" annotatedElement="0824e45b-6640-4075-97a8-c1844d51e61b"/>
              <generalization xmi:id="c8d0aae8-7352-48c1-8860-c0114c034e22" isSubstitutable="true" general="8fe265b8-1aea-461d-90d0-d9d2062afd14"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7ae80a42-880a-4eaa-b114-6e5a72b7ab92" name="AffineTransformOp" clientDependency="808b3483-ba84-4812-b4bf-1d2a8476df07 fbc6f8bb-3590-46d2-9fa8-815b050feb72">
              <ownedComment xmi:id="054b914e-d1da-44a5-bb13-0dc46af919c1" body="This class uses an affine transform to perform a linear mapping from&#xA;2D coordinates in the source image or &lt;CODE>Raster&lt;/CODE> to 2D coordinates&#xA;in the destination image or &lt;CODE>Raster&lt;/CODE>.&#xA;The type of interpolation that is used is specified through a constructor,&#xA;either by a &lt;CODE>RenderingHints&lt;/CODE> object or by one of the integer&#xA;interpolation types defined in this class.&#xA;&lt;p>&#xA;If a &lt;CODE>RenderingHints&lt;/CODE> object is specified in the constructor, the&#xA;interpolation hint and the rendering quality hint are used to set&#xA;the interpolation type for this operation.  The color rendering hint&#xA;and the dithering hint can be used when color conversion is required.&#xA;&lt;p>&#xA;Note that the following constraints have to be met:&#xA;&lt;ul>&#xA;&lt;li>The source and destination must be different.&#xA;&lt;li>For &lt;CODE>Raster&lt;/CODE> objects, the number of bands in the source must&#xA;be equal to the number of bands in the destination.&#xA;&lt;/ul>&#xA;@see AffineTransform&#xA;@see BufferedImageFilter&#xA;@see java.awt.RenderingHints#KEY_INTERPOLATION&#xA;@see java.awt.RenderingHints#KEY_RENDERING&#xA;@see java.awt.RenderingHints#KEY_COLOR_RENDERING&#xA;@see java.awt.RenderingHints#KEY_DITHERING&#xA;@version 16 Apr 1998&#xA;" annotatedElement="7ae80a42-880a-4eaa-b114-6e5a72b7ab92"/>
              <interfaceRealization xmi:id="808b3483-ba84-4812-b4bf-1d2a8476df07" name="" supplier="aa01c32f-7051-42b8-88c8-a017e610969f" client="7ae80a42-880a-4eaa-b114-6e5a72b7ab92" contract="aa01c32f-7051-42b8-88c8-a017e610969f"/>
              <interfaceRealization xmi:id="fbc6f8bb-3590-46d2-9fa8-815b050feb72" name="" supplier="821598a2-cbcd-4549-900d-0119fe2a56ce" client="7ae80a42-880a-4eaa-b114-6e5a72b7ab92" contract="821598a2-cbcd-4549-900d-0119fe2a56ce"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="19c9ccab-05c1-4608-8d05-3e133df07b79" name="VolatileImage" clientDependency="44e17b5f-2ad6-4083-9b9a-1d6249852a6d" isAbstract="true">
              <ownedComment xmi:id="34051bce-f236-4543-9693-8465693ad4f3" body="VolatileImage is an image which can lose its&#xA;contents at any time due to circumstances beyond the control of the&#xA;application (e.g., situations caused by the operating system or by&#xA;other applications). Because of the potential for hardware acceleration,&#xA;a VolatileImage object can have significant performance benefits on&#xA;some platforms.&#xA;&lt;p>&#xA;The drawing surface of an image (the memory where the image contents&#xA;actually reside) can be lost or invalidated, causing the contents of that&#xA;memory to go away.  The drawing surface thus needs to be restored&#xA;or recreated and the contents of that surface need to be&#xA;re-rendered.  VolatileImage provides an interface for&#xA;allowing the user to detect these problems and fix them&#xA;when they occur.&#xA;&lt;p>&#xA;This image should not be subclassed directly but should be created&#xA;by using the {@link java.awt.Component#createVolatileImage(int, int)&#xA;Component.createVolatileImage} or&#xA;{@link java.awt.GraphicsConfiguration#createCompatibleVolatileImage(int, int)&#xA;GraphicsConfiguration.createCompatibleVolatileImage(int, int)} methods.&#xA;&lt;P>&#xA;An example of using a VolatileImage object follows:&#xA;&lt;pre>&#xA;image creation&#xA;VolatileImage vImg = createVolatileImage(w, h);&#xA;&#xA;&#xA;rendering to the image&#xA;void renderOffscreen() {&#xA;do {&#xA;if (vImg.validate(getGraphicsConfiguration()) ==&#xA;VolatileImage.IMAGE_INCOMPATIBLE)&#xA;{&#xA;old vImg doesn't work with new GraphicsConfig; re-create it&#xA;vImg = createVolatileImage(w, h);&#xA;}&#xA;Graphics2D g = vImg.createGraphics();&#xA;&#xA;miscellaneous rendering commands...&#xA;&#xA;g.dispose();&#xA;} while (vImg.contentsLost());&#xA;}&#xA;&#xA;&#xA;copying from the image (here, gScreen is the Graphics&#xA;object for the onscreen window)&#xA;do {&#xA;int returnCode = vImg.validate(getGraphicsConfiguration());&#xA;if (returnCode == VolatileImage.IMAGE_RESTORED) {&#xA;Contents need to be restored&#xA;renderOffscreen();&#x9;    // restore contents&#xA;} else if (returnCode == VolatileImage.IMAGE_INCOMPATIBLE) {&#xA;old vImg doesn't work with new GraphicsConfig; re-create it&#xA;vImg = createVolatileImage(w, h);&#xA;renderOffscreen();&#xA;}&#xA;gScreen.drawImage(vImg, 0, 0, this);&#xA;} while (vImg.contentsLost());&#xA;&lt;/pre>&#xA;&lt;P>&#xA;Note that this class subclasses from the {@link Image} class, which&#xA;includes methods that take an {@link ImageObserver} parameter for&#xA;asynchronous notifications as information is received from&#xA;a potential {@link ImageProducer}.  Since this &lt;code>VolatileImage&lt;/code>&#xA;is not loaded from an asynchronous source, the various methods that take&#xA;an &lt;code>ImageObserver&lt;/code> parameter will behave as if the data has&#xA;already been obtained from the &lt;code>ImageProducer&lt;/code>.&#xA;Specifically, this means that the return values from such methods&#xA;will never indicate that the information is not yet available and&#xA;the &lt;code>ImageObserver&lt;/code> used in such methods will never&#xA;need to be recorded for an asynchronous callback notification.&#xA;" annotatedElement="19c9ccab-05c1-4608-8d05-3e133df07b79"/>
              <generalization xmi:id="98add8a5-0a74-4ae6-b411-e398a3b8dbc5" isSubstitutable="true" general="e3c366cc-e742-467d-a8a6-e86b085ce028"/>
              <interfaceRealization xmi:id="44e17b5f-2ad6-4083-9b9a-1d6249852a6d" name="" supplier="a47e023b-6285-43d3-875d-b3f38c61be25" client="19c9ccab-05c1-4608-8d05-3e133df07b79" contract="a47e023b-6285-43d3-875d-b3f38c61be25"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="346ecb2d-7bbf-4b2a-ad9f-5d3d311617bd" name="IndexColorModel">
              <ownedComment xmi:id="bd158401-5c9d-44cd-8547-093e4218cc8c" body="The &lt;code>IndexColorModel&lt;/code> class is a &lt;code>ColorModel&lt;/code>&#xA;class that works with pixel values consisting of a&#xA;single sample that is an index into a fixed colormap in the default&#xA;sRGB color space.  The colormap specifies red, green, blue, and&#xA;optional alpha components corresponding to each index.  All components&#xA;are represented in the colormap as 8-bit unsigned integral values.&#xA;Some constructors allow the caller to specify &quot;holes&quot; in the colormap&#xA;by indicating which colormap entries are valid and which represent&#xA;unusable colors via the bits set in a &lt;code>BigInteger&lt;/code> object.&#xA;This color model is similar to an X11 PseudoColor visual.&#xA;&lt;p>&#xA;Some constructors provide a means to specify an alpha component&#xA;for each pixel in the colormap, while others either provide no&#xA;such means or, in some cases, a flag to indicate whether the&#xA;colormap data contains alpha values.  If no alpha is supplied to&#xA;the constructor, an opaque alpha component (alpha = 1.0) is&#xA;assumed for each entry.&#xA;An optional transparent pixel value can be supplied that indicates a&#xA;pixel to be made completely transparent, regardless of any alpha&#xA;component supplied or assumed for that pixel value.&#xA;Note that the color components in the colormap of an&#xA;&lt;code>IndexColorModel&lt;/code> objects are never pre-multiplied with&#xA;the alpha components.&#xA;&lt;p>&#xA;&lt;a name=&quot;transparency&quot;>&#xA;The transparency of an &lt;code>IndexColorModel&lt;/code> object is&#xA;determined by examining the alpha components of the colors in the&#xA;colormap and choosing the most specific value after considering&#xA;the optional alpha values and any transparent index specified.&#xA;The transparency value is &lt;code>Transparency.OPAQUE&lt;/code>&#xA;only if all valid colors in&#xA;the colormap are opaque and there is no valid transparent pixel.&#xA;If all valid colors&#xA;in the colormap are either completely opaque (alpha = 1.0) or&#xA;completely transparent (alpha = 0.0), which typically occurs when&#xA;a valid transparent pixel is specified,&#xA;the value is &lt;code>Transparency.BITMASK&lt;/code>.&#xA;Otherwise, the value is &lt;code>Transparency.TRANSLUCENT&lt;/code>, indicating&#xA;that some valid color has an alpha component that is&#xA;neither completely transparent nor completely opaque (0.0 &lt; alpha &lt; 1.0).&#xA;&lt;/a>&#xA;&#xA;&lt;p>&#xA;If an &lt;code>IndexColorModel&lt;/code> object has&#xA;a transparency value of &lt;code>Transparency.OPAQUE&lt;/code>,&#xA;then the &lt;code>hasAlpha&lt;/code>&#xA;and &lt;code>getNumComponents&lt;/code> methods&#xA;(both inherited from &lt;code>ColorModel&lt;/code>)&#xA;return false and 3, respectively.&#xA;For any other transparency value,&#xA;&lt;code>hasAlpha&lt;/code> returns true&#xA;and &lt;code>getNumComponents&lt;/code> returns 4.&#xA;&#xA;&lt;p>&#xA;The index represented by a pixel value is stored in the least&#xA;significant &lt;em>n&lt;/em> bits of the pixel representations passed to the&#xA;methods of this class, where &lt;em>n&lt;/em> is the pixel size specified to the&#xA;constructor for a particular &lt;code>IndexColorModel&lt;/code> object;&#xA;&lt;em>n&lt;/em> must be between 1 and 16, inclusive.&#xA;Higher order bits in pixel representations are assumed to be zero.&#xA;For those methods that use a primitive array pixel representation of&#xA;type &lt;code>transferType&lt;/code>, the array length is always one.&#xA;The transfer types supported are &lt;code>DataBuffer.TYPE_BYTE&lt;/code> and&#xA;&lt;code>DataBuffer.TYPE_USHORT&lt;/code>.  A single int pixel&#xA;representation is valid for all objects of this class, since it is&#xA;always possible to represent pixel values used with this class in a&#xA;single int.  Therefore, methods that use this representation do&#xA;not throw an &lt;code>IllegalArgumentException&lt;/code> due to an invalid&#xA;pixel value.&#xA;&lt;p>&#xA;Many of the methods in this class are final.  The reason for&#xA;this is that the underlying native graphics code makes assumptions&#xA;about the layout and operation of this class and those assumptions&#xA;are reflected in the implementations of the methods here that are&#xA;marked final.  You can subclass this class for other reasons, but&#xA;you cannot override or modify the behaviour of those methods.&#xA;&#xA;@see ColorModel&#xA;@see ColorSpace&#xA;@see DataBuffer&#xA;&#xA;@version 10 Feb 1997&#xA;" annotatedElement="346ecb2d-7bbf-4b2a-ad9f-5d3d311617bd"/>
              <generalization xmi:id="2e7ba12f-b8cf-4252-9c88-e79ad36070e8" isSubstitutable="true" general="19d3c0e1-d2d4-4d8b-8b6a-9353388b02e6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="aa01c32f-7051-42b8-88c8-a017e610969f" name="BufferedImageOp" isAbstract="true">
              <ownedComment xmi:id="bd4ee7d0-11fe-4b60-a2b5-db925d495fd6" body="This interface describes single-input/single-output&#xA;operations performed on &lt;CODE>BufferedImage&lt;/CODE> objects.&#xA;It is implemented by &lt;CODE>AffineTransformOp&lt;/CODE>,&#xA;&lt;CODE>ConvolveOp&lt;/CODE>, &lt;CODE>ColorConvertOp&lt;/CODE>, &lt;CODE>RescaleOp&lt;/CODE>,&#xA;and &lt;CODE>LookupOp&lt;/CODE>.  These objects can be passed into&#xA;a &lt;CODE>BufferedImageFilter&lt;/CODE> to operate on a&#xA;&lt;CODE>BufferedImage&lt;/CODE> in the&#xA;ImageProducer-ImageFilter-ImageConsumer paradigm.&#xA;&lt;p>&#xA;Classes that implement this&#xA;interface must specify whether or not they allow in-place filtering--&#xA;filter operations where the source object is equal to the destination&#xA;object.&#xA;&lt;p>&#xA;This interface cannot be used to describe more sophisticated operations&#xA;such as those that take multiple sources. Note that this restriction also&#xA;means that the values of the destination pixels prior to the operation are&#xA;not used as input to the filter operation.&#xA;@see BufferedImage&#xA;@see BufferedImageFilter&#xA;@see AffineTransformOp&#xA;@see BandCombineOp&#xA;@see ColorConvertOp&#xA;@see ConvolveOp&#xA;@see LookupOp&#xA;@see RescaleOp&#xA;@version 10 Feb 1997&#xA;" annotatedElement="aa01c32f-7051-42b8-88c8-a017e610969f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="821598a2-cbcd-4549-900d-0119fe2a56ce" name="RasterOp" isAbstract="true">
              <ownedComment xmi:id="722794bb-016b-4d8c-9ecb-9e615f291cf6" body="This interface describes single-input/single-output&#xA;operations performed on Raster objects.  It is implemented by such&#xA;classes as AffineTransformOp, ConvolveOp, and LookupOp.  The Source&#xA;and Destination objects must contain the appropriate number&#xA;of bands for the particular classes implementing this interface.&#xA;Otherwise, an exception is thrown.  This interface cannot be used to&#xA;describe more sophisticated Ops such as ones that take multiple sources.&#xA;Each class implementing this interface will specify whether or not it&#xA;will allow an in-place filtering operation (i.e. source object equal&#xA;to the destination object).  Note that the restriction to single-input&#xA;operations means that the values of destination pixels prior to the&#xA;operation are not used as input to the filter operation.&#xA;@see AffineTransformOp&#xA;@see BandCombineOp&#xA;@see ColorConvertOp&#xA;@see ConvolveOp&#xA;@see LookupOp&#xA;@see RescaleOp&#xA;@version 10 Feb 1997&#xA;" annotatedElement="821598a2-cbcd-4549-900d-0119fe2a56ce"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d45011ac-37b3-49a0-a85d-0540e4bef3ba" name="DataBufferShort" isLeaf="true">
              <ownedComment xmi:id="300ac7c5-27e5-4687-a816-2949009612df" body="This class extends &lt;CODE>DataBuffer&lt;/CODE> and stores data internally as shorts.&#xA;" annotatedElement="d45011ac-37b3-49a0-a85d-0540e4bef3ba"/>
              <generalization xmi:id="4aae3637-68a8-4208-9aa2-1d344d891328" isSubstitutable="true" general="920b4124-30dd-446f-84ad-c7f8754ccea5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="520a22f8-001e-4496-88d0-83455e1b0257" name="ByteLookupTable">
              <ownedComment xmi:id="19e99791-47f0-48b6-afa7-c5da8123ddff" body="This class defines a lookup table object.  The output of a&#xA;lookup operation using an object of this class is interpreted&#xA;as an unsigned byte quantity.  The lookup table contains byte&#xA;data arrays for one or more bands (or components) of an image,&#xA;and it contains an offset which will be subtracted from the&#xA;input values before indexing the arrays.  This allows an array&#xA;smaller than the native data size to be provided for a&#xA;constrained input.  If there is only one array in the lookup&#xA;table, it will be applied to all bands.&#xA;&#xA;@see ShortLookupTable&#xA;@see LookupOp&#xA;@version 10 Feb 1997&#xA;" annotatedElement="520a22f8-001e-4496-88d0-83455e1b0257"/>
              <generalization xmi:id="dbbeb488-23d8-4589-bc4c-8a1923494d37" isSubstitutable="true" general="37f205cf-70ff-4971-9198-cc58889ac6b4"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f5b968e2-ecbd-4785-adc8-f1b3588ccdf9" name="DataBufferByte" isLeaf="true">
              <ownedComment xmi:id="736a2674-e538-4161-a01e-9f92090e9c38" body="This class extends &lt;CODE>DataBuffer&lt;/CODE> and stores data internally as bytes.&#xA;Values stored in the byte array(s) of this &lt;CODE>DataBuffer&lt;/CODE> are treated as&#xA;unsigned values.&#xA;" annotatedElement="f5b968e2-ecbd-4785-adc8-f1b3588ccdf9"/>
              <generalization xmi:id="5a4696dd-eb0a-489b-8c51-007c108bd9e9" isSubstitutable="true" general="920b4124-30dd-446f-84ad-c7f8754ccea5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b5f04513-b670-4eef-8dfa-13852eb732e4" name="Kernel" clientDependency="2b8ee5be-71bd-46e1-9458-db6b04bc0d57">
              <ownedComment xmi:id="585a8687-12ec-4e09-a847-93ed5b9c0584" body="The &lt;code>Kernel&lt;/code> class defines a matrix that describes how a&#xA;specified pixel and its surrounding pixels affect the value&#xA;computed for the pixel's position in the output image of a filtering&#xA;operation.  The X origin and Y origin indicate the kernel matrix element&#xA;that corresponds to the pixel position for which an output value is&#xA;being computed.&#xA;&#xA;@see ConvolveOp&#xA;@version 10 Feb 1997&#xA;" annotatedElement="b5f04513-b670-4eef-8dfa-13852eb732e4"/>
              <interfaceRealization xmi:id="2b8ee5be-71bd-46e1-9458-db6b04bc0d57" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="b5f04513-b670-4eef-8dfa-13852eb732e4" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="dda0c62c-5bd6-4e08-819c-0594db93f948" name="ConvolveOp" clientDependency="a990fc14-2a16-4e30-93a9-ac9d0eae0e51 d352392c-83c2-42e0-9fbd-e818ae337df9">
              <ownedComment xmi:id="69218fd9-c975-4055-bf83-15cd5eb0c6ab" body="This class implements a convolution from the source&#xA;to the destination.&#xA;Convolution using a convolution kernel is a spatial operation that&#xA;computes the output pixel from an input pixel by multiplying the kernel&#xA;with the surround of the input pixel.&#xA;This allows the output pixel to be affected by the immediate neighborhood&#xA;in a way that can be mathematically specified with a kernel.&#xA;&lt;p>&#xA;This class operates with BufferedImage data in which color components are&#xA;premultiplied with the alpha component.  If the Source BufferedImage has&#xA;an alpha component, and the color components are not premultiplied with&#xA;the alpha component, then the data are premultiplied before being&#xA;convolved.  If the Destination has color components which are not&#xA;premultiplied, then alpha is divided out before storing into the&#xA;Destination (if alpha is 0, the color components are set to 0).  If the&#xA;Destination has no alpha component, then the resulting alpha is discarded&#xA;after first dividing it out of the color components.&#xA;&lt;p>&#xA;Rasters are treated as having no alpha channel.  If the above treatment&#xA;of the alpha channel in BufferedImages is not desired, it may be avoided&#xA;by getting the Raster of a source BufferedImage and using the filter method&#xA;of this class which works with Rasters.&#xA;&lt;p>&#xA;If a RenderingHints object is specified in the constructor, the&#xA;color rendering hint and the dithering hint may be used when color&#xA;conversion is required.&#xA;&lt;p>&#xA;Note that the Source and the Destination may not be the same object.&#xA;@version 10 Feb 1997&#xA;@see Kernel&#xA;@see java.awt.RenderingHints#KEY_COLOR_RENDERING&#xA;@see java.awt.RenderingHints#KEY_DITHERING&#xA;" annotatedElement="dda0c62c-5bd6-4e08-819c-0594db93f948"/>
              <interfaceRealization xmi:id="a990fc14-2a16-4e30-93a9-ac9d0eae0e51" name="" supplier="aa01c32f-7051-42b8-88c8-a017e610969f" client="dda0c62c-5bd6-4e08-819c-0594db93f948" contract="aa01c32f-7051-42b8-88c8-a017e610969f"/>
              <interfaceRealization xmi:id="d352392c-83c2-42e0-9fbd-e818ae337df9" name="" supplier="821598a2-cbcd-4549-900d-0119fe2a56ce" client="dda0c62c-5bd6-4e08-819c-0594db93f948" contract="821598a2-cbcd-4549-900d-0119fe2a56ce"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a7e52384-fbd0-45e0-bfa8-a42de100ccf8" name="Raster">
              <ownedComment xmi:id="afac390d-6a05-4420-a47b-822bdab5a3dc" body="A class representing a rectangular array of pixels.  A Raster&#xA;encapsulates a DataBuffer that stores the sample values and a&#xA;SampleModel that describes how to locate a given sample value in a&#xA;DataBuffer.&#xA;&lt;p>&#xA;A Raster defines values for pixels occupying a particular&#xA;rectangular area of the plane, not necessarily including (0, 0).&#xA;The rectangle, known as the Raster's bounding rectangle and&#xA;available by means of the getBounds method, is defined by minX,&#xA;minY, width, and height values.  The minX and minY values define&#xA;the coordinate of the upper left corner of the Raster.  References&#xA;to pixels outside of the bounding rectangle may result in an&#xA;exception being thrown, or may result in references to unintended&#xA;elements of the Raster's associated DataBuffer.  It is the user's&#xA;responsibility to avoid accessing such pixels.&#xA;&lt;p>&#xA;A SampleModel describes how samples of a Raster&#xA;are stored in the primitive array elements of a DataBuffer.&#xA;Samples may be stored one per data element, as in a&#xA;PixelInterleavedSampleModel or BandedSampleModel, or packed several to&#xA;an element, as in a SinglePixelPackedSampleModel or&#xA;MultiPixelPackedSampleModel.  The SampleModel is also&#xA;controls whether samples are sign extended, allowing unsigned&#xA;data to be stored in signed Java data types such as byte, short, and&#xA;int.&#xA;&lt;p>&#xA;Although a Raster may live anywhere in the plane, a SampleModel&#xA;makes use of a simple coordinate system that starts at (0, 0).  A&#xA;Raster therefore contains a translation factor that allows pixel&#xA;locations to be mapped between the Raster's coordinate system and&#xA;that of the SampleModel.  The translation from the SampleModel&#xA;coordinate system to that of the Raster may be obtained by the&#xA;getSampleModelTranslateX and getSampleModelTranslateY methods.&#xA;&lt;p>&#xA;A Raster may share a DataBuffer with another Raster either by&#xA;explicit construction or by the use of the createChild and&#xA;createTranslatedChild methods.  Rasters created by these methods&#xA;can return a reference to the Raster they were created from by&#xA;means of the getParent method.  For a Raster that was not&#xA;constructed by means of a call to createTranslatedChild or&#xA;createChild, getParent will return null.&#xA;&lt;p>&#xA;The createTranslatedChild method returns a new Raster that&#xA;shares all of the data of the current Raster, but occupies a&#xA;bounding rectangle of the same width and height but with a&#xA;different starting point.  For example, if the parent Raster&#xA;occupied the region (10, 10) to (100, 100), and the translated&#xA;Raster was defined to start at (50, 50), then pixel (20, 20) of the&#xA;parent and pixel (60, 60) of the child occupy the same location in&#xA;the DataBuffer shared by the two Rasters.  In the first case, (-10,&#xA;-10) should be added to a pixel coordinate to obtain the&#xA;corresponding SampleModel coordinate, and in the second case (-50,&#xA;-50) should be added.&#xA;&lt;p>&#xA;The translation between a parent and child Raster may be&#xA;determined by subtracting the child's sampleModelTranslateX and&#xA;sampleModelTranslateY values from those of the parent.&#xA;&lt;p>&#xA;The createChild method may be used to create a new Raster&#xA;occupying only a subset of its parent's bounding rectangle&#xA;(with the same or a translated coordinate system) or&#xA;with a subset of the bands of its parent.&#xA;&lt;p>&#xA;All constructors are protected.  The correct way to create a&#xA;Raster is to use one of the static create methods defined in this&#xA;class.  These methods create instances of Raster that use the&#xA;standard Interleaved, Banded, and Packed SampleModels and that may&#xA;be processed more efficiently than a Raster created by combining&#xA;an externally generated SampleModel and DataBuffer.&#xA;@see java.awt.image.DataBuffer&#xA;@see java.awt.image.SampleModel&#xA;@see java.awt.image.PixelInterleavedSampleModel&#xA;@see java.awt.image.BandedSampleModel&#xA;@see java.awt.image.SinglePixelPackedSampleModel&#xA;@see java.awt.image.MultiPixelPackedSampleModel&#xA;" annotatedElement="a7e52384-fbd0-45e0-bfa8-a42de100ccf8"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="5be850fe-bc8d-44c3-b462-106d450ef95c" name="renderable">
              <packagedElement xmi:type="uml:Class" xmi:id="5cca34cd-442f-4004-96b9-1a4cd99cfe3b" name="ParameterBlock" clientDependency="34c903d4-ec2a-4664-b394-41a8e2fb92fc a94a6ce3-6928-4d05-b577-9b2f325d625e">
                <ownedComment xmi:id="407ee680-f5d2-47f5-a57a-5bf424e8fcf5" body="A &lt;code>ParameterBlock&lt;/code> encapsulates all the information about sources and&#xA;parameters (Objects) required by a RenderableImageOp, or other&#xA;classes that process images.&#xA;&#xA;&lt;p> Although it is possible to place arbitrary objects in the&#xA;source Vector, users of this class may impose semantic constraints&#xA;such as requiring all sources to be RenderedImages or&#xA;RenderableImage.  &lt;code>ParameterBlock&lt;/code> itself is merely a container and&#xA;performs no checking on source or parameter types.&#xA;&#xA;&lt;p> All parameters in a &lt;code>ParameterBlock&lt;/code> are objects; convenience&#xA;add and set methods are available that take arguments of base type and&#xA;construct the appropriate subclass of Number (such as&#xA;Integer or Float).  Corresponding get methods perform a&#xA;downward cast and have return values of base type; an exception&#xA;will be thrown if the stored values do not have the correct type.&#xA;There is no way to distinguish between the results of&#xA;&quot;short s; add(s)&quot; and &quot;add(new Short(s))&quot;.&#xA;&#xA;&lt;p> Note that the get and set methods operate on references.&#xA;Therefore, one must be careful not to share references between&#xA;&lt;code>ParameterBlock&lt;/code>s when this is inappropriate.  For example, to create&#xA;a new &lt;code>ParameterBlock&lt;/code> that is equal to an old one except for an&#xA;added source, one might be tempted to write:&#xA;&#xA;&lt;pre>&#xA;ParameterBlock addSource(ParameterBlock pb, RenderableImage im) {&#xA;ParameterBlock pb1 = new ParameterBlock(pb.getSources());&#xA;pb1.addSource(im);&#xA;return pb1;&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p> This code will have the side effect of altering the original&#xA;&lt;code>ParameterBlock&lt;/code>, since the getSources operation returned a reference&#xA;to its source Vector.  Both pb and pb1 share their source Vector,&#xA;and a change in either is visible to both.&#xA;&#xA;&lt;p> A correct way to write the addSource function is to clone&#xA;the source Vector:&#xA;&#xA;&lt;pre>&#xA;ParameterBlock addSource (ParameterBlock pb, RenderableImage im) {&#xA;ParameterBlock pb1 = new ParameterBlock(pb.getSources().clone());&#xA;pb1.addSource(im);&#xA;return pb1;&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p> The clone method of &lt;code>ParameterBlock&lt;/code> has been defined to&#xA;perform a clone of both the source and parameter Vectors for&#xA;this reason.  A standard, shallow clone is available as&#xA;shallowClone.&#xA;&#xA;&lt;p> The addSource, setSource, add, and set methods are&#xA;defined to return 'this' after adding their argument.  This allows&#xA;use of syntax like:&#xA;&#xA;&lt;pre>&#xA;ParameterBlock pb = new ParameterBlock();&#xA;op = new RenderableImageOp(&quot;operation&quot;, pb.add(arg1).add(arg2));&#xA;&lt;/pre>&#xA;" annotatedElement="5cca34cd-442f-4004-96b9-1a4cd99cfe3b"/>
                <interfaceRealization xmi:id="34c903d4-ec2a-4664-b394-41a8e2fb92fc" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="5cca34cd-442f-4004-96b9-1a4cd99cfe3b" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
                <interfaceRealization xmi:id="a94a6ce3-6928-4d05-b577-9b2f325d625e" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="5cca34cd-442f-4004-96b9-1a4cd99cfe3b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="113ce588-24dc-4100-a4df-1ad30dd056dd" name="RenderableImage" isAbstract="true">
                <ownedComment xmi:id="0d945b0b-3f36-4b68-be27-abad031931b4" body="A RenderableImage is a common interface for rendering-independent&#xA;images (a notion which subsumes resolution independence).  That is,&#xA;images which are described and have operations applied to them&#xA;independent of any specific rendering of the image.  For example, a&#xA;RenderableImage can be rotated and cropped in&#xA;resolution-independent terms.  Then, it can be rendered for various&#xA;specific contexts, such as a draft preview, a high-quality screen&#xA;display, or a printer, each in an optimal fashion.&#xA;&#xA;&lt;p> A RenderedImage is returned from a RenderableImage via the&#xA;createRendering() method, which takes a RenderContext.  The&#xA;RenderContext specifies how the RenderedImage should be&#xA;constructed.  Note that it is not possible to extract pixels&#xA;directly from a RenderableImage.&#xA;&#xA;&lt;p> The createDefaultRendering() and createScaledRendering() methods are&#xA;convenience methods that construct an appropriate RenderContext&#xA;internally.  All of the rendering methods may return a reference to a&#xA;previously produced rendering.&#xA;" annotatedElement="113ce588-24dc-4100-a4df-1ad30dd056dd"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="4b5d26e9-6139-47c1-b19b-1419988bc975" name="RenderedImageFactory" isAbstract="true">
                <ownedComment xmi:id="7066aed1-89a4-4050-9717-509d330709c2" body="The RenderedImageFactory interface (often abbreviated RIF) is&#xA;intended to be implemented by classes that wish to act as factories&#xA;to produce different renderings, for example by executing a series&#xA;of BufferedImageOps on a set of sources, depending on a specific&#xA;set of parameters, properties, and rendering hints.&#xA;" annotatedElement="4b5d26e9-6139-47c1-b19b-1419988bc975"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="83c0a8d0-4a54-4ef2-9fe2-4229722a870e" name="ContextualRenderedImageFactory" isAbstract="true">
                <ownedComment xmi:id="bb257d8c-2042-4d6a-b64f-78ab6ac3ce97" body="ContextualRenderedImageFactory provides an interface for the&#xA;functionality that may differ between instances of&#xA;RenderableImageOp.  Thus different operations on RenderableImages&#xA;may be performed by a single class such as RenderedImageOp through&#xA;the use of multiple instances of ContextualRenderedImageFactory.&#xA;The name ContextualRenderedImageFactory is commonly shortened to&#xA;&quot;CRIF.&quot;&#xA;&#xA;&lt;p> All operations that are to be used in a rendering-independent&#xA;chain must implement ContextualRenderedImageFactory.&#xA;&#xA;&lt;p> Classes that implement this interface must provide a&#xA;constructor with no arguments.&#xA;" annotatedElement="83c0a8d0-4a54-4ef2-9fe2-4229722a870e"/>
                <generalization xmi:id="48f72dce-9069-49ef-98fa-5bd024a77a97" isSubstitutable="true" general="4b5d26e9-6139-47c1-b19b-1419988bc975"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="0768e047-b4fe-4068-bda2-6b2de54c6b5a" name="RenderContext" clientDependency="0538d681-8aeb-4baf-b983-770419dc870d">
                <ownedComment xmi:id="7413834e-d455-4f0a-80f7-fc792b58274f" body="A RenderContext encapsulates the information needed to produce a&#xA;specific rendering from a RenderableImage.  It contains the area to&#xA;be rendered specified in rendering-independent terms, the&#xA;resolution at which the rendering is to be performed, and hints&#xA;used to control the rendering process.&#xA;&#xA;&lt;p> Users create RenderContexts and pass them to the&#xA;RenderableImage via the createRendering method.  Most of the methods of&#xA;RenderContexts are not meant to be used directly by applications,&#xA;but by the RenderableImage and operator classes to which it is&#xA;passed.&#xA;&#xA;&lt;p> The AffineTransform parameter passed into and out of this class&#xA;are cloned.  The RenderingHints and Shape parameters are not&#xA;necessarily cloneable and are therefore only reference copied.&#xA;Altering RenderingHints or Shape instances that are in use by&#xA;instances of RenderContext may have undesired side effects.&#xA;" annotatedElement="0768e047-b4fe-4068-bda2-6b2de54c6b5a"/>
                <interfaceRealization xmi:id="0538d681-8aeb-4baf-b983-770419dc870d" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="0768e047-b4fe-4068-bda2-6b2de54c6b5a" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="682260c2-a744-4e50-973a-73b4aba1971b" name="RenderableImageOp" clientDependency="5ad3b8d3-d183-4da6-b348-a2e3aa0085f8">
                <ownedComment xmi:id="4e2903a4-d07d-4df6-8579-19db511ac423" body="This class handles the renderable aspects of an operation with help&#xA;from its associated instance of a ContextualRenderedImageFactory.&#xA;" annotatedElement="682260c2-a744-4e50-973a-73b4aba1971b"/>
                <interfaceRealization xmi:id="5ad3b8d3-d183-4da6-b348-a2e3aa0085f8" name="" supplier="113ce588-24dc-4100-a4df-1ad30dd056dd" client="682260c2-a744-4e50-973a-73b4aba1971b" contract="113ce588-24dc-4100-a4df-1ad30dd056dd"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="d0bb21eb-da6d-40ce-affd-6cab50416ad4" name="RenderableImageProducer" clientDependency="2c07e286-4ee5-4374-96e5-eac313f0ec1e ee38168a-bde4-449d-adb0-63ec7e00dc06">
                <ownedComment xmi:id="750f6fb6-9e2d-4d5f-8ac3-bf04aabb3c1a" body="An adapter class that implements ImageProducer to allow the&#xA;asynchronous production of a RenderableImage.  The size of the&#xA;ImageConsumer is determined by the scale factor of the usr2dev&#xA;transform in the RenderContext.  If the RenderContext is null, the&#xA;default rendering of the RenderableImage is used.  This class&#xA;implements an asynchronous production that produces the image in&#xA;one thread at one resolution.  This class may be subclassed to&#xA;implement versions that will render the image using several&#xA;threads.  These threads could render either the same image at&#xA;progressively better quality, or different sections of the image at&#xA;a single resolution.&#xA;" annotatedElement="d0bb21eb-da6d-40ce-affd-6cab50416ad4"/>
                <interfaceRealization xmi:id="ee38168a-bde4-449d-adb0-63ec7e00dc06" name="" supplier="bfda1810-f0f5-4de1-93e9-08d4325e6d23" client="d0bb21eb-da6d-40ce-affd-6cab50416ad4" contract="bfda1810-f0f5-4de1-93e9-08d4325e6d23"/>
                <interfaceRealization xmi:id="2c07e286-4ee5-4374-96e5-eac313f0ec1e" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="d0bb21eb-da6d-40ce-affd-6cab50416ad4" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="920b4124-30dd-446f-84ad-c7f8754ccea5" name="DataBuffer" isAbstract="true">
              <ownedComment xmi:id="5ed94c4d-8202-4bff-99c9-773ddffeede3" body="This class exists to wrap one or more data arrays.  Each data array in&#xA;the DataBuffer is referred to as a bank.  Accessor methods for getting&#xA;and setting elements of the DataBuffer's banks exist with and without&#xA;a bank specifier.  The methods without a bank specifier use the default 0th&#xA;bank.  The DataBuffer can optionally take an offset per bank, so that&#xA;data in an existing array can be used even if the interesting data&#xA;doesn't start at array location zero.  Getting or setting the 0th&#xA;element of a bank, uses the (0+offset)th element of the array.  The&#xA;size field specifies how much of the data array is available for&#xA;use.  Size + offset for a given bank should never be greater&#xA;than the length of the associated data array.  The data type of&#xA;a data buffer indicates the type of the data array(s) and may also&#xA;indicate additional semantics, e.g. storing unsigned 8-bit data&#xA;in elements of a byte array.  The data type may be TYPE_UNDEFINED&#xA;or one of the types defined below.  Other types may be added in&#xA;the future.  Generally, an object of class DataBuffer will be cast down&#xA;to one of its data type specific subclasses to access data type specific&#xA;methods for improved performance.  Currently, the Java 2D(tm) API&#xA;image classes use TYPE_BYTE, TYPE_USHORT, TYPE_INT, TYPE_SHORT,&#xA;TYPE_FLOAT, and TYPE_DOUBLE DataBuffers to store image data.&#xA;@see java.awt.image.Raster&#xA;@see java.awt.image.SampleModel&#xA;" annotatedElement="920b4124-30dd-446f-84ad-c7f8754ccea5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="52716254-61f8-4777-b17a-2e4459d687e1" name="DataBufferFloat" isLeaf="true">
              <ownedComment xmi:id="c77efd23-6d84-4cbe-b728-4a030cb755eb" body="This class extends &lt;code>DataBuffer&lt;/code> and stores data internally&#xA;in &lt;code>float&lt;/code> form.&#xA;&#xA;@see DataBuffer&#xA;@since 1.4&#xA;" annotatedElement="52716254-61f8-4777-b17a-2e4459d687e1"/>
              <generalization xmi:id="94870257-6d2d-47e5-9c80-ff2a0c9cd86e" isSubstitutable="true" general="920b4124-30dd-446f-84ad-c7f8754ccea5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1b23eb60-1040-49f5-af12-38b7010f946b" name="BufferedImageFilter" clientDependency="d506c8ed-deb2-4cd4-ba01-b0a01207ce34">
              <ownedComment xmi:id="18306416-e128-4aec-ad75-8d627f46514e" body="The &lt;code>BufferedImageFilter&lt;/code> class subclasses an&#xA;&lt;code>ImageFilter&lt;/code> to provide a simple means of&#xA;using a single-source/single-destination image operator&#xA;({@link BufferedImageOp}) to filter a &lt;code>BufferedImage&lt;/code>&#xA;in the Image Producer/Consumer/Observer&#xA;paradigm. Examples of these image operators are: {@link ConvolveOp},&#xA;{@link AffineTransformOp} and {@link LookupOp}.&#xA;&#xA;@see ImageFilter&#xA;@see BufferedImage&#xA;@see BufferedImageOp&#xA;@version 10 Feb 1997&#xA;" annotatedElement="1b23eb60-1040-49f5-af12-38b7010f946b"/>
              <generalization xmi:id="94f4764d-8b8c-4ecc-8e02-17180827e4a4" isSubstitutable="true" general="a3e1933d-7b87-4252-915d-232bf4407c4f"/>
              <interfaceRealization xmi:id="d506c8ed-deb2-4cd4-ba01-b0a01207ce34" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="1b23eb60-1040-49f5-af12-38b7010f946b" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="56e4e9f9-a12d-49bd-9363-3f141450aac7" name="LookupOp" clientDependency="89c8b925-b7b4-407f-b8b2-3b11d53e51f0 9b004ec0-ecf0-40f9-9413-7a68dd858ae8">
              <ownedComment xmi:id="a5332f59-bba2-4a88-8e5c-630c74a5b088" body="This class implements a lookup operation from the source&#xA;to the destination.  The LookupTable object may contain a single array&#xA;or multiple arrays, subject to the restrictions below.&#xA;&lt;p>&#xA;For Rasters, the lookup operates on bands.  The number of&#xA;lookup arrays may be one, in which case the same array is&#xA;applied to all bands, or it must equal the number of Source&#xA;Raster bands.&#xA;&lt;p>&#xA;For BufferedImages, the lookup operates on color and alpha components.&#xA;The number of lookup arrays may be one, in which case the&#xA;same array is applied to all color (but not alpha) components.&#xA;Otherwise, the number of lookup arrays may&#xA;equal the number of Source color components, in which case no&#xA;lookup of the alpha component (if present) is performed.&#xA;If neither of these cases apply, the number of lookup arrays&#xA;must equal the number of Source color components plus alpha components,&#xA;in which case lookup is performed for all color and alpha components.&#xA;This allows non-uniform rescaling of multi-band BufferedImages.&#xA;&lt;p>&#xA;BufferedImage sources with premultiplied alpha data are treated in the same&#xA;manner as non-premultiplied images for purposes of the lookup.  That is,&#xA;the lookup is done per band on the raw data of the BufferedImage source&#xA;without regard to whether the data is premultiplied.  If a color conversion&#xA;is required to the destination ColorModel, the premultiplied state of&#xA;both source and destination will be taken into account for this step.&#xA;&lt;p>&#xA;Images with an IndexColorModel cannot be used.&#xA;&lt;p>&#xA;If a RenderingHints object is specified in the constructor, the&#xA;color rendering hint and the dithering hint may be used when color&#xA;conversion is required.&#xA;&lt;p>&#xA;This class allows the Source to be the same as the Destination.&#xA;&#xA;@version 10 Feb 1997&#xA;@see LookupTable&#xA;@see java.awt.RenderingHints#KEY_COLOR_RENDERING&#xA;@see java.awt.RenderingHints#KEY_DITHERING&#xA;" annotatedElement="56e4e9f9-a12d-49bd-9363-3f141450aac7"/>
              <interfaceRealization xmi:id="9b004ec0-ecf0-40f9-9413-7a68dd858ae8" name="" supplier="aa01c32f-7051-42b8-88c8-a017e610969f" client="56e4e9f9-a12d-49bd-9363-3f141450aac7" contract="aa01c32f-7051-42b8-88c8-a017e610969f"/>
              <interfaceRealization xmi:id="89c8b925-b7b4-407f-b8b2-3b11d53e51f0" name="" supplier="821598a2-cbcd-4549-900d-0119fe2a56ce" client="56e4e9f9-a12d-49bd-9363-3f141450aac7" contract="821598a2-cbcd-4549-900d-0119fe2a56ce"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6e947bd3-a11a-4068-ab07-1bbf9f0ddefe" name="RescaleOp" clientDependency="7186d314-74de-4373-83a0-5a16da1d501d b096f80c-c1be-44bf-b47c-6b9c59d8fbb8">
              <ownedComment xmi:id="1396829d-230e-4cbd-8970-0aa2c8cb01dc" body="This class performs a pixel-by-pixel rescaling of the data in the&#xA;source image by multiplying the sample values for each pixel by a scale&#xA;factor and then adding an offset. The scaled sample values are clipped&#xA;to the minimum/maximum representable in the destination image.&#xA;&lt;p>&#xA;The pseudo code for the rescaling operation is as follows:&#xA;&lt;pre>&#xA;for each pixel from Source object {&#xA;for each band/component of the pixel {&#xA;dstElement = (srcElement*scaleFactor) + offset&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&lt;p>&#xA;For Rasters, rescaling operates on bands.  The number of&#xA;sets of scaling constants may be one, in which case the same constants&#xA;are applied to all bands, or it must equal the number of Source&#xA;Raster bands.&#xA;&lt;p>&#xA;For BufferedImages, rescaling operates on color and alpha components.&#xA;The number of sets of scaling constants may be one, in which case the&#xA;same constants are applied to all color (but not alpha) components.&#xA;Otherwise, the  number of sets of scaling constants may&#xA;equal the number of Source color components, in which case no&#xA;rescaling of the alpha component (if present) is performed.&#xA;If neither of these cases apply, the number of sets of scaling constants&#xA;must equal the number of Source color components plus alpha components,&#xA;in which case all color and alpha components are rescaled.&#xA;&lt;p>&#xA;BufferedImage sources with premultiplied alpha data are treated in the same&#xA;manner as non-premultiplied images for purposes of rescaling.  That is,&#xA;the rescaling is done per band on the raw data of the BufferedImage source&#xA;without regard to whether the data is premultiplied.  If a color conversion&#xA;is required to the destination ColorModel, the premultiplied state of&#xA;both source and destination will be taken into account for this step.&#xA;&lt;p>&#xA;Images with an IndexColorModel cannot be rescaled.&#xA;&lt;p>&#xA;If a RenderingHints object is specified in the constructor, the&#xA;color rendering hint and the dithering hint may be used when color&#xA;conversion is required.&#xA;&lt;p>&#xA;Note that in-place operation is allowed (i.e. the source and destination can&#xA;be the same object).&#xA;@version 10 Feb 1997&#xA;@see java.awt.RenderingHints#KEY_COLOR_RENDERING&#xA;@see java.awt.RenderingHints#KEY_DITHERING&#xA;" annotatedElement="6e947bd3-a11a-4068-ab07-1bbf9f0ddefe"/>
              <interfaceRealization xmi:id="b096f80c-c1be-44bf-b47c-6b9c59d8fbb8" name="" supplier="aa01c32f-7051-42b8-88c8-a017e610969f" client="6e947bd3-a11a-4068-ab07-1bbf9f0ddefe" contract="aa01c32f-7051-42b8-88c8-a017e610969f"/>
              <interfaceRealization xmi:id="7186d314-74de-4373-83a0-5a16da1d501d" name="" supplier="821598a2-cbcd-4549-900d-0119fe2a56ce" client="6e947bd3-a11a-4068-ab07-1bbf9f0ddefe" contract="821598a2-cbcd-4549-900d-0119fe2a56ce"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f4fe1d1c-3954-4a42-8893-112716b78a54" name="CropImageFilter">
              <ownedComment xmi:id="da476690-2128-4b52-80a4-c06bdb8506fd" body="An ImageFilter class for cropping images.&#xA;This class extends the basic ImageFilter Class to extract a given&#xA;rectangular region of an existing Image and provide a source for a&#xA;new image containing just the extracted region.  It is meant to&#xA;be used in conjunction with a FilteredImageSource object to produce&#xA;cropped versions of existing images.&#xA;&#xA;@see FilteredImageSource&#xA;@see ImageFilter&#xA;&#xA;@version&#x9;1.18 07/16/04&#xA;@author &#x9;Jim Graham&#xA;" annotatedElement="f4fe1d1c-3954-4a42-8893-112716b78a54"/>
              <generalization xmi:id="8ce64d12-d571-4b49-b6e3-710cc6c599e8" isSubstitutable="true" general="a3e1933d-7b87-4252-915d-232bf4407c4f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e5e3eab3-182b-4e96-9d80-6be352d6d1da" name="PackedColorModel" isAbstract="true">
              <ownedComment xmi:id="6203646c-97eb-409f-9f33-82c91de4aa01" body="The &lt;code>PackedColorModel&lt;/code> class is an abstract&#xA;{@link ColorModel} class that works with pixel values which represent&#xA;color and alpha information as separate samples and which pack all&#xA;samples for a single pixel into a single int, short, or byte quantity.&#xA;This class can be used with an arbitrary {@link ColorSpace}.  The number of&#xA;color samples in the pixel values must be the same as the number of color&#xA;components in the &lt;code>ColorSpace&lt;/code>.  There can be a single alpha&#xA;sample.  The array length is always 1 for those methods that use a&#xA;primitive array pixel representation of type &lt;code>transferType&lt;/code>.&#xA;The transfer types supported are DataBuffer.TYPE_BYTE,&#xA;DataBuffer.TYPE_USHORT, and DataBuffer.TYPE_INT.&#xA;Color and alpha samples are stored in the single element of the array&#xA;in bits indicated by bit masks.  Each bit mask must be contiguous and&#xA;masks must not overlap.  The same masks apply to the single int&#xA;pixel representation used by other methods.  The correspondence of&#xA;masks and color/alpha samples is as follows:&#xA;&lt;ul>&#xA;&lt;li> Masks are identified by indices running from 0 through&#xA;{@link ColorModel#getNumComponents() getNumComponents}&amp;nbsp;-&amp;nbsp;1.&#xA;&lt;li> The first&#xA;{@link ColorModel#getNumColorComponents() getNumColorComponents}&#xA;indices refer to color samples.&#xA;&lt;li> If an alpha sample is present, it corresponds the last index.&#xA;&lt;li> The order of the color indices is specified&#xA;by the &lt;code>ColorSpace&lt;/code>.  Typically, this reflects the name of&#xA;the color space type (for example, TYPE_RGB), index 0&#xA;corresponds to red, index 1 to green, and index 2 to blue.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;The translation from pixel values to color/alpha components for&#xA;display or processing purposes is a one-to-one correspondence of&#xA;samples to components.&#xA;A &lt;code>PackedColorModel&lt;/code> is typically used with image data&#xA;that uses masks to define packed samples.  For example, a&#xA;&lt;code>PackedColorModel&lt;/code> can be used in conjunction with a&#xA;{@link SinglePixelPackedSampleModel} to construct a&#xA;{@link BufferedImage}.  Normally the masks used by the&#xA;{@link SampleModel} and the &lt;code>ColorModel&lt;/code> would be the same.&#xA;However, if they are different, the color interpretation of pixel data is&#xA;done according to the masks of the &lt;code>ColorModel&lt;/code>.&#xA;&lt;p>&#xA;A single &lt;code>int&lt;/code> pixel representation is valid for all objects&#xA;of this class since it is always possible to represent pixel values&#xA;used with this class in a single &lt;code>int&lt;/code>.  Therefore, methods&#xA;that use this representation do not throw an&#xA;&lt;code>IllegalArgumentException&lt;/code> due to an invalid pixel value.&#xA;&lt;p>&#xA;A subclass of &lt;code>PackedColorModel&lt;/code> is {@link DirectColorModel},&#xA;which is similar to an X11 TrueColor visual.&#xA;&#xA;@see DirectColorModel&#xA;@see SinglePixelPackedSampleModel&#xA;@see BufferedImage&#xA;@version 10 Feb 1997&#xA;" annotatedElement="e5e3eab3-182b-4e96-9d80-6be352d6d1da"/>
              <generalization xmi:id="6e5e62db-eca7-4c93-8c3e-66e7ffa406df" isSubstitutable="true" general="19d3c0e1-d2d4-4d8b-8b6a-9353388b02e6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c7e609bf-dbde-405f-af0b-b101aff33a6e" name="DataBufferInt" isLeaf="true">
              <ownedComment xmi:id="394bddb1-a5c4-4cb9-9594-34cd3a416f66" body="This class extends &lt;CODE>DataBuffer&lt;/CODE> and stores data internally&#xA;as integers.&#xA;" annotatedElement="c7e609bf-dbde-405f-af0b-b101aff33a6e"/>
              <generalization xmi:id="2acb525e-dbf5-47a3-b23a-3a43a4bfb87e" isSubstitutable="true" general="920b4124-30dd-446f-84ad-c7f8754ccea5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="71934360-1e37-42a1-b52a-ce07bd70e35c" name="TileObserver" isAbstract="true">
              <ownedComment xmi:id="f887db5b-78e0-476c-8f45-756af6e7c1d5" body="An interface for objects that wish to be informed when tiles&#xA;of a WritableRenderedImage become modifiable by some writer via&#xA;a call to getWritableTile, and when they become unmodifiable via&#xA;the last call to releaseWritableTile.&#xA;&#xA;@see WritableRenderedImage&#xA;&#xA;@author Thomas DeWeese&#xA;@author Daniel Rice&#xA;" annotatedElement="71934360-1e37-42a1-b52a-ce07bd70e35c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="36f1e135-103a-41bc-ac79-40a9613a51a8" name="SampleModel" isAbstract="true">
              <ownedComment xmi:id="1ad94472-b022-4792-93d2-4baaa34269d3" body="This abstract class defines an interface for extracting samples of pixels&#xA;in an image.  All image data is expressed as a collection of pixels.&#xA;Each pixel consists of a number of samples. A sample is a datum&#xA;for one band of an image and a band consists of all samples of a&#xA;particular type in an image.  For example, a pixel might contain&#xA;three samples representing its red, green and blue components.&#xA;There are three bands in the image containing this pixel.  One band&#xA;consists of all the red samples from all pixels in the&#xA;image.  The second band consists of all the green samples and&#xA;the remaining band consists of all of the blue samples.  The pixel&#xA;can be stored in various formats.  For example, all samples from&#xA;a particular band can be stored contiguously or all samples from a&#xA;single pixel can be stored contiguously.&#xA;&lt;p>&#xA;Subclasses of SampleModel specify the types of samples they can&#xA;represent (e.g. unsigned 8-bit byte, signed 16-bit short, etc.)&#xA;and may specify how the samples are organized in memory.&#xA;In the Java 2D(tm) API, built-in image processing operators may&#xA;not operate on all possible sample types, but generally will work&#xA;for unsigned integral samples of 16 bits or less.  Some operators&#xA;support a wider variety of sample types.&#xA;&lt;p>&#xA;A collection of pixels is represented as a Raster, which consists of&#xA;a DataBuffer and a SampleModel.  The SampleModel allows access to&#xA;samples in the DataBuffer and may provide low-level information that&#xA;a programmer can use to directly manipulate samples and pixels in the&#xA;DataBuffer.&#xA;&lt;p>&#xA;This class is generally a fall back method for dealing with&#xA;images.  More efficient code will cast the SampleModel to the&#xA;appropriate subclass and extract the information needed to directly&#xA;manipulate pixels in the DataBuffer.&#xA;&#xA;@see java.awt.image.DataBuffer&#xA;@see java.awt.image.Raster&#xA;@see java.awt.image.ComponentSampleModel&#xA;@see java.awt.image.PixelInterleavedSampleModel&#xA;@see java.awt.image.BandedSampleModel&#xA;@see java.awt.image.MultiPixelPackedSampleModel&#xA;@see java.awt.image.SinglePixelPackedSampleModel&#xA;" annotatedElement="36f1e135-103a-41bc-ac79-40a9613a51a8"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="19d3c0e1-d2d4-4d8b-8b6a-9353388b02e6" name="ColorModel" clientDependency="bfc4dd6d-7234-4333-b4c5-47bd475ebf35" isAbstract="true">
              <ownedComment xmi:id="f0cab205-6a47-4ff7-85ba-bab8fcd5e281" body="The &lt;code>ColorModel&lt;/code> abstract class encapsulates the&#xA;methods for translating a pixel value to color components&#xA;(for example, red, green, and blue) and an alpha component.&#xA;In order to render an image to the screen, a printer, or another&#xA;image, pixel values must be converted to color and alpha components.&#xA;As arguments to or return values from methods of this class,&#xA;pixels are represented as 32-bit ints or as arrays of primitive types.&#xA;The number, order, and interpretation of color components for a&#xA;&lt;code>ColorModel&lt;/code> is specified by its &lt;code>ColorSpace&lt;/code>.&#xA;A &lt;code>ColorModel&lt;/code> used with pixel data that does not include&#xA;alpha information treats all pixels as opaque, which is an alpha&#xA;value of 1.0.&#xA;&lt;p>&#xA;This &lt;code>ColorModel&lt;/code> class supports two representations of&#xA;pixel values.  A pixel value can be a single 32-bit int or an&#xA;array of primitive types.  The Java(tm) Platform 1.0 and 1.1 APIs&#xA;represented pixels as single &lt;code>byte&lt;/code> or single&#xA;&lt;code>int&lt;/code> values.  For purposes of the &lt;code>ColorModel&lt;/code>&#xA;class, pixel value arguments were passed as ints.  The Java(tm) 2&#xA;Platform API introduced additional classes for representing images.&#xA;With {@link BufferedImage} or {@link RenderedImage}&#xA;objects, based on {@link Raster} and {@link SampleModel} classes, pixel&#xA;values might not be conveniently representable as a single int.&#xA;Consequently, &lt;code>ColorModel&lt;/code> now has methods that accept&#xA;pixel values represented as arrays of primitive types.  The primitive&#xA;type used by a particular &lt;code>ColorModel&lt;/code> object is called its&#xA;transfer type.&#xA;&lt;p>&#xA;&lt;code>ColorModel&lt;/code> objects used with images for which pixel values&#xA;are not conveniently representable as a single int throw an&#xA;{@link IllegalArgumentException} when methods taking a single int pixel&#xA;argument are called.  Subclasses of &lt;code>ColorModel&lt;/code> must&#xA;specify the conditions under which this occurs.  This does not&#xA;occur with {@link DirectColorModel} or {@link IndexColorModel} objects.&#xA;&lt;p>&#xA;Currently, the transfer types supported by the Java 2D(tm) API are&#xA;DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT, DataBuffer.TYPE_INT,&#xA;DataBuffer.TYPE_SHORT, DataBuffer.TYPE_FLOAT, and DataBuffer.TYPE_DOUBLE.&#xA;Most rendering operations will perform much faster when using ColorModels&#xA;and images based on the first three of these types.  In addition, some&#xA;image filtering operations are not supported for ColorModels and&#xA;images based on the latter three types.&#xA;The transfer type for a particular &lt;code>ColorModel&lt;/code> object is&#xA;specified when the object is created, either explicitly or by default.&#xA;All subclasses of &lt;code>ColorModel&lt;/code> must specify what the&#xA;possible transfer types are and how the number of elements in the&#xA;primitive arrays representing pixels is determined.&#xA;&lt;p>&#xA;For &lt;code>BufferedImages&lt;/code>, the transfer type of its&#xA;&lt;code>Raster&lt;/code> and of the &lt;code>Raster&lt;/code> object's&#xA;&lt;code>SampleModel&lt;/code> (available from the&#xA;&lt;code>getTransferType&lt;/code> methods of these classes) must match that&#xA;of the &lt;code>ColorModel&lt;/code>.  The number of elements in an array&#xA;representing a pixel for the &lt;code>Raster&lt;/code> and&#xA;&lt;code>SampleModel&lt;/code> (available from the&#xA;&lt;code>getNumDataElements&lt;/code> methods of these classes) must match&#xA;that of the &lt;code>ColorModel&lt;/code>.&#xA;&lt;p>&#xA;The algorithm used to convert from pixel values to color and alpha&#xA;components varies by subclass.  For example, there is not necessarily&#xA;a one-to-one correspondence between samples obtained from the&#xA;&lt;code>SampleModel&lt;/code> of a &lt;code>BufferedImage&lt;/code> object's&#xA;&lt;code>Raster&lt;/code> and color/alpha components.  Even when&#xA;there is such a correspondence, the number of bits in a sample is not&#xA;necessarily the same as the number of bits in the corresponding color/alpha&#xA;component.  Each subclass must specify how the translation from&#xA;pixel values to color/alpha components is done.&#xA;&lt;p>&#xA;Methods in the &lt;code>ColorModel&lt;/code> class use two different&#xA;representations of color and alpha components - a normalized form&#xA;and an unnormalized form.  In the normalized form, each component is a&#xA;&lt;code>float&lt;/code> value between some minimum and maximum values.  For&#xA;the alpha component, the minimum is 0.0 and the maximum is 1.0.  For&#xA;color components the minimum and maximum values for each component can&#xA;be obtained from the &lt;code>ColorSpace&lt;/code> object.  These values&#xA;will often be 0.0 and 1.0 (e.g. normalized component values for the&#xA;default sRGB color space range from 0.0 to 1.0), but some color spaces&#xA;have component values with different upper and lower limits.  These&#xA;limits can be obtained using the &lt;code>getMinValue&lt;/code> and&#xA;&lt;code>getMaxValue&lt;/code> methods of the &lt;code>ColorSpace&lt;/code>&#xA;class.  Normalized color component values are not premultiplied.&#xA;All &lt;code>ColorModels&lt;/code> must support the normalized form.&#xA;&lt;p>&#xA;In the unnormalized&#xA;form, each component is an unsigned integral value between 0 and&#xA;2&lt;sup>n&lt;/sup> - 1, where n is the number of significant bits for a&#xA;particular component.  If pixel values for a particular&#xA;&lt;code>ColorModel&lt;/code> represent color samples premultiplied by&#xA;the alpha sample, unnormalized color component values are&#xA;also premultiplied.  The unnormalized form is used only with instances&#xA;of &lt;code>ColorModel&lt;/code> whose &lt;code>ColorSpace&lt;/code> has minimum&#xA;component values of 0.0 for all components and maximum values of&#xA;1.0 for all components.&#xA;The unnormalized form for color and alpha components can be a convenient&#xA;representation for &lt;code>ColorModels&lt;/code> whose normalized component&#xA;values all lie&#xA;between 0.0 and 1.0.  In such cases the integral value 0 maps to 0.0 and&#xA;the value 2&lt;sup>n&lt;/sup> - 1 maps to 1.0.  In other cases, such as&#xA;when the normalized component values can be either negative or positive,&#xA;the unnormalized form is not convenient.  Such &lt;code>ColorModel&lt;/code>&#xA;objects throw an {@link IllegalArgumentException} when methods involving&#xA;an unnormalized argument are called.  Subclasses of &lt;code>ColorModel&lt;/code>&#xA;must specify the conditions under which this occurs.&#xA;&#xA;@see IndexColorModel&#xA;@see ComponentColorModel&#xA;@see PackedColorModel&#xA;@see DirectColorModel&#xA;@see java.awt.Image&#xA;@see BufferedImage&#xA;@see RenderedImage&#xA;@see java.awt.color.ColorSpace&#xA;@see SampleModel&#xA;@see Raster&#xA;@see DataBuffer&#xA;@version 10 Feb 1997&#xA;" annotatedElement="19d3c0e1-d2d4-4d8b-8b6a-9353388b02e6"/>
              <interfaceRealization xmi:id="bfc4dd6d-7234-4333-b4c5-47bd475ebf35" name="" supplier="a47e023b-6285-43d3-875d-b3f38c61be25" client="19d3c0e1-d2d4-4d8b-8b6a-9353388b02e6" contract="a47e023b-6285-43d3-875d-b3f38c61be25"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="04b13cb9-6c4e-45cb-bde0-3fbb442efc40" name="ShortLookupTable">
              <ownedComment xmi:id="789e76df-1665-49a5-9d4a-f7273f092af7" body="This class defines a lookup table object.  The output of a&#xA;lookup operation using an object of this class is interpreted&#xA;as an unsigned short quantity.  The lookup table contains short&#xA;data arrays for one or more bands (or components) of an image,&#xA;and it contains an offset which will be subtracted from the&#xA;input values before indexing the arrays.  This allows an array&#xA;smaller than the native data size to be provided for a&#xA;constrained input.  If there is only one array in the lookup&#xA;table, it will be applied to all bands.&#xA;&#xA;@see ByteLookupTable&#xA;@see LookupOp&#xA;@version 10 Feb 1997&#xA;" annotatedElement="04b13cb9-6c4e-45cb-bde0-3fbb442efc40"/>
              <generalization xmi:id="9b834c04-0a04-4fa5-9cc8-db501d38c0d9" isSubstitutable="true" general="37f205cf-70ff-4971-9198-cc58889ac6b4"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="90befb2e-b709-4fec-8e8e-4b0d87be71a6" name="PixelGrabber" clientDependency="e81ea8a7-6fb8-458b-a1fb-e2a760e8b122">
              <ownedComment xmi:id="55ddc192-c78a-473a-86b7-06f2eee6ba9d" body="The PixelGrabber class implements an ImageConsumer which can be attached&#xA;to an Image or ImageProducer object to retrieve a subset of the pixels&#xA;in that image.  Here is an example:&#xA;&lt;pre>&#xA;&#xA;public void handlesinglepixel(int x, int y, int pixel) {&#xA;int alpha = (pixel >> 24) &amp; 0xff;&#xA;int red   = (pixel >> 16) &amp; 0xff;&#xA;int green = (pixel >>  8) &amp; 0xff;&#xA;int blue  = (pixel      ) &amp; 0xff;&#xA;Deal with the pixel as necessary...&#xA;}&#xA;&#xA;public void handlepixels(Image img, int x, int y, int w, int h) {&#xA;int[] pixels = new int[w * h];&#xA;PixelGrabber pg = new PixelGrabber(img, x, y, w, h, pixels, 0, w);&#xA;try {&#xA;pg.grabPixels();&#xA;} catch (InterruptedException e) {&#xA;System.err.println(&quot;interrupted waiting for pixels!&quot;);&#xA;return;&#xA;}&#xA;if ((pg.getStatus() &amp; ImageObserver.ABORT) != 0) {&#xA;System.err.println(&quot;image fetch aborted or errored&quot;);&#xA;return;&#xA;}&#xA;for (int j = 0; j &lt; h; j++) {&#xA;for (int i = 0; i &lt; w; i++) {&#xA;handlesinglepixel(x+i, y+j, pixels[j * w + i]);&#xA;}&#xA;}&#xA;}&#xA;&#xA;&lt;/pre>&#xA;&#xA;@see ColorModel#getRGBdefault&#xA;&#xA;@version &#x9;1.25, 07/16/04&#xA;@author &#x9;Jim Graham&#xA;" annotatedElement="90befb2e-b709-4fec-8e8e-4b0d87be71a6"/>
              <interfaceRealization xmi:id="e81ea8a7-6fb8-458b-a1fb-e2a760e8b122" name="" supplier="173c106c-260f-4098-b9d6-67c525aebb39" client="90befb2e-b709-4fec-8e8e-4b0d87be71a6" contract="173c106c-260f-4098-b9d6-67c525aebb39"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4bbad8b6-551a-439d-b1ba-7d6858e44bdb" name="WritableRaster">
              <ownedComment xmi:id="71a1ef53-ab8c-4178-b95a-45388d3baf2a" body="This class extends Raster to provide pixel writing capabilities.&#xA;Refer to the class comment for Raster for descriptions of how&#xA;a Raster stores pixels.&#xA;&#xA;&lt;p> The constructors of this class are protected.  To instantiate&#xA;a WritableRaster, use one of the createWritableRaster factory methods&#xA;in the Raster class.&#xA;" annotatedElement="4bbad8b6-551a-439d-b1ba-7d6858e44bdb"/>
              <generalization xmi:id="5d30384f-7f2b-4e03-b9d9-5772505a5ae9" isSubstitutable="true" general="a7e52384-fbd0-45e0-bfa8-a42de100ccf8"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="faa97425-6e2b-4ffd-b09e-1686550f6a80" name="BufferedImage" clientDependency="db2aea16-25b3-4e8e-a36f-142e2d9bb1cd a452712a-707d-4e14-92cc-8a5b5977f394">
              <ownedComment xmi:id="74f85d6a-36b0-40e8-b7a8-19db60e28e14" body="The &lt;code>BufferedImage&lt;/code> subclass describes an {@link&#xA;java.awt.Image Image} with an accessible buffer of image data.&#xA;A &lt;code>BufferedImage&lt;/code> is comprised of a {@link ColorModel} and a&#xA;{@link Raster} of image data.&#xA;The number and types of bands in the {@link SampleModel} of the&#xA;&lt;code>Raster&lt;/code> must match the number and types required by the&#xA;&lt;code>ColorModel&lt;/code> to represent its color and alpha components.&#xA;All &lt;code>BufferedImage&lt;/code> objects have an upper left corner&#xA;coordinate of (0,&amp;nbsp;0).  Any &lt;code>Raster&lt;/code> used to construct a&#xA;&lt;code>BufferedImage&lt;/code> must therefore have minX=0 and minY=0.&#xA;&#xA;&lt;p>&#xA;This class relies on the data fetching and setting methods&#xA;of &lt;code>Raster&lt;/code>,&#xA;and on the color characterization methods of &lt;code>ColorModel&lt;/code>.&#xA;&#xA;@see ColorModel&#xA;@see Raster&#xA;@see WritableRaster&#xA;@version 10 Feb 1997&#xA;" annotatedElement="faa97425-6e2b-4ffd-b09e-1686550f6a80"/>
              <generalization xmi:id="b86e937a-b340-4345-8073-aa38b1b9b59a" isSubstitutable="true" general="e3c366cc-e742-467d-a8a6-e86b085ce028"/>
              <interfaceRealization xmi:id="db2aea16-25b3-4e8e-a36f-142e2d9bb1cd" name="" supplier="3c79f9db-54e6-4a70-ad43-ab1fdfd60e73" client="faa97425-6e2b-4ffd-b09e-1686550f6a80" contract="3c79f9db-54e6-4a70-ad43-ab1fdfd60e73"/>
              <interfaceRealization xmi:id="a452712a-707d-4e14-92cc-8a5b5977f394" name="" supplier="a47e023b-6285-43d3-875d-b3f38c61be25" client="faa97425-6e2b-4ffd-b09e-1686550f6a80" contract="a47e023b-6285-43d3-875d-b3f38c61be25"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b54e2b90-aa85-42d7-8719-27d07a7e8e3c" name="RGBImageFilter" isAbstract="true">
              <ownedComment xmi:id="bbc26e3c-217d-4554-b42e-80774fcb7b22" body="This class provides an easy way to create an ImageFilter which modifies&#xA;the pixels of an image in the default RGB ColorModel.  It is meant to&#xA;be used in conjunction with a FilteredImageSource object to produce&#xA;filtered versions of existing images.  It is an abstract class that&#xA;provides the calls needed to channel all of the pixel data through a&#xA;single method which converts pixels one at a time in the default RGB&#xA;ColorModel regardless of the ColorModel being used by the ImageProducer.&#xA;The only method which needs to be defined to create a useable image&#xA;filter is the filterRGB method.  Here is an example of a definition&#xA;of a filter which swaps the red and blue components of an image:&#xA;&lt;pre>&#xA;&#xA;class RedBlueSwapFilter extends RGBImageFilter {&#xA;public RedBlueSwapFilter() {&#xA;The filter's operation does not depend on the&#xA;pixel's location, so IndexColorModels can be&#xA;filtered directly.&#xA;canFilterIndexColorModel = true;&#xA;}&#xA;&#xA;public int filterRGB(int x, int y, int rgb) {&#xA;return ((rgb &amp; 0xff00ff00)&#xA;| ((rgb &amp; 0xff0000) >> 16)&#xA;| ((rgb &amp; 0xff) &lt;&lt; 16));&#xA;}&#xA;}&#xA;&#xA;&lt;/pre>&#xA;&#xA;@see FilteredImageSource&#xA;@see ImageFilter&#xA;@see ColorModel#getRGBdefault&#xA;&#xA;@version&#x9;1.24 12/19/03&#xA;@author &#x9;Jim Graham&#xA;" annotatedElement="b54e2b90-aa85-42d7-8719-27d07a7e8e3c"/>
              <generalization xmi:id="64d6f2a2-0ed6-4687-984a-de11d20bd5b8" isSubstitutable="true" general="a3e1933d-7b87-4252-915d-232bf4407c4f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="abb05148-4321-456f-8535-213b1a28d0f7" name="RasterFormatException">
              <ownedComment xmi:id="a13b5c97-c67a-42d3-a7ee-954269f191c4" body="The &lt;code>RasterFormatException&lt;/code> is thrown if there is&#xA;invalid layout information in the {@link Raster}.&#xA;@version 10 Feb 1997&#xA;" annotatedElement="abb05148-4321-456f-8535-213b1a28d0f7"/>
              <generalization xmi:id="c7d66bb0-0afc-499f-8f78-f7e0251ece13" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="076da9e8-9d7a-49a8-b0df-bbb83366ea67" name="AreaAveragingScaleFilter">
              <ownedComment xmi:id="89e60243-e2fe-4530-bacc-ed8e0cccfa60" body="An ImageFilter class for scaling images using a simple area averaging&#xA;algorithm that produces smoother results than the nearest neighbor&#xA;algorithm.&#xA;&lt;p>This class extends the basic ImageFilter Class to scale an existing&#xA;image and provide a source for a new image containing the resampled&#xA;image.  The pixels in the source image are blended to produce pixels&#xA;for an image of the specified size.  The blending process is analogous&#xA;to scaling up the source image to a multiple of the destination size&#xA;using pixel replication and then scaling it back down to the destination&#xA;size by simply averaging all the pixels in the supersized image that&#xA;fall within a given pixel of the destination image.  If the data from&#xA;the source is not delivered in TopDownLeftRight order then the filter&#xA;will back off to a simple pixel replication behavior and utilize the&#xA;requestTopDownLeftRightResend() method to refilter the pixels in a&#xA;better way at the end.&#xA;&lt;p>It is meant to be used in conjunction with a FilteredImageSource&#xA;object to produce scaled versions of existing images.  Due to&#xA;implementation dependencies, there may be differences in pixel values&#xA;of an image filtered on different platforms.&#xA;&#xA;@see FilteredImageSource&#xA;@see ReplicateScaleFilter&#xA;@see ImageFilter&#xA;&#xA;@version&#x9;1.15 12/19/03&#xA;@author &#x9;Jim Graham&#xA;" annotatedElement="076da9e8-9d7a-49a8-b0df-bbb83366ea67"/>
              <generalization xmi:id="a6e9ba5f-9bc6-4e2d-8ca8-90526279b09f" isSubstitutable="true" general="cd3c757f-e218-4ccc-b731-9e47cf543c37"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ddbf0fb8-3031-40f0-a92b-4c38905b62b9" name="BandCombineOp" clientDependency="06ebeae1-a54e-4ed4-afac-99edd2b17556">
              <ownedComment xmi:id="3766e334-a41d-41ee-b30a-e7392e397c1f" body="This class performs an arbitrary linear combination of the bands&#xA;in a &lt;CODE>Raster&lt;/CODE>, using a specified matrix.&#xA;&lt;p>&#xA;The width of the matrix must be equal to the number of bands in the&#xA;source &lt;CODE>Raster&lt;/CODE>, optionally plus one.  If there is one more&#xA;column in the matrix than the number of bands, there is an implied 1 at the&#xA;end of the vector of band samples representing a pixel.  The height&#xA;of the matrix must be equal to the number of bands in the destination.&#xA;&lt;p>&#xA;For example, a 3-banded &lt;CODE>Raster&lt;/CODE> might have the following&#xA;transformation applied to each pixel in order to invert the second band of&#xA;the &lt;CODE>Raster&lt;/CODE>.&#xA;&lt;pre>&#xA;[ 1.0   0.0   0.0    0.0  ]     [ b1 ]&#xA;[ 0.0  -1.0   0.0  255.0  ]  x  [ b2 ]&#xA;[ 0.0   0.0   1.0    0.0  ]     [ b3 ]&#xA;[ 1 ]&#xA;&lt;/pre>&#xA;&#xA;&lt;p>&#xA;Note that the source and destination can be the same object.&#xA;@version 10 Feb 1997&#xA;" annotatedElement="ddbf0fb8-3031-40f0-a92b-4c38905b62b9"/>
              <interfaceRealization xmi:id="06ebeae1-a54e-4ed4-afac-99edd2b17556" name="" supplier="821598a2-cbcd-4549-900d-0119fe2a56ce" client="ddbf0fb8-3031-40f0-a92b-4c38905b62b9" contract="821598a2-cbcd-4549-900d-0119fe2a56ce"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8df5520c-dceb-4ca2-89f3-7626deca3f98" name="ImagingOpException">
              <ownedComment xmi:id="c88585b7-b54a-4790-87a7-50bcd55a42ad" body="The &lt;code>ImagingOpException&lt;/code> is thrown if one of the&#xA;{@link BufferedImageOp} or {@link RasterOp} filter methods cannot&#xA;process the image.&#xA;@version 10 Feb 1997&#xA;" annotatedElement="8df5520c-dceb-4ca2-89f3-7626deca3f98"/>
              <generalization xmi:id="d9cf01f3-42e5-4a80-8ad5-2eb5cb07eb12" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="994af5c6-0e90-4630-907a-a80b39ea0372" name="ColorConvertOp" clientDependency="67acac14-7555-496f-b115-c6a42b9c260a 08c38942-9cd9-4640-877f-afd7f6ca60a5">
              <ownedComment xmi:id="b3bfb8c6-3678-4caa-97b0-01cd59b608cb" body="This class performs a pixel-by-pixel color conversion of the data in&#xA;the source image.  The resulting color values are scaled to the precision&#xA;of the destination image.  Color conversion can be specified&#xA;via an array of ColorSpace objects or an array of ICC_Profile objects.&#xA;&lt;p>&#xA;If the source is a BufferedImage with premultiplied alpha, the&#xA;color components are divided by the alpha component before color conversion.&#xA;If the destination is a BufferedImage with premultiplied alpha, the&#xA;color components are multiplied by the alpha component after conversion.&#xA;Rasters are treated as having no alpha channel, i.e. all bands are&#xA;color bands.&#xA;&lt;p>&#xA;If a RenderingHints object is specified in the constructor, the&#xA;color rendering hint and the dithering hint may be used to control&#xA;color conversion.&#xA;&lt;p>&#xA;Note that Source and Destination may be the same object.&#xA;&lt;p>&#xA;@see java.awt.RenderingHints#KEY_COLOR_RENDERING&#xA;@see java.awt.RenderingHints#KEY_DITHERING&#xA;" annotatedElement="994af5c6-0e90-4630-907a-a80b39ea0372"/>
              <interfaceRealization xmi:id="67acac14-7555-496f-b115-c6a42b9c260a" name="" supplier="aa01c32f-7051-42b8-88c8-a017e610969f" client="994af5c6-0e90-4630-907a-a80b39ea0372" contract="aa01c32f-7051-42b8-88c8-a017e610969f"/>
              <interfaceRealization xmi:id="08c38942-9cd9-4640-877f-afd7f6ca60a5" name="" supplier="821598a2-cbcd-4549-900d-0119fe2a56ce" client="994af5c6-0e90-4630-907a-a80b39ea0372" contract="821598a2-cbcd-4549-900d-0119fe2a56ce"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ea470f85-a00d-42d4-9496-daf02e83b880" name="FilteredImageSource" clientDependency="aab13508-b483-4a3d-a4bb-40346d6a1855">
              <ownedComment xmi:id="c6f7d8aa-86bd-494e-8428-10de9573aadb" body="This class is an implementation of the ImageProducer interface which&#xA;takes an existing image and a filter object and uses them to produce&#xA;image data for a new filtered version of the original image.&#xA;Here is an example which filters an image by swapping the red and&#xA;blue compents:&#xA;&lt;pre>&#xA;&#xA;Image src = getImage(&quot;doc:///demo/images/duke/T1.gif&quot;);&#xA;ImageFilter colorfilter = new RedBlueSwapFilter();&#xA;Image img = createImage(new FilteredImageSource(src.getSource(),&#xA;colorfilter));&#xA;&#xA;&lt;/pre>&#xA;&#xA;@see ImageProducer&#xA;&#xA;@version&#x9;1.28 12/19/03&#xA;@author &#x9;Jim Graham&#xA;" annotatedElement="ea470f85-a00d-42d4-9496-daf02e83b880"/>
              <interfaceRealization xmi:id="aab13508-b483-4a3d-a4bb-40346d6a1855" name="" supplier="bfda1810-f0f5-4de1-93e9-08d4325e6d23" client="ea470f85-a00d-42d4-9496-daf02e83b880" contract="bfda1810-f0f5-4de1-93e9-08d4325e6d23"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="bf6bb345-0a6c-4067-afab-dfdb0fc407b3" name="BufferStrategy" isAbstract="true">
              <ownedComment xmi:id="e4820400-2410-4191-b74d-ffbbb8f0534c" body="The &lt;code>BufferStrategy&lt;/code> class represents the mechanism with which&#xA;to organize complex memory on a particular &lt;code>Canvas&lt;/code> or&#xA;&lt;code>Window&lt;/code>.  Hardware and software limitations determine whether and&#xA;how a particular buffer strategy can be implemented.  These limitations&#xA;are detectible through the capabilities of the&#xA;&lt;code>GraphicsConfiguration&lt;/code> used when creating the&#xA;&lt;code>Canvas&lt;/code> or &lt;code>Window&lt;/code>.&#xA;&lt;p>&#xA;It is worth noting that the terms &lt;i>buffer&lt;/i> and &lt;i>surface&lt;/i> are meant&#xA;to be synonymous: an area of contiguous memory, either in video device&#xA;memory or in system memory.&#xA;&lt;p>&#xA;There are several types of complex buffer strategies;&#xA;sequential ring buffering, blit buffering, and stereo buffering are&#xA;common types.  Sequential ring buffering (i.e., double or triple&#xA;buffering) is the most common; an application draws to a single &lt;i>back&#xA;buffer&lt;/i> and then moves the contents to the front (display) in a single&#xA;step, either by copying the data or moving the video pointer.&#xA;Moving the video pointer exchanges the buffers so that the first buffer&#xA;drawn becomes the &lt;i>front buffer&lt;/i>, or what is currently displayed on the&#xA;device; this is called &lt;i>page flipping&lt;/i>.&#xA;&lt;p>&#xA;Alternatively, the contents of the back buffer can be copied, or&#xA;&lt;i>blitted&lt;/i> forward in a chain instead of moving the video pointer.&#xA;&lt;p>&#xA;&lt;pre>&#xA;Double buffering:&#xA;&#xA;&#xA;------>&#xA;[To display] &lt;---- * Front B *   Show  * Back B. * &lt;---- Rendering&#xA;&lt;------&#xA;&#xA;&#xA;Triple buffering:&#xA;&#xA;[To&#xA;display] *         * --------+---------+------>&#xA;&lt;---- * Front B *   Show  * Mid. B. *        * Back B. * &lt;---- Rendering&#xA;&lt;------ *         * &lt;-----&#xA;&#xA;&#xA;&lt;/pre>&#xA;&lt;p>&#xA;Stereo buffering is for hardware that supports rendering separate images for&#xA;a left and right eye.  It is similar to sequential ring buffering, but&#xA;there are two buffer chains, one for each eye.  Both buffer chains flip&#xA;simultaneously:&#xA;&#xA;&lt;pre>&#xA;Stereo buffering:&#xA;&#xA;&#xA;------>&#xA;[To left eye] &lt;---- * Front B *         * Back B. * &lt;---- Rendering&#xA;&lt;------&#xA;&#xA;Show&#xA;&#xA;------>&#xA;[To right eye] &lt;--- * Front B *         * Back B. * &lt;---- Rendering&#xA;&lt;------&#xA;&#xA;&lt;/pre>&#xA;&lt;p>&#xA;Here is an example of how buffer strategies can be created and used:&#xA;&lt;pre>&lt;code>&#xA;&#xA;Check the capabilities of the GraphicsConfiguration&#xA;...&#xA;&#xA;Create our component&#xA;Window w = new Window(gc);&#xA;&#xA;Show our window&#xA;w.setVisible(true);&#xA;&#xA;Create a general double-buffering strategy&#xA;w.createBufferStrategy(2);&#xA;BufferStrategy strategy = w.getBufferStrategy();&#xA;&#xA;Render loop&#xA;while (!done) {&#xA;Graphics g = strategy.getDrawGraphics();&#xA;Draw to graphics&#xA;...&#xA;strategy.show();&#xA;}&#xA;&#xA;Dispose the window&#xA;w.setVisible(false);&#xA;w.dispose();&#xA;&lt;/code>&lt;/pre>&#xA;&#xA;@see java.awt.Component&#xA;@see java.awt.GraphicsConfiguration&#xA;@author Michael Martak&#xA;@since 1.4&#xA;" annotatedElement="bf6bb345-0a6c-4067-afab-dfdb0fc407b3"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a3e1933d-7b87-4252-915d-232bf4407c4f" name="ImageFilter" clientDependency="03bc879e-96a2-4036-88c4-c869401fbbd1 5738a02c-ff1e-4acc-8584-b2811db67959">
              <ownedComment xmi:id="247b47e0-2b78-465d-a9bc-d9a3e8bbd62d" body="This class implements a filter for the set of interface methods that&#xA;are used to deliver data from an ImageProducer to an ImageConsumer.&#xA;It is meant to be used in conjunction with a FilteredImageSource&#xA;object to produce filtered versions of existing images.  It is a&#xA;base class that provides the calls needed to implement a &quot;Null filter&quot;&#xA;which has no effect on the data being passed through.  Filters should&#xA;subclass this class and override the methods which deal with the&#xA;data that needs to be filtered and modify it as necessary.&#xA;&#xA;@see FilteredImageSource&#xA;@see ImageConsumer&#xA;&#xA;@version&#x9;1.31 07/16/04&#xA;@author &#x9;Jim Graham&#xA;" annotatedElement="a3e1933d-7b87-4252-915d-232bf4407c4f"/>
              <interfaceRealization xmi:id="5738a02c-ff1e-4acc-8584-b2811db67959" name="" supplier="173c106c-260f-4098-b9d6-67c525aebb39" client="a3e1933d-7b87-4252-915d-232bf4407c4f" contract="173c106c-260f-4098-b9d6-67c525aebb39"/>
              <interfaceRealization xmi:id="03bc879e-96a2-4036-88c4-c869401fbbd1" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="a3e1933d-7b87-4252-915d-232bf4407c4f" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="3c79f9db-54e6-4a70-ad43-ab1fdfd60e73" name="WritableRenderedImage" isAbstract="true">
              <ownedComment xmi:id="b6b45572-ce37-45d5-83e5-ab18de4eade2" body="WriteableRenderedImage is a common interface for objects which&#xA;contain or can produce image data in the form of Rasters and&#xA;which can be modified and/or written over.  The image&#xA;data may be stored/produced as a single tile or a regular array&#xA;of tiles.&#xA;&lt;p>&#xA;WritableRenderedImage provides notification to other interested&#xA;objects when a tile is checked out for writing (via the&#xA;getWritableTile method) and when the last writer of a particular&#xA;tile relinquishes its access (via a call to releaseWritableTile).&#xA;Additionally, it allows any caller to determine whether any tiles&#xA;are currently checked out (via hasTileWriters), and to obtain a&#xA;list of such tiles (via getWritableTileIndices, in the form of a Vector&#xA;of Point objects).&#xA;&lt;p>&#xA;Objects wishing to be notified of changes in tile writability must&#xA;implement the TileObserver interface, and are added by a&#xA;call to addTileObserver.  Multiple calls to&#xA;addTileObserver for the same object will result in multiple&#xA;notifications.  An existing observer may reduce its notifications&#xA;by calling removeTileObserver; if the observer had no&#xA;notifications the operation is a no-op.&#xA;&lt;p>&#xA;It is necessary for a WritableRenderedImage to ensure that&#xA;notifications occur only when the first writer acquires a tile and&#xA;the last writer releases it.&#xA;&#xA;" annotatedElement="3c79f9db-54e6-4a70-ad43-ab1fdfd60e73"/>
              <generalization xmi:id="0e65bf21-4014-49f0-83bb-4b196c5f5ef9" isSubstitutable="true" general="5bdaa52e-834c-4f3c-b40d-cc2faf7c1c4e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7f36248c-9733-4fc2-858d-adc403ab9827" name="SinglePixelPackedSampleModel">
              <ownedComment xmi:id="31e84727-2447-4910-a6ac-6053ce0751c7" body="This class represents pixel data packed such that the N samples which make&#xA;up a single pixel are stored in a single data array element, and each data&#xA;data array element holds samples for only one pixel.&#xA;This class supports&#xA;{@link DataBuffer#TYPE_BYTE TYPE_BYTE},&#xA;{@link DataBuffer#TYPE_USHORT TYPE_USHORT},&#xA;{@link DataBuffer#TYPE_INT TYPE_INT} data types.&#xA;All data array elements reside&#xA;in the first bank of a DataBuffer.  Accessor methods are provided so&#xA;that the image data can be manipulated directly. Scanline stride is the&#xA;number of data array elements between a given sample and the corresponding&#xA;sample in the same column of the next scanline. Bit masks are the masks&#xA;required to extract the samples representing the bands of the pixel.&#xA;Bit offsets are the offsets in bits into the data array&#xA;element of the samples representing the bands of the pixel.&#xA;&lt;p>&#xA;The following code illustrates extracting the bits of the sample&#xA;representing band &lt;code>b&lt;/code> for pixel &lt;code>x,y&lt;/code>&#xA;from DataBuffer &lt;code>data&lt;/code>:&#xA;&lt;pre>&#xA;int sample = data.getElem(y * scanlineStride + x);&#xA;sample = (sample &amp; bitMasks[b]) >>> bitOffsets[b];&#xA;&lt;/pre>&#xA;" annotatedElement="7f36248c-9733-4fc2-858d-adc403ab9827"/>
              <generalization xmi:id="2abca68e-51e4-4116-bd42-ce0a3d7cceb0" isSubstitutable="true" general="36f1e135-103a-41bc-ac79-40a9613a51a8"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8fe265b8-1aea-461d-90d0-d9d2062afd14" name="ComponentSampleModel">
              <ownedComment xmi:id="4752bf1a-c0ab-4fb4-811b-fa5a9ab0506b" body="This class represents image data which is stored such that each sample&#xA;of a pixel occupies one data element of the DataBuffer.  It stores the&#xA;N samples which make up a pixel in N separate data array elements.&#xA;Different bands may be in different banks of the DataBuffer.&#xA;Accessor methods are provided so that image data can be manipulated&#xA;directly. This class can support different kinds of interleaving, e.g.&#xA;band interleaving, scanline interleaving, and pixel interleaving.&#xA;Pixel stride is the number of data array elements between two samples&#xA;for the same band on the same scanline. Scanline stride is the number&#xA;of data array elements between a given sample and the corresponding sample&#xA;in the same column of the next scanline.  Band offsets denote the number&#xA;of data array elements from the first data array element of the bank&#xA;of the DataBuffer holding each band to the first sample of the band.&#xA;The bands are numbered from 0 to N-1.  This class can represent image&#xA;data for which each sample is an unsigned integral number which can be&#xA;stored in 8, 16, or 32 bits (using &lt;code>DataBuffer.TYPE_BYTE&lt;/code>,&#xA;&lt;code>DataBuffer.TYPE_USHORT&lt;/code>, or &lt;code>DataBuffer.TYPE_INT&lt;/code>,&#xA;respectively), data for which each sample is a signed integral number&#xA;which can be stored in 16 bits (using &lt;code>DataBuffer.TYPE_SHORT&lt;/code>),&#xA;or data for which each sample is a signed float or double quantity&#xA;(using &lt;code>DataBuffer.TYPE_FLOAT&lt;/code> or&#xA;&lt;code>DataBuffer.TYPE_DOUBLE&lt;/code>, respectively).&#xA;All samples of a given ComponentSampleModel&#xA;are stored with the same precision.  All strides and offsets must be&#xA;non-negative.  This class supports&#xA;{@link DataBuffer#TYPE_BYTE TYPE_BYTE},&#xA;{@link DataBuffer#TYPE_USHORT TYPE_USHORT},&#xA;{@link DataBuffer#TYPE_SHORT TYPE_SHORT},&#xA;{@link DataBuffer#TYPE_INT TYPE_INT},&#xA;{@link DataBuffer#TYPE_FLOAT TYPE_FLOAT},&#xA;{@link DataBuffer#TYPE_DOUBLE TYPE_DOUBLE},&#xA;@see java.awt.image.PixelInterleavedSampleModel&#xA;@see java.awt.image.BandedSampleModel&#xA;" annotatedElement="8fe265b8-1aea-461d-90d0-d9d2062afd14"/>
              <generalization xmi:id="47ceac3f-5960-48a8-bcb0-0a68ac64661c" isSubstitutable="true" general="36f1e135-103a-41bc-ac79-40a9613a51a8"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="61de17de-09d4-4763-8479-3111e794a143" name="DataBufferDouble" isLeaf="true">
              <ownedComment xmi:id="bfc67299-2587-423c-99a9-3684e6ad9d78" body="This class extends &lt;code>DataBuffer&lt;/code> and stores data internally&#xA;in &lt;code>double&lt;/code> form.&#xA;&#xA;@see DataBuffer&#xA;@since 1.4&#xA;" annotatedElement="61de17de-09d4-4763-8479-3111e794a143"/>
              <generalization xmi:id="29b2a4f2-1253-40c3-8f96-d9a0d23c4a09" isSubstitutable="true" general="920b4124-30dd-446f-84ad-c7f8754ccea5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="88c25525-18a7-4b82-bcd9-385c6da8c027" name="DirectColorModel">
              <ownedComment xmi:id="14a12bd4-1a4c-44bd-8047-bc0c2760a8b4" body="The &lt;code>DirectColorModel&lt;/code> class is a &lt;code>ColorModel&lt;/code>&#xA;class that works with pixel values that represent RGB&#xA;color and alpha information as separate samples and that pack all&#xA;samples for a single pixel into a single int, short, or byte quantity.&#xA;This class can be used only with ColorSpaces of type ColorSpace.TYPE_RGB.&#xA;In addition, for each component of the ColorSpace, the minimum&#xA;normalized component value obtained via the &lt;code>getMinValue()&lt;/code>&#xA;method of ColorSpace must be 0.0, and the maximum value obtained via&#xA;the &lt;code>getMaxValue()&lt;/code> method must be 1.0 (these min/max&#xA;values are typical for RGB spaces).&#xA;There must be three color samples in the pixel values and there can&#xA;be a single alpha sample.  For those methods that use a primitive array&#xA;pixel representation of type &lt;code>transferType&lt;/code>, the array&#xA;length is always one.  The transfer&#xA;types supported are DataBuffer.TYPE_BYTE,&#xA;DataBuffer.TYPE_USHORT, and DataBuffer.TYPE_INT.&#xA;Color and alpha samples are stored in the single&#xA;element of the array in bits indicated by bit masks.  Each bit mask&#xA;must be contiguous and masks must not overlap.  The same masks apply to&#xA;the single int pixel representation used by other methods.  The&#xA;correspondence of masks and color/alpha samples is as follows:&#xA;&lt;ul>&#xA;&lt;li> Masks are identified by indices running from 0 through 2&#xA;if no alpha is present, or 3 if an alpha is present.&#xA;&lt;li> The first three indices refer to color samples;&#xA;index 0 corresponds to red, index 1 to green, and index 2 to blue.&#xA;&lt;li> Index 3 corresponds to the alpha sample, if present.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;The translation from pixel values to color/alpha components for&#xA;display or processing purposes is a one-to-one correspondence of&#xA;samples to components.  A &lt;code>DirectColorModel&lt;/code> is&#xA;typically used with image data which uses masks to define packed&#xA;samples.  For example, a &lt;code>DirectColorModel&lt;/code> can be used in&#xA;conjunction with a &lt;code>SinglePixelPackedSampleModel&lt;/code> to&#xA;construct a {@link BufferedImage}.  Normally the masks used by the&#xA;{@link SampleModel} and the &lt;code>ColorModel&lt;/code> would be the&#xA;same.  However, if they are different, the color interpretation&#xA;of pixel data will be done according to the masks of the&#xA;&lt;code>ColorModel&lt;/code>.&#xA;&lt;p>&#xA;A single int pixel representation is valid for all objects of this&#xA;class, since it is always possible to represent pixel values used with&#xA;this class in a single int.  Therefore, methods which use this&#xA;representation will not throw an &lt;code>IllegalArgumentException&lt;/code>&#xA;due to an invalid pixel value.&#xA;&lt;p>&#xA;This color model is similar to an X11 TrueColor visual.&#xA;The default RGB ColorModel specified by the&#xA;{@link ColorModel#getRGBdefault() getRGBdefault} method is a&#xA;&lt;code>DirectColorModel&lt;/code> with the following parameters:&#xA;&lt;pre>&#xA;Number of bits:        32&#xA;Red mask:              0x00ff0000&#xA;Green mask:            0x0000ff00&#xA;Blue mask:             0x000000ff&#xA;Alpha mask:            0xff000000&#xA;Color space:           sRGB&#xA;isAlphaPremultiplied:  False&#xA;Transparency:          Transparency.TRANSLUCENT&#xA;transferType:          DataBuffer.TYPE_INT&#xA;&lt;/pre>&#xA;&lt;p>&#xA;Many of the methods in this class are final. This is because the&#xA;underlying native graphics code makes assumptions about the layout&#xA;and operation of this class and those assumptions are reflected in&#xA;the implementations of the methods here that are marked final.  You&#xA;can subclass this class for other reasons, but you cannot override&#xA;or modify the behavior of those methods.&#xA;&#xA;@see ColorModel&#xA;@see ColorSpace&#xA;@see SinglePixelPackedSampleModel&#xA;@see BufferedImage&#xA;@see ColorModel#getRGBdefault&#xA;&#xA;@version 10 Feb 1997&#xA;" annotatedElement="88c25525-18a7-4b82-bcd9-385c6da8c027"/>
              <generalization xmi:id="7f087f5a-6bbc-4df7-928c-162eb7c49452" isSubstitutable="true" general="e5e3eab3-182b-4e96-9d80-6be352d6d1da"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7f97df6e-679a-44d6-beae-c675214caf0b" name="DataBufferUShort" isLeaf="true">
              <ownedComment xmi:id="7449f3b5-aa5b-4182-a0bd-867894c79704" body="This class extends &lt;CODE>DataBuffer&lt;/CODE> and stores data internally as&#xA;shorts.  Values stored in the short array(s) of this &lt;CODE>DataBuffer&lt;/CODE>&#xA;are treated as unsigned values.&#xA;" annotatedElement="7f97df6e-679a-44d6-beae-c675214caf0b"/>
              <generalization xmi:id="148f209d-538e-4824-964a-bbd47de96e1c" isSubstitutable="true" general="920b4124-30dd-446f-84ad-c7f8754ccea5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="37f205cf-70ff-4971-9198-cc58889ac6b4" name="LookupTable" isAbstract="true">
              <ownedComment xmi:id="9ba85877-84b8-4efd-be9a-1b5e6c9a80a1" body="This abstract class defines a lookup table object.  ByteLookupTable&#xA;and ShortLookupTable are subclasses, which&#xA;contain byte and short data, respectively.  A lookup table&#xA;contains data arrays for one or more bands (or components) of an image&#xA;(for example, separate arrays for R, G, and B),&#xA;and it contains an offset which will be subtracted from the&#xA;input values before indexing into the arrays.  This allows an array&#xA;smaller than the native data size to be provided for a&#xA;constrained input.  If there is only one array in the lookup&#xA;table, it will be applied to all bands.  All arrays must be the&#xA;same size.&#xA;&#xA;@see ByteLookupTable&#xA;@see ShortLookupTable&#xA;@see LookupOp&#xA;@version 10 Feb 1997&#xA;" annotatedElement="37f205cf-70ff-4971-9198-cc58889ac6b4"/>
              <generalization xmi:id="c3e79c6c-f1f7-42c0-8fc0-51a649ccaaa7" isSubstitutable="true" general="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="bfda1810-f0f5-4de1-93e9-08d4325e6d23" name="ImageProducer" isAbstract="true">
              <ownedComment xmi:id="dbde6e97-0630-4ec9-ac85-3fffe81ba2bd" body="The interface for objects which can produce the image data for Images.&#xA;Each image contains an ImageProducer which is used to reconstruct&#xA;the image whenever it is needed, for example, when a new size of the&#xA;Image is scaled, or when the width or height of the Image is being&#xA;requested.&#xA;&#xA;@see ImageConsumer&#xA;&#xA;@version&#x9;1.20 12/19/03&#xA;@author &#x9;Jim Graham&#xA;" annotatedElement="bfda1810-f0f5-4de1-93e9-08d4325e6d23"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="5bdaa52e-834c-4f3c-b40d-cc2faf7c1c4e" name="RenderedImage" isAbstract="true">
              <ownedComment xmi:id="64d81832-65bf-45e5-bf83-8e3c19bdf283" body="RenderedImage is a common interface for objects which contain&#xA;or can produce image data in the form of Rasters.  The image&#xA;data may be stored/produced as a single tile or a regular array&#xA;of tiles.&#xA;" annotatedElement="5bdaa52e-834c-4f3c-b40d-cc2faf7c1c4e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="cd3c757f-e218-4ccc-b731-9e47cf543c37" name="ReplicateScaleFilter">
              <ownedComment xmi:id="c64f7964-248d-41c8-90e3-1f3eb1163bd2" body="An ImageFilter class for scaling images using the simplest algorithm.&#xA;This class extends the basic ImageFilter Class to scale an existing&#xA;image and provide a source for a new image containing the resampled&#xA;image.  The pixels in the source image are sampled to produce pixels&#xA;for an image of the specified size by replicating rows and columns of&#xA;pixels to scale up or omitting rows and columns of pixels to scale&#xA;down.&#xA;&lt;p>It is meant to be used in conjunction with a FilteredImageSource&#xA;object to produce scaled versions of existing images.  Due to&#xA;implementation dependencies, there may be differences in pixel values&#xA;of an image filtered on different platforms.&#xA;&#xA;@see FilteredImageSource&#xA;@see ImageFilter&#xA;&#xA;@version&#x9;1.20 07/16/04&#xA;@author &#x9;Jim Graham&#xA;" annotatedElement="cd3c757f-e218-4ccc-b731-9e47cf543c37"/>
              <generalization xmi:id="610f5c5b-6b36-4cf8-aa6e-5a6ea85c90da" isSubstitutable="true" general="a3e1933d-7b87-4252-915d-232bf4407c4f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9a699e64-ddac-417a-8197-86f49bbcae8d" name="PixelInterleavedSampleModel">
              <ownedComment xmi:id="405b6309-cf0f-4a75-bea3-caa1c32ef447" body="This class represents image data which is stored in a pixel interleaved&#xA;fashion and for&#xA;which each sample of a pixel occupies one data element of the DataBuffer.&#xA;It subclasses ComponentSampleModel but provides a more efficent&#xA;implementation for accessing pixel interleaved image data than is provided&#xA;by ComponentSampleModel.  This class&#xA;stores sample data for all bands in a single bank of the&#xA;DataBuffer. Accessor methods are provided so that image data can be&#xA;manipulated directly. Pixel stride is the number of&#xA;data array elements between two samples for the same band on the same&#xA;scanline. Scanline stride is the number of data array elements between&#xA;a given sample and the corresponding sample in the same column of the next&#xA;scanline.  Band offsets denote the number&#xA;of data array elements from the first data array element of the bank&#xA;of the DataBuffer holding each band to the first sample of the band.&#xA;The bands are numbered from 0 to N-1.&#xA;Bank indices denote the correspondence between a bank of the data buffer&#xA;and a band of image data.&#xA;This class supports&#xA;{@link DataBuffer#TYPE_BYTE TYPE_BYTE},&#xA;{@link DataBuffer#TYPE_USHORT TYPE_USHORT},&#xA;{@link DataBuffer#TYPE_SHORT TYPE_SHORT},&#xA;{@link DataBuffer#TYPE_INT TYPE_INT},&#xA;{@link DataBuffer#TYPE_FLOAT TYPE_FLOAT} and&#xA;{@link DataBuffer#TYPE_DOUBLE TYPE_DOUBLE} datatypes.&#xA;" annotatedElement="9a699e64-ddac-417a-8197-86f49bbcae8d"/>
              <generalization xmi:id="c6b0a48f-c69f-432f-b544-54dab7e6f979" isSubstitutable="true" general="8fe265b8-1aea-461d-90d0-d9d2062afd14"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="37cdc225-9dc2-4329-8b12-400b7ffc74cf" name="MultiPixelPackedSampleModel">
              <ownedComment xmi:id="c08be1e3-1e9d-4ff4-96e4-9a9bf84f17a4" body="The &lt;code>MultiPixelPackedSampleModel&lt;/code> class represents&#xA;one-banded images and can pack multiple one-sample&#xA;pixels into one data element.  Pixels are not allowed to span data elements.&#xA;The data type can be DataBuffer.TYPE_BYTE, DataBuffer.TYPE_USHORT,&#xA;or DataBuffer.TYPE_INT.  Each pixel must be a power of 2 number of bits&#xA;and a power of 2 number of pixels must fit exactly in one data element.&#xA;Pixel bit stride is equal to the number of bits per pixel.  Scanline&#xA;stride is in data elements and the last several data elements might be&#xA;padded with unused pixels.  Data bit offset is the offset in bits from&#xA;the beginning of the {@link DataBuffer} to the first pixel and must be&#xA;a multiple of pixel bit stride.&#xA;&lt;p>&#xA;The following code illustrates extracting the bits for pixel&#xA;&lt;code>x,&amp;nbsp;y&lt;/code> from &lt;code>DataBuffer&lt;/code> &lt;code>data&lt;/code>&#xA;and storing the pixel data in data elements of type&#xA;&lt;code>dataType&lt;/code>:&#xA;&lt;pre>&#xA;int dataElementSize = DataBuffer.getDataTypeSize(dataType);&#xA;int bitnum = dataBitOffset + x*pixelBitStride;&#xA;int element = data.getElem(y*scanlineStride + bitnum/dataElementSize);&#xA;int shift = dataElementSize - (bitnum &amp; (dataElementSize-1))&#xA;- pixelBitStride;&#xA;int pixel = (element >> shift) &amp; ((1 &lt;&lt; pixelBitStride) - 1);&#xA;&lt;/pre>&#xA;" annotatedElement="37cdc225-9dc2-4329-8b12-400b7ffc74cf"/>
              <generalization xmi:id="72e9f305-13fd-4b39-ad6f-571541b0e83c" isSubstitutable="true" general="36f1e135-103a-41bc-ac79-40a9613a51a8"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="173c106c-260f-4098-b9d6-67c525aebb39" name="ImageConsumer" isAbstract="true">
              <ownedComment xmi:id="8458f7e5-f08d-4690-a8a2-d56e8fac7b5e" body="The interface for objects expressing interest in image data through&#xA;the ImageProducer interfaces.  When a consumer is added to an image&#xA;producer, the producer delivers all of the data about the image&#xA;using the method calls defined in this interface.&#xA;&#xA;@see ImageProducer&#xA;&#xA;@version&#x9;1.23 07/16/04&#xA;@author &#x9;Jim Graham&#xA;" annotatedElement="173c106c-260f-4098-b9d6-67c525aebb39"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="be4a5e36-9034-4dc1-95ba-c3a01eb79862" name="MemoryImageSource" clientDependency="a05ae75e-5993-4ca4-81dd-a0db9a3ca009">
              <ownedComment xmi:id="374da800-e427-4562-abcb-0311948860a6" body="This class is an implementation of the ImageProducer interface which&#xA;uses an array to produce pixel values for an Image.  Here is an example&#xA;which calculates a 100x100 image representing a fade from black to blue&#xA;along the X axis and a fade from black to red along the Y axis:&#xA;&lt;pre>&#xA;&#xA;int w = 100;&#xA;int h = 100;&#xA;int pix[] = new int[w * h];&#xA;int index = 0;&#xA;for (int y = 0; y &lt; h; y++) {&#xA;int red = (y * 255) / (h - 1);&#xA;for (int x = 0; x &lt; w; x++) {&#xA;int blue = (x * 255) / (w - 1);&#xA;pix[index++] = (255 &lt;&lt; 24) | (red &lt;&lt; 16) | blue;&#xA;}&#xA;}&#xA;Image img = createImage(new MemoryImageSource(w, h, pix, 0, w));&#xA;&#xA;&lt;/pre>&#xA;The MemoryImageSource is also capable of managing a memory image which&#xA;varies over time to allow animation or custom rendering.  Here is an&#xA;example showing how to set up the animation source and signal changes&#xA;in the data (adapted from the MemoryAnimationSourceDemo by Garth Dickie):&#xA;&lt;pre>&#xA;&#xA;int pixels[];&#xA;MemoryImageSource source;&#xA;&#xA;public void init() {&#xA;int width = 50;&#xA;int height = 50;&#xA;int size = width * height;&#xA;pixels = new int[size];&#xA;&#xA;int value = getBackground().getRGB();&#xA;for (int i = 0; i &lt; size; i++) {&#xA;pixels[i] = value;&#xA;}&#xA;&#xA;source = new MemoryImageSource(width, height, pixels, 0, width);&#xA;source.setAnimated(true);&#xA;image = createImage(source);&#xA;}&#xA;&#xA;public void run() {&#xA;Thread me = Thread.currentThread( );&#xA;me.setPriority(Thread.MIN_PRIORITY);&#xA;&#xA;while (true) {&#xA;try {&#xA;thread.sleep(10);&#xA;} catch( InterruptedException e ) {&#xA;return;&#xA;}&#xA;&#xA;Modify the values in the pixels array at (x, y, w, h)&#xA;&#xA;Send the new data to the interested ImageConsumers&#xA;source.newPixels(x, y, w, h);&#xA;}&#xA;}&#xA;&#xA;&lt;/pre>&#xA;&#xA;@see ImageProducer&#xA;&#xA;@version&#x9;1.33 07/16/04&#xA;@author &#x9;Jim Graham&#xA;@author&#x9;Animation capabilities inspired by the&#xA;MemoryAnimationSource class written by Garth Dickie&#xA;" annotatedElement="be4a5e36-9034-4dc1-95ba-c3a01eb79862"/>
              <interfaceRealization xmi:id="a05ae75e-5993-4ca4-81dd-a0db9a3ca009" name="" supplier="bfda1810-f0f5-4de1-93e9-08d4325e6d23" client="be4a5e36-9034-4dc1-95ba-c3a01eb79862" contract="bfda1810-f0f5-4de1-93e9-08d4325e6d23"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="dc3e23e7-09df-4daf-b0e1-0ea40dc8c9ee" name="AWTEvent" isAbstract="true">
            <ownedComment xmi:id="db49e1c9-cd71-4a48-b19c-5a17d16f0e46" body="The root event class for all AWT events.&#xA;This class and its subclasses supercede the original&#xA;java.awt.Event class.&#xA;Subclasses of this root AWTEvent class defined outside of the&#xA;java.awt.event package should define event ID values greater than&#xA;the value defined by RESERVED_ID_MAX.&#xA;&lt;p>&#xA;The event masks defined in this class are needed by Component subclasses&#xA;which are using Component.enableEvents() to select for event types not&#xA;selected by registered listeners. If a listener is registered on a&#xA;component, the appropriate event mask is already set internally by the&#xA;component.&#xA;&lt;p>&#xA;The masks are also used to specify to which types of events an&#xA;AWTEventListener should listen. The masks are bitwise-ORed together&#xA;and passed to Toolkit.addAWTEventListener.&#xA;&#xA;@see Component#enableEvents&#xA;@see Toolkit#addAWTEventListener&#xA;&#xA;@see java.awt.event.ActionEvent&#xA;@see java.awt.event.AdjustmentEvent&#xA;@see java.awt.event.ComponentEvent&#xA;@see java.awt.event.ContainerEvent&#xA;@see java.awt.event.FocusEvent&#xA;@see java.awt.event.InputMethodEvent&#xA;@see java.awt.event.InvocationEvent&#xA;@see java.awt.event.ItemEvent&#xA;@see java.awt.event.HierarchyEvent&#xA;@see java.awt.event.KeyEvent&#xA;@see java.awt.event.MouseEvent&#xA;@see java.awt.event.MouseWheelEvent&#xA;@see java.awt.event.PaintEvent&#xA;@see java.awt.event.TextEvent&#xA;@see java.awt.event.WindowEvent&#xA;&#xA;@author Carl Quinn&#xA;@author Amy Fowler&#xA;@version 1.55 06/02/04&#xA;@since 1.1&#xA;" annotatedElement="dc3e23e7-09df-4daf-b0e1-0ea40dc8c9ee"/>
            <generalization xmi:id="2e4f3a86-c206-4134-8eb4-2decea05c418" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4e7d52bc-bed3-4e9b-ba4b-c279b218c16f" name="Scrollbar" clientDependency="5450f13d-1931-4d20-92f3-67b1a72fa1db b8d8335a-3052-4be8-9d51-4e2a3a488bea">
            <ownedComment xmi:id="52f27e24-9a28-4539-ba67-1909a6321597" body="The &lt;code>Scrollbar&lt;/code> class embodies a scroll bar, a&#xA;familiar user-interface object. A scroll bar provides a&#xA;convenient means for allowing a user to select from a&#xA;range of values. The following three vertical&#xA;scroll bars could be used as slider controls to pick&#xA;the red, green, and blue components of a color:&#xA;&lt;p>&#xA;&lt;img src=&quot;doc-files/Scrollbar-1.gif&quot; alt=&quot;Image shows 3 vertical sliders, side-by-side.&quot;&#xA;ALIGN=center HSPACE=10 VSPACE=7>&#xA;&lt;p>&#xA;Each scroll bar in this example could be created with&#xA;code similar to the following:&#xA;&lt;p>&#xA;&lt;hr>&lt;blockquote>&lt;pre>&#xA;redSlider=new Scrollbar(Scrollbar.VERTICAL, 0, 1, 0, 255);&#xA;add(redSlider);&#xA;&lt;/pre>&lt;/blockquote>&lt;hr>&#xA;&lt;p>&#xA;Alternatively, a scroll bar can represent a range of values. For&#xA;example, if a scroll bar is used for scrolling through text, the&#xA;width of the &quot;bubble&quot; (also called the &quot;thumb&quot; or &quot;scroll box&quot;)&#xA;can be used to represent the amount of text that is visible.&#xA;Here is an example of a scroll bar that represents a range:&#xA;&lt;p>&#xA;&lt;img src=&quot;doc-files/Scrollbar-2.gif&quot;&#xA;alt=&quot;Image shows horizontal slider with starting range of 0 and ending range of 300. The slider thumb is labeled 60.&quot;&#xA;ALIGN=center HSPACE=10 VSPACE=7>&#xA;&lt;p>&#xA;The value range represented by the bubble in this example&#xA;is the &lt;em>visible amount&lt;/em>. The horizontal scroll bar&#xA;in this example could be created with code like the following:&#xA;&lt;p>&#xA;&lt;hr>&lt;blockquote>&lt;pre>&#xA;ranger = new Scrollbar(Scrollbar.HORIZONTAL, 0, 60, 0, 300);&#xA;add(ranger);&#xA;&lt;/pre>&lt;/blockquote>&lt;hr>&#xA;&lt;p>&#xA;Note that the actual maximum value of the scroll bar is the&#xA;&lt;code>maximum&lt;/code> minus the &lt;code>visible amount&lt;/code>.&#xA;In the previous example, because the &lt;code>maximum&lt;/code> is&#xA;300 and the &lt;code>visible amount&lt;/code> is 60, the actual maximum&#xA;value is 240.  The range of the scrollbar track is 0 - 300.&#xA;The left side of the bubble indicates the value of the&#xA;scroll bar.&#xA;&lt;p>&#xA;Normally, the user changes the value of the scroll bar by&#xA;making a gesture with the mouse. For example, the user can&#xA;drag the scroll bar's bubble up and down, or click in the&#xA;scroll bar's unit increment or block increment areas. Keyboard&#xA;gestures can also be mapped to the scroll bar. By convention,&#xA;the &lt;b>Page&amp;nbsp;Up&lt;/b> and &lt;b>Page&amp;nbsp;Down&lt;/b>&#xA;keys are equivalent to clicking in the scroll bar's block&#xA;increment and block decrement areas.&#xA;&lt;p>&#xA;When the user changes the value of the scroll bar, the scroll bar&#xA;receives an instance of &lt;code>AdjustmentEvent&lt;/code>.&#xA;The scroll bar processes this event, passing it along to&#xA;any registered listeners.&#xA;&lt;p>&#xA;Any object that wishes to be notified of changes to the&#xA;scroll bar's value should implement&#xA;&lt;code>AdjustmentListener&lt;/code>, an interface defined in&#xA;the package &lt;code>java.awt.event&lt;/code>.&#xA;Listeners can be added and removed dynamically by calling&#xA;the methods &lt;code>addAdjustmentListener&lt;/code> and&#xA;&lt;code>removeAdjustmentListener&lt;/code>.&#xA;&lt;p>&#xA;The &lt;code>AdjustmentEvent&lt;/code> class defines five types&#xA;of adjustment event, listed here:&#xA;&lt;p>&#xA;&lt;ul>&#xA;&lt;li>&lt;code>AdjustmentEvent.TRACK&lt;/code> is sent out when the&#xA;user drags the scroll bar's bubble.&#xA;&lt;li>&lt;code>AdjustmentEvent.UNIT_INCREMENT&lt;/code> is sent out&#xA;when the user clicks in the left arrow of a horizontal scroll&#xA;bar, or the top arrow of a vertical scroll bar, or makes the&#xA;equivalent gesture from the keyboard.&#xA;&lt;li>&lt;code>AdjustmentEvent.UNIT_DECREMENT&lt;/code> is sent out&#xA;when the user clicks in the right arrow of a horizontal scroll&#xA;bar, or the bottom arrow of a vertical scroll bar, or makes the&#xA;equivalent gesture from the keyboard.&#xA;&lt;li>&lt;code>AdjustmentEvent.BLOCK_INCREMENT&lt;/code> is sent out&#xA;when the user clicks in the track, to the left of the bubble&#xA;on a horizontal scroll bar, or above the bubble on a vertical&#xA;scroll bar. By convention, the &lt;b>Page&amp;nbsp;Up&lt;/b>&#xA;key is equivalent, if the user is using a keyboard that&#xA;defines a &lt;b>Page&amp;nbsp;Up&lt;/b> key.&#xA;&lt;li>&lt;code>AdjustmentEvent.BLOCK_DECREMENT&lt;/code> is sent out&#xA;when the user clicks in the track, to the right of the bubble&#xA;on a horizontal scroll bar, or below the bubble on a vertical&#xA;scroll bar. By convention, the &lt;b>Page&amp;nbsp;Down&lt;/b>&#xA;key is equivalent, if the user is using a keyboard that&#xA;defines a &lt;b>Page&amp;nbsp;Down&lt;/b> key.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;The JDK&amp;nbsp;1.0 event system is supported for backwards&#xA;compatibility, but its use with newer versions of the platform is&#xA;discouraged. The five types of adjustment events introduced&#xA;with JDK&amp;nbsp;1.1 correspond to the five event types&#xA;that are associated with scroll bars in previous platform versions.&#xA;The following list gives the adjustment event type,&#xA;and the corresponding JDK&amp;nbsp;1.0 event type it replaces.&#xA;&lt;p>&#xA;&lt;ul>&#xA;&lt;li>&lt;code>AdjustmentEvent.TRACK&lt;/code> replaces&#xA;&lt;code>Event.SCROLL_ABSOLUTE&lt;/code>&#xA;&lt;li>&lt;code>AdjustmentEvent.UNIT_INCREMENT&lt;/code> replaces&#xA;&lt;code>Event.SCROLL_LINE_UP&lt;/code>&#xA;&lt;li>&lt;code>AdjustmentEvent.UNIT_DECREMENT&lt;/code> replaces&#xA;&lt;code>Event.SCROLL_LINE_DOWN&lt;/code>&#xA;&lt;li>&lt;code>AdjustmentEvent.BLOCK_INCREMENT&lt;/code> replaces&#xA;&lt;code>Event.SCROLL_PAGE_UP&lt;/code>&#xA;&lt;li>&lt;code>AdjustmentEvent.BLOCK_DECREMENT&lt;/code> replaces&#xA;&lt;code>Event.SCROLL_PAGE_DOWN&lt;/code>&#xA;&lt;/ul>&#xA;&lt;p>&#xA;&lt;b>Note&lt;/b>: We recommend using a &lt;code>Scrollbar&lt;/code>&#xA;for value selection only.  If you want to implement&#xA;a scrollable component inside a container, we recommend you use&#xA;a {@link ScrollPane ScrollPane}. If you use a&#xA;&lt;code>Scrollbar&lt;/code> for this purpose, you are likely to&#xA;encounter issues with painting, key handling, sizing and&#xA;positioning.&#xA;&#xA;@version &#x9;1.108, 05/18/04&#xA;@author &#x9;Sami Shaio&#xA;@see         java.awt.event.AdjustmentEvent&#xA;@see         java.awt.event.AdjustmentListener&#xA;@since       JDK1.0&#xA;" annotatedElement="4e7d52bc-bed3-4e9b-ba4b-c279b218c16f"/>
            <generalization xmi:id="551e1e5d-6a24-4e0f-a796-8d968d69f8e7" isSubstitutable="true" general="4d925b7b-d68e-4e13-b87b-98bdb93e9024"/>
            <interfaceRealization xmi:id="5450f13d-1931-4d20-92f3-67b1a72fa1db" name="" supplier="39efaa72-49ea-4322-8011-eae19f7cd24b" client="4e7d52bc-bed3-4e9b-ba4b-c279b218c16f" contract="39efaa72-49ea-4322-8011-eae19f7cd24b"/>
            <interfaceRealization xmi:id="b8d8335a-3052-4be8-9d51-4e2a3a488bea" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="4e7d52bc-bed3-4e9b-ba4b-c279b218c16f" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c852a709-c97d-4d67-b9c7-83cd0dc1c932" name="AccessibleAWTScrollBar" visibility="protected" clientDependency="6adde3f0-842b-43b6-ab76-5f40576b5268">
              <ownedComment xmi:id="da358e75-3871-4b89-a7d9-aa96e18891d9" body="This class implements accessibility support for the&#xA;&lt;code>Scrollbar&lt;/code> class.  It provides an implementation of&#xA;the Java Accessibility API appropriate to scrollbar&#xA;user-interface elements.&#xA;" annotatedElement="c852a709-c97d-4d67-b9c7-83cd0dc1c932"/>
              <generalization xmi:id="8e84c4ec-cc06-43cb-845d-6cbe80a1443d" isSubstitutable="true" general="e8a07816-0ac5-4ca1-990d-2e0e3f63e181"/>
              <interfaceRealization xmi:id="6adde3f0-842b-43b6-ab76-5f40576b5268" name="" supplier="48ff1225-61c7-495b-a398-c2903fb1210d" client="c852a709-c97d-4d67-b9c7-83cd0dc1c932" contract="48ff1225-61c7-495b-a398-c2903fb1210d"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0d67529a-bc1b-4b72-bb4d-4337c26399d2" name="TextField">
            <ownedComment xmi:id="d1fa8e7d-392e-49ed-b145-3a47ffe9c272" body="A &lt;code>TextField&lt;/code> object is a text component&#xA;that allows for the editing of a single line of text.&#xA;&lt;p>&#xA;For example, the following image depicts a frame with four&#xA;text fields of varying widths. Two of these text fields&#xA;display the predefined text &lt;code>&quot;Hello&quot;&lt;/code>.&#xA;&lt;p>&#xA;&lt;img src=&quot;doc-files/TextField-1.gif&quot; alt=&quot;The preceding text describes this image.&quot;&#xA;ALIGN=center HSPACE=10 VSPACE=7>&#xA;&lt;p>&#xA;Here is the code that produces these four text fields:&#xA;&lt;p>&#xA;&lt;hr>&lt;blockquote>&lt;pre>&#xA;TextField tf1, tf2, tf3, tf4;&#xA;a blank text field&#xA;tf1 = new TextField();&#xA;blank field of 20 columns&#xA;tf2 = new TextField(&quot;&quot;, 20);&#xA;predefined text displayed&#xA;tf3 = new TextField(&quot;Hello!&quot;);&#xA;predefined text in 30 columns&#xA;tf4 = new TextField(&quot;Hello&quot;, 30);&#xA;&lt;/pre>&lt;/blockquote>&lt;hr>&#xA;&lt;p>&#xA;Every time the user types a key in the text field, one or&#xA;more key events are sent to the text field.  A &lt;code>KeyEvent&lt;/code>&#xA;may be one of three types: keyPressed, keyReleased, or keyTyped.&#xA;The properties of a key event indicate which of these types&#xA;it is, as well as additional information about the event,&#xA;such as what modifiers are applied to the key event and the&#xA;time at which the event occurred.&#xA;&lt;p>&#xA;The key event is passed to every &lt;code>KeyListener&lt;/code>&#xA;or &lt;code>KeyAdapter&lt;/code> object which registered to receive such&#xA;events using the component's &lt;code>addKeyListener&lt;/code> method.&#xA;(&lt;code>KeyAdapter&lt;/code> objects implement the&#xA;&lt;code>KeyListener&lt;/code> interface.)&#xA;&lt;p>&#xA;It is also possible to fire an &lt;code>ActionEvent&lt;/code>.&#xA;If action events are enabled for the text field, they may&#xA;be fired by pressing the &lt;code>Return&lt;/code> key.&#xA;&lt;p>&#xA;The &lt;code>TextField&lt;/code> class's &lt;code>processEvent&lt;/code>&#xA;method examines the action event and passes it along to&#xA;&lt;code>processActionEvent&lt;/code>. The latter method redirects the&#xA;event to any &lt;code>ActionListener&lt;/code> objects that have&#xA;registered to receive action events generated by this&#xA;text field.&#xA;&#xA;@version&#x9;1.80, 05/18/04&#xA;@author &#x9;Sami Shaio&#xA;@see         java.awt.event.KeyEvent&#xA;@see         java.awt.event.KeyAdapter&#xA;@see         java.awt.event.KeyListener&#xA;@see         java.awt.event.ActionEvent&#xA;@see         java.awt.Component#addKeyListener&#xA;@see         java.awt.TextField#processEvent&#xA;@see         java.awt.TextField#processActionEvent&#xA;@see         java.awt.TextField#addActionListener&#xA;@since       JDK1.0&#xA;" annotatedElement="0d67529a-bc1b-4b72-bb4d-4337c26399d2"/>
            <generalization xmi:id="c1780be8-dee4-4253-8167-b32689c3fbff" isSubstitutable="true" general="d16f7a11-00a3-4474-ba0b-c38ec30ff9f4"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="e6ac4add-9aaa-4edb-9843-11b111e0939a" name="AccessibleAWTTextField" visibility="protected">
              <ownedComment xmi:id="426c0e45-7160-4436-85af-c2aece767573" body="This class implements accessibility support for the&#xA;&lt;code>TextField&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to text field user-interface elements.&#xA;" annotatedElement="e6ac4add-9aaa-4edb-9843-11b111e0939a"/>
              <generalization xmi:id="17e9fc46-caba-4757-98df-d780384cdf89" isSubstitutable="true" general="b4a7e424-2eb1-4aed-9662-cb03b405d120"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e370c9b5-a044-420e-aab3-97f8f453d1fd" name="MenuShortcut" clientDependency="9530a538-9d11-4902-851b-0f8ca9251218">
            <ownedComment xmi:id="dcd6e85d-91a8-494f-b819-1b8a40e89d17" body="The &lt;code>MenuShortcut&lt;/code>class represents a keyboard accelerator&#xA;for a MenuItem.&#xA;&lt;p>&#xA;Menu shortcuts are created using virtual keycodes, not characters.&#xA;For example, a menu shortcut for Ctrl-a (assuming that Control is&#xA;the accelerator key) would be created with code like the following:&#xA;&lt;p>&#xA;MenuShortcut ms = new MenuShortcut(KeyEvent.VK_A, false);&#xA;&lt;p>&#xA;The accelerator key is platform-dependent and may be obtained&#xA;via {@link Toolkit#getMenuShortcutKeyMask}.&#xA;&#xA;@author Thomas Ball&#xA;@version 1.25, 12/19/03&#xA;@since JDK1.1&#xA;" annotatedElement="e370c9b5-a044-420e-aab3-97f8f453d1fd"/>
            <interfaceRealization xmi:id="9530a538-9d11-4902-851b-0f8ca9251218" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="e370c9b5-a044-420e-aab3-97f8f453d1fd" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="df62e602-f506-498f-9270-a657feeffa38" name="FocusTraversalPolicy" isAbstract="true">
            <ownedComment xmi:id="a3f5e4cc-6353-4828-87c5-cb656b2915d8" body="A FocusTraversalPolicy defines the order in which Components with a&#xA;particular focus cycle root are traversed. Instances can apply the policy to&#xA;arbitrary focus cycle roots, allowing themselves to be shared across&#xA;Containers. They do not need to be reinitialized when the focus cycle roots&#xA;of a Component hierarchy change.&#xA;&lt;p>&#xA;The core responsibility of a FocusTraversalPolicy is to provide algorithms&#xA;determining the next and previous Components to focus when traversing&#xA;forward or backward in a UI. Each FocusTraversalPolicy must also provide&#xA;algorithms for determining the first, last, and default Components in a&#xA;traversal cycle. First and last Components are used when normal forward and&#xA;backward traversal, respectively, wraps. The default Component is the first&#xA;to receive focus when traversing down into a new focus traversal cycle.&#xA;A FocusTraversalPolicy can optionally provide an algorithm for determining&#xA;a Window's initial Component. The initial Component is the first to receive&#xA;focus when a Window is first made visible.&#xA;&lt;p>&#xA;FocusTraversalPolicy takes into account &lt;a&#xA;href=&quot;doc-files/FocusSpec.html#FocusTraversalPolicyProviders&quot;>focus traversal&#xA;policy providers&lt;/a>.  When searching for first/last/next/previous Component,&#xA;if a focus traversal policy provider is encountered, its focus traversal&#xA;policy is used to perform the search operation.&#xA;&lt;p>&#xA;Please see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html&quot;>&#xA;How to Use the Focus Subsystem&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>, and the&#xA;&lt;a href=&quot;../../java/awt/doc-files/FocusSpec.html&quot;>Focus Specification&lt;/a>&#xA;for more information.&#xA;&#xA;@author David Mendenhall&#xA;@version 1.7, 12/19/03&#xA;&#xA;@see Container#setFocusTraversalPolicy&#xA;@see Container#getFocusTraversalPolicy&#xA;@see Container#setFocusCycleRoot&#xA;@see Container#isFocusCycleRoot&#xA;@see Container#setFocusTraversalPolicyProvider&#xA;@see Container#isFocusTraversalPolicyProvider&#xA;@see KeyboardFocusManager#setDefaultFocusTraversalPolicy&#xA;@see KeyboardFocusManager#getDefaultFocusTraversalPolicy&#xA;@since 1.4&#xA;" annotatedElement="df62e602-f506-498f-9270-a657feeffa38"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="71118c4b-1846-422b-86d3-bca9c1c356c5" name="Dialog">
            <ownedComment xmi:id="3986b248-098b-4dee-a85f-7ca73fb12a1a" body="A Dialog is a top-level window with a title and a border&#xA;that is typically used to take some form of input from the user.&#xA;&#xA;The size of the dialog includes any area designated for the&#xA;border.  The dimensions of the border area can be obtained&#xA;using the &lt;code>getInsets&lt;/code> method, however, since&#xA;these dimensions are platform-dependent, a valid insets&#xA;value cannot be obtained until the dialog is made displayable&#xA;by either calling &lt;code>pack&lt;/code> or &lt;code>show&lt;/code>.&#xA;Since the border area is included in the overall size of the&#xA;dialog, the border effectively obscures a portion of the dialog,&#xA;constraining the area available for rendering and/or displaying&#xA;subcomponents to the rectangle which has an upper-left corner&#xA;location of &lt;code>(insets.left, insets.top)&lt;/code>, and has a size of&#xA;&lt;code>width - (insets.left + insets.right)&lt;/code> by&#xA;&lt;code>height - (insets.top + insets.bottom)&lt;/code>.&#xA;&lt;p>&#xA;The default layout for a dialog is &lt;code>BorderLayout&lt;/code>.&#xA;&lt;p>&#xA;A dialog may have its native decorations (i.e. Frame &amp; Titlebar) turned off&#xA;with &lt;code>setUndecorated&lt;/code>.  This can only be done while the dialog&#xA;is not {@link Component#isDisplayable() displayable}.&#xA;&lt;p>&#xA;A dialog must have either a frame or another dialog defined as its&#xA;owner when it's constructed.  When the owner window of a visible dialog&#xA;is minimized, the dialog will automatically be hidden&#xA;from the user. When the owner window is subsequently restored,&#xA;the dialog is made visible to the user again.&#xA;&lt;p>&#xA;In a multi-screen environment, you can create a &lt;code>Dialog&lt;/code>&#xA;on a different screen device than its owner.  See {@link java.awt.Frame} for&#xA;more information.&#xA;&lt;p>&#xA;A dialog can be either modeless (the default) or modal.  A modal&#xA;dialog is one which blocks input to all other toplevel windows&#xA;in the application, except for any windows created with the dialog&#xA;as their owner.&#xA;&lt;p>&#xA;Dialogs are capable of generating the following&#xA;&lt;code>WindowEvents&lt;/code>:&#xA;&lt;code>WindowOpened&lt;/code>, &lt;code>WindowClosing&lt;/code>,&#xA;&lt;code>WindowClosed&lt;/code>, &lt;code>WindowActivated&lt;/code>,&#xA;&lt;code>WindowDeactivated&lt;/code>, &lt;code>WindowGainedFocus&lt;/code>,&#xA;&lt;code>WindowLostFocus&lt;/code>.&#xA;&#xA;@see WindowEvent&#xA;@see Window#addWindowListener&#xA;&#xA;@version &#x9;1.99, 05/18/04&#xA;@author &#x9;Sami Shaio&#xA;@author &#x9;Arthur van Hoff&#xA;@since       JDK1.0&#xA;" annotatedElement="71118c4b-1846-422b-86d3-bca9c1c356c5"/>
            <generalization xmi:id="cc66e92d-836e-440e-8f1e-f2acccfb4be1" isSubstitutable="true" general="faf9dec5-0a30-4718-8e3b-b6424fcd0d20"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8c76d63e-8851-4127-be0d-dfb5d29271a0" name="WakingRunnable" visibility="package" clientDependency="bc830859-d183-4ac7-95a1-34887b9c5e28" isLeaf="true">
              <interfaceRealization xmi:id="bc830859-d183-4ac7-95a1-34887b9c5e28" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="8c76d63e-8851-4127-be0d-dfb5d29271a0" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="712b03c5-a30e-4548-a571-ce294584564f" name="AccessibleAWTDialog" visibility="protected">
              <ownedComment xmi:id="b04e4833-4309-4e0e-bc0d-a46b61820482" body="This class implements accessibility support for the&#xA;&lt;code>Dialog&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to dialog user-interface elements.&#xA;" annotatedElement="712b03c5-a30e-4548-a571-ce294584564f"/>
              <generalization xmi:id="6de4a6bf-02e6-44bd-a4e1-f8bcb9808705" isSubstitutable="true" general="d832de57-0f38-42c5-a24f-61a67b23d7e5"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="86235578-7129-4994-a116-fc732fa0afc9" name="Composite" isAbstract="true">
            <ownedComment xmi:id="2fdd100a-7073-4e93-bed4-2bb2d3e22585" body="The &lt;code>Composite&lt;/code> interface, along with&#xA;{@link CompositeContext}, defines the methods to compose a draw&#xA;primitive with the underlying graphics area.&#xA;After the &lt;code>Composite&lt;/code> is set in the&#xA;{@link Graphics2D} context, it combines a shape, text, or an image&#xA;being rendered with the colors that have already been rendered&#xA;according to pre-defined rules. The classes&#xA;implementing this interface provide the rules and a method to create&#xA;the context for a particular operation.&#xA;&lt;code>CompositeContext&lt;/code> is an environment used by the&#xA;compositing operation, which is created by the &lt;code>Graphics2D&lt;/code>&#xA;prior to the start of the operation.  &lt;code>CompositeContext&lt;/code>&#xA;contains private information and resources needed for a compositing&#xA;operation.  When the &lt;code>CompositeContext&lt;/code> is no longer needed,&#xA;the &lt;code>Graphics2D&lt;/code> object disposes of it in order to reclaim&#xA;resources allocated for the operation.&#xA;&lt;p>&#xA;Instances of classes implementing &lt;code>Composite&lt;/code> must be&#xA;immutable because the &lt;code>Graphics2D&lt;/code> does not clone&#xA;these objects when they are set as an attribute with the&#xA;&lt;code>setComposite&lt;/code> method or when the &lt;code>Graphics2D&lt;/code>&#xA;object is cloned.  This is to avoid undefined rendering behavior of&#xA;&lt;code>Graphics2D&lt;/code>, resulting from the modification of&#xA;the &lt;code>Composite&lt;/code> object after it has been set in the&#xA;&lt;code>Graphics2D&lt;/code> context.&#xA;&lt;p>&#xA;Since this interface must expose the contents of pixels on the&#xA;target device or image to potentially arbitrary code, the use of&#xA;custom objects which implement this interface when rendering directly&#xA;to a screen device is governed by the &lt;code>readDisplayPixels&lt;/code>&#xA;{@link AWTPermission}.  The permission check will occur when such&#xA;a custom object is passed to the &lt;code>setComposite&lt;/code> method&#xA;of a &lt;code>Graphics2D&lt;/code> retrieved from a {@link Component}.&#xA;@see AlphaComposite&#xA;@see CompositeContext&#xA;@see Graphics2D#setComposite&#xA;@version 10 Feb 1997&#xA;" annotatedElement="86235578-7129-4994-a116-fc732fa0afc9"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="191560cb-1b65-4ae2-8c63-c1f29b451549" name="DefaultFocusTraversalPolicy">
            <ownedComment xmi:id="d4d00ca9-801d-4035-ad75-e010a9bbde69" body="A FocusTraversalPolicy that determines traversal order based on the order&#xA;of child Components in a Container. From a particular focus cycle root, the&#xA;policy makes a pre-order traversal of the Component hierarchy, and traverses&#xA;a Container's children according to the ordering of the array returned by&#xA;&lt;code>Container.getComponents()&lt;/code>. Portions of the hierarchy that are&#xA;not visible and displayable will not be searched.&#xA;&lt;p>&#xA;If client code has explicitly set the focusability of a Component by either&#xA;overriding &lt;code>Component.isFocusTraversable()&lt;/code> or&#xA;&lt;code>Component.isFocusable()&lt;/code>, or by calling&#xA;&lt;code>Component.setFocusable()&lt;/code>, then a DefaultFocusTraversalPolicy&#xA;behaves exactly like a ContainerOrderFocusTraversalPolicy. If, however, the&#xA;Component is relying on default focusability, then a&#xA;DefaultFocusTraversalPolicy will reject all Components with non-focusable&#xA;peers. This is the default FocusTraversalPolicy for all AWT Containers.&#xA;&lt;p>&#xA;The focusability of a peer is implementation-dependent. Sun recommends that&#xA;all implementations for a particular native platform construct peers with&#xA;the same focusability. The recommendations for Windows and Unix are that&#xA;Canvases, Labels, Panels, Scrollbars, ScrollPanes, Windows, and lightweight&#xA;Components have non-focusable peers, and all other Components have focusable&#xA;peers. These recommendations are used in the Sun AWT implementations. Note&#xA;that the focusability of a Component's peer is different from, and does not&#xA;impact, the focusability of the Component itself.&#xA;&lt;p>&#xA;Please see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html&quot;>&#xA;How to Use the Focus Subsystem&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>, and the&#xA;&lt;a href=&quot;../../java/awt/doc-files/FocusSpec.html&quot;>Focus Specification&lt;/a>&#xA;for more information.&#xA;&#xA;@author David Mendenhall&#xA;@version 1.5, 12/19/03&#xA;&#xA;@see Container#getComponents&#xA;@see Component#isFocusable&#xA;@see Component#setFocusable&#xA;@since 1.4&#xA;" annotatedElement="191560cb-1b65-4ae2-8c63-c1f29b451549"/>
            <generalization xmi:id="0f37b4ac-89d5-4f87-926c-846c9fa1a99e" isSubstitutable="true" general="80ce0e2c-30ad-43c9-b048-03cf7abf9639"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7b3833cf-d6a9-4a7f-a61d-7a900b97b22f" name="MouseInfo">
            <ownedComment xmi:id="0b7c9231-d362-4ccd-aa99-f8a1f69383c9" body="&lt;code>MouseInfo&lt;/code>  provides methods for getting information about the mouse,&#xA;such as mouse pointer location and the number of mouse buttons.&#xA;&#xA;@version    1.2, 12/19/03&#xA;@author     Roman Poborchiy&#xA;@since 1.5&#xA;" annotatedElement="7b3833cf-d6a9-4a7f-a61d-7a900b97b22f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="84b0dd69-8bb5-461f-8f37-f1604b5c3fd8" name="Font" clientDependency="ae008710-4e71-4f58-a5c6-b8823cca211f">
            <ownedComment xmi:id="86ca9240-d831-42d6-bc52-3ac95e424e77" body="The &lt;code>Font&lt;/code> class represents fonts, which are used to&#xA;render text in a visible way.&#xA;A font provides the information needed to map sequences of&#xA;&lt;em>characters&lt;/em> to sequences of &lt;em>glyphs&lt;/em>&#xA;and to render sequences of glyphs on &lt;code>Graphics&lt;/code> and&#xA;&lt;code>Component&lt;/code> objects.&#xA;&#xA;&lt;h4>Characters and Glyphs&lt;/h4>&#xA;&#xA;A &lt;em>character&lt;/em> is a symbol that represents an item such as a letter,&#xA;a digit, or punctuation in an abstract way. For example, &lt;code>'g'&lt;/code>,&#xA;&lt;font size=-1>LATIN SMALL LETTER G&lt;/font>, is a character.&#xA;&lt;p>&#xA;A &lt;em>glyph&lt;/em> is a shape used to render a character or a sequence of&#xA;characters. In simple writing systems, such as Latin, typically one glyph&#xA;represents one character. In general, however, characters and glyphs do not&#xA;have one-to-one correspondence. For example, the character '&amp;aacute;'&#xA;&lt;font size=-1>LATIN SMALL LETTER A WITH ACUTE&lt;/font>, can be represented by&#xA;two glyphs: one for 'a' and one for '&amp;acute;'. On the other hand, the&#xA;two-character string &quot;fi&quot; can be represented by a single glyph, an&#xA;&quot;fi&quot; ligature. In complex writing systems, such as Arabic or the South&#xA;and South-East Asian writing systems, the relationship between characters&#xA;and glyphs can be more complicated and involve context-dependent selection&#xA;of glyphs as well as glyph reordering.&#xA;&#xA;A font encapsulates the collection of glyphs needed to render a selected set&#xA;of characters as well as the tables needed to map sequences of characters to&#xA;corresponding sequences of glyphs.&#xA;&#xA;&lt;h4>Physical and Logical Fonts&lt;/h4>&#xA;&#xA;The Java 2 platform distinguishes between two kinds of fonts:&#xA;&lt;em>physical&lt;/em> fonts and &lt;em>logical&lt;/em> fonts.&#xA;&lt;p>&#xA;&lt;em>Physical&lt;/em> fonts are the actual font libraries containing glyph data&#xA;and tables to map from character sequences to glyph sequences, using a font&#xA;technology such as TrueType or PostScript Type 1.&#xA;All implementations of the Java 2 platform must support TrueType fonts;&#xA;support for other font technologies is implementation dependent.&#xA;Physical fonts may use names such as Helvetica, Palatino, HonMincho, or&#xA;any number of other font names.&#xA;Typically, each physical font supports only a limited set of writing&#xA;systems, for example, only Latin characters or only Japanese and Basic&#xA;Latin.&#xA;The set of available physical fonts varies between configurations.&#xA;Applications that require specific fonts can bundle them and instantiate&#xA;them using the {@link #createFont createFont} method.&#xA;&lt;p>&#xA;&lt;em>Logical&lt;/em> fonts are the five font families defined by the Java&#xA;platform which must be supported by any Java runtime environment:&#xA;Serif, SansSerif, Monospaced, Dialog, and DialogInput.&#xA;These logical fonts are not actual font libraries. Instead, the logical&#xA;font names are mapped to physical fonts by the Java runtime environment.&#xA;The mapping is implementation and usually locale dependent, so the look&#xA;and the metrics provided by them vary.&#xA;Typically, each logical font name maps to several physical fonts in order to&#xA;cover a large range of characters.&#xA;&lt;p>&#xA;Peered AWT components, such as {@link Label Label} and&#xA;{@link TextField TextField}, can only use logical fonts.&#xA;&lt;p>&#xA;For a discussion of the relative advantages and disadvantages of using&#xA;physical or logical fonts, see the&#xA;&lt;a href=&quot;http://java.sun.com/j2se/corejava/intl/reference/faqs/index.html#desktop-rendering&quot;>Internationalization FAQ&lt;/a>&#xA;document.&#xA;&#xA;&lt;h4>Font Faces and Names&lt;/h4>&#xA;&#xA;A &lt;code>Font&lt;/code>&#xA;can have many faces, such as heavy, medium, oblique, gothic and&#xA;regular. All of these faces have similar typographic design.&#xA;&lt;p>&#xA;There are three different names that you can get from a&#xA;&lt;code>Font&lt;/code> object.  The &lt;em>logical font name&lt;/em> is simply the&#xA;name that was used to construct the font.&#xA;The &lt;em>font face name&lt;/em>, or just &lt;em>font name&lt;/em> for&#xA;short, is the name of a particular font face, like Helvetica Bold. The&#xA;&lt;em>family name&lt;/em> is the name of the font family that determines the&#xA;typographic design across several faces, like Helvetica.&#xA;&lt;p>&#xA;The &lt;code>Font&lt;/code> class represents an instance of a font face from&#xA;a collection of  font faces that are present in the system resources&#xA;of the host system.  As examples, Arial Bold and Courier Bold Italic&#xA;are font faces.  There can be several &lt;code>Font&lt;/code> objects&#xA;associated with a font face, each differing in size, style, transform&#xA;and font features.&#xA;The {@link GraphicsEnvironment#getAllFonts() getAllFonts} method&#xA;of the &lt;code>GraphicsEnvironment&lt;/code> class returns an&#xA;array of all font faces available in the system. These font faces are&#xA;returned as &lt;code>Font&lt;/code> objects with a size of 1, identity&#xA;transform and default font features. These&#xA;base fonts can then be used to derive new &lt;code>Font&lt;/code> objects&#xA;with varying sizes, styles, transforms and font features via the&#xA;&lt;code>deriveFont&lt;/code> methods in this class.&#xA;&#xA;@version &#x9;1.200, 07/20/04&#xA;" annotatedElement="84b0dd69-8bb5-461f-8f37-f1604b5c3fd8"/>
            <interfaceRealization xmi:id="ae008710-4e71-4f58-a5c6-b8823cca211f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="84b0dd69-8bb5-461f-8f37-f1604b5c3fd8" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="1abd3310-22b9-4e87-9801-28a7c084dd9c" name="Key" visibility="private"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f203c7d9-fbf5-43c0-9642-ea3520453d3e" name="Graphics2D" isAbstract="true">
            <ownedComment xmi:id="71ae2907-0580-46b5-9b69-d384b6885edc" body="This &lt;code>Graphics2D&lt;/code> class extends the&#xA;{@link Graphics} class to provide more sophisticated&#xA;control over geometry, coordinate transformations, color management,&#xA;and text layout.  This is the fundamental class for rendering&#xA;2-dimensional shapes, text and images on the  Java(tm) platform.&#xA;&lt;p>&#xA;&lt;h2>Coordinate Spaces&lt;/h2>&#xA;All coordinates passed to a &lt;code>Graphics2D&lt;/code> object are specified&#xA;in a device-independent coordinate system called User Space, which is&#xA;used by applications.  The &lt;code>Graphics2D&lt;/code> object contains&#xA;an {@link AffineTransform} object as part of its rendering state&#xA;that defines how to convert coordinates from user space to&#xA;device-dependent coordinates in Device Space.&#xA;&lt;p>&#xA;Coordinates in device space usually refer to individual device pixels&#xA;and are aligned on the infinitely thin gaps between these pixels.&#xA;Some &lt;code>Graphics2D&lt;/code> objects can be used to capture rendering&#xA;operations for storage into a graphics metafile for playback on a&#xA;concrete device of unknown physical resolution at a later time.  Since&#xA;the resolution might not be known when the rendering operations are&#xA;captured, the &lt;code>Graphics2D&lt;/code> &lt;code>Transform&lt;/code> is set up&#xA;to transform user coordinates to a virtual device space that&#xA;approximates the expected resolution of the target device. Further&#xA;transformations might need to be applied at playback time if the&#xA;estimate is incorrect.&#xA;&lt;p>&#xA;Some of the operations performed by the rendering attribute objects&#xA;occur in the device space, but all &lt;code>Graphics2D&lt;/code> methods take&#xA;user space coordinates.&#xA;&lt;p>&#xA;Every &lt;code>Graphics2D&lt;/code> object is associated with a target that&#xA;defines where rendering takes place. A&#xA;{@link GraphicsConfiguration} object defines the characteristics&#xA;of the rendering target, such as pixel format and resolution.&#xA;The same rendering target is used throughout the life of a&#xA;&lt;code>Graphics2D&lt;/code> object.&#xA;&lt;p>&#xA;When creating a &lt;code>Graphics2D&lt;/code> object,  the&#xA;&lt;code>GraphicsConfiguration&lt;/code>&#xA;specifies the &lt;a name=&quot;#deftransform&quot;>default transform&lt;/a> for&#xA;the target of the &lt;code>Graphics2D&lt;/code> (a&#xA;{@link Component} or {@link Image}).  This default transform maps the&#xA;user space coordinate system to screen and printer device coordinates&#xA;such that the origin maps to the upper left hand corner of the&#xA;target region of the device with increasing X coordinates extending&#xA;to the right and increasing Y coordinates extending downward.&#xA;The scaling of the default transform is set to identity for those devices&#xA;that are close to 72 dpi, such as screen devices.&#xA;The scaling of the default transform is set to approximately 72 user&#xA;space coordinates per square inch for high resolution devices, such as&#xA;printers.  For image buffers, the default transform is the&#xA;&lt;code>Identity&lt;/code> transform.&#xA;&#xA;&lt;h2>Rendering Process&lt;/h2>&#xA;The Rendering Process can be broken down into four phases that are&#xA;controlled by the &lt;code>Graphics2D&lt;/code> rendering attributes.&#xA;The renderer can optimize many of these steps, either by caching the&#xA;results for future calls, by collapsing multiple virtual steps into&#xA;a single operation, or by recognizing various attributes as common&#xA;simple cases that can be eliminated by modifying other parts of the&#xA;operation.&#xA;&lt;p>&#xA;The steps in the rendering process are:&#xA;&lt;ol>&#xA;&lt;li>&#xA;Determine what to render.&#xA;&lt;li>&#xA;Constrain the rendering operation to the current &lt;code>Clip&lt;/code>.&#xA;The &lt;code>Clip&lt;/code> is specified by a {@link Shape} in user&#xA;space and is controlled by the program using the various clip&#xA;manipulation methods of &lt;code>Graphics&lt;/code> and&#xA;&lt;code>Graphics2D&lt;/code>.  This &lt;i>user clip&lt;/i>&#xA;is transformed into device space by the current&#xA;&lt;code>Transform&lt;/code> and combined with the&#xA;&lt;i>device clip&lt;/i>, which is defined by the visibility of windows and&#xA;device extents.  The combination of the user clip and device clip&#xA;defines the &lt;i>composite clip&lt;/i>, which determines the final clipping&#xA;region.  The user clip is not modified by the rendering&#xA;system to reflect the resulting composite clip.&#xA;&lt;li>&#xA;Determine what colors to render.&#xA;&lt;li>&#xA;Apply the colors to the destination drawing surface using the current&#xA;{@link Composite} attribute in the &lt;code>Graphics2D&lt;/code> context.&#xA;&lt;/ol>&#xA;&lt;br>&#xA;The three types of rendering operations, along with details of each&#xA;of their particular rendering processes are:&#xA;&lt;ol>&#xA;&lt;li>&#xA;&lt;b>&lt;a name=&quot;rendershape&quot;>&lt;code>Shape&lt;/code> operations&lt;/a>&lt;/b>&#xA;&lt;ol>&#xA;&lt;li>&#xA;If the operation is a &lt;code>draw(Shape)&lt;/code> operation, then&#xA;the  {@link Stroke#createStrokedShape(Shape) createStrokedShape}&#xA;method on the current {@link Stroke} attribute in the&#xA;&lt;code>Graphics2D&lt;/code> context is used to construct a new&#xA;&lt;code>Shape&lt;/code> object that contains the outline of the specified&#xA;&lt;code>Shape&lt;/code>.&#xA;&lt;li>&#xA;The &lt;code>Shape&lt;/code> is transformed from user space to device space&#xA;using the current &lt;code>Transform&lt;/code>&#xA;in the &lt;code>Graphics2D&lt;/code> context.&#xA;&lt;li>&#xA;The outline of the &lt;code>Shape&lt;/code> is extracted using the&#xA;{@link Shape#getPathIterator(AffineTransform) getPathIterator} method of&#xA;&lt;code>Shape&lt;/code>, which returns a&#xA;{@link java.awt.geom.PathIterator PathIterator}&#xA;object that iterates along the boundary of the &lt;code>Shape&lt;/code>.&#xA;&lt;li>&#xA;If the &lt;code>Graphics2D&lt;/code> object cannot handle the curved segments&#xA;that the &lt;code>PathIterator&lt;/code> object returns then it can call the&#xA;alternate&#xA;{@link Shape#getPathIterator(AffineTransform, double) getPathIterator}&#xA;method of &lt;code>Shape&lt;/code>, which flattens the &lt;code>Shape&lt;/code>.&#xA;&lt;li>&#xA;The current {@link Paint} in the &lt;code>Graphics2D&lt;/code> context&#xA;is queried for a {@link PaintContext}, which specifies the&#xA;colors to render in device space.&#xA;&lt;/ol>&#xA;&lt;li>&#xA;&lt;b>&lt;a name=rendertext>Text operations&lt;/a>&lt;/b>&#xA;&lt;ol>&#xA;&lt;li>&#xA;The following steps are used to determine the set of glyphs required&#xA;to render the indicated &lt;code>String&lt;/code>:&#xA;&lt;ol>&#xA;&lt;li>&#xA;If the argument is a &lt;code>String&lt;/code>, then the current&#xA;&lt;code>Font&lt;/code> in the &lt;code>Graphics2D&lt;/code> context is asked to&#xA;convert the Unicode characters in the &lt;code>String&lt;/code> into a set of&#xA;glyphs for presentation with whatever basic layout and shaping&#xA;algorithms the font implements.&#xA;&lt;li>&#xA;If the argument is an&#xA;{@link AttributedCharacterIterator},&#xA;the iterator is asked to convert itself to a&#xA;{@link java.awt.font.TextLayout TextLayout}&#xA;using its embedded font attributes. The &lt;code>TextLayout&lt;/code>&#xA;implements more sophisticated glyph layout algorithms that&#xA;perform Unicode bi-directional layout adjustments automatically&#xA;for multiple fonts of differing writing directions.&#xA;&lt;li>&#xA;If the argument is a&#xA;{@link GlyphVector}, then the&#xA;&lt;code>GlyphVector&lt;/code> object already contains the appropriate&#xA;font-specific glyph codes with explicit coordinates for the position of&#xA;each glyph.&#xA;&lt;/ol>&#xA;&lt;li>&#xA;The current &lt;code>Font&lt;/code> is queried to obtain outlines for the&#xA;indicated glyphs.  These outlines are treated as shapes in user space&#xA;relative to the position of each glyph that was determined in step 1.&#xA;&lt;li>&#xA;The character outlines are filled as indicated above&#xA;under &lt;a href=&quot;#rendershape&quot;>&lt;code>Shape&lt;/code> operations&lt;/a>.&#xA;&lt;li>&#xA;The current &lt;code>Paint&lt;/code> is queried for a&#xA;&lt;code>PaintContext&lt;/code>, which specifies&#xA;the colors to render in device space.&#xA;&lt;/ol>&#xA;&lt;li>&#xA;&lt;b>&lt;a name= renderingimage>&lt;code>Image&lt;/code> Operations&lt;/a>&lt;/b>&#xA;&lt;ol>&#xA;&lt;li>&#xA;The region of interest is defined by the bounding box of the source&#xA;&lt;code>Image&lt;/code>.&#xA;This bounding box is specified in Image Space, which is the&#xA;&lt;code>Image&lt;/code> object's local coordinate system.&#xA;&lt;li>&#xA;If an &lt;code>AffineTransform&lt;/code> is passed to&#xA;{@link #drawImage(java.awt.Image, java.awt.geom.AffineTransform, java.awt.image.ImageObserver) drawImage(Image, AffineTransform, ImageObserver)},&#xA;the &lt;code>AffineTransform&lt;/code> is used to transform the bounding&#xA;box from image space to user space. If no &lt;code>AffineTransform&lt;/code>&#xA;is supplied, the bounding box is treated as if it is already in user space.&#xA;&lt;li>&#xA;The bounding box of the source &lt;code>Image&lt;/code> is transformed from user&#xA;space into device space using the current &lt;code>Transform&lt;/code>.&#xA;Note that the result of transforming the bounding box does not&#xA;necessarily result in a rectangular region in device space.&#xA;&lt;li>&#xA;The &lt;code>Image&lt;/code> object determines what colors to render,&#xA;sampled according to the source to destination&#xA;coordinate mapping specified by the current &lt;code>Transform&lt;/code> and the&#xA;optional image transform.&#xA;&lt;/ol>&#xA;&lt;/ol>&#xA;&#xA;&lt;h2>Default Rendering Attributes&lt;/h2>&#xA;The default values for the &lt;code>Graphics2D&lt;/code> rendering attributes are:&#xA;&lt;dl compact>&#xA;&lt;dt>&lt;i>&lt;code>Paint&lt;/code>&lt;/i>&#xA;&lt;dd>The color of the &lt;code>Component&lt;/code>.&#xA;&lt;dt>&lt;i>&lt;code>Font&lt;/code>&lt;/i>&#xA;&lt;dd>The &lt;code>Font&lt;/code> of the &lt;code>Component&lt;/code>.&#xA;&lt;dt>&lt;i>&lt;code>Stroke&lt;/code>&lt;/i>&#xA;&lt;dd>A square pen with a linewidth of 1, no dashing, miter segment joins&#xA;and square end caps.&#xA;&lt;dt>&lt;i>&lt;code>Transform&lt;/code>&lt;/i>&#xA;&lt;dd>The&#xA;{@link GraphicsConfiguration#getDefaultTransform() getDefaultTransform}&#xA;for the &lt;code>GraphicsConfiguration&lt;/code> of the &lt;code>Component&lt;/code>.&#xA;&lt;dt>&lt;i>&lt;code>Composite&lt;/code>&lt;/i>&#xA;&lt;dd>The {@link AlphaComposite#SRC_OVER} rule.&#xA;&lt;dt>&lt;i>&lt;code>Clip&lt;/code>&lt;/i>&#xA;&lt;dd>No rendering &lt;code>Clip&lt;/code>, the output is clipped to the&#xA;&lt;code>Component&lt;/code>.&#xA;&lt;/dl>&#xA;&#xA;&lt;h2>Rendering Compatibility Issues&lt;/h2>&#xA;The JDK(tm) 1.1 rendering model is based on a pixelization model&#xA;that specifies that coordinates&#xA;are infinitely thin, lying between the pixels.  Drawing operations are&#xA;performed using a one-pixel wide pen that fills the&#xA;pixel below and to the right of the anchor point on the path.&#xA;The JDK 1.1 rendering model is consistent with the&#xA;capabilities of most of the existing class of platform&#xA;renderers that need  to resolve integer coordinates to a&#xA;discrete pen that must fall completely on a specified number of pixels.&#xA;&lt;p>&#xA;The Java 2D(tm) (Java(tm) 2 platform) API supports antialiasing renderers.&#xA;A pen with a width of one pixel does not need to fall&#xA;completely on pixel N as opposed to pixel N+1.  The pen can fall&#xA;partially on both pixels. It is not necessary to choose a bias&#xA;direction for a wide pen since the blending that occurs along the&#xA;pen traversal edges makes the sub-pixel position of the pen&#xA;visible to the user.  On the other hand, when antialiasing is&#xA;turned off by setting the&#xA;{@link RenderingHints#KEY_ANTIALIASING KEY_ANTIALIASING} hint key&#xA;to the&#xA;{@link RenderingHints#VALUE_ANTIALIAS_OFF VALUE_ANTIALIAS_OFF}&#xA;hint value, the renderer might need&#xA;to apply a bias to determine which pixel to modify when the pen&#xA;is straddling a pixel boundary, such as when it is drawn&#xA;along an integer coordinate in device space.  While the capabilities&#xA;of an antialiasing renderer make it no longer necessary for the&#xA;rendering model to specify a bias for the pen, it is desirable for the&#xA;antialiasing and non-antialiasing renderers to perform similarly for&#xA;the common cases of drawing one-pixel wide horizontal and vertical&#xA;lines on the screen.  To ensure that turning on antialiasing by&#xA;setting the&#xA;{@link RenderingHints#KEY_ANTIALIASING KEY_ANTIALIASING} hint&#xA;key to&#xA;{@link RenderingHints#VALUE_ANTIALIAS_ON VALUE_ANTIALIAS_ON}&#xA;does not cause such lines to suddenly become twice as wide and half&#xA;as opaque, it is desirable to have the model specify a path for such&#xA;lines so that they completely cover a particular set of pixels to help&#xA;increase their crispness.&#xA;&lt;p>&#xA;Java 2D API maintains compatibility with JDK 1.1 rendering&#xA;behavior, such that legacy operations and existing renderer&#xA;behavior is unchanged under Java 2D API.  Legacy&#xA;methods that map onto general &lt;code>draw&lt;/code> and&#xA;&lt;code>fill&lt;/code> methods are defined, which clearly indicates&#xA;how &lt;code>Graphics2D&lt;/code> extends &lt;code>Graphics&lt;/code> based&#xA;on settings of &lt;code>Stroke&lt;/code> and &lt;code>Transform&lt;/code>&#xA;attributes and rendering hints.  The definition&#xA;performs identically under default attribute settings.&#xA;For example, the default &lt;code>Stroke&lt;/code> is a&#xA;&lt;code>BasicStroke&lt;/code> with a width of 1 and no dashing and the&#xA;default Transform for screen drawing is an Identity transform.&#xA;&lt;p>&#xA;The following two rules provide predictable rendering behavior whether&#xA;aliasing or antialiasing is being used.&#xA;&lt;ul>&#xA;&lt;li> Device coordinates are defined to be between device pixels which&#xA;avoids any inconsistent results between aliased and antaliased&#xA;rendering.  If coordinates were defined to be at a pixel's center, some&#xA;of the pixels covered by a shape, such as a rectangle, would only be&#xA;half covered.&#xA;With aliased rendering, the half covered pixels would either be&#xA;rendered inside the shape or outside the shape.  With anti-aliased&#xA;rendering, the pixels on the entire edge of the shape would be half&#xA;covered.  On the other hand, since coordinates are defined to be&#xA;between pixels, a shape like a rectangle would have no half covered&#xA;pixels, whether or not it is rendered using antialiasing.&#xA;&lt;li> Lines and paths stroked using the &lt;code>BasicStroke&lt;/code>&#xA;object may be &quot;normalized&quot; to provide consistent rendering of the&#xA;outlines when positioned at various points on the drawable and&#xA;whether drawn with aliased or antialiased rendering.  This&#xA;normalization process is controlled by the&#xA;{@link RenderingHints#KEY_STROKE_CONTROL KEY_STROKE_CONTROL} hint.&#xA;The exact normalization algorithm is not specified, but the goals&#xA;of this normalization are to ensure that lines are rendered with&#xA;consistent visual appearance regardless of how they fall on the&#xA;pixel grid and to promote more solid horizontal and vertical&#xA;lines in antialiased mode so that they resemble their non-antialiased&#xA;counterparts more closely.  A typical normalization step might&#xA;promote antialiased line endpoints to pixel centers to reduce the&#xA;amount of blending or adjust the subpixel positioning of&#xA;non-antialiased lines so that the floating point line widths&#xA;round to even or odd pixel counts with equal likelihood.  This&#xA;process can move endpoints by up to half a pixel (usually towards&#xA;positive infinity along both axes) to promote these consistent&#xA;results.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;The following definitions of general legacy methods&#xA;perform identically to previously specified behavior under default&#xA;attribute settings:&#xA;&lt;ul>&#xA;&lt;li>&#xA;For &lt;code>fill&lt;/code> operations, including &lt;code>fillRect&lt;/code>,&#xA;&lt;code>fillRoundRect&lt;/code>, &lt;code>fillOval&lt;/code>,&#xA;&lt;code>fillArc&lt;/code>, &lt;code>fillPolygon&lt;/code>, and&#xA;&lt;code>clearRect&lt;/code>, {@link #fill(Shape) fill} can now be called&#xA;with the desired &lt;code>Shape&lt;/code>.  For example, when filling a&#xA;rectangle:&#xA;&lt;pre>&#xA;fill(new Rectangle(x, y, w, h));&#xA;&lt;/pre>&#xA;is called.&#xA;&lt;p>&#xA;&lt;li>&#xA;Similarly, for draw operations, including &lt;code>drawLine&lt;/code>,&#xA;&lt;code>drawRect&lt;/code>, &lt;code>drawRoundRect&lt;/code>,&#xA;&lt;code>drawOval&lt;/code>, &lt;code>drawArc&lt;/code>, &lt;code>drawPolyline&lt;/code>,&#xA;and &lt;code>drawPolygon&lt;/code>, {@link #draw(Shape) draw} can now be&#xA;called with the desired &lt;code>Shape&lt;/code>.  For example, when drawing a&#xA;rectangle:&#xA;&lt;pre>&#xA;draw(new Rectangle(x, y, w, h));&#xA;&lt;/pre>&#xA;is called.&#xA;&lt;p>&#xA;&lt;li>&#xA;The &lt;code>draw3DRect&lt;/code> and &lt;code>fill3DRect&lt;/code> methods were&#xA;implemented in terms of the &lt;code>drawLine&lt;/code> and&#xA;&lt;code>fillRect&lt;/code> methods in the &lt;code>Graphics&lt;/code> class which&#xA;would predicate their behavior upon the current &lt;code>Stroke&lt;/code>&#xA;and &lt;code>Paint&lt;/code> objects in a &lt;code>Graphics2D&lt;/code> context.&#xA;This class overrides those implementations with versions that use&#xA;the current &lt;code>Color&lt;/code> exclusively, overriding the current&#xA;&lt;code>Paint&lt;/code> and which uses &lt;code>fillRect&lt;/code> to describe&#xA;the exact same behavior as the preexisting methods regardless of the&#xA;setting of the current &lt;code>Stroke&lt;/code>.&#xA;&lt;/ul>&#xA;The &lt;code>Graphics&lt;/code> class defines only the &lt;code>setColor&lt;/code>&#xA;method to control the color to be painted.  Since the Java 2D API extends&#xA;the &lt;code>Color&lt;/code> object to implement the new &lt;code>Paint&lt;/code>&#xA;interface, the existing&#xA;&lt;code>setColor&lt;/code> method is now a convenience method for setting the&#xA;current &lt;code>Paint&lt;/code> attribute to a &lt;code>Color&lt;/code> object.&#xA;&lt;code>setColor(c)&lt;/code> is equivalent to &lt;code>setPaint(c)&lt;/code>.&#xA;&lt;p>&#xA;The &lt;code>Graphics&lt;/code> class defines two methods for controlling&#xA;how colors are applied to the destination.&#xA;&lt;ol>&#xA;&lt;li>&#xA;The &lt;code>setPaintMode&lt;/code> method is implemented as a convenience&#xA;method to set the default &lt;code>Composite&lt;/code>, equivalent to&#xA;&lt;code>setComposite(new AlphaComposite.SrcOver)&lt;/code>.&#xA;&lt;li>&#xA;The &lt;code>setXORMode(Color xorcolor)&lt;/code> method is implemented&#xA;as a convenience method to set a special &lt;code>Composite&lt;/code> object that&#xA;ignores the &lt;code>Alpha&lt;/code> components of source colors and sets the&#xA;destination color to the value:&#xA;&lt;pre>&#xA;dstpixel = (PixelOf(srccolor) ^ PixelOf(xorcolor) ^ dstpixel);&#xA;&lt;/pre>&#xA;&lt;/ol>&#xA;&#xA;@version &#x9;1.81, 05/05/04&#xA;@author Jim Graham&#xA;@see java.awt.RenderingHints&#xA;" annotatedElement="f203c7d9-fbf5-43c0-9642-ea3520453d3e"/>
            <generalization xmi:id="ca23b1ce-9dbf-4cb6-84e3-302b7304cb0b" isSubstitutable="true" general="d2ffb4de-d6fb-4ac8-abf2-5e6f98e72ba6"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="986aae5d-dff1-40ee-88f6-fb19dd9498ed" name="Toolkit" isAbstract="true">
            <ownedComment xmi:id="c62f21f4-6096-420f-b014-c29b1ef93f8e" body="This class is the abstract superclass of all actual&#xA;implementations of the Abstract Window Toolkit. Subclasses of&#xA;&lt;code>Toolkit&lt;/code> are used to bind the various components&#xA;to particular native toolkit implementations.&#xA;&lt;p>&#xA;Many GUI operations may be performed asynchronously.  This&#xA;means that if you set the state of a component, and then&#xA;immediately query the state, the returned value may not yet&#xA;reflect the requested change.  This includes, but is not&#xA;limited to:&#xA;&lt;ul>&#xA;&lt;li>Scrolling to a specified position.&#xA;&lt;br>For example, calling &lt;code>ScrollPane.setScrollPosition&lt;/code>&#xA;and then &lt;code>getScrollPosition&lt;/code> may return an incorrect&#xA;value if the original request has not yet been processed.&#xA;&lt;p>&#xA;&lt;li>Moving the focus from one component to another.&#xA;&lt;br>For more information, see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html#transferTiming&quot;>Timing&#xA;Focus Transfers&lt;/a>, a section in&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/&quot;>The Swing&#xA;Tutorial&lt;/a>.&#xA;&lt;p>&#xA;&lt;li>Making a top-level container visible.&#xA;&lt;br>Calling &lt;code>setVisible(true)&lt;/code> on a &lt;code>Window&lt;/code>,&#xA;&lt;code>Frame&lt;/code> or &lt;code>Dialog&lt;/code> may occur&#xA;asynchronously.&#xA;&lt;p>&#xA;&lt;li>Setting the size or location of a top-level container.&#xA;&lt;br>Calls to &lt;code>setSize&lt;/code>, &lt;code>setBounds&lt;/code> or&#xA;&lt;code>setLocation&lt;/code> on a &lt;code>Window&lt;/code>,&#xA;&lt;code>Frame&lt;/code> or &lt;code>Dialog&lt;/code> are forwarded&#xA;to the underlying window management system and may be&#xA;ignored or modified.  See {@link java.awt.Window} for&#xA;more information.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;Most applications should not call any of the methods in this&#xA;class directly. The methods defined by &lt;code>Toolkit&lt;/code> are&#xA;the &quot;glue&quot; that joins the platform-independent classes in the&#xA;&lt;code>java.awt&lt;/code> package with their counterparts in&#xA;&lt;code>java.awt.peer&lt;/code>. Some methods defined by&#xA;&lt;code>Toolkit&lt;/code> query the native operating system directly.&#xA;&#xA;@version &#x9;1.203, 12/19/03&#xA;@author&#x9;Sami Shaio&#xA;@author&#x9;Arthur van Hoff&#xA;@author&#x9;Fred Ecks&#xA;@since       JDK1.0&#xA;" annotatedElement="986aae5d-dff1-40ee-88f6-fb19dd9498ed"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="48f1971a-f0e0-4ac2-9216-d7c5ddf0013f" name="ToolkitEventMulticaster" visibility="private" clientDependency="564fdb32-cea3-488e-bb4e-e237a3465125">
              <generalization xmi:id="743983fc-a812-4104-a539-6def65aa1fe6" isSubstitutable="true" general="3dc6691a-e14e-466f-983f-ece5e2e63eda"/>
              <interfaceRealization xmi:id="564fdb32-cea3-488e-bb4e-e237a3465125" name="" supplier="44edb2fe-b050-4f4b-84d0-05d4b3301cb8" client="48f1971a-f0e0-4ac2-9216-d7c5ddf0013f" contract="44edb2fe-b050-4f4b-84d0-05d4b3301cb8"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="d1128557-acde-4796-a1a9-6a7102954654" name="SelectiveAWTEventListener" visibility="private" clientDependency="a160299d-a5ab-4199-9113-a0ab907d506b">
              <interfaceRealization xmi:id="a160299d-a5ab-4199-9113-a0ab907d506b" name="" supplier="44edb2fe-b050-4f4b-84d0-05d4b3301cb8" client="d1128557-acde-4796-a1a9-6a7102954654" contract="44edb2fe-b050-4f4b-84d0-05d4b3301cb8"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3dc6691a-e14e-466f-983f-ece5e2e63eda" name="AWTEventMulticaster" clientDependency="a203ede9-4b12-487b-b0ea-a8610c63c76c 601e8024-575c-4f75-8f30-969331bde799 66cfb163-b4b7-4819-84c2-ef69d56de21f 00f622a8-8f29-4f14-9768-c12520ae6afe 65b6356a-4841-4d44-9574-9aceeb139a8e a0880a8e-6ec9-44f5-a04e-b2f87c1644df 08815444-44ec-4a3d-960f-ce83683c0527 a0e84518-215c-4a1f-848c-74a3389c7f13 183ffff1-937a-4520-8151-75e1e687b87d 97e9cb86-d2af-445d-a316-f53a588b2aab cf8225d1-ca68-4cd2-bdb6-d839fca7a3aa 0542b2bc-c1f2-45c4-b5de-f36e3f30ab99 b9759560-4e53-46bd-9f2f-cc49750446fd 764d6ee9-7cba-4f66-b57b-1920820628c0 29c074dc-502e-414b-975b-1702d6c7aec1 12dcc3d3-9822-45e8-95e6-c50d6258bd6f 4754ba36-00f3-44f5-be47-70ee355d82d8">
            <ownedComment xmi:id="b9e296e1-4281-4544-a446-c91b89514194" body="A class which implements efficient and thread-safe multi-cast event&#xA;dispatching for the AWT events defined in the java.awt.event package.&#xA;This class will manage an immutable structure consisting of a chain of&#xA;event listeners and will dispatch events to those listeners.  Because&#xA;the structure is immutable, it is safe to use this API to add/remove&#xA;listeners during the process of an event dispatch operation.&#xA;However, event listeners added during the process of an event dispatch&#xA;operation will not be notified of the event currently being dispatched.&#xA;&#xA;An example of how this class could be used to implement a new&#xA;component which fires &quot;action&quot; events:&#xA;&#xA;&lt;pre>&lt;code>&#xA;public myComponent extends Component {&#xA;ActionListener actionListener = null;&#xA;&#xA;public synchronized void addActionListener(ActionListener l) {&#xA;actionListener = AWTEventMulticaster.add(actionListener, l);&#xA;}&#xA;public synchronized void removeActionListener(ActionListener l) {&#xA;actionListener = AWTEventMulticaster.remove(actionListener, l);&#xA;}&#xA;public void processEvent(AWTEvent e) {&#xA;when event occurs which causes &quot;action&quot; semantic&#xA;ActionListener listener = actionListener;&#xA;if (listener != null) {&#xA;listener.actionPerformed(new ActionEvent());&#xA;}&#xA;}&#xA;}&#xA;&lt;/code>&lt;/pre>&#xA;&#xA;@author      John Rose&#xA;@author &#x9;Amy Fowler&#xA;@version &#x9;1.37, 05/05/04&#xA;@since &#x9;1.1&#xA;" annotatedElement="3dc6691a-e14e-466f-983f-ece5e2e63eda"/>
            <interfaceRealization xmi:id="a0880a8e-6ec9-44f5-a04e-b2f87c1644df" name="" supplier="476f85cb-73d6-493e-8dda-f7ed06712460" client="3dc6691a-e14e-466f-983f-ece5e2e63eda" contract="476f85cb-73d6-493e-8dda-f7ed06712460"/>
            <interfaceRealization xmi:id="08815444-44ec-4a3d-960f-ce83683c0527" name="" supplier="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8" client="3dc6691a-e14e-466f-983f-ece5e2e63eda" contract="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8"/>
            <interfaceRealization xmi:id="a0e84518-215c-4a1f-848c-74a3389c7f13" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="3dc6691a-e14e-466f-983f-ece5e2e63eda" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
            <interfaceRealization xmi:id="183ffff1-937a-4520-8151-75e1e687b87d" name="" supplier="d0d97f9c-d8a0-4583-b30e-176f42c3f7e7" client="3dc6691a-e14e-466f-983f-ece5e2e63eda" contract="d0d97f9c-d8a0-4583-b30e-176f42c3f7e7"/>
            <interfaceRealization xmi:id="601e8024-575c-4f75-8f30-969331bde799" name="" supplier="d2bfccf2-94c5-4882-8d84-613f4ad53195" client="3dc6691a-e14e-466f-983f-ece5e2e63eda" contract="d2bfccf2-94c5-4882-8d84-613f4ad53195"/>
            <interfaceRealization xmi:id="00f622a8-8f29-4f14-9768-c12520ae6afe" name="" supplier="8747391f-bebd-47e3-888b-8e509ac223c9" client="3dc6691a-e14e-466f-983f-ece5e2e63eda" contract="8747391f-bebd-47e3-888b-8e509ac223c9"/>
            <interfaceRealization xmi:id="97e9cb86-d2af-445d-a316-f53a588b2aab" name="" supplier="10e58da0-0032-467f-9dec-983a8fcb7211" client="3dc6691a-e14e-466f-983f-ece5e2e63eda" contract="10e58da0-0032-467f-9dec-983a8fcb7211"/>
            <interfaceRealization xmi:id="cf8225d1-ca68-4cd2-bdb6-d839fca7a3aa" name="" supplier="64b6febb-515e-4889-819b-876de66fed4b" client="3dc6691a-e14e-466f-983f-ece5e2e63eda" contract="64b6febb-515e-4889-819b-876de66fed4b"/>
            <interfaceRealization xmi:id="0542b2bc-c1f2-45c4-b5de-f36e3f30ab99" name="" supplier="19e2c388-7739-4b91-ac63-32a68488c375" client="3dc6691a-e14e-466f-983f-ece5e2e63eda" contract="19e2c388-7739-4b91-ac63-32a68488c375"/>
            <interfaceRealization xmi:id="b9759560-4e53-46bd-9f2f-cc49750446fd" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="3dc6691a-e14e-466f-983f-ece5e2e63eda" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
            <interfaceRealization xmi:id="764d6ee9-7cba-4f66-b57b-1920820628c0" name="" supplier="1dd642cc-ad4c-43b8-91c1-a201cb5d8292" client="3dc6691a-e14e-466f-983f-ece5e2e63eda" contract="1dd642cc-ad4c-43b8-91c1-a201cb5d8292"/>
            <interfaceRealization xmi:id="29c074dc-502e-414b-975b-1702d6c7aec1" name="" supplier="88711cfb-6c51-470c-ba69-487856ccc3e2" client="3dc6691a-e14e-466f-983f-ece5e2e63eda" contract="88711cfb-6c51-470c-ba69-487856ccc3e2"/>
            <interfaceRealization xmi:id="a203ede9-4b12-487b-b0ea-a8610c63c76c" name="" supplier="dc0a40a1-ffad-4052-a8b3-987f3ef72c2d" client="3dc6691a-e14e-466f-983f-ece5e2e63eda" contract="dc0a40a1-ffad-4052-a8b3-987f3ef72c2d"/>
            <interfaceRealization xmi:id="65b6356a-4841-4d44-9574-9aceeb139a8e" name="" supplier="b011c554-5346-47cd-b6d0-947168b914f2" client="3dc6691a-e14e-466f-983f-ece5e2e63eda" contract="b011c554-5346-47cd-b6d0-947168b914f2"/>
            <interfaceRealization xmi:id="66cfb163-b4b7-4819-84c2-ef69d56de21f" name="" supplier="c4e4a91d-3aeb-48b7-836b-feaf66fc4ce9" client="3dc6691a-e14e-466f-983f-ece5e2e63eda" contract="c4e4a91d-3aeb-48b7-836b-feaf66fc4ce9"/>
            <interfaceRealization xmi:id="12dcc3d3-9822-45e8-95e6-c50d6258bd6f" name="" supplier="3a77cff3-1214-487d-9d86-9d71a42c9b2f" client="3dc6691a-e14e-466f-983f-ece5e2e63eda" contract="3a77cff3-1214-487d-9d86-9d71a42c9b2f"/>
            <interfaceRealization xmi:id="4754ba36-00f3-44f5-be47-70ee355d82d8" name="" supplier="5aeb340d-26cb-44e4-8320-a8d8eff4ca3c" client="3dc6691a-e14e-466f-983f-ece5e2e63eda" contract="5aeb340d-26cb-44e4-8320-a8d8eff4ca3c"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="8e52e80c-2e25-4f4d-9f99-bdc0e420c2de" name="MenuContainer" isAbstract="true">
            <ownedComment xmi:id="b1f1ae37-ec85-445a-8717-766678ba3219" body="The super class of all menu related containers.&#xA;&#xA;@version &#x9;1.16, 05/18/04&#xA;@author &#x9;Arthur van Hoff&#xA;" annotatedElement="8e52e80c-2e25-4f4d-9f99-bdc0e420c2de"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="bb188af7-8dd8-44ea-81f7-961c930c70c0" name="FlowLayout" clientDependency="da18ad59-b62e-4315-a83b-937dee4aec4a 530abeda-57a5-4634-a2c3-3694ab281c07">
            <ownedComment xmi:id="e87cc710-ad4f-4ac7-b6e0-19aefccbeec6" body="A flow layout arranges components in a directional flow, much&#xA;like lines of text in a paragraph. The flow direction is&#xA;determined by the container's &lt;code>componentOrientation&lt;/code>&#xA;property and may be one of two values:&#xA;&lt;ul>&#xA;&lt;li>&lt;code>ComponentOrientation.LEFT_TO_RIGHT&lt;/code>&#xA;&lt;li>&lt;code>ComponentOrientation.RIGHT_TO_LEFT&lt;/code>&#xA;&lt;/ul>&#xA;Flow layouts are typically used&#xA;to arrange buttons in a panel. It arranges buttons&#xA;horizontally until no more buttons fit on the same line.&#xA;The line alignment is determined by the &lt;code>align&lt;/code>&#xA;property. The possible values are:&#xA;&lt;ul>&#xA;&lt;li>{@link #LEFT LEFT}&#xA;&lt;li>{@link #RIGHT RIGHT}&#xA;&lt;li>{@link #CENTER CENTER}&#xA;&lt;li>{@link #LEADING LEADING}&#xA;&lt;li>{@link #TRAILING TRAILING}&#xA;&lt;/ul>&#xA;&lt;p>&#xA;For example, the following picture shows an applet using the flow&#xA;layout manager (its default layout manager) to position three buttons:&#xA;&lt;p>&#xA;&lt;img src=&quot;doc-files/FlowLayout-1.gif&quot;&#xA;ALT=&quot;Graphic of Layout for Three Buttons&quot;&#xA;ALIGN=center HSPACE=10 VSPACE=7>&#xA;&lt;p>&#xA;Here is the code for this applet:&#xA;&lt;p>&#xA;&lt;hr>&lt;blockquote>&lt;pre>&#xA;import java.awt.*;&#xA;import java.applet.Applet;&#xA;&#xA;public class myButtons extends Applet {&#xA;Button button1, button2, button3;&#xA;public void init() {&#xA;button1 = new Button(&quot;Ok&quot;);&#xA;button2 = new Button(&quot;Open&quot;);&#xA;button3 = new Button(&quot;Close&quot;);&#xA;add(button1);&#xA;add(button2);&#xA;add(button3);&#xA;}&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&lt;hr>&#xA;&lt;p>&#xA;A flow layout lets each component assume its natural (preferred) size.&#xA;&#xA;@version &#x9;1.52, 12/19/03&#xA;@author &#x9;Arthur van Hoff&#xA;@author &#x9;Sami Shaio&#xA;@since       JDK1.0&#xA;@see ComponentOrientation&#xA;" annotatedElement="bb188af7-8dd8-44ea-81f7-961c930c70c0"/>
            <interfaceRealization xmi:id="da18ad59-b62e-4315-a83b-937dee4aec4a" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="bb188af7-8dd8-44ea-81f7-961c930c70c0" contract="c3507179-c29c-40a9-8869-092757900e53"/>
            <interfaceRealization xmi:id="530abeda-57a5-4634-a2c3-3694ab281c07" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="bb188af7-8dd8-44ea-81f7-961c930c70c0" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a4af775c-f697-41ed-9c7e-28fa44ec312b" name="Point" clientDependency="36f3ba26-f1d6-473d-896e-1a44783751fb">
            <ownedComment xmi:id="ce595a98-cf3b-4524-b999-7c1970bc6c64" body="A point representing a location in (x, y) coordinate space, specified&#xA;in integer precision.&#xA;&#xA;@version &#x9;1.38, 12/19/03&#xA;@author &#x9;Sami Shaio&#xA;@since       JDK1.0&#xA;" annotatedElement="a4af775c-f697-41ed-9c7e-28fa44ec312b"/>
            <generalization xmi:id="faf29bd4-2325-4389-9e4f-9328f89234ca" isSubstitutable="true" general="bf232a00-31ab-462f-9688-d85ceec9eb10"/>
            <interfaceRealization xmi:id="36f3ba26-f1d6-473d-896e-1a44783751fb" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="a4af775c-f697-41ed-9c7e-28fa44ec312b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e3c366cc-e742-467d-a8a6-e86b085ce028" name="Image" isAbstract="true">
            <ownedComment xmi:id="11b4328f-93f8-4ddf-a30d-ea0ad071491c" body="The abstract class &lt;code>Image&lt;/code> is the superclass of all&#xA;classes that represent graphical images. The image must be&#xA;obtained in a platform-specific manner.&#xA;&#xA;@version &#x9;1.39, 12/19/03&#xA;@author &#x9;Sami Shaio&#xA;@author &#x9;Arthur van Hoff&#xA;@since       JDK1.0&#xA;" annotatedElement="e3c366cc-e742-467d-a8a6-e86b085ce028"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="078978ce-fa0f-40f1-8aec-5c481fc0127a" name="Conditional" visibility="package" isAbstract="true">
            <ownedComment xmi:id="f8992069-c724-46c6-94ce-608a3dd3325a" body="Conditional is used by the EventDispatchThread's message pumps to&#xA;determine if a given pump should continue to run, or should instead exit&#xA;and yield control to the parent pump.&#xA;&#xA;@version 1.6 12/19/03&#xA;@author David Mendenhall&#xA;" annotatedElement="078978ce-fa0f-40f1-8aec-5c481fc0127a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c61739ec-4f54-4348-a91d-683b1fcaff50" name="MenuBar" clientDependency="ce7736aa-4204-498f-aca4-c6243392f19e 894fdf79-f396-4c99-904b-0827e1a0ffa1">
            <ownedComment xmi:id="c38e2cbe-e3f2-4b0e-a3c7-668d60f231e9" body="The &lt;code>MenuBar&lt;/code> class encapsulates the platform's&#xA;concept of a menu bar bound to a frame. In order to associate&#xA;the menu bar with a &lt;code>Frame&lt;/code> object, call the&#xA;frame's &lt;code>setMenuBar&lt;/code> method.&#xA;&lt;p>&#xA;&lt;A NAME=&quot;mbexample&quot;>&lt;/A>&lt;!-- target for cross references -->&#xA;This is what a menu bar might look like:&#xA;&lt;p>&#xA;&lt;img src=&quot;doc-files/MenuBar-1.gif&quot;&#xA;&lt;alt=&quot;Diagram of MenuBar containing 2 menus: Examples and Options.&#xA;Examples menu is expanded showing items: Basic, Simple, Check, and More Examples.&quot;>&#xA;ALIGN=center HSPACE=10 VSPACE=7>&#xA;&lt;p>&#xA;A menu bar handles keyboard shortcuts for menu items, passing them&#xA;along to its child menus.&#xA;(Keyboard shortcuts, which are optional, provide the user with&#xA;an alternative to the mouse for invoking a menu item and the&#xA;action that is associated with it.)&#xA;Each menu item can maintain an instance of &lt;code>MenuShortcut&lt;/code>.&#xA;The &lt;code>MenuBar&lt;/code> class defines several methods,&#xA;{@link MenuBar#shortcuts} and&#xA;{@link MenuBar#getShortcutMenuItem}&#xA;that retrieve information about the shortcuts a given&#xA;menu bar is managing.&#xA;&#xA;@version 1.69, 05/18/04&#xA;@author Sami Shaio&#xA;@see        java.awt.Frame&#xA;@see        java.awt.Frame#setMenuBar(java.awt.MenuBar)&#xA;@see        java.awt.Menu&#xA;@see        java.awt.MenuItem&#xA;@see        java.awt.MenuShortcut&#xA;@since      JDK1.0&#xA;" annotatedElement="c61739ec-4f54-4348-a91d-683b1fcaff50"/>
            <generalization xmi:id="ee6c265d-7f66-499a-b817-e9c994ef2018" isSubstitutable="true" general="20e690b8-90b8-4ba4-9d26-ee62b56b0463"/>
            <interfaceRealization xmi:id="ce7736aa-4204-498f-aca4-c6243392f19e" name="" supplier="8e52e80c-2e25-4f4d-9f99-bdc0e420c2de" client="c61739ec-4f54-4348-a91d-683b1fcaff50" contract="8e52e80c-2e25-4f4d-9f99-bdc0e420c2de"/>
            <interfaceRealization xmi:id="894fdf79-f396-4c99-904b-0827e1a0ffa1" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="c61739ec-4f54-4348-a91d-683b1fcaff50" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="36729f5e-0528-4461-98e5-50016e49668e" name="AccessibleAWTMenuBar" visibility="protected">
              <ownedComment xmi:id="4e70931d-385e-402c-bac3-1870527f15b3" body="Inner class of MenuBar used to provide default support for&#xA;accessibility.  This class is not meant to be used directly by&#xA;application developers, but is instead meant only to be&#xA;subclassed by menu component developers.&#xA;&lt;p>&#xA;This class implements accessibility support for the&#xA;&lt;code>MenuBar&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to menu bar user-interface elements.&#xA;" annotatedElement="36729f5e-0528-4461-98e5-50016e49668e"/>
              <generalization xmi:id="6e5887b5-4e93-42f2-97ae-6247a16298de" isSubstitutable="true" general="d2222e9d-77ab-4e2d-8380-aae50ae771b8"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="69e1961b-dce0-441f-b414-bbbe861ece08" name="GraphicsCallback" visibility="package" isAbstract="true">
            <nestedClassifier xmi:type="uml:Class" xmi:id="62c7de31-e2ab-41df-aa15-22f616e7e354" name="PaintCallback" visibility="package" isLeaf="true">
              <generalization xmi:id="4c4e5ecc-3def-4fb6-a61a-7d4c2e9d132f" isSubstitutable="true" general="69e1961b-dce0-441f-b414-bbbe861ece08"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="e3904d3b-9b81-4442-b981-3c0d613f021e" name="PrintCallback" visibility="package" isLeaf="true">
              <generalization xmi:id="3ae4200c-58ed-4c6b-8d51-6e8175029228" isSubstitutable="true" general="69e1961b-dce0-441f-b414-bbbe861ece08"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="0d6bc92b-cf27-4498-80e8-873492e695b0" name="PaintAllCallback" visibility="package" isLeaf="true">
              <generalization xmi:id="3757fc93-991c-4e90-80ea-cdf64c06de25" isSubstitutable="true" general="69e1961b-dce0-441f-b414-bbbe861ece08"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="49f0b8c6-dc7c-4f5f-9064-bba18a283875" name="PrintAllCallback" visibility="package" isLeaf="true">
              <generalization xmi:id="abde6a31-c7b2-4bd1-be69-ce3974a22572" isSubstitutable="true" general="69e1961b-dce0-441f-b414-bbbe861ece08"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="101e9d5f-ac5f-4132-8d0a-b024cb7c3149" name="PeerPaintCallback" visibility="package" isLeaf="true">
              <generalization xmi:id="bdfcffd0-b783-405e-9db4-5e03e1dcf263" isSubstitutable="true" general="69e1961b-dce0-441f-b414-bbbe861ece08"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="7bc901f7-a2be-4a8a-b43b-95da585becb6" name="PeerPrintCallback" visibility="package" isLeaf="true">
              <generalization xmi:id="1a19476c-0b2d-4cf2-a4cc-2c88fd1d15d7" isSubstitutable="true" general="69e1961b-dce0-441f-b414-bbbe861ece08"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="6602cd5f-8975-4406-8736-90fac9591017" name="PaintHeavyweightComponentsCallback" visibility="package" isLeaf="true">
              <generalization xmi:id="31a98add-125c-4f82-9e8a-9e086bc5a86b" isSubstitutable="true" general="69e1961b-dce0-441f-b414-bbbe861ece08"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="1d86a9b1-0120-4972-91af-30758eea2024" name="PrintHeavyweightComponentsCallback" visibility="package" isLeaf="true">
              <generalization xmi:id="d68a5f5a-101e-4cac-a780-a3e038800a3e" isSubstitutable="true" general="69e1961b-dce0-441f-b414-bbbe861ece08"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a5fa0c22-b649-4222-be5d-060f1953678e" name="PointerInfo">
            <ownedComment xmi:id="bc128717-7382-45fc-910c-df8fcd8b0ccd" body="A class that describes the pointer position.&#xA;It provides the &lt;code>GraphicsDevice&lt;/code> where the&#xA;pointer is and the &lt;code>Point&lt;/code> that represents&#xA;the coordinates of the pointer.&#xA;&lt;p>&#xA;Instances of this class should be obtained via&#xA;{@link MouseInfo#getPointerInfo}.&#xA;The &lt;code>PointerInfo&lt;/code> instance is not updated dynamically&#xA;as the mouse moves. To get the updated location, you must call&#xA;{@link MouseInfo#getPointerInfo} again.&#xA;&#xA;@see MouseInfo#getPointerInfo&#xA;@version     1.2, 12/19/03&#xA;@author      Roman Poborchiy&#xA;@since       1.5&#xA;" annotatedElement="a5fa0c22-b649-4222-be5d-060f1953678e"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="bb3dfe99-08a0-4d7d-9c90-36dfa2836c36" name="util">
          <packagedElement xmi:type="uml:Class" xmi:id="83980325-f97b-436c-9d86-e7e7e6939a60" name="PrivateEntryIterator&lt;Entry&lt;K, V>>">
            <templateBinding xmi:id="e4e41efa-e662-42b1-83ae-41a1db9bae4f" signature="d3b3fe15-6155-4eda-a308-89f7d8f408a4">
              <parameterSubstitution xmi:id="d504f508-6b59-4a8e-8363-c74b61e3bb6b" formal="c59750f5-d765-4382-90ab-8167ab831fc9" actual="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2aaa7c97-4f05-4dfa-86ef-0082ac205f6c" name="TimerTask" clientDependency="578050f9-cc0d-4a66-a7cf-0175dbf1c3d1" isAbstract="true">
            <ownedComment xmi:id="99f4fb4d-5745-42fe-81ba-831e865318a8" body="A task that can be scheduled for one-time or repeated execution by a Timer.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.10, 02/19/04&#xA;@see&#x9;    Timer&#xA;@since   1.3&#xA;" annotatedElement="2aaa7c97-4f05-4dfa-86ef-0082ac205f6c"/>
            <interfaceRealization xmi:id="578050f9-cc0d-4a66-a7cf-0175dbf1c3d1" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="2aaa7c97-4f05-4dfa-86ef-0082ac205f6c" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="323ce70c-1b2c-4faf-9c1d-601ea7f9160c" name="PropertyPermission" isLeaf="true">
            <ownedComment xmi:id="0e71af87-979c-4f4b-b715-aa03dc2d1723" body="This class is for property permissions.&#xA;&#xA;&lt;P>&#xA;The name is the name of the property (&quot;java.home&quot;,&#xA;&quot;os.name&quot;, etc). The naming&#xA;convention follows the  hierarchical property naming convention.&#xA;Also, an asterisk&#xA;may appear at the end of the name, following a &quot;.&quot;, or by itself, to&#xA;signify a wildcard match. For example: &quot;java.*&quot; or &quot;*&quot; is valid,&#xA;&quot;*java&quot; or &quot;a*b&quot; is not valid.&#xA;&lt;P>&#xA;&lt;P>&#xA;The actions to be granted are passed to the constructor in a string containing&#xA;a list of zero or more comma-separated keywords. The possible keywords are&#xA;&quot;read&quot; and &quot;write&quot;. Their meaning is defined as follows:&#xA;&lt;P>&#xA;&lt;DL>&#xA;&lt;DT> read&#xA;&lt;DD> read permission. Allows &lt;code>System.getProperty&lt;/code> to&#xA;be called.&#xA;&lt;DT> write&#xA;&lt;DD> write permission. Allows &lt;code>System.setProperty&lt;/code> to&#xA;be called.&#xA;&lt;/DL>&#xA;&lt;P>&#xA;The actions string is converted to lowercase before processing.&#xA;&lt;P>&#xA;Care should be taken before granting code permission to access&#xA;certain system properties.  For example, granting permission to&#xA;access the &quot;java.home&quot; system property gives potentially malevolent&#xA;code sensitive information about the system environment (the Java&#xA;installation directory).  Also, granting permission to access&#xA;the &quot;user.name&quot; and &quot;user.home&quot; system properties gives potentially&#xA;malevolent code sensitive information about the user environment&#xA;(the user's account name and home directory).&#xA;&#xA;@see java.security.BasicPermission&#xA;@see java.security.Permission&#xA;@see java.security.Permissions&#xA;@see java.security.PermissionCollection&#xA;@see java.lang.SecurityManager&#xA;&#xA;@version 1.33 03/12/19&#xA;&#xA;@author Roland Schemers&#xA;@since 1.2&#xA;&#xA;@serial exclude&#xA;" annotatedElement="323ce70c-1b2c-4faf-9c1d-601ea7f9160c"/>
            <generalization xmi:id="b3f11009-05ac-4cf3-9cdc-7354476693c7" isSubstitutable="true" general="4831e368-c670-40b4-87bd-a8a910a528fa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ee9266be-eae0-49e8-91fe-4a43bd0a984e" name="AbstractList" clientDependency="4eff86af-d672-4d19-bbe2-3571b9ffeb9e" isAbstract="true">
            <ownedComment xmi:id="e630a199-a73c-4727-8b88-73792298e16b" body="This class provides a skeletal implementation of the &lt;tt>List&lt;/tt>&#xA;interface to minimize the effort required to implement this interface&#xA;backed by a &quot;random access&quot; data store (such as an array).  For sequential&#xA;access data (such as a linked list), &lt;tt>AbstractSequentialList&lt;/tt> should&#xA;be used in preference to this class.&lt;p>&#xA;&#xA;To implement an unmodifiable list, the programmer needs only to extend this&#xA;class and provide implementations for the &lt;tt>get(int index)&lt;/tt> and&#xA;&lt;tt>size()&lt;/tt> methods.&lt;p>&#xA;&#xA;To implement a modifiable list, the programmer must additionally override&#xA;the &lt;tt>set(int index, Object element)&lt;/tt> method (which otherwise throws&#xA;an &lt;tt>UnsupportedOperationException&lt;/tt>.  If the list is variable-size&#xA;the programmer must additionally override the &lt;tt>add(int index, Object&#xA;element)&lt;/tt> and &lt;tt>remove(int index)&lt;/tt> methods.&lt;p>&#xA;&#xA;The programmer should generally provide a void (no argument) and collection&#xA;constructor, as per the recommendation in the &lt;tt>Collection&lt;/tt> interface&#xA;specification.&lt;p>&#xA;&#xA;Unlike the other abstract collection implementations, the programmer does&#xA;&lt;i>not&lt;/i> have to provide an iterator implementation; the iterator and&#xA;list iterator are implemented by this class, on top the &quot;random access&quot;&#xA;methods: &lt;tt>get(int index)&lt;/tt>, &lt;tt>set(int index, Object element)&lt;/tt>,&#xA;&lt;tt>set(int index, Object element)&lt;/tt>, &lt;tt>add(int index, Object&#xA;element)&lt;/tt> and &lt;tt>remove(int index)&lt;/tt>.&lt;p>&#xA;&#xA;The documentation for each non-abstract methods in this class describes its&#xA;implementation in detail.  Each of these methods may be overridden if the&#xA;collection being implemented admits a more efficient implementation.&lt;p>&#xA;&#xA;This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@author  Neal Gafter&#xA;@version 1.37, 01/18/03&#xA;@see Collection&#xA;@see List&#xA;@see AbstractSequentialList&#xA;@see AbstractCollection&#xA;@since 1.2&#xA;" annotatedElement="ee9266be-eae0-49e8-91fe-4a43bd0a984e"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="644f38f8-9f74-4a51-b690-c537f6da35cc" name="" parameter="23b58bd8-95d6-4436-97e9-b49cfc2bf205">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="23b58bd8-95d6-4436-97e9-b49cfc2bf205" parameteredElement="5ca5474a-595e-4c8a-832a-d4a49fa5138c">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="5ca5474a-595e-4c8a-832a-d4a49fa5138c" name="E" templateParameter="23b58bd8-95d6-4436-97e9-b49cfc2bf205"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="8ff29cac-eb8c-4a13-a624-ac767183a73c" isSubstitutable="true" general="ec29d9fd-f66a-4a01-a246-04b974e8c332"/>
            <interfaceRealization xmi:id="4eff86af-d672-4d19-bbe2-3571b9ffeb9e" name="" supplier="18dc6102-a040-4ae1-aefe-698abc18de28" client="ee9266be-eae0-49e8-91fe-4a43bd0a984e" contract="18dc6102-a040-4ae1-aefe-698abc18de28"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="99239a4b-3065-4cdf-bdaf-8c410591c74d" name="Itr" visibility="private" clientDependency="27dbcafc-b672-4dae-b0e5-fc141269d22d">
              <interfaceRealization xmi:id="27dbcafc-b672-4dae-b0e5-fc141269d22d" name="" supplier="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f" client="99239a4b-3065-4cdf-bdaf-8c410591c74d" contract="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="374b80d6-3605-4163-b5b3-a99dc1564520" name="ListItr" visibility="private" clientDependency="9b1442d9-1668-409f-83c0-8dafd4f66eec">
              <generalization xmi:id="3e50b0ab-4f9e-42e4-a413-49739b294a0f" isSubstitutable="true" general="99239a4b-3065-4cdf-bdaf-8c410591c74d"/>
              <interfaceRealization xmi:id="9b1442d9-1668-409f-83c0-8dafd4f66eec" name="" supplier="125391a5-cf0a-4304-bc13-9acf146357ed" client="374b80d6-3605-4163-b5b3-a99dc1564520" contract="125391a5-cf0a-4304-bc13-9acf146357ed"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ec51adf6-8ce1-42df-b4fe-cc72a709d0b8" name="IllegalFormatWidthException">
            <ownedComment xmi:id="60ba7fed-2523-4d35-947b-785f987d314d" body="Unchecked exception thrown when the format width is a negative value other&#xA;than &lt;tt>-1&lt;/tt> or is otherwise unsupported.&#xA;&#xA;@version &#x9;1.4, 06/07/04&#xA;@since 1.5&#xA;" annotatedElement="ec51adf6-8ce1-42df-b4fe-cc72a709d0b8"/>
            <generalization xmi:id="416b7fc3-4ca9-445b-805e-87668e4846cf" isSubstitutable="true" general="615b003b-a7bd-4b48-ba53-15e2ad73fd34"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="1bc0ca93-22b0-41b7-be18-d82617a1fd5b" name="List" isAbstract="true">
            <ownedComment xmi:id="41b2a3b0-2104-4043-993d-a2d54ed0b914" body="An ordered collection (also known as a &lt;i>sequence&lt;/i>).  The user of this&#xA;interface has precise control over where in the list each element is&#xA;inserted.  The user can access elements by their integer index (position in&#xA;the list), and search for elements in the list.&lt;p>&#xA;&#xA;Unlike sets, lists typically allow duplicate elements.  More formally,&#xA;lists typically allow pairs of elements &lt;tt>e1&lt;/tt> and &lt;tt>e2&lt;/tt>&#xA;such that &lt;tt>e1.equals(e2)&lt;/tt>, and they typically allow multiple&#xA;null elements if they allow null elements at all.  It is not inconceivable&#xA;that someone might wish to implement a list that prohibits duplicates, by&#xA;throwing runtime exceptions when the user attempts to insert them, but we&#xA;expect this usage to be rare.&lt;p>&#xA;&#xA;The &lt;tt>List&lt;/tt> interface places additional stipulations, beyond those&#xA;specified in the &lt;tt>Collection&lt;/tt> interface, on the contracts of the&#xA;&lt;tt>iterator&lt;/tt>, &lt;tt>add&lt;/tt>, &lt;tt>remove&lt;/tt>, &lt;tt>equals&lt;/tt>, and&#xA;&lt;tt>hashCode&lt;/tt> methods.  Declarations for other inherited methods are&#xA;also included here for convenience.&lt;p>&#xA;&#xA;The &lt;tt>List&lt;/tt> interface provides four methods for positional (indexed)&#xA;access to list elements.  Lists (like Java arrays) are zero based.  Note&#xA;that these operations may execute in time proportional to the index value&#xA;for some implementations (the &lt;tt>LinkedList&lt;/tt> class, for&#xA;example). Thus, iterating over the elements in a list is typically&#xA;preferable to indexing through it if the caller does not know the&#xA;implementation.&lt;p>&#xA;&#xA;The &lt;tt>List&lt;/tt> interface provides a special iterator, called a&#xA;&lt;tt>ListIterator&lt;/tt>, that allows element insertion and replacement, and&#xA;bidirectional access in addition to the normal operations that the&#xA;&lt;tt>Iterator&lt;/tt> interface provides.  A method is provided to obtain a&#xA;list iterator that starts at a specified position in the list.&lt;p>&#xA;&#xA;The &lt;tt>List&lt;/tt> interface provides two methods to search for a specified&#xA;object.  From a performance standpoint, these methods should be used with&#xA;caution.  In many implementations they will perform costly linear&#xA;searches.&lt;p>&#xA;&#xA;The &lt;tt>List&lt;/tt> interface provides two methods to efficiently insert and&#xA;remove multiple elements at an arbitrary point in the list.&lt;p>&#xA;&#xA;Note: While it is permissible for lists to contain themselves as elements,&#xA;extreme caution is advised: the &lt;tt>equals&lt;/tt> and &lt;tt>hashCode&lt;/tt>&#xA;methods are no longer well defined on a such a list.&#xA;&#xA;&lt;p>Some list implementations have restrictions on the elements that&#xA;they may contain.  For example, some implementations prohibit null elements,&#xA;and some have restrictions on the types of their elements.  Attempting to&#xA;add an ineligible element throws an unchecked exception, typically&#xA;&lt;tt>NullPointerException&lt;/tt> or &lt;tt>ClassCastException&lt;/tt>.  Attempting&#xA;to query the presence of an ineligible element may throw an exception,&#xA;or it may simply return false; some implementations will exhibit the former&#xA;behavior and some will exhibit the latter.  More generally, attempting an&#xA;operation on an ineligible element whose completion would not result in&#xA;the insertion of an ineligible element into the list may throw an&#xA;exception or it may succeed, at the option of the implementation.&#xA;Such exceptions are marked as &quot;optional&quot; in the specification for this&#xA;interface.&#xA;&#xA;&lt;p>This interface is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@author  Neal Gafter&#xA;@version 1.44, 12/19/03&#xA;@see Collection&#xA;@see Set&#xA;@see ArrayList&#xA;@see LinkedList&#xA;@see Vector&#xA;@see Arrays#asList(Object[])&#xA;@see Collections#nCopies(int, Object)&#xA;@see Collections#EMPTY_LIST&#xA;@see AbstractList&#xA;@see AbstractSequentialList&#xA;@since 1.2&#xA;" annotatedElement="1bc0ca93-22b0-41b7-be18-d82617a1fd5b"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="93231630-d3a5-4f79-aaf1-328407b4bf68" name="" parameter="a332785f-9dc3-422a-bc11-d423063288ae">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="a332785f-9dc3-422a-bc11-d423063288ae" parameteredElement="8c0c762e-754e-4332-82e1-0574536d2a59">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="8c0c762e-754e-4332-82e1-0574536d2a59" name="E" templateParameter="a332785f-9dc3-422a-bc11-d423063288ae"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="b83aeb05-96e1-498f-a46c-78849be65864" isSubstitutable="true" general="f2ecd2a3-8039-41dd-a004-e978e2a488aa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="96928acf-5cd4-482d-8ee9-27487fc781c4" name="ConcurrentModificationException">
            <ownedComment xmi:id="ffc8eaa0-f79c-46df-b5e9-8d649cee1249" body="This exception may be thrown by methods that have detected concurrent&#xA;modification of an object when such modification is not permissible.&#xA;&lt;p>&#xA;For example, it is not generally permissible for one thread to modify a Collection&#xA;while another thread is iterating over it.  In general, the results of the&#xA;iteration are undefined under these circumstances.  Some Iterator&#xA;implementations (including those of all the general purpose collection implementations&#xA;provided by the JRE) may choose to throw this exception if this behavior is&#xA;detected.  Iterators that do this are known as &lt;i>fail-fast&lt;/i> iterators,&#xA;as they fail quickly and cleanly, rather that risking arbitrary,&#xA;non-deterministic behavior at an undetermined time in the future.&#xA;&lt;p>&#xA;Note that this exception does not always indicate that an object has&#xA;been concurrently modified by a &lt;i>different&lt;/i> thread.  If a single&#xA;thread issues a sequence of method invocations that violates the&#xA;contract of an object, the object may throw this exception.  For&#xA;example, if a thread modifies a collection directly while it is&#xA;iterating over the collection with a fail-fast iterator, the iterator&#xA;will throw this exception.&#xA;&#xA;&lt;p>Note that fail-fast behavior cannot be guaranteed as it is, generally&#xA;speaking, impossible to make any hard guarantees in the presence of&#xA;unsynchronized concurrent modification.  Fail-fast operations&#xA;throw &lt;tt>ConcurrentModificationException&lt;/tt> on a best-effort basis.&#xA;Therefore, it would be wrong to write a program that depended on this&#xA;exception for its correctness: &lt;i>&lt;tt>ConcurrentModificationException&lt;/tt>&#xA;should be used only to detect bugs.&lt;/i>&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.18, 06/22/04&#xA;@see&#x9;    Collection&#xA;@see     Iterator&#xA;@see     ListIterator&#xA;@see&#x9;    Vector&#xA;@see&#x9;    LinkedList&#xA;@see&#x9;    HashSet&#xA;@see&#x9;    Hashtable&#xA;@see&#x9;    TreeMap&#xA;@see&#x9;    AbstractList&#xA;@since   1.2&#xA;" annotatedElement="96928acf-5cd4-482d-8ee9-27487fc781c4"/>
            <generalization xmi:id="a135a685-1660-49cd-b2fb-bd6ce7c67e10" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2f95f1a0-7ffa-4f9b-8802-18e72e744c91" name="FormattableFlags">
            <ownedComment xmi:id="8f1ef68a-2d25-4d3f-92cd-caa18c50335f" body="FomattableFlags are passed to the {@link Formattable#formatTo&#xA;Formattable.formatTo()} method and modify the output format for {@linkplain&#xA;Formattable Formattables}.  Implementations of {@link Formattable} are&#xA;responsible for interpreting and validating any flags.&#xA;&#xA;@version &#x9;1.1, 04/21/04&#xA;@since  1.5&#xA;" annotatedElement="2f95f1a0-7ffa-4f9b-8802-18e72e744c91"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3c774fe3-7455-40da-89c9-bba58cea80cd" name="LinkedList" clientDependency="05f645a6-8193-4126-a0e3-6f5162f83a61 f0409338-ba0f-4061-966d-e16b9811874f 96df4b3a-72d9-4f76-9629-7bcfad57584f e9f14083-db69-40be-877d-7abf965bbdd1">
            <ownedComment xmi:id="3d0dee1d-8445-40bc-86b2-b4bfa5eb1f42" body="Linked list implementation of the &lt;tt>List&lt;/tt> interface.  Implements all&#xA;optional list operations, and permits all elements (including&#xA;&lt;tt>null&lt;/tt>).  In addition to implementing the &lt;tt>List&lt;/tt> interface,&#xA;the &lt;tt>LinkedList&lt;/tt> class provides uniformly named methods to&#xA;&lt;tt>get&lt;/tt>, &lt;tt>remove&lt;/tt> and &lt;tt>insert&lt;/tt> an element at the&#xA;beginning and end of the list.  These operations allow linked lists to be&#xA;used as a stack, queue, or double-ended queue (deque).&lt;p>&#xA;&#xA;The class implements the &lt;tt>Queue&lt;/tt> interface, providing&#xA;first-in-first-out queue operations for &lt;tt>add&lt;/tt>,&#xA;&lt;tt>poll&lt;/tt>, etc. Other stack and deque operations could be&#xA;easily recast in terms of the standard list operations.  They're&#xA;included here primarily for convenience, though they may run&#xA;slightly faster than the equivalent List operations.&lt;p>&#xA;&#xA;All of the operations perform as could be expected for a doubly-linked&#xA;list.  Operations that index into the list will traverse the list from&#xA;the beginning or the end, whichever is closer to the specified index.&lt;p>&#xA;&#xA;&lt;b>Note that this implementation is not synchronized.&lt;/b> If multiple&#xA;threads access a list concurrently, and at least one of the threads&#xA;modifies the list structurally, it &lt;i>must&lt;/i> be synchronized&#xA;externally.  (A structural modification is any operation that adds or&#xA;deletes one or more elements; merely setting the value of an element is not&#xA;a structural modification.)  This is typically accomplished by&#xA;synchronizing on some object that naturally encapsulates the list.  If no&#xA;such object exists, the list should be &quot;wrapped&quot; using the&#xA;Collections.synchronizedList method.  This is best done at creation time,&#xA;to prevent accidental unsynchronized access to the list: &lt;pre>&#xA;List list = Collections.synchronizedList(new LinkedList(...));&#xA;&lt;/pre>&lt;p>&#xA;&#xA;The iterators returned by the this class's &lt;tt>iterator&lt;/tt> and&#xA;&lt;tt>listIterator&lt;/tt> methods are &lt;i>fail-fast&lt;/i>: if the list is&#xA;structurally modified at any time after the iterator is created, in any way&#xA;except through the Iterator's own &lt;tt>remove&lt;/tt> or &lt;tt>add&lt;/tt> methods,&#xA;the iterator will throw a &lt;tt>ConcurrentModificationException&lt;/tt>.  Thus,&#xA;in the face of concurrent modification, the iterator fails quickly and&#xA;cleanly, rather than risking arbitrary, non-deterministic behavior at an&#xA;undetermined time in the future.&#xA;&#xA;&lt;p>Note that the fail-fast behavior of an iterator cannot be guaranteed&#xA;as it is, generally speaking, impossible to make any hard guarantees in the&#xA;presence of unsynchronized concurrent modification.  Fail-fast iterators&#xA;throw &lt;tt>ConcurrentModificationException&lt;/tt> on a best-effort basis.&#xA;Therefore, it would be wrong to write a program that depended on this&#xA;exception for its correctness:   &lt;i>the fail-fast behavior of iterators&#xA;should be used only to detect bugs.&lt;/i>&lt;p>&#xA;&#xA;This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.61, 02/19/04&#xA;@see&#x9;    List&#xA;@see&#x9;    ArrayList&#xA;@see&#x9;    Vector&#xA;@see&#x9;    Collections#synchronizedList(List)&#xA;@since 1.2&#xA;@param &lt;E> the type of elements held in this collection&#xA;" annotatedElement="3c774fe3-7455-40da-89c9-bba58cea80cd"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="4af45da0-3cdc-46c9-9635-d7fa4b567659" name="" parameter="04ba1703-c05d-458c-921b-286eeeda4e9f">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="04ba1703-c05d-458c-921b-286eeeda4e9f" parameteredElement="7dc2427b-29fb-46f9-93b2-562c0bbc470c">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="7dc2427b-29fb-46f9-93b2-562c0bbc470c" name="E" templateParameter="04ba1703-c05d-458c-921b-286eeeda4e9f"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="81cde08a-3624-4a33-8edc-c686daca4266" isSubstitutable="true" general="f7346c90-fee3-443d-92c0-6e4a5b8a5ba8"/>
            <interfaceRealization xmi:id="05f645a6-8193-4126-a0e3-6f5162f83a61" name="" supplier="18dc6102-a040-4ae1-aefe-698abc18de28" client="3c774fe3-7455-40da-89c9-bba58cea80cd" contract="18dc6102-a040-4ae1-aefe-698abc18de28"/>
            <interfaceRealization xmi:id="e9f14083-db69-40be-877d-7abf965bbdd1" name="" supplier="b9722b17-296e-4891-893c-daddd8d91c74" client="3c774fe3-7455-40da-89c9-bba58cea80cd" contract="b9722b17-296e-4891-893c-daddd8d91c74"/>
            <interfaceRealization xmi:id="f0409338-ba0f-4061-966d-e16b9811874f" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="3c774fe3-7455-40da-89c9-bba58cea80cd" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="96df4b3a-72d9-4f76-9629-7bcfad57584f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="3c774fe3-7455-40da-89c9-bba58cea80cd" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="12cdf50b-3304-4cc0-85e9-70b199821f50" name="ListItr" visibility="private" clientDependency="07c9282d-b99b-4a3a-952b-ac712b393a56">
              <interfaceRealization xmi:id="07c9282d-b99b-4a3a-952b-ac712b393a56" name="" supplier="125391a5-cf0a-4304-bc13-9acf146357ed" client="12cdf50b-3304-4cc0-85e9-70b199821f50" contract="125391a5-cf0a-4304-bc13-9acf146357ed"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="b80d2103-bf7e-4b8e-8ab1-566c521e9b18" name="Entry" visibility="private">
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="7e15232d-28d5-4068-9046-1780b1845696" name="" parameter="20b0f3df-345a-46a2-b030-d930741c9046">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="20b0f3df-345a-46a2-b030-d930741c9046" parameteredElement="214e639e-a0da-45cf-866b-96ebe6e59a0d">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="214e639e-a0da-45cf-866b-96ebe6e59a0d" name="E" templateParameter="20b0f3df-345a-46a2-b030-d930741c9046"/>
                </ownedParameter>
              </ownedTemplateSignature>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="be25d82f-42e1-449d-8dac-5eb053710e0b" name="WeakReference&lt;K>">
            <templateBinding xmi:id="1e7eb43d-1c57-4276-8be9-f9eb5b7a34b5" signature="c513cd2a-d023-4eff-bbed-adbdc5759f8d">
              <parameterSubstitution xmi:id="fc1edcab-7ea0-4812-acdf-ca5fae0fdde4" formal="3b3bffe1-bb6e-4040-b601-12240c09fafa" actual="ac9943d9-4910-4a31-8077-4a9f6d50a404"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c10cc0d2-3bbd-468f-8090-7f8816eb844f" name="Locale" clientDependency="4f0b71fe-51bb-492d-b35a-654bd7dcc020 b744d2d5-e091-43e4-92a2-863b858cb5b2" isLeaf="true">
            <ownedComment xmi:id="1cdd3762-d542-4706-a265-31aeba5c0f6e" body="A &lt;code>Locale&lt;/code> object represents a specific geographical, political,&#xA;or cultural region. An operation that requires a &lt;code>Locale&lt;/code> to perform&#xA;its task is called &lt;em>locale-sensitive&lt;/em> and uses the &lt;code>Locale&lt;/code>&#xA;to tailor information for the user. For example, displaying a number&#xA;is a locale-sensitive operation--the number should be formatted&#xA;according to the customs/conventions of the user's native country,&#xA;region, or culture.&#xA;&#xA;&lt;P>&#xA;Create a &lt;code>Locale&lt;/code> object using the constructors in this class:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;Locale(String language)&#xA;Locale(String language, String country)&#xA;Locale(String language, String country, String variant)&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;The language argument is a valid &lt;STRONG>ISO Language Code.&lt;/STRONG>&#xA;These codes are the lower-case, two-letter codes as defined by ISO-639.&#xA;You can find a full list of these codes at a number of sites, such as:&#xA;&lt;BR>&lt;a href =&quot;http://www.loc.gov/standards/iso639-2/englangn.html&quot;>&#xA;&lt;code>http://www.loc.gov/standards/iso639-2/englangn.html&lt;/code>&lt;/a>&#xA;&#xA;&lt;P>&#xA;The country argument is a valid &lt;STRONG>ISO Country Code.&lt;/STRONG> These&#xA;codes are the upper-case, two-letter codes as defined by ISO-3166.&#xA;You can find a full list of these codes at a number of sites, such as:&#xA;&lt;BR>&lt;a href=&quot;http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html&quot;>&#xA;&lt;code>http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html&lt;/code>&lt;/a>&#xA;&#xA;&lt;P>&#xA;The variant argument is a vendor or browser-specific code.&#xA;For example, use WIN for Windows, MAC for Macintosh, and POSIX for POSIX.&#xA;Where there are two variants, separate them with an underscore, and&#xA;put the most important one first. For example, a Traditional Spanish collation&#xA;might construct a locale with parameters for language, country and variant as:&#xA;&quot;es&quot;, &quot;ES&quot;, &quot;Traditional_WIN&quot;.&#xA;&#xA;&lt;P>&#xA;Because a &lt;code>Locale&lt;/code> object is just an identifier for a region,&#xA;no validity check is performed when you construct a &lt;code>Locale&lt;/code>.&#xA;If you want to see whether particular resources are available for the&#xA;&lt;code>Locale&lt;/code> you construct, you must query those resources. For&#xA;example, ask the &lt;code>NumberFormat&lt;/code> for the locales it supports&#xA;using its &lt;code>getAvailableLocales&lt;/code> method.&#xA;&lt;BR>&lt;STRONG>Note:&lt;/STRONG> When you ask for a resource for a particular&#xA;locale, you get back the best available match, not necessarily&#xA;precisely what you asked for. For more information, look at&#xA;{@link ResourceBundle}.&#xA;&#xA;&lt;P>&#xA;The &lt;code>Locale&lt;/code> class provides a number of convenient constants&#xA;that you can use to create &lt;code>Locale&lt;/code> objects for commonly used&#xA;locales. For example, the following creates a &lt;code>Locale&lt;/code> object&#xA;for the United States:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;Locale.US&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;P>&#xA;Once you've created a &lt;code>Locale&lt;/code> you can query it for information about&#xA;itself. Use &lt;code>getCountry&lt;/code> to get the ISO Country Code and&#xA;&lt;code>getLanguage&lt;/code> to get the ISO Language Code. You can&#xA;use &lt;code>getDisplayCountry&lt;/code> to get the&#xA;name of the country suitable for displaying to the user. Similarly,&#xA;you can use &lt;code>getDisplayLanguage&lt;/code> to get the name of&#xA;the language suitable for displaying to the user. Interestingly,&#xA;the &lt;code>getDisplayXXX&lt;/code> methods are themselves locale-sensitive&#xA;and have two versions: one that uses the default locale and one&#xA;that uses the locale specified as an argument.&#xA;&#xA;&lt;P>&#xA;The Java 2 platform provides a number of classes that perform locale-sensitive&#xA;operations. For example, the &lt;code>NumberFormat&lt;/code> class formats&#xA;numbers, currency, or percentages in a locale-sensitive manner. Classes&#xA;such as &lt;code>NumberFormat&lt;/code> have a number of convenience methods&#xA;for creating a default object of that type. For example, the&#xA;&lt;code>NumberFormat&lt;/code> class provides these three convenience methods&#xA;for creating a default &lt;code>NumberFormat&lt;/code> object:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;NumberFormat.getInstance()&#xA;NumberFormat.getCurrencyInstance()&#xA;NumberFormat.getPercentInstance()&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;These methods have two variants; one with an explicit locale&#xA;and one without; the latter using the default locale.&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;NumberFormat.getInstance(myLocale)&#xA;NumberFormat.getCurrencyInstance(myLocale)&#xA;NumberFormat.getPercentInstance(myLocale)&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;A &lt;code>Locale&lt;/code> is the mechanism for identifying the kind of object&#xA;(&lt;code>NumberFormat&lt;/code>) that you would like to get. The locale is&#xA;&lt;STRONG>just&lt;/STRONG> a mechanism for identifying objects,&#xA;&lt;STRONG>not&lt;/STRONG> a container for the objects themselves.&#xA;&#xA;@see         ResourceBundle&#xA;@see         java.text.Format&#xA;@see         java.text.NumberFormat&#xA;@see         java.text.Collator&#xA;@author      Mark Davis&#xA;@since       1.1&#xA;" annotatedElement="c10cc0d2-3bbd-468f-8090-7f8816eb844f"/>
            <interfaceRealization xmi:id="4f0b71fe-51bb-492d-b35a-654bd7dcc020" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="c10cc0d2-3bbd-468f-8090-7f8816eb844f" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="b744d2d5-e091-43e4-92a2-863b858cb5b2" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="c10cc0d2-3bbd-468f-8090-7f8816eb844f" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="d49d9ead-f1bc-4b5c-9659-ef6629c7b023" name="Formattable" isAbstract="true">
            <ownedComment xmi:id="d069164e-4f91-45eb-b07e-191663bbe2d2" body="The &lt;tt>Formattable&lt;/tt> interface must be implemented by any class that&#xA;needs to perform custom formatting using the &lt;tt>'s'&lt;/tt> conversion&#xA;specifier of {@link java.util.Formatter}.  This interface allows basic&#xA;control for formatting arbitrary objects.&#xA;&#xA;For example, the following class prints out different representations of a&#xA;stock's name depending on the flags and length constraints:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;import java.nio.CharBuffer;&#xA;import java.util.Formatter;&#xA;import java.util.Formattable;&#xA;import java.util.Locale;&#xA;import static java.util.FormattableFlags.*;&#xA;&#xA;...&#xA;&#xA;public class StockName implements Formattable {&#xA;private String symbol, companyName, frenchCompanyName;&#xA;public StockName(String symbol, String companyName,&#xA;String frenchCompanyName) {&#xA;...&#xA;}&#xA;&#xA;...&#xA;&#xA;public void formatTo(Formatter fmt, int f, int width, int precision) {&#xA;StringBuilder sb = new StringBuilder();&#xA;&#xA;decide form of name&#xA;String name = companyName;&#xA;if (fmt.locale().equals(Locale.FRANCE))&#xA;name = frenchCompanyName;&#xA;boolean alternate = (f &amp; ALTERNATE) == ALTERNATE;&#xA;boolean usesymbol = alternate || (precision != -1 &amp;&amp; precision &lt; 10);&#xA;String out = (usesymbol ? symbol : name);&#xA;&#xA;apply precision&#xA;if (precision == -1 || out.length() &lt; precision) {&#xA;write it all&#xA;sb.append(out);&#xA;} else {&#xA;sb.append(out.substring(0, precision - 1)).append('*');&#xA;}&#xA;&#xA;apply width and justification&#xA;int len = sb.length();&#xA;if (len &lt; width)&#xA;for (int i = 0; i &lt; width - len; i++)&#xA;if ((f &amp; LEFT_JUSTIFY) == LEFT_JUSTIFY)&#xA;sb.append(' ');&#xA;else&#xA;sb.insert(0, ' ');&#xA;&#xA;fmt.format(sb.toString());&#xA;}&#xA;&#xA;public String toString() {&#xA;return String.format(&quot;%s - %s&quot;, symbol, companyName);&#xA;}&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p> When used in conjunction with the {@link java.util.Formatter}, the above&#xA;class produces the following output for various format strings.&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;Formatter fmt = new Formatter();&#xA;StockName sn = new StockName(&quot;HUGE&quot;, &quot;Huge Fruit, Inc.&quot;,&#xA;&quot;Fruit Titanesque, Inc.&quot;);&#xA;fmt.format(&quot;%s&quot;, sn);                   //   -> &quot;Huge Fruit, Inc.&quot;&#xA;fmt.format(&quot;%s&quot;, sn.toString());        //   -> &quot;HUGE - Huge Fruit, Inc.&quot;&#xA;fmt.format(&quot;%#s&quot;, sn);                  //   -> &quot;HUGE&quot;&#xA;fmt.format(&quot;%-10.8s&quot;, sn);              //   -> &quot;HUGE      &quot;&#xA;fmt.format(&quot;%.12s&quot;, sn);                //   -> &quot;Huge Fruit,*&quot;&#xA;fmt.format(Locale.FRANCE, &quot;%25s&quot;, sn);  //   -> &quot;   Fruit Titanesque, Inc.&quot;&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p> Formattables are not necessarily safe for multithreaded access.  Thread&#xA;safety is optional and may be enforced by classes that extend and implement&#xA;this interface.&#xA;&#xA;&lt;p> Unless otherwise specified, passing a &lt;tt>null&lt;/tt> argument to&#xA;any method in this interface will cause a {@link&#xA;NullPointerException} to be thrown.&#xA;&#xA;@version &#x9;1.3, 04/21/04&#xA;@since  1.5&#xA;" annotatedElement="d49d9ead-f1bc-4b5c-9659-ef6629c7b023"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="727dcdb4-6dff-44f4-b232-f2e838f83d56" name="HashMap&lt;K, V>">
            <templateBinding xmi:id="7828c46e-3622-4965-a096-3e54792f5d28" signature="728ca417-c96f-45a1-8e42-8731b30e61ee">
              <parameterSubstitution xmi:id="bff805cc-5b6d-48b2-85d9-63928a555a1c" formal="941bb1e1-6bf3-431a-9e39-f73396ea1874" actual="053c10be-a937-4d45-bc60-78eccf63004c"/>
              <parameterSubstitution xmi:id="a4d17a15-2a3a-4e01-92a2-ef6b164806ae" formal="3e4536b5-4534-4015-85ed-a0cb7c4d8ff9" actual="10312efa-b452-4305-a7fd-934812e1b484"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="4a082587-0c9e-4fc6-950d-861bfb398882" name="EventListener" isAbstract="true">
            <ownedComment xmi:id="6a5cd0f2-7b21-44d5-a9f7-97460ce5ec0e" body="A tagging interface that all event listener interfaces must extend.&#xA;@since JDK1.1&#xA;" annotatedElement="4a082587-0c9e-4fc6-950d-861bfb398882"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="cd06d5da-937c-422b-91f1-1169a2124be5" name="Entry&lt;K, V>">
            <templateBinding xmi:id="694ee6e9-27a0-48bd-8018-9714b0fe3235" signature="7cf51448-f1eb-4302-9df0-1bb65de7a0bc">
              <parameterSubstitution xmi:id="443c4f35-1f15-48d3-8976-9a111bff2e9c" formal="d8da125c-4daa-452a-829a-152b126639d6" actual="060212e9-7a6f-4d42-b5f6-3b76c9820dd4"/>
              <parameterSubstitution xmi:id="55f3c3aa-7522-49ba-ad8c-2b5745bb4e51" formal="24c364a9-9113-4693-b2f0-8ccded1cd0c8" actual="2a4cae87-a06b-46e1-8159-126238f0675d"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5104094c-72f7-43c5-a6c6-842b3948cd1e" name="WeakHashMap" clientDependency="b1ba1f9a-16b1-4e6b-87db-8ee64887e577">
            <ownedComment xmi:id="7118446b-6820-44a0-82f3-7a956d4a3175" body="A hashtable-based &lt;tt>Map&lt;/tt> implementation with &lt;em>weak keys&lt;/em>.&#xA;An entry in a &lt;tt>WeakHashMap&lt;/tt> will automatically be removed when&#xA;its key is no longer in ordinary use.  More precisely, the presence of a&#xA;mapping for a given key will not prevent the key from being discarded by the&#xA;garbage collector, that is, made finalizable, finalized, and then reclaimed.&#xA;When a key has been discarded its entry is effectively removed from the map,&#xA;so this class behaves somewhat differently than other &lt;tt>Map&lt;/tt>&#xA;implementations.&#xA;&#xA;&lt;p> Both null values and the null key are supported. This class has&#xA;performance characteristics similar to those of the &lt;tt>HashMap&lt;/tt>&#xA;class, and has the same efficiency parameters of &lt;em>initial capacity&lt;/em>&#xA;and &lt;em>load factor&lt;/em>.&#xA;&#xA;&lt;p> Like most collection classes, this class is not synchronized.  A&#xA;synchronized &lt;tt>WeakHashMap&lt;/tt> may be constructed using the&#xA;&lt;tt>Collections.synchronizedMap&lt;/tt> method.&#xA;&#xA;&lt;p> This class is intended primarily for use with key objects whose&#xA;&lt;tt>equals&lt;/tt> methods test for object identity using the&#xA;&lt;tt>==&lt;/tt> operator.  Once such a key is discarded it can never be&#xA;recreated, so it is impossible to do a lookup of that key in a&#xA;&lt;tt>WeakHashMap&lt;/tt> at some later time and be surprised that its entry&#xA;has been removed.  This class will work perfectly well with key objects&#xA;whose &lt;tt>equals&lt;/tt> methods are not based upon object identity, such&#xA;as &lt;tt>String&lt;/tt> instances.  With such recreatable key objects,&#xA;however, the automatic removal of &lt;tt>WeakHashMap&lt;/tt> entries whose&#xA;keys have been discarded may prove to be confusing.&#xA;&#xA;&lt;p> The behavior of the &lt;tt>WeakHashMap&lt;/tt> class depends in part upon&#xA;the actions of the garbage collector, so several familiar (though not&#xA;required) &lt;tt>Map&lt;/tt> invariants do not hold for this class.  Because&#xA;the garbage collector may discard keys at any time, a&#xA;&lt;tt>WeakHashMap&lt;/tt> may behave as though an unknown thread is silently&#xA;removing entries.  In particular, even if you synchronize on a&#xA;&lt;tt>WeakHashMap&lt;/tt> instance and invoke none of its mutator methods, it&#xA;is possible for the &lt;tt>size&lt;/tt> method to return smaller values over&#xA;time, for the &lt;tt>isEmpty&lt;/tt> method to return &lt;tt>false&lt;/tt> and&#xA;then &lt;tt>true&lt;/tt>, for the &lt;tt>containsKey&lt;/tt> method to return&#xA;&lt;tt>true&lt;/tt> and later &lt;tt>false&lt;/tt> for a given key, for the&#xA;&lt;tt>get&lt;/tt> method to return a value for a given key but later return&#xA;&lt;tt>null&lt;/tt>, for the &lt;tt>put&lt;/tt> method to return&#xA;&lt;tt>null&lt;/tt> and the &lt;tt>remove&lt;/tt> method to return&#xA;&lt;tt>false&lt;/tt> for a key that previously appeared to be in the map, and&#xA;for successive examinations of the key set, the value set, and the entry set&#xA;to yield successively smaller numbers of elements.&#xA;&#xA;&lt;p> Each key object in a &lt;tt>WeakHashMap&lt;/tt> is stored indirectly as&#xA;the referent of a weak reference.  Therefore a key will automatically be&#xA;removed only after the weak references to it, both inside and outside of the&#xA;map, have been cleared by the garbage collector.&#xA;&#xA;&lt;p> &lt;strong>Implementation note:&lt;/strong> The value objects in a&#xA;&lt;tt>WeakHashMap&lt;/tt> are held by ordinary strong references.  Thus care&#xA;should be taken to ensure that value objects do not strongly refer to their&#xA;own keys, either directly or indirectly, since that will prevent the keys&#xA;from being discarded.  Note that a value object may refer indirectly to its&#xA;key via the &lt;tt>WeakHashMap&lt;/tt> itself; that is, a value object may&#xA;strongly refer to some other key object whose associated value object, in&#xA;turn, strongly refers to the key of the first value object.  One way&#xA;to deal with this is to wrap values themselves within&#xA;&lt;tt>WeakReferences&lt;/tt> before&#xA;inserting, as in: &lt;tt>m.put(key, new WeakReference(value))&lt;/tt>,&#xA;and then unwrapping upon each &lt;tt>get&lt;/tt>.&#xA;&#xA;&lt;p>The iterators returned by all of this class's &quot;collection view methods&quot;&#xA;are &lt;i>fail-fast&lt;/i>: if the map is structurally modified at any time after&#xA;the iterator is created, in any way except through the iterator's own&#xA;&lt;tt>remove&lt;/tt> or &lt;tt>add&lt;/tt> methods, the iterator will throw a&#xA;&lt;tt>ConcurrentModificationException&lt;/tt>.  Thus, in the face of concurrent&#xA;modification, the iterator fails quickly and cleanly, rather than risking&#xA;arbitrary, non-deterministic behavior at an undetermined time in the&#xA;future.&#xA;&#xA;&lt;p>Note that the fail-fast behavior of an iterator cannot be guaranteed&#xA;as it is, generally speaking, impossible to make any hard guarantees in the&#xA;presence of unsynchronized concurrent modification.  Fail-fast iterators&#xA;throw &lt;tt>ConcurrentModificationException&lt;/tt> on a best-effort basis.&#xA;Therefore, it would be wrong to write a program that depended on this&#xA;exception for its correctness:  &lt;i>the fail-fast behavior of iterators&#xA;should be used only to detect bugs.&lt;/i>&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@version&#x9;1.30, 02/19/04&#xA;@author      Doug Lea&#xA;@author      Josh Bloch&#xA;@author&#x9;Mark Reinhold&#xA;@since&#x9;1.2&#xA;@see&#x9;&#x9;java.util.HashMap&#xA;@see&#x9;&#x9;java.lang.ref.WeakReference&#xA;" annotatedElement="5104094c-72f7-43c5-a6c6-842b3948cd1e"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="cfb9a820-dde7-49e4-aa8d-c88b30353e6d" name="" parameter="8dc305b1-22df-487a-b76e-ef4315691ee8 3b69a66e-a1c9-433a-8bf1-ea124877e797">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="8dc305b1-22df-487a-b76e-ef4315691ee8" parameteredElement="114d2aed-8b64-42ba-a60d-1f9c42abf085">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="114d2aed-8b64-42ba-a60d-1f9c42abf085" name="K" templateParameter="8dc305b1-22df-487a-b76e-ef4315691ee8"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="3b69a66e-a1c9-433a-8bf1-ea124877e797" parameteredElement="c5ebed38-a09a-46bc-92d2-6bafde00c4d4">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="c5ebed38-a09a-46bc-92d2-6bafde00c4d4" name="V" templateParameter="3b69a66e-a1c9-433a-8bf1-ea124877e797"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="34167342-f966-461b-85ab-e79a18cf9798" isSubstitutable="true" general="7aeba934-44c6-42f4-9082-79695a7c74c4"/>
            <interfaceRealization xmi:id="b1ba1f9a-16b1-4e6b-87db-8ee64887e577" name="" supplier="b5eaa913-ac40-4b35-bf06-e3638ddc059a" client="5104094c-72f7-43c5-a6c6-842b3948cd1e" contract="b5eaa913-ac40-4b35-bf06-e3638ddc059a"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="2e11b9fd-51d2-403b-9f8e-0e1f649dd23a" name="Entry" visibility="private" clientDependency="56e283a3-90d5-4054-9ac1-3535e3781d5e">
              <ownedComment xmi:id="96b775f7-4eb6-4854-b317-1d0c17aaa7b6" body="The entries in this hash table extend WeakReference, using its main ref&#xA;field as the key.&#xA;" annotatedElement="2e11b9fd-51d2-403b-9f8e-0e1f649dd23a"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="022ed737-b142-4541-b7ce-3348bdda2239" name="" parameter="841db8a6-2778-4db2-8513-7febfa24bbc3 389e8c3e-1f3f-4d3c-99a5-c561a885a573">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="841db8a6-2778-4db2-8513-7febfa24bbc3" parameteredElement="ac9943d9-4910-4a31-8077-4a9f6d50a404">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="ac9943d9-4910-4a31-8077-4a9f6d50a404" name="K" templateParameter="841db8a6-2778-4db2-8513-7febfa24bbc3"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="389e8c3e-1f3f-4d3c-99a5-c561a885a573" parameteredElement="700fff49-5b0d-4727-96ca-7b8b9089cc16">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="700fff49-5b0d-4727-96ca-7b8b9089cc16" name="V" templateParameter="389e8c3e-1f3f-4d3c-99a5-c561a885a573"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="91e7c9fc-5fa0-40bc-a195-545ca7d8341b" isSubstitutable="true" general="be25d82f-42e1-449d-8dac-5eb053710e0b"/>
              <interfaceRealization xmi:id="56e283a3-90d5-4054-9ac1-3535e3781d5e" name="" supplier="5bebc1fb-871c-4596-8648-6ad46faeacab" client="2e11b9fd-51d2-403b-9f8e-0e1f649dd23a" contract="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="6d649418-773b-40f2-a1fd-31f4ae35fa77" name="HashIterator" visibility="private" clientDependency="a78f2b8b-f99e-4ac6-89b3-8e5c972a1df5" isAbstract="true">
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="677cb0bc-87fb-4737-9b5e-39b2c262fcc6" name="" parameter="72df0f7b-e9b3-413b-9c16-e63dde3abe0a">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="72df0f7b-e9b3-413b-9c16-e63dde3abe0a" parameteredElement="e06589a3-2426-4921-8ed3-8f95e9be4156">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="e06589a3-2426-4921-8ed3-8f95e9be4156" name="T" templateParameter="72df0f7b-e9b3-413b-9c16-e63dde3abe0a"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="a78f2b8b-f99e-4ac6-89b3-8e5c972a1df5" name="" supplier="15581cb3-f33d-4deb-9456-fe83f0817c37" client="6d649418-773b-40f2-a1fd-31f4ae35fa77" contract="15581cb3-f33d-4deb-9456-fe83f0817c37"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="bd77e101-8303-47be-88c8-f2126952ccdb" name="ValueIterator" visibility="private">
              <generalization xmi:id="85c32759-65a1-4ccf-9a29-b597c318fd01" isSubstitutable="true" general="1be2b815-6950-45ad-b5fb-5be8eb844c60"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c51083a1-0d04-4956-891b-02632cf14d36" name="KeyIterator" visibility="private">
              <generalization xmi:id="a9b61f86-4939-4081-91ed-b8cc4b327e18" isSubstitutable="true" general="cb8957a3-88ce-424a-874e-fe550df6a59e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c52b2e28-0a45-42d2-b200-70dfa9ecc7c5" name="EntryIterator" visibility="private">
              <generalization xmi:id="a3cb8093-ddfc-4f0b-bd75-165d40b998b2" isSubstitutable="true" general="de16684e-69fa-4465-bde4-82eea2873220"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="d56cd7dc-6ff4-4781-9581-f4d95fe03081" name="KeySet" visibility="private">
              <generalization xmi:id="b8747352-4df1-4087-a0a1-78a953c582a0" isSubstitutable="true" general="d8e4bb4a-fea6-4600-8da2-311416fd86f2"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="36d3ede9-6369-4004-987a-4056f3913e6a" name="Values" visibility="private">
              <generalization xmi:id="64c12a6e-4bdf-43ef-9028-8634b9768507" isSubstitutable="true" general="831cb79b-21c0-4203-9962-b2cebddd4105"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="2abf1553-6333-4d85-b9ff-acdc30d5e985" name="EntrySet" visibility="private">
              <generalization xmi:id="56dfdf9b-54a8-4f7e-8599-f662a6555d4b" isSubstitutable="true" general="01481a34-3b75-4493-84ca-4519f1a2e4fa"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0f58d81f-3a53-4dd9-8434-50f2a9af03f5" name="DuplicateFormatFlagsException">
            <ownedComment xmi:id="9017eeac-d755-4000-af05-fad35707fcf1" body="Unchecked exception thrown when duplicate flags are provided in the format&#xA;specifier.&#xA;&#xA;&lt;p> Unless otherwise specified, passing a &lt;tt>null&lt;/tt> argument to any&#xA;method or constructor in this class will cause a {@link&#xA;NullPointerException} to be thrown.&#xA;&#xA;@version &#x9;1.2, 12/19/03&#xA;@since 1.5&#xA;" annotatedElement="0f58d81f-3a53-4dd9-8434-50f2a9af03f5"/>
            <generalization xmi:id="d63c750a-bcfd-47e0-b890-6967a205c911" isSubstitutable="true" general="615b003b-a7bd-4b48-ba53-15e2ad73fd34"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="edebdcb7-7364-44ba-942e-f5457e8b6987" name="HashIterator&lt;Entry&lt;K, V>>">
            <templateBinding xmi:id="e4c8cca9-82ad-4f38-8c62-728a6cae9f00" signature="5bf2c9be-3da9-4abb-879a-cd9f7d570041">
              <parameterSubstitution xmi:id="806aa5b0-d520-4da5-bd21-0bdc1cf9a3c2" formal="8d329d03-ffda-4a1f-9dcd-d32d0f9bf4fd" actual="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8663cf4f-2a80-4522-a53c-4a142f488ec9" name="AbstractCollection" clientDependency="d482b56c-619f-4bdd-ad86-60c556defe81" isAbstract="true">
            <ownedComment xmi:id="5b6ec41c-73ee-4d8c-9ca6-3e42a0e7d139" body="This class provides a skeletal implementation of the &lt;tt>Collection&lt;/tt>&#xA;interface, to minimize the effort required to implement this interface. &lt;p>&#xA;&#xA;To implement an unmodifiable collection, the programmer needs only to&#xA;extend this class and provide implementations for the &lt;tt>iterator&lt;/tt> and&#xA;&lt;tt>size&lt;/tt> methods.  (The iterator returned by the &lt;tt>iterator&lt;/tt>&#xA;method must implement &lt;tt>hasNext&lt;/tt> and &lt;tt>next&lt;/tt>.)&lt;p>&#xA;&#xA;To implement a modifiable collection, the programmer must additionally&#xA;override this class's &lt;tt>add&lt;/tt> method (which otherwise throws an&#xA;&lt;tt>UnsupportedOperationException&lt;/tt>), and the iterator returned by the&#xA;&lt;tt>iterator&lt;/tt> method must additionally implement its &lt;tt>remove&lt;/tt>&#xA;method.&lt;p>&#xA;&#xA;The programmer should generally provide a void (no argument) and&#xA;&lt;tt>Collection&lt;/tt> constructor, as per the recommendation in the&#xA;&lt;tt>Collection&lt;/tt> interface specification.&lt;p>&#xA;&#xA;The documentation for each non-abstract methods in this class describes its&#xA;implementation in detail.  Each of these methods may be overridden if&#xA;the collection being implemented admits a more efficient implementation.&lt;p>&#xA;&#xA;This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@author  Neal Gafter&#xA;@version 1.24, 01/18/03&#xA;@see Collection&#xA;@since 1.2&#xA;" annotatedElement="8663cf4f-2a80-4522-a53c-4a142f488ec9"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="d64b29f5-bca8-49c3-8271-3097b690c222" name="" parameter="2794615a-0f57-4cbc-82eb-10061cb9e375">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="2794615a-0f57-4cbc-82eb-10061cb9e375" parameteredElement="8c882e13-c952-413a-a9d0-54509c03b108">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="8c882e13-c952-413a-a9d0-54509c03b108" name="E" templateParameter="2794615a-0f57-4cbc-82eb-10061cb9e375"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <interfaceRealization xmi:id="d482b56c-619f-4bdd-ad86-60c556defe81" name="" supplier="f2ecd2a3-8039-41dd-a004-e978e2a488aa" client="8663cf4f-2a80-4522-a53c-4a142f488ec9" contract="f2ecd2a3-8039-41dd-a004-e978e2a488aa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f60b2757-c2ef-46b3-94ca-bf0fc089dccb" name="CheckedMap&lt;K, V>">
            <templateBinding xmi:id="1b01081f-2433-4cc0-aa34-39b26371f4e9" signature="e35192cc-b7c6-452d-bc9e-abad63363d55">
              <parameterSubstitution xmi:id="a57756a8-29ad-4d81-a933-88fc907c3684" formal="931bbfca-e1ea-4704-ab8d-b67c9ec8dafa" actual="6dd4cda7-ca5f-48ed-958f-89b7cacd398f"/>
              <parameterSubstitution xmi:id="a758f8ad-c521-4693-8557-3f097fa81ecd" formal="3ddeb5c1-6b5f-40c0-90d4-e37ef141e419" actual="3f035456-ed9a-45bc-a5e5-dafa55a531a4"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="4c4f4f13-cf86-4c61-bc8a-8d8054207441" name="SortedMap" isAbstract="true">
            <ownedComment xmi:id="280c9130-1fd1-49a9-9f3d-61f4cf1e61a2" body="A map that further guarantees that it will be in ascending key order,&#xA;sorted according to the &lt;i>natural ordering&lt;/i> of its keys (see the&#xA;&lt;tt>Comparable&lt;/tt> interface), or by a comparator provided at sorted map&#xA;creation time.  This order is reflected when iterating over the sorted&#xA;map's collection views (returned by the &lt;tt>entrySet&lt;/tt>, &lt;tt>keySet&lt;/tt>&#xA;and &lt;tt>values&lt;/tt> methods).  Several additional operations are provided&#xA;to take advantage of the ordering.  (This interface is the map analogue of&#xA;the &lt;tt>SortedSet&lt;/tt> interface.)&lt;p>&#xA;&#xA;All keys inserted into a sorted map must implement the &lt;tt>Comparable&lt;/tt>&#xA;interface (or be accepted by the specified comparator).  Furthermore, all&#xA;such keys must be &lt;i>mutually comparable&lt;/i>: &lt;tt>k1.compareTo(k2)&lt;/tt> (or&#xA;&lt;tt>comparator.compare(k1, k2)&lt;/tt>) must not throw a&#xA;&lt;tt>ClassCastException&lt;/tt> for any elements &lt;tt>k1&lt;/tt> and &lt;tt>k2&lt;/tt> in&#xA;the sorted map.  Attempts to violate this restriction will cause the&#xA;offending method or constructor invocation to throw a&#xA;&lt;tt>ClassCastException&lt;/tt>.&lt;p>&#xA;&#xA;Note that the ordering maintained by a sorted map (whether or not an&#xA;explicit comparator is provided) must be &lt;i>consistent with equals&lt;/i> if&#xA;the sorted map is to correctly implement the &lt;tt>Map&lt;/tt> interface.  (See&#xA;the &lt;tt>Comparable&lt;/tt> interface or &lt;tt>Comparator&lt;/tt> interface for a&#xA;precise definition of &lt;i>consistent with equals&lt;/i>.)  This is so because&#xA;the &lt;tt>Map&lt;/tt> interface is defined in terms of the &lt;tt>equals&lt;/tt>&#xA;operation, but a sorted map performs all key comparisons using its&#xA;&lt;tt>compareTo&lt;/tt> (or &lt;tt>compare&lt;/tt>) method, so two keys that are&#xA;deemed equal by this method are, from the standpoint of the sorted map,&#xA;equal.  The behavior of a tree map &lt;i>is&lt;/i> well-defined even if its&#xA;ordering is inconsistent with equals; it just fails to obey the general&#xA;contract of the &lt;tt>Map&lt;/tt> interface.&lt;p>&#xA;&#xA;All general-purpose sorted map implementation classes should provide four&#xA;&quot;standard&quot; constructors: 1) A void (no arguments) constructor, which&#xA;creates an empty sorted map sorted according to the &lt;i>natural order&lt;/i> of&#xA;its keys.  2) A constructor with a single argument of type&#xA;&lt;tt>Comparator&lt;/tt>, which creates an empty sorted map sorted according to&#xA;the specified comparator.  3) A constructor with a single argument of type&#xA;&lt;tt>Map&lt;/tt>, which creates a new map with the same key-value mappings as&#xA;its argument, sorted according to the keys' natural ordering.  4) A&#xA;constructor with a single argument of type sorted map, which creates a new&#xA;sorted map with the same key-value mappings and the same ordering as the&#xA;input sorted map.  There is no way to enforce this recommendation (as&#xA;interfaces cannot contain constructors) but the JDK implementation&#xA;(TreeMap) complies.&lt;p>&#xA;&#xA;This interface is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.21, 06/28/04&#xA;@see Map&#xA;@see TreeMap&#xA;@see SortedSet&#xA;@see Comparator&#xA;@see Comparable&#xA;@see Collection&#xA;@see ClassCastException&#xA;@since 1.2&#xA;" annotatedElement="4c4f4f13-cf86-4c61-bc8a-8d8054207441"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="faee78e0-d12c-45b3-ad0a-6c80c65948c8" name="" parameter="334d45e1-06b9-4fbc-a47d-042ccea8c0af 260f68d1-2cff-4f5c-a6df-e3640a656fb5">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="334d45e1-06b9-4fbc-a47d-042ccea8c0af" parameteredElement="19bc2c63-4489-4577-98eb-82fa6f6d5722">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="19bc2c63-4489-4577-98eb-82fa6f6d5722" name="K" templateParameter="334d45e1-06b9-4fbc-a47d-042ccea8c0af"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="260f68d1-2cff-4f5c-a6df-e3640a656fb5" parameteredElement="827a895a-d862-4324-aa7e-dfd35785e72b">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="827a895a-d862-4324-aa7e-dfd35785e72b" name="V" templateParameter="260f68d1-2cff-4f5c-a6df-e3640a656fb5"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="9829ebdc-aecc-44a5-8b73-e6e3bc7eb8dd" isSubstitutable="true" general="b5eaa913-ac40-4b35-bf06-e3638ddc059a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2d6e88c8-cb4b-4962-b7bd-da43ade86d13" name="IdentityHashMapIterator&lt;K>">
            <templateBinding xmi:id="a5fb76f3-2a20-4cca-8c1e-c4d12bb3bbac" signature="cc5e9a89-aa7b-48c9-917f-1c40a6cbcf70">
              <parameterSubstitution xmi:id="cd56c658-3892-4d25-af32-f771a7468a70" formal="caa9c9aa-065d-44ba-a72e-756962f73e92" actual="a1b8436f-87dd-4463-a007-2ca2f27c312b"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0605962d-b691-4947-b981-ab3df894fb66" name="InputMismatchException">
            <ownedComment xmi:id="73ae5a6c-0232-4897-9af1-ffeb7200ef3f" body="Thrown by a &lt;code>Scanner&lt;/code> to indicate that the token&#xA;retrieved does not match the pattern for the expected type, or&#xA;that the token is out of range for the expected type.&#xA;&#xA;@author  unascribed&#xA;@version 1.3 12/19/03&#xA;@see     java.util.Scanner&#xA;@since   1.5&#xA;" annotatedElement="0605962d-b691-4947-b981-ab3df894fb66"/>
            <generalization xmi:id="2045358e-bfae-41e9-9483-b0c9a0facff9" isSubstitutable="true" general="cc619ae9-6c8c-489a-9ce6-1b655c22186e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3aeb4cea-0b5b-4219-98a6-a1e99d5405db" name="ResourceBundle" isAbstract="true">
            <ownedComment xmi:id="5fd9c294-0635-4944-a689-16d62cc1a535" body="Resource bundles contain locale-specific objects.&#xA;When your program needs a locale-specific resource,&#xA;a &lt;code>String&lt;/code> for example, your program can load it&#xA;from the resource bundle that is appropriate for the&#xA;current user's locale. In this way, you can write&#xA;program code that is largely independent of the user's&#xA;locale isolating most, if not all, of the locale-specific&#xA;information in resource bundles.&#xA;&#xA;&lt;p>&#xA;This allows you to write programs that can:&#xA;&lt;UL type=SQUARE>&#xA;&lt;LI> be easily localized, or translated, into different languages&#xA;&lt;LI> handle multiple locales at once&#xA;&lt;LI> be easily modified later to support even more locales&#xA;&lt;/UL>&#xA;&#xA;&lt;P>&#xA;Resource bundles belong to families whose members share a common base&#xA;name, but whose names also have additional components that identify&#xA;their locales. For example, the base name of a family of resource&#xA;bundles might be &quot;MyResources&quot;. The family should have a default&#xA;resource bundle which simply has the same name as its family -&#xA;&quot;MyResources&quot; - and will be used as the bundle of last resort if a&#xA;specific locale is not supported. The family can then provide as&#xA;many locale-specific members as needed, for example a German one&#xA;named &quot;MyResources_de&quot;.&#xA;&#xA;&lt;P>&#xA;Each resource bundle in a family contains the same items, but the items have&#xA;been translated for the locale represented by that resource bundle.&#xA;For example, both &quot;MyResources&quot; and &quot;MyResources_de&quot; may have a&#xA;&lt;code>String&lt;/code> that's used on a button for canceling operations.&#xA;In &quot;MyResources&quot; the &lt;code>String&lt;/code> may contain &quot;Cancel&quot; and in&#xA;&quot;MyResources_de&quot; it may contain &quot;Abbrechen&quot;.&#xA;&#xA;&lt;P>&#xA;If there are different resources for different countries, you&#xA;can make specializations: for example, &quot;MyResources_de_CH&quot; contains objects for&#xA;the German language (de) in Switzerland (CH). If you want to only&#xA;modify some of the resources&#xA;in the specialization, you can do so.&#xA;&#xA;&lt;P>&#xA;When your program needs a locale-specific object, it loads&#xA;the &lt;code>ResourceBundle&lt;/code> class using the&#xA;{@link #getBundle(java.lang.String, java.util.Locale) getBundle}&#xA;method:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;ResourceBundle myResources =&#xA;ResourceBundle.getBundle(&quot;MyResources&quot;, currentLocale);&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;P>&#xA;Resource bundles contain key/value pairs. The keys uniquely&#xA;identify a locale-specific object in the bundle. Here's an&#xA;example of a &lt;code>ListResourceBundle&lt;/code> that contains&#xA;two key/value pairs:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;public class MyResources extends ListResourceBundle {&#xA;public Object[][] getContents() {&#xA;return contents;&#xA;}&#xA;static final Object[][] contents = {&#xA;LOCALIZE THIS&#xA;{&quot;OkKey&quot;, &quot;OK&quot;},&#xA;{&quot;CancelKey&quot;, &quot;Cancel&quot;},&#xA;END OF MATERIAL TO LOCALIZE&#xA;};&#xA;}&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;Keys are always &lt;code>String&lt;/code>s.&#xA;In this example, the keys are &quot;OkKey&quot; and &quot;CancelKey&quot;.&#xA;In the above example, the values&#xA;are also &lt;code>String&lt;/code>s--&quot;OK&quot; and &quot;Cancel&quot;--but&#xA;they don't have to be. The values can be any type of object.&#xA;&#xA;&lt;P>&#xA;You retrieve an object from resource bundle using the appropriate&#xA;getter method. Because &quot;OkKey&quot; and &quot;CancelKey&quot;&#xA;are both strings, you would use &lt;code>getString&lt;/code> to retrieve them:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;button1 = new Button(myResources.getString(&quot;OkKey&quot;));&#xA;button2 = new Button(myResources.getString(&quot;CancelKey&quot;));&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;The getter methods all require the key as an argument and return&#xA;the object if found. If the object is not found, the getter method&#xA;throws a &lt;code>MissingResourceException&lt;/code>.&#xA;&#xA;&lt;P>&#xA;Besides &lt;code>getString&lt;/code>, ResourceBundle also provides&#xA;a method for getting string arrays, &lt;code>getStringArray&lt;/code>,&#xA;as well as a generic &lt;code>getObject&lt;/code> method for any other&#xA;type of object. When using &lt;code>getObject&lt;/code>, you'll&#xA;have to cast the result to the appropriate type. For example:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;int[] myIntegers = (int[]) myResources.getObject(&quot;intList&quot;);&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;P>&#xA;The Java 2 platform provides two subclasses of &lt;code>ResourceBundle&lt;/code>,&#xA;&lt;code>ListResourceBundle&lt;/code> and &lt;code>PropertyResourceBundle&lt;/code>,&#xA;that provide a fairly simple way to create resources.&#xA;As you saw briefly in a previous example, &lt;code>ListResourceBundle&lt;/code>&#xA;manages its resource as a List of key/value pairs.&#xA;&lt;code>PropertyResourceBundle&lt;/code> uses a properties file to manage&#xA;its resources.&#xA;&#xA;&lt;p>&#xA;If &lt;code>ListResourceBundle&lt;/code> or &lt;code>PropertyResourceBundle&lt;/code>&#xA;do not suit your needs, you can write your own &lt;code>ResourceBundle&lt;/code>&#xA;subclass.  Your subclasses must override two methods: &lt;code>handleGetObject&lt;/code>&#xA;and &lt;code>getKeys()&lt;/code>.&#xA;&#xA;&lt;P>&#xA;The following is a very simple example of a &lt;code>ResourceBundle&lt;/code>&#xA;subclass, MyResources, that manages two resources (for a larger number of&#xA;resources you would probably use a &lt;code>Hashtable&lt;/code>).&#xA;Notice that you don't need to supply a value if&#xA;a &quot;parent-level&quot; &lt;code>ResourceBundle&lt;/code> handles the same&#xA;key with the same value (as for the okKey below).&#xA;&lt;p>&lt;strong>Example:&lt;/strong>&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;default (English language, United States)&#xA;public class MyResources extends ResourceBundle {&#xA;public Object handleGetObject(String key) {&#xA;if (key.equals(&quot;okKey&quot;)) return &quot;Ok&quot;;&#xA;if (key.equals(&quot;cancelKey&quot;)) return &quot;Cancel&quot;;&#xA;return null;&#xA;}&#xA;}&#xA;&#xA;German language&#xA;public class MyResources_de extends MyResources {&#xA;public Object handleGetObject(String key) {&#xA;don't need okKey, since parent level handles it.&#xA;if (key.equals(&quot;cancelKey&quot;)) return &quot;Abbrechen&quot;;&#xA;return null;&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;You do not have to restrict yourself to using a single family of&#xA;&lt;code>ResourceBundle&lt;/code>s. For example, you could have a set of bundles for&#xA;exception messages, &lt;code>ExceptionResources&lt;/code>&#xA;(&lt;code>ExceptionResources_fr&lt;/code>, &lt;code>ExceptionResources_de&lt;/code>, ...),&#xA;and one for widgets, &lt;code>WidgetResource&lt;/code> (&lt;code>WidgetResources_fr&lt;/code>,&#xA;&lt;code>WidgetResources_de&lt;/code>, ...); breaking up the resources however you like.&#xA;&#xA;@see ListResourceBundle&#xA;@see PropertyResourceBundle&#xA;@see MissingResourceException&#xA;@since JDK1.1&#xA;" annotatedElement="3aeb4cea-0b5b-4219-98a6-a1e99d5405db"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="161837e2-1fbf-4cb2-a741-2936cfa9aeeb" name="ResourceCacheKey" visibility="private" clientDependency="d282e148-f5ff-4a6f-9ef9-34aa0d088f65" isLeaf="true">
              <ownedComment xmi:id="117c8d1b-672d-4d1e-9b3e-a96945e4dccd" body="Key used for cached resource bundles.  The key checks&#xA;the resource name, the class loader, and the default&#xA;locale to determine if the resource is a match to the&#xA;requested one. The loader may be null, but the&#xA;searchName and the default locale must have a non-null value.&#xA;Note that the default locale may change over time, and&#xA;lookup should always be based on the current default&#xA;locale (if at all).&#xA;" annotatedElement="161837e2-1fbf-4cb2-a741-2936cfa9aeeb"/>
              <interfaceRealization xmi:id="d282e148-f5ff-4a6f-9ef9-34aa0d088f65" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="161837e2-1fbf-4cb2-a741-2936cfa9aeeb" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8802c14b-db41-475c-93f7-f3cec29ee79a" name="LoaderReference" visibility="private" isLeaf="true">
              <ownedComment xmi:id="96c9fd11-946e-408b-b238-d7c999114726" body="References to class loaders are weak references, so that they can be&#xA;garbage collected when nobody else is using them. The ResourceBundle&#xA;class has no reason to keep class loaders alive.&#xA;" annotatedElement="8802c14b-db41-475c-93f7-f3cec29ee79a"/>
              <generalization xmi:id="7b724bd2-38b0-48d5-98df-8a6cafda07d4" isSubstitutable="true" general="9fe410d6-a23d-4e51-b67a-70e7810968b4"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d571ce32-ae0f-4a90-a06c-e9290bd46a2c" name="IllegalFormatCodePointException">
            <ownedComment xmi:id="b9ddfc81-671c-4a42-907d-7974af6ff917" body="Unchecked exception thrown when a character with an invalid Unicode code&#xA;point as defined by {@link Character#isValidCodePoint} is passed to the&#xA;{@link Formatter}.&#xA;&#xA;&lt;p> Unless otherwise specified, passing a &lt;tt>null&lt;/tt> argument to any&#xA;method or constructor in this class will cause a {@link&#xA;NullPointerException} to be thrown.&#xA;&#xA;@version &#x9;1.2, 12/19/03&#xA;@since 1.5&#xA;" annotatedElement="d571ce32-ae0f-4a90-a06c-e9290bd46a2c"/>
            <generalization xmi:id="eb140fc8-aa6b-490b-9b3d-b4d36a057b27" isSubstitutable="true" general="615b003b-a7bd-4b48-ba53-15e2ad73fd34"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d8be5686-fab6-423c-9030-a6e37ad23490" name="HashIterator&lt;K>">
            <templateBinding xmi:id="3e4fbe9f-c90e-4d40-a5d1-5a154262c0fc" signature="5bf2c9be-3da9-4abb-879a-cd9f7d570041">
              <parameterSubstitution xmi:id="a0df1b56-5609-4218-86cd-027e310c0cf3" formal="8d329d03-ffda-4a1f-9dcd-d32d0f9bf4fd" actual="2a05247f-ff1c-4112-a876-55b56176f13d"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="293b2529-d730-4c11-9509-024820048ce3" name="CheckedSet&lt;E>">
            <templateBinding xmi:id="24bf05da-2fb0-42f4-b895-c8f844b21510" signature="b83c8ab2-5a16-4cf3-a8b1-913fb699b9a8">
              <parameterSubstitution xmi:id="ac6f02ea-cc7a-4798-8eab-55274bb6a83a" formal="361cf61f-fcb7-403a-b55b-ee2ba30fc2a9" actual="712dfe24-60e1-4fd0-8def-e41e627ca897"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6ec2f206-019f-4b84-b3ec-c730b497c45d" name="EnumMapIterator&lt;K>">
            <templateBinding xmi:id="cb177bd1-a66e-4209-b51a-3cbfad6e9021" signature="150e524f-7dee-4b7d-b793-886a51284c29">
              <parameterSubstitution xmi:id="d9bcf565-a93d-4cdd-80f6-f166bdde51d6" formal="fc0ff6cd-6d3d-4473-bce8-82bf97987257" actual="0db45f87-53f1-44ab-8c66-b8bcf5a58284"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a44e7a8f-24fa-45cd-b665-af0b7a72a836" name="AbstractSet" clientDependency="4e7c210e-1769-4c2a-9436-59cbc27e5da2" isAbstract="true">
            <ownedComment xmi:id="1e1c38be-8a6e-4731-99e0-7156cb980777" body="This class provides a skeletal implementation of the &lt;tt>Set&lt;/tt>&#xA;interface to minimize the effort required to implement this&#xA;interface. &lt;p>&#xA;&#xA;The process of implementing a set by extending this class is identical&#xA;to that of implementing a Collection by extending AbstractCollection,&#xA;except that all of the methods and constructors in subclasses of this&#xA;class must obey the additional constraints imposed by the &lt;tt>Set&lt;/tt>&#xA;interface (for instance, the add method must not permit addition of&#xA;multiple instances of an object to a set).&lt;p>&#xA;&#xA;Note that this class does not override any of the implementations from&#xA;the &lt;tt>AbstractCollection&lt;/tt> class.  It merely adds implementations&#xA;for &lt;tt>equals&lt;/tt> and &lt;tt>hashCode&lt;/tt>.&lt;p>&#xA;&#xA;This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@author  Neal Gafter&#xA;@version 1.26, 02/19/04&#xA;@see Collection&#xA;@see AbstractCollection&#xA;@see Set&#xA;@since 1.2&#xA;" annotatedElement="a44e7a8f-24fa-45cd-b665-af0b7a72a836"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="77607dee-756d-445e-96f4-9b3b4e6fb80b" name="" parameter="1c9b3942-53c2-4539-853b-a9aae2736fa2">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="1c9b3942-53c2-4539-853b-a9aae2736fa2" parameteredElement="aa974897-ff9a-4352-b0e9-74046999afa7">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="aa974897-ff9a-4352-b0e9-74046999afa7" name="E" templateParameter="1c9b3942-53c2-4539-853b-a9aae2736fa2"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="5caebfb1-3b34-4ea4-96cd-12a5703c456a" isSubstitutable="true" general="ec29d9fd-f66a-4a01-a246-04b974e8c332"/>
            <interfaceRealization xmi:id="4e7c210e-1769-4c2a-9436-59cbc27e5da2" name="" supplier="baa392ca-bff3-4d7d-b407-489a8610c855" client="a44e7a8f-24fa-45cd-b665-af0b7a72a836" contract="baa392ca-bff3-4d7d-b407-489a8610c855"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2213c8d9-feed-4d9a-bb48-b0498fb0c0c3" name="Enum&lt;K>">
            <templateBinding xmi:id="e2eac058-756c-4e0c-8254-5e5cfb2ed270" signature="4048ca4e-4525-4785-9487-f316f3bd243a">
              <parameterSubstitution xmi:id="d851fd49-a1b8-4b33-ae2d-bbabf60d0b8a" formal="5c1313ab-11c4-4089-a4f2-47d12569be3c" actual="0db45f87-53f1-44ab-8c66-b8bcf5a58284"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1e4c8faa-24a0-4090-b0dc-c671c2623ea0" name="SubList" visibility="package">
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="780267f3-55ab-45b6-89e9-1143c500ab1e" name="" parameter="373557d7-97c2-4a83-8366-5621b3e7c381">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="373557d7-97c2-4a83-8366-5621b3e7c381" parameteredElement="93eeae57-da38-4ad1-9b7a-b774bf1bd4e0">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="93eeae57-da38-4ad1-9b7a-b774bf1bd4e0" name="E" templateParameter="373557d7-97c2-4a83-8366-5621b3e7c381"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="1856d023-cd5a-4ebd-9f67-a21cdf975c23" isSubstitutable="true" general="ee758153-f931-43ca-bcea-40b9d95c713b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="80c56855-fdeb-460b-8a5f-6d68a053d408" name="Arrays">
            <ownedComment xmi:id="a12a7495-029f-4cf5-8ad0-c22b2a281bb6" body="This class contains various methods for manipulating arrays (such as&#xA;sorting and searching).  This class also contains a static factory&#xA;that allows arrays to be viewed as lists.&#xA;&#xA;&lt;p>The methods in this class all throw a &lt;tt>NullPointerException&lt;/tt> if&#xA;the specified array reference is null, except where noted.&#xA;&#xA;&lt;p>The documentation for the methods contained in this class includes&#xA;briefs description of the &lt;i>implementations&lt;/i>.  Such descriptions should&#xA;be regarded as &lt;i>implementation notes&lt;/i>, rather than parts of the&#xA;&lt;i>specification&lt;/i>.  Implementors should feel free to substitute other&#xA;algorithms, so long as the specification itself is adhered to.  (For&#xA;example, the algorithm used by &lt;tt>sort(Object[])&lt;/tt> does not have to be&#xA;a mergesort, but it does have to be &lt;i>stable&lt;/i>.)&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@author  Neal Gafter&#xA;@version 1.59, 04/01/04&#xA;@see     Comparable&#xA;@see     Comparator&#xA;@since   1.2&#xA;" annotatedElement="80c56855-fdeb-460b-8a5f-6d68a053d408"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="9d505321-7e60-4a09-8e2c-ae30cc858754" name="ArrayList" visibility="private" clientDependency="e1df733a-fc7f-4a68-894d-5cac9850e264 77956bcd-40df-4158-96fb-cc46398f109a">
              <ownedComment xmi:id="ba8267d9-f69e-424c-bfcc-b05fb0299261" body="@serial include&#xA;" annotatedElement="9d505321-7e60-4a09-8e2c-ae30cc858754"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="94778f3c-93c5-4830-98d1-64f0b1b1b348" name="" parameter="932da504-c29a-426d-9d62-a0c03e9f30d4">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="932da504-c29a-426d-9d62-a0c03e9f30d4" parameteredElement="c6b8caca-23bb-492b-ba88-152bf17883a7">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="c6b8caca-23bb-492b-ba88-152bf17883a7" name="E" templateParameter="932da504-c29a-426d-9d62-a0c03e9f30d4"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="8c3649f8-8e08-4490-97cc-4a5fb7938e4b" isSubstitutable="true" general="ee758153-f931-43ca-bcea-40b9d95c713b"/>
              <interfaceRealization xmi:id="77956bcd-40df-4158-96fb-cc46398f109a" name="" supplier="29add607-d540-4560-b2b3-2e3c9d7f8dd2" client="9d505321-7e60-4a09-8e2c-ae30cc858754" contract="29add607-d540-4560-b2b3-2e3c9d7f8dd2"/>
              <interfaceRealization xmi:id="e1df733a-fc7f-4a68-894d-5cac9850e264" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="9d505321-7e60-4a09-8e2c-ae30cc858754" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="68be2fb3-d9b5-43e8-ba81-15535e34b87a" name="Iterator" isAbstract="true">
            <ownedComment xmi:id="17d63ce3-e35c-4090-85c9-1c82d7beef8d" body="An iterator over a collection.  Iterator takes the place of Enumeration in&#xA;the Java collections framework.  Iterators differ from enumerations in two&#xA;ways: &lt;ul>&#xA;&lt;li> Iterators allow the caller to remove elements from the&#xA;underlying collection during the iteration with well-defined&#xA;semantics.&#xA;&lt;li> Method names have been improved.&#xA;&lt;/ul>&lt;p>&#xA;&#xA;This interface is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.24, 01/17/04&#xA;@see Collection&#xA;@see ListIterator&#xA;@see Enumeration&#xA;@since 1.2&#xA;" annotatedElement="68be2fb3-d9b5-43e8-ba81-15535e34b87a"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="0f8c6981-4608-4e07-a119-f77e4e17cb2d" name="" parameter="3b71f5d7-d328-40b6-8dcc-6484e179fd5e">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="3b71f5d7-d328-40b6-8dcc-6484e179fd5e" parameteredElement="59ef2e46-2c8b-49eb-84e7-3078680551d3">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="59ef2e46-2c8b-49eb-84e7-3078680551d3" name="E" templateParameter="3b71f5d7-d328-40b6-8dcc-6484e179fd5e"/>
              </ownedParameter>
            </ownedTemplateSignature>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7e4b4f4d-c7d8-4cd4-9f7b-a64b40b9afb1" name="Calendar" clientDependency="18e69e13-f044-47b0-a8e4-1e68ad798fb6 265f9292-a132-4689-9a3e-6d54550b509b 6becbbe3-bf4a-4f60-8a73-208800ec6b0c" isAbstract="true">
            <ownedComment xmi:id="9eaf82e2-63ab-47e1-b2a4-63a353023648" body="The &lt;code>Calendar&lt;/code> class is an abstract class that provides methods&#xA;for converting between a specific instant in time and a set of {@link&#xA;#fields calendar fields} such as &lt;code>YEAR&lt;/code>, &lt;code>MONTH&lt;/code>,&#xA;&lt;code>DAY_OF_MONTH&lt;/code>, &lt;code>HOUR&lt;/code>, and so on, and for&#xA;manipulating the calendar fields, such as getting the date of the next&#xA;week. An instant in time can be represented by a millisecond value that is&#xA;an offset from the &lt;a name=&quot;Epoch&quot;>&lt;em>Epoch&lt;/em>&lt;/a>, January 1, 1970&#xA;00:00:00.000 GMT (Gregorian).&#xA;&#xA;&lt;p>The class also provides additional fields and methods for&#xA;implementing a concrete calendar system outside the package. Those&#xA;fields and methods are defined as &lt;code>protected&lt;/code>.&#xA;&#xA;&lt;p>&#xA;Like other locale-sensitive classes, &lt;code>Calendar&lt;/code> provides a&#xA;class method, &lt;code>getInstance&lt;/code>, for getting a generally useful&#xA;object of this type. &lt;code>Calendar&lt;/code>'s &lt;code>getInstance&lt;/code> method&#xA;returns a &lt;code>Calendar&lt;/code> object whose&#xA;calendar fields have been initialized with the current date and time:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;Calendar rightNow = Calendar.getInstance();&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>A &lt;code>Calendar&lt;/code> object can produce all the calendar field values&#xA;needed to implement the date-time formatting for a particular language and&#xA;calendar style (for example, Japanese-Gregorian, Japanese-Traditional).&#xA;&lt;code>Calendar&lt;/code> defines the range of values returned by&#xA;certain calendar fields, as well as their meaning.  For example,&#xA;the first month of the calendar system has value &lt;code>MONTH ==&#xA;JANUARY&lt;/code> for all calendars.  Other values are defined by the&#xA;concrete subclass, such as &lt;code>ERA&lt;/code>.  See individual field&#xA;documentation and subclass documentation for details.&#xA;&#xA;&lt;h4>Getting and Setting Calendar Field Values&lt;/h4>&#xA;&#xA;&lt;p>The calendar field values can be set by calling the &lt;code>set&lt;/code>&#xA;methods. Any field values set in a &lt;code>Calendar&lt;/code> will not be&#xA;interpreted until it needs to calculate its time value (milliseconds from&#xA;the Epoch) or values of the calendar fields. Calling the&#xA;&lt;code>get&lt;/code>, &lt;code>getTimeInMillis&lt;/code>, &lt;code>getTime&lt;/code>,&#xA;&lt;code>add&lt;/code> and &lt;code>roll&lt;/code> involves such calculation.&#xA;&#xA;&lt;h4>Leniency&lt;/h4>&#xA;&#xA;&lt;p>&lt;code>Calendar&lt;/code> has two modes for interpreting the calendar&#xA;fields, &lt;em>lenient&lt;/em> and &lt;em>non-lenient&lt;/em>.  When a&#xA;&lt;code>Calendar&lt;/code> is in lenient mode, it accepts a wider range of&#xA;calendar field values than it produces.  When a &lt;code>Calendar&lt;/code>&#xA;recomputes calendar field values for return by &lt;code>get()&lt;/code>, all of&#xA;the calendar fields are normalized. For example, a lenient&#xA;&lt;code>GregorianCalendar&lt;/code> interprets &lt;code>MONTH == JANUARY&lt;/code>,&#xA;&lt;code>DAY_OF_MONTH == 32&lt;/code> as February 1.&#xA;&lt;p>When a &lt;code>Calendar&lt;/code> is in non-lenient mode, it throws an&#xA;exception if there is any inconsistency in its calendar fields. For&#xA;example, a &lt;code>GregorianCalendar&lt;/code> always produces&#xA;&lt;code>DAY_OF_MONTH&lt;/code> values between 1 and the length of the month. A&#xA;non-lenient &lt;code>GregorianCalendar&lt;/code> throws an exception upon&#xA;calculating its time or calendar field values if any out-of-range field&#xA;value has been set.&#xA;&#xA;&lt;h4>First Week&lt;/h4>&#xA;&#xA;&lt;code>Calendar&lt;/code> defines a locale-specific seven day week using two&#xA;parameters: the first day of the week and the minimal days in first week&#xA;(from 1 to 7).  These numbers are taken from the locale resource data when a&#xA;&lt;code>Calendar&lt;/code> is constructed.  They may also be specified explicitly&#xA;through the methods for setting their values.&#xA;&#xA;&lt;p>When setting or getting the &lt;code>WEEK_OF_MONTH&lt;/code> or&#xA;&lt;code>WEEK_OF_YEAR&lt;/code> fields, &lt;code>Calendar&lt;/code> must determine the&#xA;first week of the month or year as a reference point.  The first week of a&#xA;month or year is defined as the earliest seven day period beginning on&#xA;&lt;code>getFirstDayOfWeek()&lt;/code> and containing at least&#xA;&lt;code>getMinimalDaysInFirstWeek()&lt;/code> days of that month or year.  Weeks&#xA;numbered ..., -1, 0 precede the first week; weeks numbered 2, 3,... follow&#xA;it.  Note that the normalized numbering returned by &lt;code>get()&lt;/code> may be&#xA;different.  For example, a specific &lt;code>Calendar&lt;/code> subclass may&#xA;designate the week before week 1 of a year as week &lt;code>&lt;i>n&lt;/i>&lt;/code> of&#xA;the previous year.&#xA;&#xA;&lt;h4>Calendar Fields Resolution&lt;/h4>&#xA;&#xA;When computing a date and time from the calendar fields, there&#xA;may be insufficient information for the computation (such as only&#xA;year and month with no day of month), or there may be inconsistent&#xA;information (such as Tuesday, July 15, 1996 (Gregorian) -- July 15,&#xA;1996 is actually a Monday). &lt;code>Calendar&lt;/code> will resolve&#xA;calendar field values to determine the date and time in the&#xA;following way.&#xA;&#xA;&lt;p>If there is any conflict in calendar field values,&#xA;&lt;code>Calendar&lt;/code> gives priorities to calendar fields that have been set&#xA;more recently. The following are the default combinations of the&#xA;calendar fields. The most recent combination, as determined by the&#xA;most recently set single field, will be used.&#xA;&#xA;&lt;p>&lt;a name=&quot;date_resolution&quot;>For the date fields&lt;/a>:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;YEAR + MONTH + DAY_OF_MONTH&#xA;YEAR + MONTH + WEEK_OF_MONTH + DAY_OF_WEEK&#xA;YEAR + MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK&#xA;YEAR + DAY_OF_YEAR&#xA;YEAR + DAY_OF_WEEK + WEEK_OF_YEAR&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;a name=&quot;time_resolution&quot;>For the time of day fields&lt;/a>:&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;HOUR_OF_DAY&#xA;AM_PM + HOUR&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p>If there are any calendar fields whose values haven't been set in the selected&#xA;field combination, &lt;code>Calendar&lt;/code> uses their default values. The default&#xA;value of each field may vary by concrete calendar systems. For example, in&#xA;&lt;code>GregorianCalendar&lt;/code>, the default of a field is the same as that&#xA;of the start of the Epoch: i.e., &lt;code>YEAR = 1970&lt;/code>, &lt;code>MONTH =&#xA;JANUARY&lt;/code>, &lt;code>DAY_OF_MONTH = 1&lt;/code>, etc.&#xA;&#xA;&lt;p>&#xA;&lt;strong>Note:&lt;/strong> There are certain possible ambiguities in&#xA;interpretation of certain singular times, which are resolved in the&#xA;following ways:&#xA;&lt;ol>&#xA;&lt;li> 23:59 is the last minute of the day and 00:00 is the first&#xA;minute of the next day. Thus, 23:59 on Dec 31, 1999 &lt; 00:00 on&#xA;Jan 1, 2000 &lt; 00:01 on Jan 1, 2000.&#xA;&#xA;&lt;li> Although historically not precise, midnight also belongs to &quot;am&quot;,&#xA;and noon belongs to &quot;pm&quot;, so on the same day,&#xA;12:00 am (midnight) &lt; 12:01 am, and 12:00 pm (noon) &lt; 12:01 pm&#xA;&lt;/ol>&#xA;&#xA;&lt;p>&#xA;The date or time format strings are not part of the definition of a&#xA;calendar, as those must be modifiable or overridable by the user at&#xA;runtime. Use {@link DateFormat}&#xA;to format dates.&#xA;&#xA;&lt;h4>Field Manipulation&lt;/h4>&#xA;&#xA;The calendar fields can be changed using three methods:&#xA;&lt;code>set()&lt;/code>, &lt;code>add()&lt;/code>, and &lt;code>roll()&lt;/code>.&lt;/p>&#xA;&#xA;&lt;p>&lt;strong>&lt;code>set(f, value)&lt;/code>&lt;/strong> changes calendar field&#xA;&lt;code>f&lt;/code> to &lt;code>value&lt;/code>.  In addition, it sets an&#xA;internal member variable to indicate that calendar field &lt;code>f&lt;/code> has&#xA;been changed. Although calendar field &lt;code>f&lt;/code> is changed immediately,&#xA;the calendar's time value in milliseconds is not recomputed until the next call to&#xA;&lt;code>get()&lt;/code>, &lt;code>getTime()&lt;/code>, &lt;code>getTimeInMillis()&lt;/code>,&#xA;&lt;code>add()&lt;/code>, or &lt;code>roll()&lt;/code> is made. Thus, multiple calls to&#xA;&lt;code>set()&lt;/code> do not trigger multiple, unnecessary&#xA;computations. As a result of changing a calendar field using&#xA;&lt;code>set()&lt;/code>, other calendar fields may also change, depending on the&#xA;calendar field, the calendar field value, and the calendar system. In addition,&#xA;&lt;code>get(f)&lt;/code> will not necessarily return &lt;code>value&lt;/code> set by&#xA;the call to the &lt;code>set&lt;/code> method&#xA;after the calendar fields have been recomputed. The specifics are determined by&#xA;the concrete calendar class.&lt;/p>&#xA;&#xA;&lt;p>&lt;em>Example&lt;/em>: Consider a &lt;code>GregorianCalendar&lt;/code>&#xA;originally set to August 31, 1999. Calling &lt;code>set(Calendar.MONTH,&#xA;Calendar.SEPTEMBER)&lt;/code> sets the date to September 31,&#xA;1999. This is a temporary internal representation that resolves to&#xA;October 1, 1999 if &lt;code>getTime()&lt;/code>is then called. However, a&#xA;call to &lt;code>set(Calendar.DAY_OF_MONTH, 30)&lt;/code> before the call to&#xA;&lt;code>getTime()&lt;/code> sets the date to September 30, 1999, since&#xA;no recomputation occurs after &lt;code>set()&lt;/code> itself.&lt;/p>&#xA;&#xA;&lt;p>&lt;strong>&lt;code>add(f, delta)&lt;/code>&lt;/strong> adds &lt;code>delta&lt;/code>&#xA;to field &lt;code>f&lt;/code>.  This is equivalent to calling &lt;code>set(f,&#xA;get(f) + delta)&lt;/code> with two adjustments:&lt;/p>&#xA;&#xA;&lt;blockquote>&#xA;&lt;p>&lt;strong>Add rule 1&lt;/strong>. The value of field &lt;code>f&lt;/code>&#xA;after the call minus the value of field &lt;code>f&lt;/code> before the&#xA;call is &lt;code>delta&lt;/code>, modulo any overflow that has occurred in&#xA;field &lt;code>f&lt;/code>. Overflow occurs when a field value exceeds its&#xA;range and, as a result, the next larger field is incremented or&#xA;decremented and the field value is adjusted back into its range.&lt;/p>&#xA;&#xA;&lt;p>&lt;strong>Add rule 2&lt;/strong>. If a smaller field is expected to be&#xA;invariant, but it is impossible for it to be equal to its&#xA;prior value because of changes in its minimum or maximum after field&#xA;&lt;code>f&lt;/code> is changed or other constraints, such as time zone&#xA;offset changes, then its value is adjusted to be as close&#xA;as possible to its expected value. A smaller field represents a&#xA;smaller unit of time. &lt;code>HOUR&lt;/code> is a smaller field than&#xA;&lt;code>DAY_OF_MONTH&lt;/code>. No adjustment is made to smaller fields&#xA;that are not expected to be invariant. The calendar system&#xA;determines what fields are expected to be invariant.&lt;/p>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>In addition, unlike &lt;code>set()&lt;/code>, &lt;code>add()&lt;/code> forces&#xA;an immediate recomputation of the calendar's milliseconds and all&#xA;fields.&lt;/p>&#xA;&#xA;&lt;p>&lt;em>Example&lt;/em>: Consider a &lt;code>GregorianCalendar&lt;/code>&#xA;originally set to August 31, 1999. Calling &lt;code>add(Calendar.MONTH,&#xA;13)&lt;/code> sets the calendar to September 30, 2000. &lt;strong>Add rule&#xA;1&lt;/strong> sets the &lt;code>MONTH&lt;/code> field to September, since&#xA;adding 13 months to August gives September of the next year. Since&#xA;&lt;code>DAY_OF_MONTH&lt;/code> cannot be 31 in September in a&#xA;&lt;code>GregorianCalendar&lt;/code>, &lt;strong>add rule 2&lt;/strong> sets the&#xA;&lt;code>DAY_OF_MONTH&lt;/code> to 30, the closest possible value. Although&#xA;it is a smaller field, &lt;code>DAY_OF_WEEK&lt;/code> is not adjusted by&#xA;rule 2, since it is expected to change when the month changes in a&#xA;&lt;code>GregorianCalendar&lt;/code>.&lt;/p>&#xA;&#xA;&lt;p>&lt;strong>&lt;code>roll(f, delta)&lt;/code>&lt;/strong> adds&#xA;&lt;code>delta&lt;/code> to field &lt;code>f&lt;/code> without changing larger&#xA;fields. This is equivalent to calling &lt;code>add(f, delta)&lt;/code> with&#xA;the following adjustment:&lt;/p>&#xA;&#xA;&lt;blockquote>&#xA;&lt;p>&lt;strong>Roll rule&lt;/strong>. Larger fields are unchanged after the&#xA;call. A larger field represents a larger unit of&#xA;time. &lt;code>DAY_OF_MONTH&lt;/code> is a larger field than&#xA;&lt;code>HOUR&lt;/code>.&lt;/p>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&lt;em>Example&lt;/em>: See {@link java.util.GregorianCalendar#roll(int, int)}.&#xA;&#xA;&lt;p>&lt;strong>Usage model&lt;/strong>. To motivate the behavior of&#xA;&lt;code>add()&lt;/code> and &lt;code>roll()&lt;/code>, consider a user interface&#xA;component with increment and decrement buttons for the month, day, and&#xA;year, and an underlying &lt;code>GregorianCalendar&lt;/code>. If the&#xA;interface reads January 31, 1999 and the user presses the month&#xA;increment button, what should it read? If the underlying&#xA;implementation uses &lt;code>set()&lt;/code>, it might read March 3, 1999. A&#xA;better result would be February 28, 1999. Furthermore, if the user&#xA;presses the month increment button again, it should read March 31,&#xA;1999, not March 28, 1999. By saving the original date and using either&#xA;&lt;code>add()&lt;/code> or &lt;code>roll()&lt;/code>, depending on whether larger&#xA;fields should be affected, the user interface can behave as most users&#xA;will intuitively expect.&lt;/p>&#xA;&#xA;@see          java.lang.System#currentTimeMillis()&#xA;@see          Date&#xA;@see          GregorianCalendar&#xA;@see          TimeZone&#xA;@see          java.text.DateFormat&#xA;@version      1.81, 07/26/04&#xA;@author Mark Davis, David Goldsmith, Chen-Lieh Huang, Alan Liu&#xA;@since JDK1.1&#xA;" annotatedElement="7e4b4f4d-c7d8-4cd4-9f7b-a64b40b9afb1"/>
            <interfaceRealization xmi:id="6becbbe3-bf4a-4f60-8a73-208800ec6b0c" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="7e4b4f4d-c7d8-4cd4-9f7b-a64b40b9afb1" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="18e69e13-f044-47b0-a8e4-1e68ad798fb6" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="7e4b4f4d-c7d8-4cd4-9f7b-a64b40b9afb1" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="265f9292-a132-4689-9a3e-6d54550b509b" name="" supplier="b858419f-93d0-45dd-8a32-02e73d64d0e8" client="7e4b4f4d-c7d8-4cd4-9f7b-a64b40b9afb1" contract="b858419f-93d0-45dd-8a32-02e73d64d0e8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="eab1b6e4-6485-4c6f-b31b-99b32e52bebb" name="concurrent">
            <packagedElement xmi:type="uml:Interface" xmi:id="5d9881d0-5acd-48a3-aaf9-2bc18719b242" name="Callable&lt;Object>">
              <templateBinding xmi:id="01e22be5-8ecb-484d-9233-543bc4076c84" signature="ea19d91f-ef70-4a4d-b2a8-16dbb149ada5">
                <parameterSubstitution xmi:id="60a45ffb-1898-48dc-b698-e593ebfe7b4a" formal="c81b666b-7359-48a1-8676-92c8618c77bd" actual="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="922732fe-99bc-48a9-9219-9f67e222e2a4" name="BlockingQueue&lt;Runnable>">
              <templateBinding xmi:id="84b65ec4-3afe-4767-8b8e-71106701971f" signature="3df8a56c-a69e-47a6-b9ba-5b7ad2b010d1">
                <parameterSubstitution xmi:id="2af76c9f-b31a-4e90-8b9d-9a4010e4f13f" formal="ec3c5e56-2684-4450-a723-b7b565f5dc58" actual="f099ab56-f712-409a-887b-b9949cb5553b"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="afa76432-8672-4dec-8c5e-0fb70a51e22e" name="DelayQueue" clientDependency="8da11309-4f0c-41de-8a01-fb75d4dc0926">
              <ownedComment xmi:id="85478c7b-5530-4632-87f8-3ae1fc5d986e" body="An unbounded {@linkplain BlockingQueue blocking queue} of&#xA;&lt;tt>Delayed&lt;/tt> elements, in which an element can only be taken&#xA;when its delay has expired.  The &lt;em>head&lt;/em> of the queue is that&#xA;&lt;tt>Delayed&lt;/tt> element whose delay expired furthest in the&#xA;past. If no delay has expired there is no head and &lt;tt>poll&lt;/tt>&#xA;will return &lt;tt>null&lt;/tt>. Expiration occurs when an element's&#xA;&lt;tt>getDelay(TimeUnit.NANOSECONDS)&lt;/tt> method returns a value less&#xA;than or equal to zero.  This queue does not permit &lt;tt>null&lt;/tt>&#xA;elements.&#xA;&#xA;&lt;p>This class and its iterator implement all of the&#xA;&lt;em>optional&lt;/em> methods of the {@link Collection} and {@link&#xA;Iterator} interfaces.&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;E> the type of elements held in this collection&#xA;" annotatedElement="afa76432-8672-4dec-8c5e-0fb70a51e22e"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="ba8acdd9-b1df-4e05-ac3c-e8d072aff9a1" name="" parameter="18e4f519-d090-4286-90c1-36089bf05827">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="18e4f519-d090-4286-90c1-36089bf05827" parameteredElement="7e164047-c330-4014-9c13-0b9aba4bf103">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="7e164047-c330-4014-9c13-0b9aba4bf103" name="E" clientDependency="fbd02db7-305e-4b4f-bf7b-9ce6cf679931" templateParameter="18e4f519-d090-4286-90c1-36089bf05827">
                    <interfaceRealization xmi:id="fbd02db7-305e-4b4f-bf7b-9ce6cf679931" name="" supplier="f6dc9602-724c-479c-9aa0-a2b1b71398de" client="7e164047-c330-4014-9c13-0b9aba4bf103" contract="f6dc9602-724c-479c-9aa0-a2b1b71398de"/>
                  </ownedParameteredElement>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="4b8a2826-7911-4a4c-a592-d1eedc05a954" isSubstitutable="true" general="57267948-5b20-4000-a393-c9fc60c633c3"/>
              <interfaceRealization xmi:id="8da11309-4f0c-41de-8a01-fb75d4dc0926" name="" supplier="fab524f7-59eb-4ace-bf91-fd1feeef80a3" client="afa76432-8672-4dec-8c5e-0fb70a51e22e" contract="fab524f7-59eb-4ace-bf91-fd1feeef80a3"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="cca1d41c-c265-4bda-830d-faa1aa5bf1c5" name="Itr" visibility="private" clientDependency="f7d40581-c071-49bf-8c88-9d2e864fb449">
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="0f1da53d-f22e-4891-a3fb-95490bc0d561" name="" parameter="4b923b0b-53c3-4992-b3b1-c9e657d6d96b">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="4b923b0b-53c3-4992-b3b1-c9e657d6d96b" parameteredElement="d92abbab-3253-43f8-bdb9-aa5637f0f1d6">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="d92abbab-3253-43f8-bdb9-aa5637f0f1d6" name="E" templateParameter="4b923b0b-53c3-4992-b3b1-c9e657d6d96b"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <interfaceRealization xmi:id="f7d40581-c071-49bf-8c88-9d2e864fb449" name="" supplier="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f" client="cca1d41c-c265-4bda-830d-faa1aa5bf1c5" contract="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="ef711ebe-700b-4987-995c-0ea4d57bbe46" name="ScheduledFuture&lt;V>">
              <templateBinding xmi:id="82f1ff35-16b4-4211-a4b7-c4cc19480606" signature="835f3c43-b0bd-4065-8347-722b1d65f76a">
                <parameterSubstitution xmi:id="d3f999b9-d9df-4cc1-8944-127452ed0741" formal="76f8b7fa-40d2-4f76-881f-d3e498df54db" actual="652eb1a9-056c-4d12-8094-e24b64ec812c"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f5787555-0b23-4b5c-9b19-6c3a1bc5d7b0" name="ScheduledThreadPoolExecutor" clientDependency="3d1b7b15-5904-4118-9afa-6f18811f8af9">
              <ownedComment xmi:id="4851b621-d71b-493b-ad93-6a440f447468" body="A {@link ThreadPoolExecutor} that can additionally schedule&#xA;commands to run after a given delay, or to execute&#xA;periodically. This class is preferable to {@link java.util.Timer}&#xA;when multiple worker threads are needed, or when the additional&#xA;flexibility or capabilities of {@link ThreadPoolExecutor} (which&#xA;this class extends) are required.&#xA;&#xA;&lt;p> Delayed tasks execute no sooner than they are enabled, but&#xA;without any real-time guarantees about when, after they are&#xA;enabled, they will commence. Tasks scheduled for exactly the same&#xA;execution time are enabled in first-in-first-out (FIFO) order of&#xA;submission.&#xA;&#xA;&lt;p>While this class inherits from {@link ThreadPoolExecutor}, a few&#xA;of the inherited tuning methods are not useful for it. In&#xA;particular, because it acts as a fixed-sized pool using&#xA;&lt;tt>corePoolSize&lt;/tt> threads and an unbounded queue, adjustments&#xA;to &lt;tt>maximumPoolSize&lt;/tt> have no useful effect.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="f5787555-0b23-4b5c-9b19-6c3a1bc5d7b0"/>
              <generalization xmi:id="2a111817-cdf1-4831-93d4-365e838b4c1f" isSubstitutable="true" general="64cca0ac-cae0-4e56-93f4-596a094bd6b3"/>
              <interfaceRealization xmi:id="3d1b7b15-5904-4118-9afa-6f18811f8af9" name="" supplier="1ae58366-6a63-40d1-99b3-39f17f57b0e2" client="f5787555-0b23-4b5c-9b19-6c3a1bc5d7b0" contract="1ae58366-6a63-40d1-99b3-39f17f57b0e2"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="ee94ea5f-335f-486d-a846-f1ebf8a54262" name="ScheduledFutureTask" visibility="private" clientDependency="5fa66b47-065e-451f-a601-fbd7c71e43d9">
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="28a04878-f933-45bb-810e-3ca9964235fd" name="" parameter="b1b19f1d-c141-45af-98e2-d1bc9e6fc4b2">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="b1b19f1d-c141-45af-98e2-d1bc9e6fc4b2" parameteredElement="652eb1a9-056c-4d12-8094-e24b64ec812c">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="652eb1a9-056c-4d12-8094-e24b64ec812c" name="V" templateParameter="b1b19f1d-c141-45af-98e2-d1bc9e6fc4b2"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <generalization xmi:id="d3a384e0-9a2f-4005-a12a-b07e5db1b10b" isSubstitutable="true" general="4e52fe80-110b-4651-b623-ba5879c96543"/>
                <interfaceRealization xmi:id="5fa66b47-065e-451f-a601-fbd7c71e43d9" name="" supplier="ef711ebe-700b-4987-995c-0ea4d57bbe46" client="ee94ea5f-335f-486d-a846-f1ebf8a54262" contract="ef711ebe-700b-4987-995c-0ea4d57bbe46"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f5c3c591-579d-45c8-97d2-f8775fa07c30" name="DelayedWorkQueue" visibility="private" clientDependency="4d928511-c2e1-498b-843e-12a7136e662b">
                <ownedComment xmi:id="80a325e7-2e52-4332-aa11-c4eb32c2abda" body="An annoying wrapper class to convince generics compiler to&#xA;use a DelayQueue&lt;ScheduledFutureTask> as a BlockingQueue&lt;Runnable>&#xA;" annotatedElement="f5c3c591-579d-45c8-97d2-f8775fa07c30"/>
                <generalization xmi:id="75aa40e8-086f-497b-a498-25a9b97349ec" isSubstitutable="true" general="ce61998e-5d59-4352-93a0-49d1c47bde38"/>
                <interfaceRealization xmi:id="4d928511-c2e1-498b-843e-12a7136e662b" name="" supplier="922732fe-99bc-48a9-9219-9f67e222e2a4" client="f5c3c591-579d-45c8-97d2-f8775fa07c30" contract="922732fe-99bc-48a9-9219-9f67e222e2a4"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="5bebc1fb-871c-4596-8648-6ad46faeacab" name="Entry&lt;K, V>">
              <templateBinding xmi:id="53fa119e-443f-4ecf-85d9-43900542586c" signature="c4abf78f-6423-465b-bf94-6dc2ff811ea9">
                <parameterSubstitution xmi:id="4ded623e-6db6-4a95-a024-d36bf37764b7" formal="bd3d42ed-ee2f-4c2f-b588-7514a056711e" actual="1cbff166-18a5-4fb9-84b6-6f6aacb25f86"/>
                <parameterSubstitution xmi:id="e3b4d6f9-7e9d-4f3e-b54a-8f065275e115" formal="3281fb22-58e6-4560-935d-a2b2d4f1ef82" actual="6e16dbee-010f-4cc1-a091-a6a0310dcd56"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="8279aec4-cbd9-4efb-84f2-3e0124438161" name="Iterator&lt;>">
              <templateBinding xmi:id="1b5b5c86-aad7-402e-b60a-0533009beecf" signature="0f8c6981-4608-4e07-a119-f77e4e17cb2d">
                <parameterSubstitution xmi:id="ab9eb277-bdd2-40d6-be99-297321638373" formal="3b71f5d7-d328-40b6-8dcc-6484e179fd5e"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6c04fe52-dc4b-4c85-9089-57aac69d6dc7" name="CancellationException">
              <ownedComment xmi:id="c6b9d6d2-b286-47d8-8c5a-e956dfbefd14" body="Exception indicating that the result of a value-producing task,&#xA;such as a {@link FutureTask}, cannot be retrieved because the task&#xA;was cancelled.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="6c04fe52-dc4b-4c85-9089-57aac69d6dc7"/>
              <generalization xmi:id="509dd7cc-9897-4137-9c57-c7f337921f76" isSubstitutable="true" general="f9e1d07d-a558-48c5-a45e-01540d385078"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="477f05bc-870c-40b9-8d20-f1dc8d8fe40a" name="ConcurrentMap" isAbstract="true">
              <ownedComment xmi:id="0bcc1457-577e-482a-8b5a-881896100349" body="A {@link java.util.Map} providing additional atomic&#xA;&lt;tt>putIfAbsent&lt;/tt>, &lt;tt>remove&lt;/tt>, and &lt;tt>replace&lt;/tt> methods.&#xA;&#xA;&lt;p>This interface is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;K> the type of keys maintained by this map&#xA;@param &lt;V> the type of mapped values&#xA;" annotatedElement="477f05bc-870c-40b9-8d20-f1dc8d8fe40a"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="148f1adb-be35-41d8-8bf4-9359c8d02fd0" name="" parameter="df7eb094-b226-4b89-bd80-faf51bedde75 8b1f202f-8230-42c1-a128-4e3ba4420fea">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="df7eb094-b226-4b89-bd80-faf51bedde75" parameteredElement="846c1715-eda9-40f6-8281-54cdfc0cfd44">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="846c1715-eda9-40f6-8281-54cdfc0cfd44" name="K" templateParameter="df7eb094-b226-4b89-bd80-faf51bedde75"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="8b1f202f-8230-42c1-a128-4e3ba4420fea" parameteredElement="929127a4-a553-4490-8493-d712132279e2">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="929127a4-a553-4490-8493-d712132279e2" name="V" templateParameter="8b1f202f-8230-42c1-a128-4e3ba4420fea"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="05a13a86-f87d-4987-9aac-c65a518fc041" isSubstitutable="true" general="b5eaa913-ac40-4b35-bf06-e3638ddc059a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="b2c4f843-2a70-44a1-b698-de4bd3875bb0" name="Enumeration&lt;V>">
              <templateBinding xmi:id="61e22370-e62a-41ac-9e93-da915bfb3c65" signature="521c8bf5-b0b1-4a86-820c-0614950913b8">
                <parameterSubstitution xmi:id="cd5a241c-754c-42a6-94e3-b804746d3600" formal="0dc15cf5-0f68-454b-a4d7-227d89f2d0c5" actual="6e16dbee-010f-4cc1-a091-a6a0310dcd56"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="a0428014-eb3a-4962-a473-71088e3e88a5" name="locks">
              <packagedElement xmi:type="uml:Class" xmi:id="b2096acc-0bdf-4dbc-95e0-4d21844c1bbc" name="AbstractQueuedSynchronizer" clientDependency="76079cca-456b-4079-aff8-b355231fa083" isAbstract="true">
                <ownedComment xmi:id="a1d33e26-19f4-4303-a678-cdf9d2af18f6" body="Provides a framework for implementing blocking locks and related&#xA;synchronizers (semaphores, events, etc) that rely on&#xA;first-in-first-out (FIFO) wait queues.  This class is designed to&#xA;be a useful basis for most kinds of synchronizers that rely on a&#xA;single atomic &lt;tt>int&lt;/tt> value to represent state. Subclasses&#xA;must define the protected methods that change this state, and which&#xA;define what that state means in terms of this object being acquired&#xA;or released.  Given these, the other methods in this class carry&#xA;out all queuing and blocking mechanics. Subclasses can maintain&#xA;other state fields, but only the atomically updated &lt;tt>int&lt;/tt>&#xA;value manipulated using methods {@link #getState}, {@link&#xA;#setState} and {@link #compareAndSetState} is tracked with respect&#xA;to synchronization.&#xA;&#xA;&lt;p>Subclasses should be defined as non-public internal helper&#xA;classes that are used to implement the synchronization properties&#xA;of their enclosing class.  Class&#xA;&lt;tt>AbstractQueuedSynchronizer&lt;/tt> does not implement any&#xA;synchronization interface.  Instead it defines methods such as&#xA;{@link #acquireInterruptibly} that can be invoked as&#xA;appropriate by concrete locks and related synchronizers to&#xA;implement their public methods.&#xA;&#xA;&lt;p>This class supports either or both a default &lt;em>exclusive&lt;/em>&#xA;mode and a &lt;em>shared&lt;/em> mode. When acquired in exclusive mode,&#xA;attempted acquires by other threads cannot succeed. Shared mode&#xA;acquires by multiple threads may (but need not) succeed. This class&#xA;does not &quot;understand&quot; these differences except in the&#xA;mechanical sense that when a shared mode acquire succeeds, the next&#xA;waiting thread (if one exists) must also determine whether it can&#xA;acquire as well. Threads waiting in the different modes share the&#xA;same FIFO queue. Usually, implementation subclasses support only&#xA;one of these modes, but both can come into play for example in a&#xA;{@link ReadWriteLock}. Subclasses that support only exclusive or&#xA;only shared modes need not define the methods supporting the unused mode.&#xA;&#xA;&lt;p>This class defines a nested {@link ConditionObject} class that&#xA;can be used as a {@link Condition} implementation by subclasses&#xA;supporting exclusive mode for which method {@link&#xA;#isHeldExclusively} reports whether synchronization is exclusively&#xA;held with respect to the current thread, method {@link #release}&#xA;invoked with the current {@link #getState} value fully releases&#xA;this object, and {@link #acquire}, given this saved state value,&#xA;eventually restores this object to its previous acquired state.  No&#xA;&lt;tt>AbstractQueuedSynchronizer&lt;/tt> method otherwise creates such a&#xA;condition, so if this constraint cannot be met, do not use it.  The&#xA;behavior of {@link ConditionObject} depends of course on the&#xA;semantics of its synchronizer implementation.&#xA;&#xA;&lt;p> This class provides inspection, instrumentation, and monitoring&#xA;methods for the internal queue, as well as similar methods for&#xA;condition objects. These can be exported as desired into classes&#xA;using an &lt;tt>AbstractQueuedSynchronizer&lt;/tt> for their&#xA;synchronization mechanics.&#xA;&#xA;&lt;p> Serialization of this class stores only the underlying atomic&#xA;integer maintaining state, so deserialized objects have empty&#xA;thread queues. Typical subclasses requiring serializability will&#xA;define a &lt;tt>readObject&lt;/tt> method that restores this to a known&#xA;initial state upon deserialization.&#xA;&#xA;&lt;h3>Usage&lt;/h3>&#xA;&#xA;&lt;p> To use this class as the basis of a synchronizer, redefine the&#xA;following methods, as applicable, by inspecting and/or modifying&#xA;the synchronization state using {@link #getState}, {@link&#xA;#setState} and/or {@link #compareAndSetState}:&#xA;&#xA;&lt;ul>&#xA;&lt;li> {@link #tryAcquire}&#xA;&lt;li> {@link #tryRelease}&#xA;&lt;li> {@link #tryAcquireShared}&#xA;&lt;li> {@link #tryReleaseShared}&#xA;&lt;li> {@link #isHeldExclusively}&#xA;&lt;/ul>&#xA;&#xA;Each of these methods by default throws {@link&#xA;UnsupportedOperationException}.  Implementations of these methods&#xA;must be internally thread-safe, and should in general be short and&#xA;not block. Defining these methods is the &lt;em>only&lt;/em> supported&#xA;means of using this class. All other methods are declared&#xA;&lt;tt>final&lt;/tt> because they cannot be independently varied.&#xA;&#xA;&lt;p> Even though this class is based on an internal FIFO queue, it&#xA;does not automatically enforce FIFO acquisition policies.  The core&#xA;of exclusive synchronization takes the form:&#xA;&#xA;&lt;pre>&#xA;Acquire:&#xA;while (!tryAcquire(arg)) {&#xA;&lt;em>enqueue thread if it is not already queued&lt;/em>;&#xA;&lt;em>possibly block current thread&lt;/em>;&#xA;}&#xA;&#xA;Release:&#xA;if (tryRelease(arg))&#xA;&lt;em>unblock the first queued thread&lt;/em>;&#xA;&lt;/pre>&#xA;&#xA;(Shared mode is similar but may involve cascading signals.)&#xA;&#xA;&lt;p> Because checks in acquire are invoked before enqueuing, a newly&#xA;acquiring thread may &lt;em>barge&lt;/em> ahead of others that are&#xA;blocked and queued. However, you can, if desired, define&#xA;&lt;tt>tryAcquire&lt;/tt> and/or &lt;tt>tryAcquireShared&lt;/tt> to disable&#xA;barging by internally invoking one or more of the inspection&#xA;methods. In particular, a strict FIFO lock can define&#xA;&lt;tt>tryAcquire&lt;/tt> to immediately return &lt;tt>false&lt;/tt> if {@link&#xA;#getFirstQueuedThread} does not return the current thread.  A&#xA;normally preferable non-strict fair version can immediately return&#xA;&lt;tt>false&lt;/tt> only if {@link #hasQueuedThreads} returns&#xA;&lt;tt>true&lt;/tt> and &lt;tt>getFirstQueuedThread&lt;/tt> is not the current&#xA;thread; or equivalently, that &lt;tt>getFirstQueuedThread&lt;/tt> is both&#xA;non-null and not the current thread.  Further variations are&#xA;possible.&#xA;&#xA;&lt;p> Throughput and scalability are generally highest for the&#xA;default barging (also known as &lt;em>greedy&lt;/em>,&#xA;&lt;em>renouncement&lt;/em>, and &lt;em>convoy-avoidance&lt;/em>) strategy.&#xA;While this is not guaranteed to be fair or starvation-free, earlier&#xA;queued threads are allowed to recontend before later queued&#xA;threads, and each recontention has an unbiased chance to succeed&#xA;against incoming threads.  Also, while acquires do not&#xA;&quot;spin&quot; in the usual sense, they may perform multiple&#xA;invocations of &lt;tt>tryAcquire&lt;/tt> interspersed with other&#xA;computations before blocking.  This gives most of the benefits of&#xA;spins when exclusive synchronization is only briefly held, without&#xA;most of the liabilities when it isn't. If so desired, you can&#xA;augment this by preceding calls to acquire methods with&#xA;&quot;fast-path&quot; checks, possibly prechecking {@link #hasContended}&#xA;and/or {@link #hasQueuedThreads} to only do so if the synchronizer&#xA;is likely not to be contended.&#xA;&#xA;&lt;p> This class provides an efficient and scalable basis for&#xA;synchronization in part by specializing its range of use to&#xA;synchronizers that can rely on &lt;tt>int&lt;/tt> state, acquire, and&#xA;release parameters, and an internal FIFO wait queue. When this does&#xA;not suffice, you can build synchronizers from a lower level using&#xA;{@link java.util.concurrent.atomic atomic} classes, your own custom&#xA;{@link java.util.Queue} classes, and {@link LockSupport} blocking&#xA;support.&#xA;&#xA;&lt;h3>Usage Examples&lt;/h3>&#xA;&#xA;&lt;p>Here is a non-reentrant mutual exclusion lock class that uses&#xA;the value zero to represent the unlocked state, and one to&#xA;represent the locked state. It also supports conditions and exposes&#xA;one of the instrumentation methods:&#xA;&#xA;&lt;pre>&#xA;class Mutex implements Lock, java.io.Serializable {&#xA;&#xA;Our internal helper class&#xA;private static class Sync extends AbstractQueuedSynchronizer {&#xA;Report whether in locked state&#xA;protected boolean isHeldExclusively() {&#xA;return getState() == 1;&#xA;}&#xA;&#xA;Acquire the lock if state is zero&#xA;public boolean tryAcquire(int acquires) {&#xA;assert acquires == 1; // Otherwise unused&#xA;return compareAndSetState(0, 1);&#xA;}&#xA;&#xA;Release the lock by setting state to zero&#xA;protected boolean tryRelease(int releases) {&#xA;assert releases == 1; // Otherwise unused&#xA;if (getState() == 0) throw new IllegalMonitorStateException();&#xA;setState(0);&#xA;return true;&#xA;}&#xA;&#xA;Provide a Condition&#xA;Condition newCondition() { return new ConditionObject(); }&#xA;&#xA;Deserialize properly&#xA;private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException {&#xA;s.defaultReadObject();&#xA;setState(0); // reset to unlocked state&#xA;}&#xA;}&#xA;&#xA;The sync object does all the hard work. We just forward to it.&#xA;private final Sync sync = new Sync();&#xA;&#xA;public void lock()                { sync.acquire(1); }&#xA;public boolean tryLock()          { return sync.tryAcquire(1); }&#xA;public void unlock()              { sync.release(1); }&#xA;public Condition newCondition()   { return sync.newCondition(); }&#xA;public boolean isLocked()         { return sync.isHeldExclusively(); }&#xA;public boolean hasQueuedThreads() { return sync.hasQueuedThreads(); }&#xA;public void lockInterruptibly() throws InterruptedException {&#xA;sync.acquireInterruptibly(1);&#xA;}&#xA;public boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException {&#xA;return sync.tryAcquireNanos(1, unit.toNanos(timeout));&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p> Here is a latch class that is like a {@link CountDownLatch}&#xA;except that it only requires a single &lt;tt>signal&lt;/tt> to&#xA;fire. Because a latch is non-exclusive, it uses the &lt;tt>shared&lt;/tt>&#xA;acquire and release methods.&#xA;&#xA;&lt;pre>&#xA;class BooleanLatch {&#xA;&#xA;private static class Sync extends AbstractQueuedSynchronizer {&#xA;boolean isSignalled() { return getState() != 0; }&#xA;&#xA;protected int tryAcquireShared(int ignore) {&#xA;return isSignalled()? 1 : -1;&#xA;}&#xA;&#xA;protected boolean tryReleaseShared(int ignore) {&#xA;setState(1);&#xA;return true;&#xA;}&#xA;}&#xA;&#xA;private final Sync sync = new Sync();&#xA;public boolean isSignalled() { return sync.isSignalled(); }&#xA;public void signal()         { sync.releaseShared(1); }&#xA;public void await() throws InterruptedException {&#xA;sync.acquireSharedInterruptibly(1);&#xA;}&#xA;}&#xA;&#xA;&lt;/pre>&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="b2096acc-0bdf-4dbc-95e0-4d21844c1bbc"/>
                <interfaceRealization xmi:id="76079cca-456b-4079-aff8-b355231fa083" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="b2096acc-0bdf-4dbc-95e0-4d21844c1bbc" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c9be462d-f1cb-4fd3-8592-68ae8475f546" name="Node" visibility="package" isLeaf="true">
                  <ownedComment xmi:id="07c6d3d7-c566-487d-81d2-a57b6099c227" body="Wait queue node class.&#xA;&#xA;&lt;p> The wait queue is a variant of a &quot;CLH&quot; (Craig, Landin, and&#xA;Hagersten) lock queue. CLH locks are normally used for&#xA;spinlocks.  We instead use them for blocking synchronizers, but&#xA;use the same basic tactic of holding some of the control&#xA;information about a thread in the predecessor of its node.  A&#xA;&quot;status&quot; field in each node keeps track of whether a thread&#xA;should block.  A node is signalled when its predecessor&#xA;releases.  Each node of the queue otherwise serves as a&#xA;specific-notification-style monitor holding a single waiting&#xA;thread. The status field does NOT control whether threads are&#xA;granted locks etc though.  A thread may try to acquire if it is&#xA;first in the queue. But being first does not guarantee success;&#xA;it only gives the right to contend.  So the currently released&#xA;contender thread may need to rewait.&#xA;&#xA;&lt;p>To enqueue into a CLH lock, you atomically splice it in as new&#xA;tail. To dequeue, you just set the head field.&#xA;&lt;pre>&#xA;+------+  prev +-----+       +-----+&#xA;head |      | &lt;---- |     | &lt;---- |     |  tail&#xA;+------+       +-----+       +-----+&#xA;&lt;/pre>&#xA;&#xA;&lt;p>Insertion into a CLH queue requires only a single atomic&#xA;operation on &quot;tail&quot;, so there is a simple atomic point of&#xA;demarcation from unqueued to queued. Similarly, dequeing&#xA;involves only updating the &quot;head&quot;. However, it takes a bit&#xA;more work for nodes to determine who their successors are,&#xA;in part to deal with possible cancellation due to timeouts&#xA;and interrupts.&#xA;&#xA;&lt;p>The &quot;prev&quot; links (not used in original CLH locks), are mainly&#xA;needed to handle cancellation. If a node is cancelled, its&#xA;successor is (normally) relinked to a non-cancelled&#xA;predecessor. For explanation of similar mechanics in the case&#xA;of spin locks, see the papers by Scott and Scherer at&#xA;http://www.cs.rochester.edu/u/scott/synchronization&#xA;&#xA;&lt;p>We also use &quot;next&quot; links to implement blocking mechanics.&#xA;The thread id for each node is kept in its own node, so a&#xA;predecessor signals the next node to wake up by traversing&#xA;next link to determine which thread it is.  Determination of&#xA;successor must avoid races with newly queued nodes to set&#xA;the &quot;next&quot; fields of their predecessors.  This is solved&#xA;when necessary by checking backwards from the atomically&#xA;updated &quot;tail&quot; when a node's successor appears to be null.&#xA;(Or, said differently, the next-links are an optimization&#xA;so that we don't usually need a backward scan.)&#xA;&#xA;&lt;p>Cancellation introduces some conservatism to the basic&#xA;algorithms.  Since we must poll for cancellation of other&#xA;nodes, we can miss noticing whether a cancelled node is&#xA;ahead or behind us. This is dealt with by always unparking&#xA;successors upon cancellation, allowing them to stabilize on&#xA;a new predecessor.&#xA;&#xA;&lt;p>CLH queues need a dummy header node to get started. But&#xA;we don't create them on construction, because it would be wasted&#xA;effort if there is never contention. Instead, the node&#xA;is constructed and head and tail pointers are set upon first&#xA;contention.&#xA;&#xA;&lt;p>Threads waiting on Conditions use the same nodes, but&#xA;use an additional link. Conditions only need to link nodes&#xA;in simple (non-concurrent) linked queues because they are&#xA;only accessed when exclusively held.  Upon await, a node is&#xA;inserted into a condition queue.  Upon signal, the node is&#xA;transferred to the main queue.  A special value of status&#xA;field is used to mark which queue a node is on.&#xA;&#xA;&lt;p>Thanks go to Dave Dice, Mark Moir, Victor Luchangco, Bill&#xA;Scherer and Michael Scott, along with members of JSR-166&#xA;expert group, for helpful ideas, discussions, and critiques&#xA;on the design of this class.&#xA;" annotatedElement="c9be462d-f1cb-4fd3-8592-68ae8475f546"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1d70d7d3-c201-49eb-8877-2154ef4f221e" name="ConditionObject" clientDependency="31f9df57-abb7-4f7d-8f26-d48a26174129 6cd707d9-262c-4804-a9ea-92acd8e15bbe">
                  <ownedComment xmi:id="71e6da13-48b2-447f-abb7-d2e09f56505e" body="Condition implementation for a {@link&#xA;AbstractQueuedSynchronizer} serving as the basis of a {@link&#xA;Lock} implementation.&#xA;&#xA;&lt;p> Method documentation for this class describes mechanics,&#xA;not behavioral specifications from the point of view of Lock&#xA;and Condition users. Exported versions of this class will in&#xA;general need to be accompanied by documentation describing&#xA;condition semantics that rely on those of the associated&#xA;&lt;tt>AbstractQueuedSynchronizer&lt;/tt>.&#xA;&#xA;&lt;p> This class is Serializable, but all fields are transient,&#xA;so deserialized conditions have no waiters.&#xA;" annotatedElement="1d70d7d3-c201-49eb-8877-2154ef4f221e"/>
                  <interfaceRealization xmi:id="6cd707d9-262c-4804-a9ea-92acd8e15bbe" name="" supplier="83a983a0-3eb0-4c2b-bbcc-57eb074ff75a" client="1d70d7d3-c201-49eb-8877-2154ef4f221e" contract="83a983a0-3eb0-4c2b-bbcc-57eb074ff75a"/>
                  <interfaceRealization xmi:id="31f9df57-abb7-4f7d-8f26-d48a26174129" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="1d70d7d3-c201-49eb-8877-2154ef4f221e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="4eba85f5-43fc-42f6-8527-e200a8e9cbfa" name="Lock" isAbstract="true">
                <ownedComment xmi:id="30e47c27-6a30-483c-97a1-a4f7eb662996" body="&lt;tt>Lock&lt;/tt> implementations provide more extensive locking&#xA;operations than can be obtained using &lt;tt>synchronized&lt;/tt> methods&#xA;and statements.  They allow more flexible structuring, may have&#xA;quite different properties, and may support multiple associated&#xA;{@link Condition} objects.&#xA;&#xA;&lt;p>A lock is a tool for controlling access to a shared resource by&#xA;multiple threads. Commonly, a lock provides exclusive access to a&#xA;shared resource: only one thread at a time can acquire the lock and&#xA;all access to the shared resource requires that the lock be&#xA;acquired first. However, some locks may allow concurrent access to&#xA;a shared resource, such as the read lock of a {@link&#xA;ReadWriteLock}.&#xA;&#xA;&lt;p>The use of &lt;tt>synchronized&lt;/tt> methods or statements provides&#xA;access to the implicit monitor lock associated with every object, but&#xA;forces all lock acquisition and release to occur in a block-structured way:&#xA;when multiple locks are acquired they must be released in the opposite&#xA;order, and all locks must be released in the same lexical scope in which&#xA;they were acquired.&#xA;&#xA;&lt;p>While the scoping mechanism for &lt;tt>synchronized&lt;/tt> methods&#xA;and statements makes it much easier to program with monitor locks,&#xA;and helps avoid many common programming errors involving locks,&#xA;there are occasions where you need to work with locks in a more&#xA;flexible way. For example, some algorithms for traversing&#xA;concurrently accessed data structures require the use of&#xA;&quot;hand-over-hand&quot; or &quot;chain locking&quot;: you&#xA;acquire the lock of node A, then node B, then release A and acquire&#xA;C, then release B and acquire D and so on.  Implementations of the&#xA;&lt;tt>Lock&lt;/tt> interface enable the use of such techniques by&#xA;allowing a lock to be acquired and released in different scopes,&#xA;and allowing multiple locks to be acquired and released in any&#xA;order.&#xA;&#xA;&lt;p>With this increased flexibility comes additional&#xA;responsibility. The absence of block-structured locking removes the&#xA;automatic release of locks that occurs with &lt;tt>synchronized&lt;/tt>&#xA;methods and statements. In most cases, the following idiom&#xA;should be used:&#xA;&#xA;&lt;pre>&lt;tt>     Lock l = ...;&#xA;l.lock();&#xA;try {&#xA;access the resource protected by this lock&#xA;} finally {&#xA;l.unlock();&#xA;}&#xA;&lt;/tt>&lt;/pre>&#xA;&#xA;When locking and unlocking occur in different scopes, care must be&#xA;taken to ensure that all code that is executed while the lock is&#xA;held is protected by try-finally or try-catch to ensure that the&#xA;lock is released when necessary.&#xA;&#xA;&lt;p>&lt;tt>Lock&lt;/tt> implementations provide additional functionality&#xA;over the use of &lt;tt>synchronized&lt;/tt> methods and statements by&#xA;providing a non-blocking attempt to acquire a lock ({@link&#xA;#tryLock()}), an attempt to acquire the lock that can be&#xA;interrupted ({@link #lockInterruptibly}, and an attempt to acquire&#xA;the lock that can timeout ({@link #tryLock(long, TimeUnit)}).&#xA;&#xA;&lt;p>A &lt;tt>Lock&lt;/tt> class can also provide behavior and semantics&#xA;that is quite different from that of the implicit monitor lock,&#xA;such as guaranteed ordering, non-reentrant usage, or deadlock&#xA;detection. If an implementation provides such specialized semantics&#xA;then the implementation must document those semantics.&#xA;&#xA;&lt;p>Note that &lt;tt>Lock&lt;/tt> instances are just normal objects and can&#xA;themselves be used as the target in a &lt;tt>synchronized&lt;/tt> statement.&#xA;Acquiring the&#xA;monitor lock of a &lt;tt>Lock&lt;/tt> instance has no specified relationship&#xA;with invoking any of the {@link #lock} methods of that instance.&#xA;It is recommended that to avoid confusion you never use &lt;tt>Lock&lt;/tt>&#xA;instances in this way, except within their own implementation.&#xA;&#xA;&lt;p>Except where noted, passing a &lt;tt>null&lt;/tt> value for any&#xA;parameter will result in a {@link NullPointerException} being&#xA;thrown.&#xA;&#xA;&lt;h3>Memory Synchronization&lt;/h3>&#xA;&lt;p>All &lt;tt>Lock&lt;/tt> implementations &lt;em>must&lt;/em> enforce the same&#xA;memory synchronization semantics as provided by the built-in monitor lock:&#xA;&lt;ul>&#xA;&lt;li>A successful lock operation acts like a successful&#xA;&lt;tt>monitorEnter&lt;/tt> action&#xA;&lt;li>A successful &lt;tt>unlock&lt;/tt> operation acts like a successful&#xA;&lt;tt>monitorExit&lt;/tt> action&#xA;&lt;/ul>&#xA;&#xA;Unsuccessful locking and unlocking operations, and reentrant&#xA;locking/unlocking operations, do not require any memory&#xA;synchronization effects.&#xA;&#xA;&lt;h3>Implementation Considerations&lt;/h3>&#xA;&#xA;&lt;p> The three forms of lock acquisition (interruptible,&#xA;non-interruptible, and timed) may differ in their performance&#xA;characteristics, ordering guarantees, or other implementation&#xA;qualities.  Further, the ability to interrupt the &lt;em>ongoing&lt;/em>&#xA;acquisition of a lock may not be available in a given &lt;tt>Lock&lt;/tt>&#xA;class.  Consequently, an implementation is not required to define&#xA;exactly the same guarantees or semantics for all three forms of&#xA;lock acquisition, nor is it required to support interruption of an&#xA;ongoing lock acquisition.  An implementation is required to clearly&#xA;document the semantics and guarantees provided by each of the&#xA;locking methods. It must also obey the interruption semantics as&#xA;defined in this interface, to the extent that interruption of lock&#xA;acquisition is supported: which is either totally, or only on&#xA;method entry.&#xA;&#xA;&lt;p>As interruption generally implies cancellation, and checks for&#xA;interruption are often infrequent, an implementation can favor responding&#xA;to an interrupt over normal method return. This is true even if it can be&#xA;shown that the interrupt occurred after another action may have unblocked&#xA;the thread. An implementation should document this behavior.&#xA;&#xA;&#xA;@see ReentrantLock&#xA;@see Condition&#xA;@see ReadWriteLock&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;&#xA;" annotatedElement="4eba85f5-43fc-42f6-8527-e200a8e9cbfa"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="83a983a0-3eb0-4c2b-bbcc-57eb074ff75a" name="Condition" isAbstract="true">
                <ownedComment xmi:id="e4beb47f-8211-4dc0-a79f-7b4126d3a6f4" body="&lt;tt>Condition&lt;/tt> factors out the &lt;tt>Object&lt;/tt> monitor&#xA;methods ({@link Object#wait() wait}, {@link Object#notify notify}&#xA;and {@link Object#notifyAll notifyAll}) into distinct objects to&#xA;give the effect of having multiple wait-sets per object, by&#xA;combining them with the use of arbitrary {@link Lock} implementations.&#xA;Where a &lt;tt>Lock&lt;/tt> replaces the use of &lt;tt>synchronized&lt;/tt> methods&#xA;and statements, a &lt;tt>Condition&lt;/tt> replaces the use of the Object&#xA;monitor methods.&#xA;&#xA;&lt;p>Conditions (also known as &lt;em>condition queues&lt;/em> or&#xA;&lt;em>condition variables&lt;/em>) provide a means for one thread to&#xA;suspend execution (to &quot;wait&quot;) until notified by another&#xA;thread that some state condition may now be true.  Because access&#xA;to this shared state information occurs in different threads, it&#xA;must be protected, so a lock of some form is associated with the&#xA;condition. The key property that waiting for a condition provides&#xA;is that it &lt;em>atomically&lt;/em> releases the associated lock and&#xA;suspends the current thread, just like &lt;tt>Object.wait&lt;/tt>.&#xA;&#xA;&lt;p>A &lt;tt>Condition&lt;/tt> instance is intrinsically bound to a lock.&#xA;To obtain a &lt;tt>Condition&lt;/tt> instance for a particular {@link Lock}&#xA;instance use its {@link Lock#newCondition newCondition()} method.&#xA;&#xA;&lt;p>As an example, suppose we have a bounded buffer which supports&#xA;&lt;tt>put&lt;/tt> and &lt;tt>take&lt;/tt> methods.  If a&#xA;&lt;tt>take&lt;/tt> is attempted on an empty buffer, then the thread will block&#xA;until an item becomes available; if a &lt;tt>put&lt;/tt> is attempted on a&#xA;full buffer, then the thread will block until a space becomes available.&#xA;We would like to keep waiting &lt;tt>put&lt;/tt> threads and &lt;tt>take&lt;/tt>&#xA;threads in separate wait-sets so that we can use the optimization of&#xA;only notifying a single thread at a time when items or spaces become&#xA;available in the buffer. This can be achieved using two&#xA;{@link Condition} instances.&#xA;&lt;pre>&#xA;class BoundedBuffer {&#xA;&lt;b>final Lock lock = new ReentrantLock();&lt;/b>&#xA;final Condition notFull  = &lt;b>lock.newCondition(); &lt;/b>&#xA;final Condition notEmpty = &lt;b>lock.newCondition(); &lt;/b>&#xA;&#xA;final Object[] items = new Object[100];&#xA;int putptr, takeptr, count;&#xA;&#xA;public void put(Object x) throws InterruptedException {&#xA;&lt;b>lock.lock();&#xA;try {&lt;/b>&#xA;while (count == items.length)&#xA;&lt;b>notFull.await();&lt;/b>&#xA;items[putptr] = x;&#xA;if (++putptr == items.length) putptr = 0;&#xA;++count;&#xA;&lt;b>notEmpty.signal();&lt;/b>&#xA;&lt;b>} finally {&#xA;lock.unlock();&#xA;}&lt;/b>&#xA;}&#xA;&#xA;public Object take() throws InterruptedException {&#xA;&lt;b>lock.lock();&#xA;try {&lt;/b>&#xA;while (count == 0)&#xA;&lt;b>notEmpty.await();&lt;/b>&#xA;Object x = items[takeptr];&#xA;if (++takeptr == items.length) takeptr = 0;&#xA;--count;&#xA;&lt;b>notFull.signal();&lt;/b>&#xA;return x;&#xA;&lt;b>} finally {&#xA;lock.unlock();&#xA;}&lt;/b>&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;(The {@link java.util.concurrent.ArrayBlockingQueue} class provides&#xA;this functionality, so there is no reason to implement this&#xA;sample usage class.)&#xA;&#xA;&lt;p>A &lt;tt>Condition&lt;/tt> implementation can provide behavior and semantics&#xA;that is&#xA;different from that of the &lt;tt>Object&lt;/tt> monitor methods, such as&#xA;guaranteed ordering for notifications, or not requiring a lock to be held&#xA;when performing notifications.&#xA;If an implementation provides such specialized semantics then the&#xA;implementation must document those semantics.&#xA;&#xA;&lt;p>Note that &lt;tt>Condition&lt;/tt> instances are just normal objects and can&#xA;themselves be used as the target in a &lt;tt>synchronized&lt;/tt> statement,&#xA;and can have their own monitor {@link Object#wait wait} and&#xA;{@link Object#notify notification} methods invoked.&#xA;Acquiring the monitor lock of a &lt;tt>Condition&lt;/tt> instance, or using its&#xA;monitor methods, has no specified relationship with acquiring the&#xA;{@link Lock} associated with that &lt;tt>Condition&lt;/tt> or the use of its&#xA;{@link #await waiting} and {@link #signal signalling} methods.&#xA;It is recommended that to avoid confusion you never use &lt;tt>Condition&lt;/tt>&#xA;instances in this way, except perhaps within their own implementation.&#xA;&#xA;&lt;p>Except where noted, passing a &lt;tt>null&lt;/tt> value for any parameter&#xA;will result in a {@link NullPointerException} being thrown.&#xA;&#xA;&lt;h3>Implementation Considerations&lt;/h3>&#xA;&#xA;&lt;p>When waiting upon a &lt;tt>Condition&lt;/tt>, a &quot;&lt;em>spurious&#xA;wakeup&lt;/em>&quot; is permitted to occur, in&#xA;general, as a concession to the underlying platform semantics.&#xA;This has little practical impact on most application programs as a&#xA;&lt;tt>Condition&lt;/tt> should always be waited upon in a loop, testing&#xA;the state predicate that is being waited for.  An implementation is&#xA;free to remove the possibility of spurious wakeups but it is&#xA;recommended that applications programmers always assume that they can&#xA;occur and so always wait in a loop.&#xA;&#xA;&lt;p>The three forms of condition waiting&#xA;(interruptible, non-interruptible, and timed) may differ in their ease of&#xA;implementation on some platforms and in their performance characteristics.&#xA;In particular, it may be difficult to provide these features and maintain&#xA;specific semantics such as ordering guarantees.&#xA;Further, the ability to interrupt the actual suspension of the thread may&#xA;not always be feasible to implement on all platforms.&#xA;&lt;p>Consequently, an implementation is not required to define exactly the&#xA;same guarantees or semantics for all three forms of waiting, nor is it&#xA;required to support interruption of the actual suspension of the thread.&#xA;&lt;p>An implementation is required to&#xA;clearly document the semantics and guarantees provided by each of the&#xA;waiting methods, and when an implementation does support interruption of&#xA;thread suspension then it must obey the interruption semantics as defined&#xA;in this interface.&#xA;&lt;p>As interruption generally implies cancellation, and checks for&#xA;interruption are often infrequent, an implementation can favor responding&#xA;to an interrupt over normal method return. This is true even if it can be&#xA;shown that the interrupt occurred after another action may have unblocked&#xA;the thread. An implementation should document this behavior.&#xA;&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="83a983a0-3eb0-4c2b-bbcc-57eb074ff75a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="84c5ffcf-7870-4f4c-8f45-9040845a7247" name="ReentrantReadWriteLock" clientDependency="3a0eb971-68d7-4b18-a392-04e6378f0743 cc69d5b4-a2ff-449b-9b02-1d6f23be91b8">
                <ownedComment xmi:id="cdab8c72-638f-4fd2-ad22-fb9e47bdf412" body="An implementation of {@link ReadWriteLock} supporting similar&#xA;semantics to {@link ReentrantLock}.&#xA;&lt;p>This class has the following properties:&#xA;&#xA;&lt;ul>&#xA;&lt;li>&lt;b>Acquisition order&lt;/b>&#xA;&#xA;&lt;p> This class does not impose a reader or writer preference&#xA;ordering for lock access.  However, it does support an optional&#xA;&lt;em>fairness&lt;/em> policy.  When constructed as fair, threads&#xA;contend for entry using an approximately arrival-order policy. When&#xA;the write lock is released either the longest-waiting single writer&#xA;will be assigned the write lock, or if there is a reader waiting&#xA;longer than any writer, the set of readers will be assigned the&#xA;read lock.  When constructed as non-fair, the order of entry to the&#xA;lock need not be in arrival order.  In either case, if readers are&#xA;active and a writer enters the lock then no subsequent readers will&#xA;be granted the read lock until after that writer has acquired and&#xA;released the write lock.&#xA;&#xA;&lt;li>&lt;b>Reentrancy&lt;/b>&#xA;&lt;p>This lock allows both readers and writers to reacquire read or&#xA;write locks in the style of a {@link ReentrantLock}. Readers are not&#xA;allowed until all write locks held by the writing thread have been&#xA;released.&#xA;&lt;p>Additionally, a writer can acquire the read lock - but not vice-versa.&#xA;Among other applications, reentrancy can be useful when&#xA;write locks are held during calls or callbacks to methods that&#xA;perform reads under read locks.&#xA;If a reader tries to acquire the write lock it will never succeed.&#xA;&#xA;&lt;li>&lt;b>Lock downgrading&lt;/b>&#xA;&lt;p>Reentrancy also allows downgrading from the write lock to a read lock,&#xA;by acquiring the write lock, then the read lock and then releasing the&#xA;write lock. However, upgrading from a read lock to the write lock is&#xA;&lt;b>not&lt;/b> possible.&#xA;&#xA;&lt;li>&lt;b>Interruption of lock acquisition&lt;/b>&#xA;&lt;p>The read lock and write lock both support interruption during lock&#xA;acquisition.&#xA;&#xA;&lt;li>&lt;b>{@link Condition} support&lt;/b>&#xA;&lt;p>The write lock provides a {@link Condition} implementation that&#xA;behaves in the same way, with respect to the write lock, as the&#xA;{@link Condition} implementation provided by&#xA;{@link ReentrantLock#newCondition} does for {@link ReentrantLock}.&#xA;This {@link Condition} can, of course, only be used with the write lock.&#xA;&lt;p>The read lock does not support a {@link Condition} and&#xA;&lt;tt>readLock().newCondition()&lt;/tt> throws&#xA;&lt;tt>UnsupportedOperationException&lt;/tt>.&#xA;&#xA;&lt;li>&lt;b>Instrumentation&lt;/b>&#xA;&lt;P> This class supports methods to determine whether locks&#xA;are held or contended. These methods are designed for monitoring&#xA;system state, not for synchronization control.&#xA;&lt;/ul>&#xA;&#xA;&lt;p> Serialization of this class behaves in the same way as built-in&#xA;locks: a deserialized lock is in the unlocked state, regardless of&#xA;its state when serialized.&#xA;&#xA;&lt;p>&lt;b>Sample usages&lt;/b>. Here is a code sketch showing how to exploit&#xA;reentrancy to perform lock downgrading after updating a cache (exception&#xA;handling is elided for simplicity):&#xA;&lt;pre>&#xA;class CachedData {&#xA;Object data;&#xA;volatile boolean cacheValid;&#xA;ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();&#xA;&#xA;void processCachedData() {&#xA;rwl.readLock().lock();&#xA;if (!cacheValid) {&#xA;upgrade lock manually&#xA;rwl.readLock().unlock();   // must unlock first to obtain writelock&#xA;rwl.writeLock().lock();&#xA;if (!cacheValid) { // recheck&#xA;data = ...&#xA;cacheValid = true;&#xA;}&#xA;downgrade lock&#xA;rwl.readLock().lock();  // reacquire read without giving up write lock&#xA;rwl.writeLock().unlock(); // unlock write, still hold read&#xA;}&#xA;&#xA;use(data);&#xA;rwl.readLock().unlock();&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;ReentrantReadWriteLocks can be used to improve concurrency in some&#xA;uses of some kinds of Collections. This is typically worthwhile&#xA;only when the collections are expected to be large, accessed by&#xA;more reader threads than writer threads, and entail operations with&#xA;overhead that outweighs synchronization overhead. For example, here&#xA;is a class using a TreeMap that is expected to be large and&#xA;concurrently accessed.&#xA;&#xA;&lt;pre>&#xA;class RWDictionary {&#xA;private final Map&lt;String, Data>  m = new TreeMap&lt;String, Data>();&#xA;private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();&#xA;private final Lock r = rwl.readLock();&#xA;private final Lock w = rwl.writeLock();&#xA;&#xA;public Data get(String key) {&#xA;r.lock(); try { return m.get(key); } finally { r.unlock(); }&#xA;}&#xA;public String[] allKeys() {&#xA;r.lock(); try { return m.keySet().toArray(); } finally { r.unlock(); }&#xA;}&#xA;public Data put(String key, Data value) {&#xA;w.lock(); try { return m.put(key, value); } finally { w.unlock(); }&#xA;}&#xA;public void clear() {&#xA;w.lock(); try { m.clear(); } finally { w.unlock(); }&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&#xA;&lt;h3>Implementation Notes&lt;/h3>&#xA;&#xA;&lt;p>A reentrant write lock intrinsically defines an owner and can&#xA;only be released by the thread that acquired it.  In contrast, in&#xA;this implementation, the read lock has no concept of ownership, and&#xA;there is no requirement that the thread releasing a read lock is&#xA;the same as the one that acquired it.  However, this property is&#xA;not guaranteed to hold in future implementations of this class.&#xA;&#xA;&lt;p> This lock supports a maximum of 65536 recursive write locks&#xA;and 65536 read locks. Attempts to exceed these limits result in&#xA;{@link Error} throws from locking methods.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;&#xA;" annotatedElement="84c5ffcf-7870-4f4c-8f45-9040845a7247"/>
                <interfaceRealization xmi:id="3a0eb971-68d7-4b18-a392-04e6378f0743" name="" supplier="cb439966-b80c-4969-93e8-3429ade5cd5c" client="84c5ffcf-7870-4f4c-8f45-9040845a7247" contract="cb439966-b80c-4969-93e8-3429ade5cd5c"/>
                <interfaceRealization xmi:id="cc69d5b4-a2ff-449b-9b02-1d6f23be91b8" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="84c5ffcf-7870-4f4c-8f45-9040845a7247" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="fd3265db-c4d3-4827-964a-ced5bd9f6010" name="Sync" visibility="package" isAbstract="true">
                  <ownedComment xmi:id="12f172fb-3c02-4225-b2d6-d7eeb8e471fa" body="Synchronization implementation for ReentrantReadWriteLock.&#xA;Subclassed into fair and nonfair versions.&#xA;" annotatedElement="fd3265db-c4d3-4827-964a-ced5bd9f6010"/>
                  <generalization xmi:id="5b5cb813-c656-4ff2-8fe6-eb49d8d7f890" isSubstitutable="true" general="b2096acc-0bdf-4dbc-95e0-4d21844c1bbc"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="964c7a5e-354c-486c-86c0-d689375e85cd" name="NonfairSync" visibility="package" isLeaf="true">
                  <ownedComment xmi:id="f4336532-9fbe-4a49-9d8c-5deeef122543" body="Nonfair version of Sync&#xA;" annotatedElement="964c7a5e-354c-486c-86c0-d689375e85cd"/>
                  <generalization xmi:id="d6cded2a-0f14-4a4f-932d-27a7337d513c" isSubstitutable="true" general="fd3265db-c4d3-4827-964a-ced5bd9f6010"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="afecdb6c-d9ff-42fb-a747-08448bf85b9e" name="FairSync" visibility="package" isLeaf="true">
                  <ownedComment xmi:id="5e5b02fe-9e37-42f5-95af-a9599dd4feb8" body="Fair version of Sync&#xA;" annotatedElement="afecdb6c-d9ff-42fb-a747-08448bf85b9e"/>
                  <generalization xmi:id="cb7fa139-e3f7-4dc8-acf2-f2b980e5b044" isSubstitutable="true" general="fd3265db-c4d3-4827-964a-ced5bd9f6010"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="874cec19-9307-48cf-a26f-490ca429fe03" name="ReadLock" clientDependency="6b5c58ef-5963-455c-8b48-86d6515f0f55 6722baa5-29df-4510-9f79-0dc6762333a8">
                  <ownedComment xmi:id="7fc02b29-bcb8-4e22-970a-66ed36c691fa" body="The lock returned by method {@link ReentrantReadWriteLock#readLock}.&#xA;" annotatedElement="874cec19-9307-48cf-a26f-490ca429fe03"/>
                  <interfaceRealization xmi:id="6b5c58ef-5963-455c-8b48-86d6515f0f55" name="" supplier="4eba85f5-43fc-42f6-8527-e200a8e9cbfa" client="874cec19-9307-48cf-a26f-490ca429fe03" contract="4eba85f5-43fc-42f6-8527-e200a8e9cbfa"/>
                  <interfaceRealization xmi:id="6722baa5-29df-4510-9f79-0dc6762333a8" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="874cec19-9307-48cf-a26f-490ca429fe03" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="fd728dc3-0e24-4608-b811-99b616c076a0" name="WriteLock" clientDependency="c818f5c2-2031-4719-90ea-64098fdcb864 64c19bc0-2a1c-4178-b3bd-1ef70eaf56fd">
                  <ownedComment xmi:id="39b0ff7c-f6c6-4d8c-80eb-5b71d9da746c" body="The lock returned by method {@link ReentrantReadWriteLock#writeLock}.&#xA;" annotatedElement="fd728dc3-0e24-4608-b811-99b616c076a0"/>
                  <interfaceRealization xmi:id="c818f5c2-2031-4719-90ea-64098fdcb864" name="" supplier="4eba85f5-43fc-42f6-8527-e200a8e9cbfa" client="fd728dc3-0e24-4608-b811-99b616c076a0" contract="4eba85f5-43fc-42f6-8527-e200a8e9cbfa"/>
                  <interfaceRealization xmi:id="64c19bc0-2a1c-4178-b3bd-1ef70eaf56fd" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="fd728dc3-0e24-4608-b811-99b616c076a0" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="d2e38c0f-e21f-41af-bc99-06aef4e7f6d4" name="ReentrantLock" clientDependency="dff2d710-1c7e-454f-9795-7d42419b42bd 5a79ba83-77a7-4970-bcdf-f13e27aa4993">
                <ownedComment xmi:id="a23ad026-c5b6-4573-bcc5-904673d559ae" body="A reentrant mutual exclusion {@link Lock} with the same basic&#xA;behavior and semantics as the implicit monitor lock accessed using&#xA;&lt;tt>synchronized&lt;/tt> methods and statements, but with extended&#xA;capabilities.&#xA;&#xA;&lt;p> A &lt;tt>ReentrantLock&lt;/tt> is &lt;em>owned&lt;/em> by the thread last&#xA;successfully locking, but not yet unlocking it. A thread invoking&#xA;&lt;tt>lock&lt;/tt> will return, successfully acquiring the lock, when&#xA;the lock is not owned by another thread. The method will return&#xA;immediately if the current thread already owns the lock. This can&#xA;be checked using methods {@link #isHeldByCurrentThread}, and {@link&#xA;#getHoldCount}.&#xA;&#xA;&lt;p> The constructor for this class accepts an optional&#xA;&lt;em>fairness&lt;/em> parameter.  When set &lt;tt>true&lt;/tt>, under&#xA;contention, locks favor granting access to the longest-waiting&#xA;thread.  Otherwise this lock does not guarantee any particular&#xA;access order.  Programs using fair locks accessed by many threads&#xA;may display lower overall throughput (i.e., are slower; often much&#xA;slower) than those using the default setting, but have smaller&#xA;variances in times to obtain locks and guarantee lack of&#xA;starvation. Note however, that fairness of locks does not guarantee&#xA;fairness of thread scheduling. Thus, one of many threads using a&#xA;fair lock may obtain it multiple times in succession while other&#xA;active threads are not progressing and not currently holding the&#xA;lock.&#xA;Also note that the untimed {@link #tryLock() tryLock} method does not&#xA;honor the fairness setting. It will succeed if the lock&#xA;is available even if other threads are waiting.&#xA;&#xA;&lt;p> It is recommended practice to &lt;em>always&lt;/em> immediately&#xA;follow a call to &lt;tt>lock&lt;/tt> with a &lt;tt>try&lt;/tt> block, most&#xA;typically in a before/after construction such as:&#xA;&#xA;&lt;pre>&#xA;class X {&#xA;private final ReentrantLock lock = new ReentrantLock();&#xA;...&#xA;&#xA;public void m() {&#xA;lock.lock();  // block until condition holds&#xA;try {&#xA;... method body&#xA;} finally {&#xA;lock.unlock()&#xA;}&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p>In addition to implementing the {@link Lock} interface, this&#xA;class defines methods &lt;tt>isLocked&lt;/tt> and&#xA;&lt;tt>getLockQueueLength&lt;/tt>, as well as some associated&#xA;&lt;tt>protected&lt;/tt> access methods that may be useful for&#xA;instrumentation and monitoring.&#xA;&#xA;&lt;p> Serialization of this class behaves in the same way as built-in&#xA;locks: a deserialized lock is in the unlocked state, regardless of&#xA;its state when serialized.&#xA;&#xA;&lt;p> This lock supports a maximum of 2147483648 recursive locks by&#xA;the same thread.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;&#xA;" annotatedElement="d2e38c0f-e21f-41af-bc99-06aef4e7f6d4"/>
                <interfaceRealization xmi:id="dff2d710-1c7e-454f-9795-7d42419b42bd" name="" supplier="4eba85f5-43fc-42f6-8527-e200a8e9cbfa" client="d2e38c0f-e21f-41af-bc99-06aef4e7f6d4" contract="4eba85f5-43fc-42f6-8527-e200a8e9cbfa"/>
                <interfaceRealization xmi:id="5a79ba83-77a7-4970-bcdf-f13e27aa4993" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="d2e38c0f-e21f-41af-bc99-06aef4e7f6d4" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="4ffce61d-b1f1-4486-92d2-61f81a1e2e46" name="Sync" visibility="package" isAbstract="true">
                  <ownedComment xmi:id="45e99942-2cb3-4d52-a142-d257df167a91" body="Base of synchronization control for this lock. Subclassed&#xA;into fair and nonfair versions below. Uses AQS state to&#xA;represent the number of holds on the lock.&#xA;" annotatedElement="4ffce61d-b1f1-4486-92d2-61f81a1e2e46"/>
                  <generalization xmi:id="f3dccd65-3781-4b68-8ed6-93a26338a0c9" isSubstitutable="true" general="b2096acc-0bdf-4dbc-95e0-4d21844c1bbc"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ec184837-b3ba-4947-8960-1953cd6d74bc" name="NonfairSync" visibility="package" isLeaf="true">
                  <ownedComment xmi:id="636a13a3-e5e8-4600-b5ac-942d6dff327e" body="Sync object for non-fair locks&#xA;" annotatedElement="ec184837-b3ba-4947-8960-1953cd6d74bc"/>
                  <generalization xmi:id="d695d981-643e-4844-877d-ed855de4a989" isSubstitutable="true" general="4ffce61d-b1f1-4486-92d2-61f81a1e2e46"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="631f2696-60ba-423d-a2bb-5cb542395194" name="FairSync" visibility="package" isLeaf="true">
                  <ownedComment xmi:id="a4e887a9-4a92-4a29-9f84-724e47eb2ecb" body="Sync object for fair locks&#xA;" annotatedElement="631f2696-60ba-423d-a2bb-5cb542395194"/>
                  <generalization xmi:id="1d4d66b8-da55-4b14-a2d3-6771ed786bb6" isSubstitutable="true" general="4ffce61d-b1f1-4486-92d2-61f81a1e2e46"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="d993a50b-0861-4e81-84ec-2bd487d39eed" name="LockSupport">
                <ownedComment xmi:id="2e088de4-ce76-4827-9adb-865a439feed6" body="Basic thread blocking primitives for creating locks and other&#xA;synchronization classes.&#xA;&#xA;&lt;p>This class associates with each thread that uses it, a permit&#xA;(in the sense of the {@link java.util.concurrent.Semaphore&#xA;Semaphore} class). A call to &lt;tt>park&lt;/tt> will return immediately&#xA;if the permit is available, consuming it in the process; otherwise&#xA;it &lt;em>may&lt;/em> block.  A call to &lt;tt>unpark&lt;/tt> makes the permit&#xA;available, if it was not already available. (Unlike with Semaphores&#xA;though, permits do not accumulate. There is at most one.)&#xA;&#xA;&lt;p>Methods &lt;tt>park&lt;/tt> and &lt;tt>unpark&lt;/tt> provide efficient&#xA;means of blocking and unblocking threads that do not encounter the&#xA;problems that cause the deprecated methods &lt;tt>Thread.suspend&lt;/tt>&#xA;and &lt;tt>Thread.resume&lt;/tt> to be unusable for such purposes: Races&#xA;between one thread invoking &lt;tt>park&lt;/tt> and another thread trying&#xA;to &lt;tt>unpark&lt;/tt> it will preserve liveness, due to the&#xA;permit. Additionally, &lt;tt>park&lt;/tt> will return if the caller's&#xA;thread was interrupted, and timeout versions are supported. The&#xA;&lt;tt>park&lt;/tt> method may also return at any other time, for &quot;no&#xA;reason&quot;, so in general must be invoked within a loop that rechecks&#xA;conditions upon return. In this sense &lt;tt>park&lt;/tt> serves as an&#xA;optimization of a &quot;busy wait&quot; that does not waste as much time&#xA;spinning, but must be paired with an &lt;tt>unpark&lt;/tt> to be&#xA;effective.&#xA;&#xA;&lt;p>These methods are designed to be used as tools for creating&#xA;higher-level synchronization utilities, and are not in themselves&#xA;useful for most concurrency control applications.&#xA;&#xA;&lt;p>&lt;b>Sample Usage.&lt;/b> Here is a sketch of a First-in-first-out&#xA;non-reentrant lock class.&#xA;&lt;pre>&#xA;class FIFOMutex {&#xA;private AtomicBoolean locked = new AtomicBoolean(false);&#xA;private Queue&lt;Thread> waiters = new ConcurrentLinkedQueue&lt;Thread>();&#xA;&#xA;public void lock() {&#xA;boolean wasInterrupted = false;&#xA;Thread current = Thread.currentThread();&#xA;waiters.add(current);&#xA;&#xA;Block while not first in queue or cannot acquire lock&#xA;while (waiters.peek() != current ||&#xA;!locked.compareAndSet(false, true)) {&#xA;LockSupport.park();&#xA;if (Thread.interrupted()) // ignore interrupts while waiting&#xA;wasInterrupted = true;&#xA;}&#xA;&#xA;waiters.remove();&#xA;if (wasInterrupted)          // reassert interrupt status on exit&#xA;current.interrupt();&#xA;}&#xA;&#xA;public void unlock() {&#xA;locked.set(false);&#xA;LockSupport.unpark(waiters.peek());&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;" annotatedElement="d993a50b-0861-4e81-84ec-2bd487d39eed"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="cb439966-b80c-4969-93e8-3429ade5cd5c" name="ReadWriteLock" isAbstract="true">
                <ownedComment xmi:id="923d41c5-aaec-47f1-8d44-83fdac7a24a4" body="A &lt;tt>ReadWriteLock&lt;/tt> maintains a pair of associated {@link&#xA;Lock locks}, one for read-only operations and one for writing.&#xA;The {@link #readLock read lock} may be held simultaneously by&#xA;multiple reader threads, so long as there are no writers.  The&#xA;{@link #writeLock write lock} is exclusive.&#xA;&#xA;&lt;p>A read-write lock allows for a greater level of concurrency in&#xA;accessing shared data than that permitted by a mutual exclusion lock.&#xA;It exploits the fact that while only a single thread at a time (a&#xA;&lt;em>writer&lt;/em> thread) can modify the shared data, in many cases any&#xA;number of threads can concurrently read the data (hence &lt;em>reader&lt;/em>&#xA;threads).&#xA;In theory, the increase in concurrency permitted by the use of a read-write&#xA;lock will lead to performance improvements over the use of a mutual&#xA;exclusion lock. In practice this increase in concurrency will only be fully&#xA;realized on a multi-processor, and then only if the access patterns for&#xA;the shared data are suitable.&#xA;&#xA;&lt;p>Whether or not a read-write lock will improve performance over the use&#xA;of a mutual exclusion lock depends on the frequency that the data is&#xA;read compared to being modified, the duration of the read and write&#xA;operations, and the contention for the data - that is, the number of&#xA;threads that will try to read or write the data at the same time.&#xA;For example, a collection that is initially populated with data and&#xA;thereafter infrequently modified, while being frequently searched&#xA;(such as a directory of some kind) is an ideal candidate for the use of&#xA;a read-write lock. However, if updates become frequent then the data&#xA;spends most of its time being exclusively locked and there is little, if any&#xA;increase in concurrency. Further, if the read operations are too short&#xA;the overhead of the read-write lock implementation (which is inherently&#xA;more complex than a mutual exclusion lock) can dominate the execution&#xA;cost, particularly as many read-write lock implementations still serialize&#xA;all threads through a small section of code. Ultimately, only profiling&#xA;and measurement will establish whether the use of a read-write lock is&#xA;suitable for your application.&#xA;&#xA;&#xA;&lt;p>Although the basic operation of a read-write lock is straight-forward,&#xA;there are many policy decisions that an implementation must make, which&#xA;may affect the effectiveness of the read-write lock in a given application.&#xA;Examples of these policies include:&#xA;&lt;ul>&#xA;&lt;li>Determining whether to grant the read lock or the write lock, when&#xA;both readers and writers are waiting, at the time that a writer releases&#xA;the write lock. Writer preference is common, as writes are expected to be&#xA;short and infrequent. Reader preference is less common as it can lead to&#xA;lengthy delays for a write if the readers are frequent and long-lived as&#xA;expected. Fair, or &quot;in-order&quot; implementations are also possible.&#xA;&#xA;&lt;li>Determining whether readers that request the read lock while a&#xA;reader is active and a writer is waiting, are granted the read lock.&#xA;Preference to the reader can delay the writer indefinitely, while&#xA;preference to the writer can reduce the potential for concurrency.&#xA;&#xA;&lt;li>Determining whether the locks are reentrant: can a thread with the&#xA;write lock reacquire it? Can it acquire a read lock while holding the&#xA;write lock? Is the read lock itself reentrant?&#xA;&#xA;&lt;li>Can the write lock be downgraded to a read lock without allowing&#xA;an intervening writer? Can a read lock be upgraded to a write lock,&#xA;in preference to other waiting readers or writers?&#xA;&#xA;&lt;/ul>&#xA;You should consider all of these things when evaluating the suitability&#xA;of a given implementation for your application.&#xA;&#xA;@see ReentrantReadWriteLock&#xA;@see Lock&#xA;@see ReentrantLock&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="cb439966-b80c-4969-93e8-3429ade5cd5c"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="f414d2e6-a3ec-4feb-995a-611c89549a1a" name="Comparable&lt;Delayed>">
              <templateBinding xmi:id="61a2f895-5d1a-4875-9b21-3cb295cf00b0" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
                <parameterSubstitution xmi:id="c683b477-a000-463a-949c-a7538fd72ef9" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="f6dc9602-724c-479c-9aa0-a2b1b71398de"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="f13859ab-f5c7-4e32-aec4-d277f0b50022" name="Callable&lt;T>">
              <templateBinding xmi:id="4a567202-20b3-4dca-ae93-29b5368c1d4c" signature="ea19d91f-ef70-4a4d-b2a8-16dbb149ada5">
                <parameterSubstitution xmi:id="e3358476-5f9a-401c-818c-600f2f4906e2" formal="c81b666b-7359-48a1-8676-92c8618c77bd" actual="525a1795-a8a4-4d51-b3be-a47cf90f1916"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4e52fe80-110b-4651-b623-ba5879c96543" name="FutureTask&lt;V>">
              <templateBinding xmi:id="6cc1a336-56e0-41f3-832f-aaf6bb2e354d" signature="382cfab0-5411-4580-8f52-bf4536e774e4">
                <parameterSubstitution xmi:id="e61c46fa-9b60-450f-baff-905edae422c4" formal="0e83573d-81c2-4974-8aef-3d246fec4817" actual="c6c0a759-d8b2-45d7-9248-0203bb1e7e01"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="3a47b51d-98c9-4cff-8dbd-f1c4f7d52b9b" name="ExecutorService" isAbstract="true">
              <ownedComment xmi:id="99609a9c-e7f6-432a-a2bc-10b2aa8fb6ab" body="An {@link Executor} that provides methods to manage termination and&#xA;methods that can produce a {@link Future} for tracking progress of&#xA;one or more asynchronous tasks.&#xA;&#xA;&lt;p>&#xA;An &lt;tt>ExecutorService&lt;/tt> can be shut down, which will cause it&#xA;to stop accepting new tasks.  After being shut down, the executor&#xA;will eventually terminate, at which point no tasks are actively&#xA;executing, no tasks are awaiting execution, and no new tasks can be&#xA;submitted.&#xA;&#xA;&lt;p> Method &lt;tt>submit&lt;/tt> extends base method {@link&#xA;Executor#execute} by creating and returning a {@link Future} that&#xA;can be used to cancel execution and/or wait for completion.&#xA;Methods &lt;tt>invokeAny&lt;/tt> and &lt;tt>invokeAll&lt;/tt> perform the most&#xA;commonly useful forms of bulk execution, executing a collection of&#xA;tasks and then waiting for at least one, or all, to&#xA;complete. (Class {@link ExecutorCompletionService} can be used to&#xA;write customized variants of these methods.)&#xA;&#xA;&lt;p>The {@link Executors} class provides factory methods for the&#xA;executor services provided in this package.&#xA;&#xA;&lt;h3>Usage Example&lt;/h3>&#xA;&#xA;Here is a sketch of a network service in which threads in a thread&#xA;pool service incoming requests. It uses the preconfigured {@link&#xA;Executors#newFixedThreadPool} factory method:&#xA;&#xA;&lt;pre>&#xA;class NetworkService {&#xA;private final ServerSocket serverSocket;&#xA;private final ExecutorService pool;&#xA;&#xA;public NetworkService(int port, int poolSize) throws IOException {&#xA;serverSocket = new ServerSocket(port);&#xA;pool = Executors.newFixedThreadPool(poolSize);&#xA;}&#xA;&#xA;public void serve() {&#xA;try {&#xA;for (;;) {&#xA;pool.execute(new Handler(serverSocket.accept()));&#xA;}&#xA;} catch (IOException ex) {&#xA;pool.shutdown();&#xA;}&#xA;}&#xA;}&#xA;&#xA;class Handler implements Runnable {&#xA;private final Socket socket;&#xA;Handler(Socket socket) { this.socket = socket; }&#xA;public void run() {&#xA;read and service request&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="3a47b51d-98c9-4cff-8dbd-f1c4f7d52b9b"/>
              <generalization xmi:id="f7cb0a16-fd4e-4607-9d0e-1e3dc59f0da0" isSubstitutable="true" general="b39b5055-a956-4ef0-9124-9f5d97d30a8c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="a7c0cc27-923c-4411-b843-fadea63b8787" name="Iterator&lt;V>">
              <templateBinding xmi:id="386e9802-a64c-46bd-8edf-02fb155b0a3e" signature="0f8c6981-4608-4e07-a119-f77e4e17cb2d">
                <parameterSubstitution xmi:id="e065a18b-ddbe-45d9-b977-83642d2f9765" formal="3b71f5d7-d328-40b6-8dcc-6484e179fd5e" actual="6e16dbee-010f-4cc1-a091-a6a0310dcd56"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="125391a5-cf0a-4304-bc13-9acf146357ed" name="ListIterator&lt;E>">
              <templateBinding xmi:id="414a1d78-6c27-4b70-aa13-b1abb073c02e" signature="07f07769-94bd-4c3c-88a2-9d24128c92c6">
                <parameterSubstitution xmi:id="bc1dd454-2f5c-40bd-a9e3-4b610e3219e0" formal="8cf5f9f8-07ce-4ffa-84b0-94b9c208492b" actual="8f463f4b-095d-4191-bb05-10d14b6dbdfb"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="e461a460-767e-4caf-9423-126daef44e14" name="ScheduledFuture" isAbstract="true">
              <ownedComment xmi:id="54438e0a-3325-4bed-84ee-3e5810e5dd99" body="A delayed result-bearing action that can be cancelled.&#xA;Usually a scheduled future is the result of scheduling&#xA;a task with a {@link ScheduledExecutorService}.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;V> The result type returned by this Future&#xA;" annotatedElement="e461a460-767e-4caf-9423-126daef44e14"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="835f3c43-b0bd-4065-8347-722b1d65f76a" name="" parameter="76f8b7fa-40d2-4f76-881f-d3e498df54db">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="76f8b7fa-40d2-4f76-881f-d3e498df54db" parameteredElement="d3161472-9956-4b21-b823-71a8bf627801">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="d3161472-9956-4b21-b823-71a8bf627801" name="V" templateParameter="76f8b7fa-40d2-4f76-881f-d3e498df54db"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="111413ed-15e1-4a6e-b9eb-5ab52a8c2341" isSubstitutable="true" general="f6dc9602-724c-479c-9aa0-a2b1b71398de"/>
              <generalization xmi:id="429f1d25-fc79-45af-a3e9-f75463d76391" isSubstitutable="true" general="845866fd-7ff1-4261-aafb-b3d5b00b0cf5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="c91895ab-e211-4222-b3c1-25dac31a4e22" name="atomic">
              <packagedElement xmi:type="uml:Class" xmi:id="a14d3f20-47e9-4dac-902c-e5f61e0eb98d" name="AtomicIntegerFieldUpdater" isAbstract="true">
                <ownedComment xmi:id="67776646-97bf-43bd-b796-cae525c5ce92" body="A reflection-based utility that enables atomic updates to&#xA;designated &lt;tt>volatile int&lt;/tt> fields of designated classes.&#xA;This class is designed for use in atomic data structures in which&#xA;several fields of the same node are independently subject to atomic&#xA;updates.&#xA;&#xA;&lt;p> Note that the guarantees of the &lt;tt>compareAndSet&lt;/tt> method&#xA;in this class are weaker than in other atomic classes. Because this&#xA;class cannot ensure that all uses of the field are appropriate for&#xA;purposes of atomic access, it can guarantee atomicity and volatile&#xA;semantics only with respect to other invocations of&#xA;&lt;tt>compareAndSet&lt;/tt> and &lt;tt>set&lt;/tt>.&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;T> The type of the object holding the updatable field&#xA;" annotatedElement="a14d3f20-47e9-4dac-902c-e5f61e0eb98d"/>
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="325f6fd0-016a-47a8-81e0-ae3a2c58c318" name="" parameter="d9805bf6-272f-40e9-969a-52617846ef7a">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="d9805bf6-272f-40e9-969a-52617846ef7a" parameteredElement="b937bdc1-f877-4031-80dc-abd94a8739fb">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="b937bdc1-f877-4031-80dc-abd94a8739fb" name="T" templateParameter="d9805bf6-272f-40e9-969a-52617846ef7a"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <nestedClassifier xmi:type="uml:Class" xmi:id="b60f6c24-183a-4b32-92cf-989d21110ade" name="AtomicIntegerFieldUpdaterImpl" visibility="private">
                  <ownedComment xmi:id="846765e4-5e2a-4cca-b421-8507c63e7d06" body="Standard hotspot implementation using intrinsics&#xA;" annotatedElement="b60f6c24-183a-4b32-92cf-989d21110ade"/>
                  <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="27d0196e-4e7e-4439-81c2-8373c77d819b" name="" parameter="8dd2ccf0-50b4-4bba-8e9c-abc0a1df643f">
                    <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="8dd2ccf0-50b4-4bba-8e9c-abc0a1df643f" parameteredElement="2a3a65f8-5b4a-4893-8ef6-6c42522f9cbd">
                      <ownedParameteredElement xmi:type="uml:Class" xmi:id="2a3a65f8-5b4a-4893-8ef6-6c42522f9cbd" name="T" templateParameter="8dd2ccf0-50b4-4bba-8e9c-abc0a1df643f"/>
                    </ownedParameter>
                  </ownedTemplateSignature>
                  <generalization xmi:id="7ed86c29-76a1-4cdb-a360-de4aa4ce8168" isSubstitutable="true" general="f1ebf24d-c225-453e-a4d2-91ecbf854075"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f1ebf24d-c225-453e-a4d2-91ecbf854075" name="AtomicIntegerFieldUpdater&lt;T>">
                <templateBinding xmi:id="e65fd2d3-15c9-4163-8ce9-3568e606124c" signature="325f6fd0-016a-47a8-81e0-ae3a2c58c318">
                  <parameterSubstitution xmi:id="8fb70b3b-85bc-480e-8f57-7ab8f584a8bc" formal="d9805bf6-272f-40e9-969a-52617846ef7a" actual="2a3a65f8-5b4a-4893-8ef6-6c42522f9cbd"/>
                </templateBinding>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="d96b3632-80d1-42cf-9615-9cf4f068c19d" name="AtomicReferenceFieldUpdater" isAbstract="true">
                <ownedComment xmi:id="e8f09c9e-6c88-4cef-b386-d8b8f65dea37" body="A reflection-based utility that enables atomic updates to&#xA;designated &lt;tt>volatile&lt;/tt> reference fields of designated&#xA;classes.  This class is designed for use in atomic data structures&#xA;in which several reference fields of the same node are&#xA;independently subject to atomic updates. For example, a tree node&#xA;might be declared as&#xA;&#xA;&lt;pre>&#xA;class Node {&#xA;private volatile Node left, right;&#xA;&#xA;private static final AtomicReferenceFieldUpdater&lt;Node, Node> leftUpdater =&#xA;AtomicReferenceFieldUpdater.newUpdater(Node.class, Node.class, &quot;left&quot;);&#xA;private static AtomicReferenceFieldUpdater&lt;Node, Node> rightUpdater =&#xA;AtomicReferenceFieldUpdater.newUpdater(Node.class, Node.class, &quot;right&quot;);&#xA;&#xA;Node getLeft() { return left;  }&#xA;boolean compareAndSetLeft(Node expect, Node update) {&#xA;return leftUpdater.compareAndSet(this, expect, update);&#xA;}&#xA;... and so on&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p> Note that the guarantees of the &lt;tt>compareAndSet&lt;/tt>&#xA;method in this class are weaker than in other atomic classes. Because this&#xA;class cannot ensure that all uses of the field are appropriate for&#xA;purposes of atomic access, it can guarantee atomicity and volatile&#xA;semantics only with respect to other invocations of&#xA;&lt;tt>compareAndSet&lt;/tt> and &lt;tt>set&lt;/tt>.&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;T> The type of the object holding the updatable field&#xA;@param &lt;V> The type of the field&#xA;" annotatedElement="d96b3632-80d1-42cf-9615-9cf4f068c19d"/>
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="e821cb8b-0d12-4efd-b658-e5cd7079b54a" name="" parameter="3636651d-0cd4-41f2-ab42-899b0593bbba 79c2bbf9-c2d7-47dd-a345-fa756b1707ec">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="3636651d-0cd4-41f2-ab42-899b0593bbba" parameteredElement="1eef4718-b9d0-4759-9fa4-06a36a2f2c18">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="1eef4718-b9d0-4759-9fa4-06a36a2f2c18" name="T" templateParameter="3636651d-0cd4-41f2-ab42-899b0593bbba"/>
                  </ownedParameter>
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="79c2bbf9-c2d7-47dd-a345-fa756b1707ec" parameteredElement="dc7a0947-d21c-421b-ac75-61d42417b039">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="dc7a0947-d21c-421b-ac75-61d42417b039" name="V" templateParameter="79c2bbf9-c2d7-47dd-a345-fa756b1707ec"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <nestedClassifier xmi:type="uml:Class" xmi:id="fc3535bd-62bd-46b9-b5ea-ece0ec99df8f" name="AtomicReferenceFieldUpdaterImpl" visibility="private">
                  <ownedComment xmi:id="25f1581a-f775-4cce-b18a-3fc6f67126af" body="Standard hotspot implementation using intrinsics&#xA;" annotatedElement="fc3535bd-62bd-46b9-b5ea-ece0ec99df8f"/>
                  <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="2811b695-3241-4564-90b7-10fe1f39222e" name="" parameter="9b33a2f7-0697-4f94-92fe-af1cd11de592 690e0f4a-9781-479a-9905-276bcf0394ea">
                    <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="9b33a2f7-0697-4f94-92fe-af1cd11de592" parameteredElement="3fd12aae-77be-49d2-84df-b8387d45b912">
                      <ownedParameteredElement xmi:type="uml:Class" xmi:id="3fd12aae-77be-49d2-84df-b8387d45b912" name="T" templateParameter="9b33a2f7-0697-4f94-92fe-af1cd11de592"/>
                    </ownedParameter>
                    <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="690e0f4a-9781-479a-9905-276bcf0394ea" parameteredElement="0be066aa-ee67-490c-89af-733188b9f876">
                      <ownedParameteredElement xmi:type="uml:Class" xmi:id="0be066aa-ee67-490c-89af-733188b9f876" name="V" templateParameter="690e0f4a-9781-479a-9905-276bcf0394ea"/>
                    </ownedParameter>
                  </ownedTemplateSignature>
                  <generalization xmi:id="3f7ce110-2eef-4ca2-b718-f2d21a780c5a" isSubstitutable="true" general="a5f3b498-3bea-4e43-ab3c-2affbc3dd30a"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="043294bb-b946-42c7-91a8-c24580af50ce" name="AtomicLongArray" clientDependency="4a507ec0-94f2-495f-a1d3-6b451da02bc4">
                <ownedComment xmi:id="19c95aa4-ff62-43fa-89a5-80dbc9751ad5" body="A &lt;tt>long&lt;/tt> array in which elements may be updated atomically.&#xA;See the {@link java.util.concurrent.atomic} package specification&#xA;for description of the properties of atomic variables.&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="043294bb-b946-42c7-91a8-c24580af50ce"/>
                <interfaceRealization xmi:id="4a507ec0-94f2-495f-a1d3-6b451da02bc4" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="043294bb-b946-42c7-91a8-c24580af50ce" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="a5f3b498-3bea-4e43-ab3c-2affbc3dd30a" name="AtomicReferenceFieldUpdater&lt;T, V>">
                <templateBinding xmi:id="46391891-f9ee-4f4a-87c8-ba5bca9f9206" signature="e821cb8b-0d12-4efd-b658-e5cd7079b54a">
                  <parameterSubstitution xmi:id="d706c1b7-b9d8-4193-ab93-89508d95e002" formal="3636651d-0cd4-41f2-ab42-899b0593bbba" actual="3fd12aae-77be-49d2-84df-b8387d45b912"/>
                  <parameterSubstitution xmi:id="e3064f95-8b53-47c0-8eee-06a4579435c1" formal="79c2bbf9-c2d7-47dd-a345-fa756b1707ec" actual="0be066aa-ee67-490c-89af-733188b9f876"/>
                </templateBinding>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="2b494ace-5fdf-47dd-b495-9110b54368bf" name="AtomicStampedReference">
                <ownedComment xmi:id="35202d5e-01ce-4070-bfc0-38572a84cc6a" body="An &lt;tt>AtomicStampedReference&lt;/tt> maintains an object reference&#xA;along with an integer &quot;stamp&quot;, that can be updated atomically.&#xA;&#xA;&lt;p> Implementation note. This implementation maintains stamped&#xA;references by creating internal objects representing &quot;boxed&quot;&#xA;[reference, integer] pairs.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;V> The type of object referred to by this reference&#xA;" annotatedElement="2b494ace-5fdf-47dd-b495-9110b54368bf"/>
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="3bbefdce-05c5-4c07-a86d-13d38c7f1616" name="" parameter="152e5657-7918-41a0-825e-d2e19ca74cc5">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="152e5657-7918-41a0-825e-d2e19ca74cc5" parameteredElement="676d3d58-6a93-420d-9c26-b137f83b314f">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="676d3d58-6a93-420d-9c26-b137f83b314f" name="V" templateParameter="152e5657-7918-41a0-825e-d2e19ca74cc5"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <nestedClassifier xmi:type="uml:Class" xmi:id="3a7e85cc-b87d-430d-b66b-ec02fb860af4" name="ReferenceIntegerPair" visibility="private">
                  <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="928de4c4-8657-47df-92a5-0aa742c61952" name="" parameter="4a22f3f9-13e6-4a56-b0e3-d59a08926c18">
                    <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="4a22f3f9-13e6-4a56-b0e3-d59a08926c18" parameteredElement="9c4c25c1-99ac-4bf3-ac05-0115fe6eb208">
                      <ownedParameteredElement xmi:type="uml:Class" xmi:id="9c4c25c1-99ac-4bf3-ac05-0115fe6eb208" name="T" templateParameter="4a22f3f9-13e6-4a56-b0e3-d59a08926c18"/>
                    </ownedParameter>
                  </ownedTemplateSignature>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="94860529-ba50-429f-a2eb-59e0732a8144" name="AtomicInteger" clientDependency="e2e32d5a-bd76-4611-aade-e3f828baccb3">
                <ownedComment xmi:id="ea7a1f95-44af-46d5-a79d-4447ee28399b" body="An &lt;tt>int&lt;/tt> value that may be updated atomically. See the&#xA;{@link java.util.concurrent.atomic} package specification for&#xA;description of the properties of atomic variables. An&#xA;&lt;tt>AtomicInteger&lt;/tt> is used in applications such as atomically&#xA;incremented counters, and cannot be used as a replacement for an&#xA;{@link java.lang.Integer}. However, this class does extend&#xA;&lt;tt>Number&lt;/tt> to allow uniform access by tools and utilities that&#xA;deal with numerically-based classes.&#xA;&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="94860529-ba50-429f-a2eb-59e0732a8144"/>
                <generalization xmi:id="401951dc-e542-4595-b219-7a33902304e6" isSubstitutable="true" general="86595613-8e64-4702-a472-32dc7405cc46"/>
                <interfaceRealization xmi:id="e2e32d5a-bd76-4611-aade-e3f828baccb3" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="94860529-ba50-429f-a2eb-59e0732a8144" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="972254d7-aa5f-4440-95d2-7b399c6a2dc3" name="AtomicLong" clientDependency="79b601de-e341-4820-a308-6fc8b0025e7c">
                <ownedComment xmi:id="e4b077b0-a7af-430b-843e-803f6139c4ed" body="A &lt;tt>long&lt;/tt> value that may be updated atomically.  See the&#xA;{@link java.util.concurrent.atomic} package specification for&#xA;description of the properties of atomic variables. An&#xA;&lt;tt>AtomicLong&lt;/tt> is used in applications such as atomically&#xA;incremented sequence numbers, and cannot be used as a replacement&#xA;for a {@link java.lang.Long}. However, this class does extend&#xA;&lt;tt>Number&lt;/tt> to allow uniform access by tools and utilities that&#xA;deal with numerically-based classes.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="972254d7-aa5f-4440-95d2-7b399c6a2dc3"/>
                <generalization xmi:id="7b7787e1-83eb-4c76-a3df-54f2ea52a856" isSubstitutable="true" general="86595613-8e64-4702-a472-32dc7405cc46"/>
                <interfaceRealization xmi:id="79b601de-e341-4820-a308-6fc8b0025e7c" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="972254d7-aa5f-4440-95d2-7b399c6a2dc3" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="88a40e4a-d23a-4a23-a6ec-ce6cad00eee1" name="AtomicReference" clientDependency="314c3f6d-6ec8-48d1-8f47-6821125d775f">
                <ownedComment xmi:id="074f4827-273d-4753-a7db-1eccbf6ad437" body="An object reference that may be updated atomically. See the {@link&#xA;java.util.concurrent.atomic} package specification for description&#xA;of the properties of atomic variables.&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;V> The type of object referred to by this reference&#xA;" annotatedElement="88a40e4a-d23a-4a23-a6ec-ce6cad00eee1"/>
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="d9e9b0cd-0ba8-429c-8b3c-b6b77edb97b2" name="" parameter="a29069e3-bf8c-4617-94ee-b17d844e3c76">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="a29069e3-bf8c-4617-94ee-b17d844e3c76" parameteredElement="cbac6d73-00d4-480f-85d4-b4ad70e2e5e6">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="cbac6d73-00d4-480f-85d4-b4ad70e2e5e6" name="V" templateParameter="a29069e3-bf8c-4617-94ee-b17d844e3c76"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <interfaceRealization xmi:id="314c3f6d-6ec8-48d1-8f47-6821125d775f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="88a40e4a-d23a-4a23-a6ec-ce6cad00eee1" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="1dd7e5eb-8191-4155-b129-9adce03c9cdc" name="AtomicLongFieldUpdater" isAbstract="true">
                <ownedComment xmi:id="57addbad-0ab7-4da3-81f4-fa7bd81432ed" body="A reflection-based utility that enables atomic updates to&#xA;designated &lt;tt>volatile long&lt;/tt> fields of designated classes.&#xA;This class is designed for use in atomic data structures in which&#xA;several fields of the same node are independently subject to atomic&#xA;updates.&#xA;&#xA;&lt;p> Note that the guarantees of the &lt;tt>compareAndSet&lt;/tt> method&#xA;in this class are weaker than in other atomic classes. Because this&#xA;class cannot ensure that all uses of the field are appropriate for&#xA;purposes of atomic access, it can guarantee atomicity and volatile&#xA;semantics only with respect to other invocations of&#xA;&lt;tt>compareAndSet&lt;/tt> and &lt;tt>set&lt;/tt>.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;T> The type of the object holding the updatable field&#xA;" annotatedElement="1dd7e5eb-8191-4155-b129-9adce03c9cdc"/>
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="98ed4322-e187-43bc-82c6-dc6d61b84d51" name="" parameter="f2b614de-1476-406d-ac93-16055892753b">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="f2b614de-1476-406d-ac93-16055892753b" parameteredElement="cfbf6726-45fb-46be-a8f1-6f2766ecf981">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="cfbf6726-45fb-46be-a8f1-6f2766ecf981" name="T" templateParameter="f2b614de-1476-406d-ac93-16055892753b"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <nestedClassifier xmi:type="uml:Class" xmi:id="d9570284-7e56-4215-af62-1bd64d0dc69a" name="CASUpdater" visibility="private">
                  <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="dce4ca5a-07eb-42b3-bb9b-1072774e1462" name="" parameter="903c1b25-f7db-4fed-8755-16ec9ea37d8c">
                    <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="903c1b25-f7db-4fed-8755-16ec9ea37d8c" parameteredElement="d9f422a4-00a8-42a4-97c0-edf62fbcca7f">
                      <ownedParameteredElement xmi:type="uml:Class" xmi:id="d9f422a4-00a8-42a4-97c0-edf62fbcca7f" name="T" templateParameter="903c1b25-f7db-4fed-8755-16ec9ea37d8c"/>
                    </ownedParameter>
                  </ownedTemplateSignature>
                  <generalization xmi:id="595f9738-bd29-47b9-8c57-1bd97b7fc251" isSubstitutable="true" general="72bfd9c7-a791-4de2-9a0b-97ca39b72dc0"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="2deda47b-5f30-4561-a811-c05f618980ac" name="LockedUpdater" visibility="private">
                  <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="ff6e9147-3643-4cda-9b6d-667ba18a54ff" name="" parameter="a3802ed5-1196-4a21-96a9-e843396d9dbc">
                    <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="a3802ed5-1196-4a21-96a9-e843396d9dbc" parameteredElement="b27d5a61-158a-4b41-ba85-1aa7e071d742">
                      <ownedParameteredElement xmi:type="uml:Class" xmi:id="b27d5a61-158a-4b41-ba85-1aa7e071d742" name="T" templateParameter="a3802ed5-1196-4a21-96a9-e843396d9dbc"/>
                    </ownedParameter>
                  </ownedTemplateSignature>
                  <generalization xmi:id="504eeee7-cc83-4cb2-93db-9f5de1207bc5" isSubstitutable="true" general="72bfd9c7-a791-4de2-9a0b-97ca39b72dc0"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="ef0707c6-e22d-47d9-a4fc-7382b68dc439" name="AtomicMarkableReference">
                <ownedComment xmi:id="ba3a1d73-20a8-46d6-9a1b-1e87d34a4c39" body="An &lt;tt>AtomicMarkableReference&lt;/tt> maintains an object reference&#xA;along with a mark bit, that can be updated atomically.&#xA;&lt;p>&#xA;&lt;p> Implementation note. This implementation maintains markable&#xA;references by creating internal objects representing &quot;boxed&quot;&#xA;[reference, boolean] pairs.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;V> The type of object referred to by this reference&#xA;" annotatedElement="ef0707c6-e22d-47d9-a4fc-7382b68dc439"/>
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="475e9ea0-3022-4f86-8cda-c0a183ccd4f7" name="" parameter="8698a535-cf44-4780-b56f-72be258158a2">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="8698a535-cf44-4780-b56f-72be258158a2" parameteredElement="11f7b3cb-dc0a-487a-a06a-1c573bcc8ef6">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="11f7b3cb-dc0a-487a-a06a-1c573bcc8ef6" name="V" templateParameter="8698a535-cf44-4780-b56f-72be258158a2"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <nestedClassifier xmi:type="uml:Class" xmi:id="872b20a3-2479-4131-832a-d73b3937e307" name="ReferenceBooleanPair" visibility="private">
                  <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="f3d02519-ef3d-41b8-a86e-2a907acee027" name="" parameter="aee7f1ad-1857-4a47-96bf-9beddba02d41">
                    <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="aee7f1ad-1857-4a47-96bf-9beddba02d41" parameteredElement="ec5037a5-2852-408a-8907-ad144793fa88">
                      <ownedParameteredElement xmi:type="uml:Class" xmi:id="ec5037a5-2852-408a-8907-ad144793fa88" name="T" templateParameter="aee7f1ad-1857-4a47-96bf-9beddba02d41"/>
                    </ownedParameter>
                  </ownedTemplateSignature>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="9dd3908d-3881-478c-b2dd-6ca5f7db2fa7" name="AtomicBoolean" clientDependency="eee02a40-fccc-4711-8179-540ccc3110f9">
                <ownedComment xmi:id="5004909e-0a1a-471d-b5db-6ab8b9c39f55" body="A &lt;tt>boolean&lt;/tt> value that may be updated atomically. See the&#xA;{@link java.util.concurrent.atomic} package specification for&#xA;description of the properties of atomic variables. An&#xA;&lt;tt>AtomicBoolean&lt;/tt> is used in applications such as atomically&#xA;updated flags, and cannot be used as a replacement for a&#xA;{@link java.lang.Boolean}.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="9dd3908d-3881-478c-b2dd-6ca5f7db2fa7"/>
                <interfaceRealization xmi:id="eee02a40-fccc-4711-8179-540ccc3110f9" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="9dd3908d-3881-478c-b2dd-6ca5f7db2fa7" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="72bfd9c7-a791-4de2-9a0b-97ca39b72dc0" name="AtomicLongFieldUpdater&lt;T>">
                <templateBinding xmi:id="11e64d8b-9a7c-4c40-a1f2-1a9d1bd1a2b8" signature="98ed4322-e187-43bc-82c6-dc6d61b84d51">
                  <parameterSubstitution xmi:id="dbe45f10-f2fd-4887-93a7-e0112d6f13b3" formal="f2b614de-1476-406d-ac93-16055892753b" actual="d9f422a4-00a8-42a4-97c0-edf62fbcca7f"/>
                </templateBinding>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="fac8db90-8b58-4cc9-a841-86fd7afe34d8" name="AtomicIntegerArray" clientDependency="d4d27d2b-894c-4196-a451-30570ebfd2fa">
                <ownedComment xmi:id="aee26cf6-846c-4fa3-81f3-7f6309f2ffdf" body="An &lt;tt>int&lt;/tt> array in which elements may be updated atomically.&#xA;See the {@link java.util.concurrent.atomic} package&#xA;specification for description of the properties of atomic&#xA;variables.&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="fac8db90-8b58-4cc9-a841-86fd7afe34d8"/>
                <interfaceRealization xmi:id="d4d27d2b-894c-4196-a451-30570ebfd2fa" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="fac8db90-8b58-4cc9-a841-86fd7afe34d8" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="8fcd3a35-6590-40e0-86c7-e77182f11346" name="AtomicReferenceArray" clientDependency="abf13a45-ae40-4810-ad97-0986d1a29bbd">
                <ownedComment xmi:id="21caca67-44b7-4028-abe7-f1e98aa11e6e" body="An array of object references in which elements may be updated&#xA;atomically.  See the {@link java.util.concurrent.atomic} package&#xA;specification for description of the properties of atomic&#xA;variables.&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;E> The base class of elements held in this array&#xA;" annotatedElement="8fcd3a35-6590-40e0-86c7-e77182f11346"/>
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="31edbfe9-989c-4947-8b62-b4c0f3f82b9e" name="" parameter="a55156a9-5aae-4be4-ab96-8268a135434b">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="a55156a9-5aae-4be4-ab96-8268a135434b" parameteredElement="8230dd81-edf5-4824-a103-7450e952e3c0">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="8230dd81-edf5-4824-a103-7450e952e3c0" name="E" templateParameter="a55156a9-5aae-4be4-ab96-8268a135434b"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <interfaceRealization xmi:id="abf13a45-ae40-4810-ad97-0986d1a29bbd" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="8fcd3a35-6590-40e0-86c7-e77182f11346" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="39fe6714-fc8f-4435-97c6-dc88242a1f7b" name="CopyOnWriteArraySet" clientDependency="0ca1727a-7f3e-403f-b2c4-2b0041636a75">
              <ownedComment xmi:id="b10e5e63-5eb4-49ec-9574-3d5eb5bc4242" body="A {@link java.util.Set} that uses {@link&#xA;java.util.concurrent.CopyOnWriteArrayList} for all of its&#xA;operations.  Thus, it shares the same basic properties:&#xA;&lt;ul>&#xA;&lt;li>It is best suited for applications in which set sizes generally&#xA;stay small, read-only operations&#xA;vastly outnumber mutative operations, and you need&#xA;to prevent interference among threads during traversal.&#xA;&lt;li>It is thread-safe.&#xA;&lt;li>Mutative operations(add, set, remove, etc) are expensive&#xA;since they usually entail copying the entire underlying array.&#xA;&lt;li>Iterators do not support the mutative remove operation.&#xA;&lt;li>Traversal via iterators is fast and cannot encounter&#xA;interference from other threads. Iterators rely on&#xA;unchanging snapshots of the array at the time the iterators were&#xA;constructed.&#xA;&lt;/ul>&#xA;&#xA;&lt;p> &lt;b>Sample Usage.&lt;/b> The following code sketch uses a&#xA;copy-on-write set to maintain a set of Handler objects that&#xA;perform some action upon state updates.&#xA;&#xA;&lt;pre>&#xA;class Handler { void handle(); ... }&#xA;&#xA;class X {&#xA;private final CopyOnWriteArraySet&lt;Handler> handlers = new CopyOnWriteArraySet&lt;Handler>();&#xA;public void addHandler(Handler h) { handlers.add(h); }&#xA;&#xA;private long internalState;&#xA;private synchronized void changeState() { internalState = ...; }&#xA;&#xA;public void update() {&#xA;changeState();&#xA;for (Handler handler : handlers)&#xA;handler.handle();&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@see CopyOnWriteArrayList&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;E> the type of elements held in this collection&#xA;" annotatedElement="39fe6714-fc8f-4435-97c6-dc88242a1f7b"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="c90c35bf-ecd8-4736-a658-ade6abe90318" name="" parameter="b7c104c9-b73a-477d-8c15-58e924720d39">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="b7c104c9-b73a-477d-8c15-58e924720d39" parameteredElement="42828db4-c9e5-4b3b-b7b4-3cc2dd1b2a45">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="42828db4-c9e5-4b3b-b7b4-3cc2dd1b2a45" name="E" templateParameter="b7c104c9-b73a-477d-8c15-58e924720d39"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="7447cf73-266f-4701-9bcb-47a7492a2833" isSubstitutable="true" general="366a6b71-c7a9-4b22-95d5-74091ce96f5b"/>
              <interfaceRealization xmi:id="0ca1727a-7f3e-403f-b2c4-2b0041636a75" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="39fe6714-fc8f-4435-97c6-dc88242a1f7b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e12ea5d8-1864-4918-acdf-3b1fd460aff3" name="TimeUnit">
              <ownedComment xmi:id="8a01e3c7-8ead-416d-b70f-4880c5cef441" body="A &lt;tt>TimeUnit&lt;/tt> represents time durations at a given unit of&#xA;granularity and provides utility methods to convert across units,&#xA;and to perform timing and delay operations in these units.  A&#xA;&lt;tt>TimeUnit&lt;/tt> does not maintain time information, but only&#xA;helps organize and use time representations that may be maintained&#xA;separately across various contexts.&#xA;&#xA;&lt;p>A &lt;tt>TimeUnit&lt;/tt> is mainly used to inform time-based methods&#xA;how a given timing parameter should be interpreted. For example,&#xA;the following code will timeout in 50 milliseconds if the {@link&#xA;java.util.concurrent.locks.Lock lock} is not available:&#xA;&#xA;&lt;pre>  Lock lock = ...;&#xA;if ( lock.tryLock(50L, TimeUnit.MILLISECONDS) ) ...&#xA;&lt;/pre>&#xA;while this code will timeout in 50 seconds:&#xA;&lt;pre>&#xA;Lock lock = ...;&#xA;if ( lock.tryLock(50L, TimeUnit.SECONDS) ) ...&#xA;&lt;/pre>&#xA;&#xA;Note however, that there is no guarantee that a particular timeout&#xA;implementation will be able to notice the passage of time at the&#xA;same granularity as the given &lt;tt>TimeUnit&lt;/tt>.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="e12ea5d8-1864-4918-acdf-3b1fd460aff3"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="a2cdda80-53a0-4729-afe1-d6a5b85b6ecc" name="ConcurrentMap&lt;K, V>">
              <templateBinding xmi:id="4b0c5846-dcba-44a3-a957-866d7a71b446" signature="148f1adb-be35-41d8-8bf4-9359c8d02fd0">
                <parameterSubstitution xmi:id="03e4e578-8633-458b-8726-7a620e93d034" formal="df7eb094-b226-4b89-bd80-faf51bedde75" actual="1cbff166-18a5-4fb9-84b6-6f6aacb25f86"/>
                <parameterSubstitution xmi:id="193f7371-724a-490d-b879-20b49247646e" formal="8b1f202f-8230-42c1-a128-4e3ba4420fea" actual="6e16dbee-010f-4cc1-a091-a6a0310dcd56"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="fc736b5c-9676-4391-a032-214cc4ac8de6" name="SynchronousQueue" clientDependency="dbf19bac-0e0c-49b1-93ea-088de54f87c3 33a6e9e1-2c3f-4af8-93fa-6fee5c7f9ab9">
              <ownedComment xmi:id="0a6e70ba-34cc-4303-bd21-89653885af59" body="A {@linkplain BlockingQueue blocking queue} in which each&#xA;&lt;tt>put&lt;/tt> must wait for a &lt;tt>take&lt;/tt>, and vice versa.  A&#xA;synchronous queue does not have any internal capacity, not even a&#xA;capacity of one. You cannot &lt;tt>peek&lt;/tt> at a synchronous queue&#xA;because an element is only present when you try to take it; you&#xA;cannot add an element (using any method) unless another thread is&#xA;trying to remove it; you cannot iterate as there is nothing to&#xA;iterate.  The &lt;em>head&lt;/em> of the queue is the element that the&#xA;first queued thread is trying to add to the queue; if there are no&#xA;queued threads then no element is being added and the head is&#xA;&lt;tt>null&lt;/tt>.  For purposes of other &lt;tt>Collection&lt;/tt> methods&#xA;(for example &lt;tt>contains&lt;/tt>), a &lt;tt>SynchronousQueue&lt;/tt> acts&#xA;as an empty collection.  This queue does not permit &lt;tt>null&lt;/tt>&#xA;elements.&#xA;&#xA;&lt;p>Synchronous queues are similar to rendezvous channels used in&#xA;CSP and Ada. They are well suited for handoff designs, in which an&#xA;object running in one thread must sync up with an object running&#xA;in another thread in order to hand it some information, event, or&#xA;task.&#xA;&#xA;&lt;p> This class supports an optional fairness policy for ordering&#xA;waiting producer and consumer threads.  By default, this ordering&#xA;is not guaranteed. However, a queue constructed with fairness set&#xA;to &lt;tt>true&lt;/tt> grants threads access in FIFO order. Fairness&#xA;generally decreases throughput but reduces variability and avoids&#xA;starvation.&#xA;&#xA;&lt;p>This class and its iterator implement all of the&#xA;&lt;em>optional&lt;/em> methods of the {@link Collection} and {@link&#xA;Iterator} interfaces.&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;E> the type of elements held in this collection&#xA;" annotatedElement="fc736b5c-9676-4391-a032-214cc4ac8de6"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="10542e95-2a05-4453-96d8-5e808b461447" name="" parameter="c33cb5fd-7c61-4e82-8e59-d7f512227397">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="c33cb5fd-7c61-4e82-8e59-d7f512227397" parameteredElement="4e7ad604-8ca6-4478-88b3-36f729f4dd16">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="4e7ad604-8ca6-4478-88b3-36f729f4dd16" name="E" templateParameter="c33cb5fd-7c61-4e82-8e59-d7f512227397"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="c6572b5e-bff5-4d98-94cf-48211f9e4c47" isSubstitutable="true" general="57267948-5b20-4000-a393-c9fc60c633c3"/>
              <interfaceRealization xmi:id="33a6e9e1-2c3f-4af8-93fa-6fee5c7f9ab9" name="" supplier="fab524f7-59eb-4ace-bf91-fd1feeef80a3" client="fc736b5c-9676-4391-a032-214cc4ac8de6" contract="fab524f7-59eb-4ace-bf91-fd1feeef80a3"/>
              <interfaceRealization xmi:id="dbf19bac-0e0c-49b1-93ea-088de54f87c3" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="fc736b5c-9676-4391-a032-214cc4ac8de6" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="684cc46c-4f7d-4b15-bb95-79a380d867e4" name="WaitQueue" visibility="package" clientDependency="d9b33eb1-eabe-4fe5-a0d1-acba19db7024" isAbstract="true">
                <ownedComment xmi:id="b962ac9b-5480-4cd9-9706-6f6d1daa0abb" body="Queue to hold waiting puts/takes; specialized to Fifo/Lifo below.&#xA;These queues have all transient fields, but are serializable&#xA;in order to recover fairness settings when deserialized.&#xA;" annotatedElement="684cc46c-4f7d-4b15-bb95-79a380d867e4"/>
                <interfaceRealization xmi:id="d9b33eb1-eabe-4fe5-a0d1-acba19db7024" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="684cc46c-4f7d-4b15-bb95-79a380d867e4" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="4e157f2a-c3b3-40c0-ab8a-aea8fc206d73" name="FifoWaitQueue" visibility="package" clientDependency="fab87948-9aab-4cc8-8796-8172db9eb4b4" isLeaf="true">
                <ownedComment xmi:id="95e45598-9d87-4be7-b0c6-ec3fecb89acb" body="FIFO queue to hold waiting puts/takes.&#xA;" annotatedElement="4e157f2a-c3b3-40c0-ab8a-aea8fc206d73"/>
                <generalization xmi:id="e26d058e-9e32-492d-8a91-3982a81229b9" isSubstitutable="true" general="684cc46c-4f7d-4b15-bb95-79a380d867e4"/>
                <interfaceRealization xmi:id="fab87948-9aab-4cc8-8796-8172db9eb4b4" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4e157f2a-c3b3-40c0-ab8a-aea8fc206d73" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="c82d556b-44fe-4b74-a97d-144189d40b10" name="LifoWaitQueue" visibility="package" clientDependency="a31a5cb4-8190-4795-9925-2c068dde4c34" isLeaf="true">
                <ownedComment xmi:id="223e2eb6-01c6-4b29-9e11-4476f2a9bc80" body="LIFO queue to hold waiting puts/takes.&#xA;" annotatedElement="c82d556b-44fe-4b74-a97d-144189d40b10"/>
                <generalization xmi:id="569bf51d-0fce-4f4a-a8d5-e4eee62700a2" isSubstitutable="true" general="684cc46c-4f7d-4b15-bb95-79a380d867e4"/>
                <interfaceRealization xmi:id="a31a5cb4-8190-4795-9925-2c068dde4c34" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="c82d556b-44fe-4b74-a97d-144189d40b10" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8ef5f8d5-a50b-4315-88f1-53ee83a013e1" name="Node" visibility="package" isLeaf="true">
                <ownedComment xmi:id="e6e16f65-deea-44d1-8c1d-3f931ec458e9" body="Nodes each maintain an item and handle waits and signals for&#xA;getting and setting it. The class extends&#xA;AbstractQueuedSynchronizer to manage blocking, using AQS state&#xA;0 for waiting, 1 for ack, -1 for cancelled.&#xA;" annotatedElement="8ef5f8d5-a50b-4315-88f1-53ee83a013e1"/>
                <generalization xmi:id="2ebee1c5-e1c3-4c4b-b5b8-03f1494cfd9c" isSubstitutable="true" general="b2096acc-0bdf-4dbc-95e0-4d21844c1bbc"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="d840e37d-ab6c-4570-985e-7c1bb2c41637" name="EmptyIterator" visibility="package" clientDependency="7c539ca3-a1d4-4b51-a6a1-139763710452">
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="d6e45874-cd75-452d-8080-3eaecf9fa2bd" name="" parameter="a1465faf-5875-436a-920b-5fd0ddc46b20">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="a1465faf-5875-436a-920b-5fd0ddc46b20" parameteredElement="2c9ac8dd-a721-420c-83ae-b95b67c7a518">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="2c9ac8dd-a721-420c-83ae-b95b67c7a518" name="E" templateParameter="a1465faf-5875-436a-920b-5fd0ddc46b20"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <interfaceRealization xmi:id="7c539ca3-a1d4-4b51-a6a1-139763710452" name="" supplier="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f" client="d840e37d-ab6c-4570-985e-7c1bb2c41637" contract="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="99b5540a-ecb7-4eaa-91dc-fb077925b485" name="CompletionService" isAbstract="true">
              <ownedComment xmi:id="9d5709e3-005f-443d-b692-10af37b9d21f" body="A service that decouples the production of new asynchronous tasks&#xA;from the consumption of the results of completed tasks.  Producers&#xA;&lt;tt>submit&lt;/tt> tasks for execution. Consumers &lt;tt>take&lt;/tt>&#xA;completed tasks and process their results in the order they&#xA;complete.  A &lt;tt>CompletionService&lt;/tt> can for example be used to&#xA;manage asynchronous IO, in which tasks that perform reads are&#xA;submitted in one part of a program or system, and then acted upon&#xA;in a different part of the program when the reads complete,&#xA;possibly in a different order than they were requested.&#xA;&lt;p>&#xA;&#xA;Typically, a &lt;tt>CompletionService&lt;/tt> relies on a separate {@link&#xA;Executor} to actually execute the tasks, in which case the&#xA;&lt;tt>CompletionService&lt;/tt> only manages an internal completion&#xA;queue. The {@link ExecutorCompletionService} class provides an&#xA;implementation of this approach.&#xA;&#xA;" annotatedElement="99b5540a-ecb7-4eaa-91dc-fb077925b485"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="8facf3d4-0c91-4855-84d3-234fec81bee1" name="" parameter="ac9b2c0e-2f10-4895-80e2-f188d458f964">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="ac9b2c0e-2f10-4895-80e2-f188d458f964" parameteredElement="2498ad49-ce2b-4fc6-ba28-2234ebc25ed0">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="2498ad49-ce2b-4fc6-ba28-2234ebc25ed0" name="V" templateParameter="ac9b2c0e-2f10-4895-80e2-f188d458f964"/>
                </ownedParameter>
              </ownedTemplateSignature>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="eafa2c5e-a797-4021-a24b-a65d79338254" name="Iterator&lt;Entry&lt;K, V>>">
              <templateBinding xmi:id="aa6ccaa9-0d63-41cd-ac37-867a2916472b" signature="0f8c6981-4608-4e07-a119-f77e4e17cb2d">
                <parameterSubstitution xmi:id="01b03dec-9349-4021-b71c-e9a402b8245d" formal="3b71f5d7-d328-40b6-8dcc-6484e179fd5e" actual="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0beb1b41-8c8f-4021-a0ac-9c8560ff3846" name="LinkedBlockingQueue" clientDependency="930a6e40-d690-464c-8b39-b32bf2b396d4 71351476-ebe1-4cf1-bd58-2448779994ed">
              <ownedComment xmi:id="8240f9ae-0867-4b9e-8924-2886857481c1" body="An optionally-bounded {@linkplain BlockingQueue blocking queue} based on&#xA;linked nodes.&#xA;This queue orders elements FIFO (first-in-first-out).&#xA;The &lt;em>head&lt;/em> of the queue is that element that has been on the&#xA;queue the longest time.&#xA;The &lt;em>tail&lt;/em> of the queue is that element that has been on the&#xA;queue the shortest time. New elements&#xA;are inserted at the tail of the queue, and the queue retrieval&#xA;operations obtain elements at the head of the queue.&#xA;Linked queues typically have higher throughput than array-based queues but&#xA;less predictable performance in most concurrent applications.&#xA;&#xA;&lt;p> The optional capacity bound constructor argument serves as a&#xA;way to prevent excessive queue expansion. The capacity, if unspecified,&#xA;is equal to {@link Integer#MAX_VALUE}.  Linked nodes are&#xA;dynamically created upon each insertion unless this would bring the&#xA;queue above capacity.&#xA;&#xA;&lt;p>This class and its iterator implement all of the&#xA;&lt;em>optional&lt;/em> methods of the {@link Collection} and {@link&#xA;Iterator} interfaces.&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;E> the type of elements held in this collection&#xA;&#xA;" annotatedElement="0beb1b41-8c8f-4021-a0ac-9c8560ff3846"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="2a364fae-fb5b-4860-84c6-5ba600ebda81" name="" parameter="5415f856-028e-4591-8c2b-432568f05e7b">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="5415f856-028e-4591-8c2b-432568f05e7b" parameteredElement="fe4b69f2-ef1d-4b34-8f76-52a9a973f9f2">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="fe4b69f2-ef1d-4b34-8f76-52a9a973f9f2" name="E" templateParameter="5415f856-028e-4591-8c2b-432568f05e7b"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="af2afad9-01e4-4eb5-87e5-dce7158a592d" isSubstitutable="true" general="57267948-5b20-4000-a393-c9fc60c633c3"/>
              <interfaceRealization xmi:id="930a6e40-d690-464c-8b39-b32bf2b396d4" name="" supplier="fab524f7-59eb-4ace-bf91-fd1feeef80a3" client="0beb1b41-8c8f-4021-a0ac-9c8560ff3846" contract="fab524f7-59eb-4ace-bf91-fd1feeef80a3"/>
              <interfaceRealization xmi:id="71351476-ebe1-4cf1-bd58-2448779994ed" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0beb1b41-8c8f-4021-a0ac-9c8560ff3846" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="e047a7b6-a569-4cbb-9ebe-8bb74aa54c11" name="Node" visibility="package">
                <ownedComment xmi:id="53ff784f-201f-4cda-8354-81890662c051" body="Linked list node class&#xA;" annotatedElement="e047a7b6-a569-4cbb-9ebe-8bb74aa54c11"/>
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="7ea08a8e-2a4a-44cb-ba61-d106a9e46d06" name="" parameter="6487bf87-bbd0-4acd-868d-2ab25034845a">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="6487bf87-bbd0-4acd-868d-2ab25034845a" parameteredElement="3cb4339e-def0-41b2-a3b5-2ed011c6dc8e">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="3cb4339e-def0-41b2-a3b5-2ed011c6dc8e" name="E" templateParameter="6487bf87-bbd0-4acd-868d-2ab25034845a"/>
                  </ownedParameter>
                </ownedTemplateSignature>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="9a7396e5-bcce-40fd-9cd6-0442778a2427" name="Itr" visibility="private" clientDependency="993f9ab9-03ed-4358-8b64-caea9a6032c3">
                <interfaceRealization xmi:id="993f9ab9-03ed-4358-8b64-caea9a6032c3" name="" supplier="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f" client="9a7396e5-bcce-40fd-9cd6-0442778a2427" contract="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ce61998e-5d59-4352-93a0-49d1c47bde38" name="AbstractCollection&lt;Runnable>">
              <templateBinding xmi:id="312f1bf1-f65e-4855-a936-a179d1c43147" signature="d64b29f5-bca8-49c3-8271-3097b690c222">
                <parameterSubstitution xmi:id="429e615f-2b54-4c9c-a401-7199d94ca58a" formal="2794615a-0f57-4cbc-82eb-10061cb9e375" actual="f099ab56-f712-409a-887b-b9949cb5553b"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d8e4bb4a-fea6-4600-8da2-311416fd86f2" name="AbstractSet&lt;K>">
              <templateBinding xmi:id="918d5086-44fa-4fd4-80c4-2b268839a54e" signature="77607dee-756d-445e-96f4-9b3b4e6fb80b">
                <parameterSubstitution xmi:id="06cec860-72dd-4b60-adb2-2d56c65eeea7" formal="1c9b3942-53c2-4539-853b-a9aae2736fa2" actual="1cbff166-18a5-4fb9-84b6-6f6aacb25f86"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="28b33c6a-e6e5-4f6f-9d0d-9d4d82fbb97a" name="CountDownLatch">
              <ownedComment xmi:id="ae062295-d8f9-4b2c-920b-f3ecf1d3911e" body="A synchronization aid that allows one or more threads to wait until&#xA;a set of operations being performed in other threads completes.&#xA;&#xA;&lt;p>A &lt;tt>CountDownLatch&lt;/tt> is initialized with a given&#xA;&lt;em>count&lt;/em>.  The {@link #await await} methods block until the current&#xA;{@link #getCount count} reaches zero due to invocations of the&#xA;{@link #countDown} method, after which all waiting threads are&#xA;released and any subsequent invocations of {@link #await await} return&#xA;immediately. This is a one-shot phenomenon -- the count cannot be&#xA;reset.  If you need a version that resets the count, consider using&#xA;a {@link CyclicBarrier}.&#xA;&#xA;&lt;p>A &lt;tt>CountDownLatch&lt;/tt> is a versatile synchronization tool&#xA;and can be used for a number of purposes.  A&#xA;&lt;tt>CountDownLatch&lt;/tt> initialized with a count of one serves as a&#xA;simple on/off latch, or gate: all threads invoking {@link #await await}&#xA;wait at the gate until it is opened by a thread invoking {@link&#xA;#countDown}.  A &lt;tt>CountDownLatch&lt;/tt> initialized to &lt;em>N&lt;/em>&#xA;can be used to make one thread wait until &lt;em>N&lt;/em> threads have&#xA;completed some action, or some action has been completed N times.&#xA;&lt;p>A useful property of a &lt;tt>CountDownLatch&lt;/tt> is that it&#xA;doesn't require that threads calling &lt;tt>countDown&lt;/tt> wait for&#xA;the count to reach zero before proceeding, it simply prevents any&#xA;thread from proceeding past an {@link #await await} until all&#xA;threads could pass.&#xA;&#xA;&lt;p>&lt;b>Sample usage:&lt;/b> Here is a pair of classes in which a group&#xA;of worker threads use two countdown latches:&#xA;&lt;ul>&#xA;&lt;li>The first is a start signal that prevents any worker from proceeding&#xA;until the driver is ready for them to proceed;&#xA;&lt;li>The second is a completion signal that allows the driver to wait&#xA;until all workers have completed.&#xA;&lt;/ul>&#xA;&#xA;&lt;pre>&#xA;class Driver { // ...&#xA;void main() throws InterruptedException {&#xA;CountDownLatch startSignal = new CountDownLatch(1);&#xA;CountDownLatch doneSignal = new CountDownLatch(N);&#xA;&#xA;for (int i = 0; i &lt; N; ++i) // create and start threads&#xA;new Thread(new Worker(startSignal, doneSignal)).start();&#xA;&#xA;doSomethingElse();            // don't let run yet&#xA;startSignal.countDown();      // let all threads proceed&#xA;doSomethingElse();&#xA;doneSignal.await();           // wait for all to finish&#xA;}&#xA;}&#xA;&#xA;class Worker implements Runnable {&#xA;private final CountDownLatch startSignal;&#xA;private final CountDownLatch doneSignal;&#xA;Worker(CountDownLatch startSignal, CountDownLatch doneSignal) {&#xA;this.startSignal = startSignal;&#xA;this.doneSignal = doneSignal;&#xA;}&#xA;public void run() {&#xA;try {&#xA;startSignal.await();&#xA;doWork();&#xA;doneSignal.countDown();&#xA;} catch (InterruptedException ex) {} // return;&#xA;}&#xA;&#xA;void doWork() { ... }&#xA;}&#xA;&#xA;&lt;/pre>&#xA;&#xA;&lt;p>Another typical usage would be to divide a problem into N parts,&#xA;describe each part with a Runnable that executes that portion and&#xA;counts down on the latch, and queue all the Runnables to an&#xA;Executor.  When all sub-parts are complete, the coordinating thread&#xA;will be able to pass through await. (When threads must repeatedly&#xA;count down in this way, instead use a {@link CyclicBarrier}.)&#xA;&#xA;&lt;pre>&#xA;class Driver2 { // ...&#xA;void main() throws InterruptedException {&#xA;CountDownLatch doneSignal = new CountDownLatch(N);&#xA;Executor e = ...&#xA;&#xA;for (int i = 0; i &lt; N; ++i) // create and start threads&#xA;e.execute(new WorkerRunnable(doneSignal, i));&#xA;&#xA;doneSignal.await();           // wait for all to finish&#xA;}&#xA;}&#xA;&#xA;class WorkerRunnable implements Runnable {&#xA;private final CountDownLatch doneSignal;&#xA;private final int i;&#xA;WorkerRunnable(CountDownLatch doneSignal, int i) {&#xA;this.doneSignal = doneSignal;&#xA;this.i = i;&#xA;}&#xA;public void run() {&#xA;try {&#xA;doWork(i);&#xA;doneSignal.countDown();&#xA;} catch (InterruptedException ex) {} // return;&#xA;}&#xA;&#xA;void doWork() { ... }&#xA;}&#xA;&#xA;&lt;/pre>&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="28b33c6a-e6e5-4f6f-9d0d-9d4d82fbb97a"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="b9a167d2-7d5a-40cf-bc75-f299f5093247" name="Sync" visibility="private" isLeaf="true">
                <ownedComment xmi:id="01c6c23c-eec0-4471-81c8-fdd5e00b7423" body="Synchronization control For CountDownLatch.&#xA;Uses AQS state to represent count.&#xA;" annotatedElement="b9a167d2-7d5a-40cf-bc75-f299f5093247"/>
                <generalization xmi:id="b3974f26-6382-45e8-87ed-d7166dac5d48" isSubstitutable="true" general="b2096acc-0bdf-4dbc-95e0-4d21844c1bbc"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2a1517b0-4a07-4a8b-a157-06b8eed633de" name="RejectedExecutionException">
              <ownedComment xmi:id="a9145315-d816-4273-b258-59ad1d0c9f07" body="Exception thrown by an {@link Executor} when a task cannot be&#xA;accepted for execution.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="2a1517b0-4a07-4a8b-a157-06b8eed633de"/>
              <generalization xmi:id="0973d11d-6797-4218-b45b-71fa0ae9161f" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="fab524f7-59eb-4ace-bf91-fd1feeef80a3" name="BlockingQueue&lt;E>">
              <templateBinding xmi:id="2f76c3b1-4626-40e7-9bd5-e61b4d856769" signature="3df8a56c-a69e-47a6-b9ba-5b7ad2b010d1">
                <parameterSubstitution xmi:id="7cf4b38c-2101-438e-9d1f-d3a053cac768" formal="ec3c5e56-2684-4450-a723-b7b565f5dc58" actual="8f65d0a2-e835-47b1-8469-aded8828f317"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="448ec341-fade-4432-93fd-fb750c217264" name="CyclicBarrier">
              <ownedComment xmi:id="cfb145cd-bb68-4c9e-9c95-c9ef65b7251e" body="A synchronization aid that allows a set of threads to all wait for&#xA;each other to reach a common barrier point.  CyclicBarriers are&#xA;useful in programs involving a fixed sized party of threads that&#xA;must occasionally wait for each other. The barrier is called&#xA;&lt;em>cyclic&lt;/em> because it can be re-used after the waiting threads&#xA;are released.&#xA;&#xA;&lt;p>A &lt;tt>CyclicBarrier&lt;/tt> supports an optional {@link Runnable} command&#xA;that is run once per barrier point, after the last thread in the party&#xA;arrives, but before any threads are released.&#xA;This &lt;em>barrier action&lt;/em> is useful&#xA;for updating shared-state before any of the parties continue.&#xA;&#xA;&lt;p>&lt;b>Sample usage:&lt;/b> Here is an example of&#xA;using a barrier in a parallel decomposition design:&#xA;&lt;pre>&#xA;class Solver {&#xA;final int N;&#xA;final float[][] data;&#xA;final CyclicBarrier barrier;&#xA;&#xA;class Worker implements Runnable {&#xA;int myRow;&#xA;Worker(int row) { myRow = row; }&#xA;public void run() {&#xA;while (!done()) {&#xA;processRow(myRow);&#xA;&#xA;try {&#xA;barrier.await();&#xA;} catch (InterruptedException ex) {&#xA;return;&#xA;} catch (BrokenBarrierException ex) {&#xA;return;&#xA;}&#xA;}&#xA;}&#xA;}&#xA;&#xA;public Solver(float[][] matrix) {&#xA;data = matrix;&#xA;N = matrix.length;&#xA;barrier = new CyclicBarrier(N,&#xA;new Runnable() {&#xA;public void run() {&#xA;mergeRows(...);&#xA;}&#xA;});&#xA;for (int i = 0; i &lt; N; ++i)&#xA;new Thread(new Worker(i)).start();&#xA;&#xA;waitUntilDone();&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;Here, each worker thread processes a row of the matrix then waits at the&#xA;barrier until all rows have been processed. When all rows are processed&#xA;the supplied {@link Runnable} barrier action is executed and merges the&#xA;rows. If the merger&#xA;determines that a solution has been found then &lt;tt>done()&lt;/tt> will return&#xA;&lt;tt>true&lt;/tt> and each worker will terminate.&#xA;&#xA;&lt;p>If the barrier action does not rely on the parties being suspended when&#xA;it is executed, then any of the threads in the party could execute that&#xA;action when it is released. To facilitate this, each invocation of&#xA;{@link #await} returns the arrival index of that thread at the barrier.&#xA;You can then choose which thread should execute the barrier action, for&#xA;example:&#xA;&lt;pre>  if (barrier.await() == 0) {&#xA;log the completion of this iteration&#xA;}&lt;/pre>&#xA;&#xA;&lt;p>The &lt;tt>CyclicBarrier&lt;/tt> uses a fast-fail all-or-none breakage&#xA;model for failed synchronization attempts: If a thread leaves a&#xA;barrier point prematurely because of interruption, failure, or&#xA;timeout, all other threads, even those that have not yet resumed&#xA;from a previous {@link #await}, will also leave abnormally via&#xA;{@link BrokenBarrierException} (or &lt;tt>InterruptedException&lt;/tt> if&#xA;they too were interrupted at about the same time).&#xA;&#xA;@since 1.5&#xA;@see CountDownLatch&#xA;&#xA;@author Doug Lea&#xA;" annotatedElement="448ec341-fade-4432-93fd-fb750c217264"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="3b4109fb-eed7-4873-a59b-694baa915c06" name="Semaphore" clientDependency="08973a18-f497-45b0-acac-5779f2054654">
              <ownedComment xmi:id="ca06f735-bf24-442a-84b8-9ebdc30d9e2c" body="A counting semaphore.  Conceptually, a semaphore maintains a set of&#xA;permits.  Each {@link #acquire} blocks if necessary until a permit is&#xA;available, and then takes it.  Each {@link #release} adds a permit,&#xA;potentially releasing a blocking acquirer.&#xA;However, no actual permit objects are used; the &lt;tt>Semaphore&lt;/tt> just&#xA;keeps a count of the number available and acts accordingly.&#xA;&#xA;&lt;p>Semaphores are often used to restrict the number of threads than can&#xA;access some (physical or logical) resource. For example, here is&#xA;a class that uses a semaphore to control access to a pool of items:&#xA;&lt;pre>&#xA;class Pool {&#xA;private static final MAX_AVAILABLE = 100;&#xA;private final Semaphore available = new Semaphore(MAX_AVAILABLE, true);&#xA;&#xA;public Object getItem() throws InterruptedException {&#xA;available.acquire();&#xA;return getNextAvailableItem();&#xA;}&#xA;&#xA;public void putItem(Object x) {&#xA;if (markAsUnused(x))&#xA;available.release();&#xA;}&#xA;&#xA;Not a particularly efficient data structure; just for demo&#xA;&#xA;protected Object[] items = ... whatever kinds of items being managed&#xA;protected boolean[] used = new boolean[MAX_AVAILABLE];&#xA;&#xA;protected synchronized Object getNextAvailableItem() {&#xA;for (int i = 0; i &lt; MAX_AVAILABLE; ++i) {&#xA;if (!used[i]) {&#xA;used[i] = true;&#xA;return items[i];&#xA;}&#xA;}&#xA;return null; // not reached&#xA;}&#xA;&#xA;protected synchronized boolean markAsUnused(Object item) {&#xA;for (int i = 0; i &lt; MAX_AVAILABLE; ++i) {&#xA;if (item == items[i]) {&#xA;if (used[i]) {&#xA;used[i] = false;&#xA;return true;&#xA;} else&#xA;return false;&#xA;}&#xA;}&#xA;return false;&#xA;}&#xA;&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p>Before obtaining an item each thread must acquire a permit from&#xA;the semaphore, guaranteeing that an item is available for use. When&#xA;the thread has finished with the item it is returned back to the&#xA;pool and a permit is returned to the semaphore, allowing another&#xA;thread to acquire that item.  Note that no synchronization lock is&#xA;held when {@link #acquire} is called as that would prevent an item&#xA;from being returned to the pool.  The semaphore encapsulates the&#xA;synchronization needed to restrict access to the pool, separately&#xA;from any synchronization needed to maintain the consistency of the&#xA;pool itself.&#xA;&#xA;&lt;p>A semaphore initialized to one, and which is used such that it&#xA;only has at most one permit available, can serve as a mutual&#xA;exclusion lock.  This is more commonly known as a &lt;em>binary&#xA;semaphore&lt;/em>, because it only has two states: one permit&#xA;available, or zero permits available.  When used in this way, the&#xA;binary semaphore has the property (unlike many {@link Lock}&#xA;implementations), that the &quot;lock&quot; can be released by a&#xA;thread other than the owner (as semaphores have no notion of&#xA;ownership).  This can be useful in some specialized contexts, such&#xA;as deadlock recovery.&#xA;&#xA;&lt;p> The constructor for this class optionally accepts a&#xA;&lt;em>fairness&lt;/em> parameter. When set false, this class makes no&#xA;guarantees about the order in which threads acquire permits. In&#xA;particular, &lt;em>barging&lt;/em> is permitted, that is, a thread&#xA;invoking {@link #acquire} can be allocated a permit ahead of a&#xA;thread that has been waiting - logically the new thread places itself at&#xA;the head of the queue of waiting threads. When fairness is set true, the&#xA;semaphore guarantees that threads invoking any of the {@link&#xA;#acquire() acquire} methods are selected to obtain permits in the order in&#xA;which their invocation of those methods was processed&#xA;(first-in-first-out; FIFO). Note that FIFO ordering necessarily&#xA;applies to specific internal points of execution within these&#xA;methods.  So, it is possible for one thread to invoke&#xA;&lt;tt>acquire&lt;/tt> before another, but reach the ordering point after&#xA;the other, and similarly upon return from the method.&#xA;Also note that the untimed {@link #tryAcquire() tryAcquire} methods do not&#xA;honor the fairness setting, but will take any permits that are&#xA;available.&#xA;&#xA;&lt;p>Generally, semaphores used to control resource access should be&#xA;initialized as fair, to ensure that no thread is starved out from&#xA;accessing a resource. When using semaphores for other kinds of&#xA;synchronization control, the throughput advantages of non-fair&#xA;ordering often outweigh fairness considerations.&#xA;&#xA;&lt;p>This class also provides convenience methods to {@link&#xA;#acquire(int) acquire} and {@link #release(int) release} multiple&#xA;permits at a time.  Beware of the increased risk of indefinite&#xA;postponement when these methods are used without fairness set true.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;&#xA;" annotatedElement="3b4109fb-eed7-4873-a59b-694baa915c06"/>
              <interfaceRealization xmi:id="08973a18-f497-45b0-acac-5779f2054654" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="3b4109fb-eed7-4873-a59b-694baa915c06" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="c9586fe6-bf08-4a03-b079-7608f7e290f4" name="Sync" visibility="package" isAbstract="true">
                <ownedComment xmi:id="9ff1e555-a77d-4c8d-8ebe-1dc254291f48" body="Synchronization implementation for semaphore.  Uses AQS state&#xA;to represent permits. Subclassed into fair and nonfair&#xA;versions.&#xA;" annotatedElement="c9586fe6-bf08-4a03-b079-7608f7e290f4"/>
                <generalization xmi:id="1378c590-242d-4a3e-9966-00a73f9225fa" isSubstitutable="true" general="b2096acc-0bdf-4dbc-95e0-4d21844c1bbc"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="71a2491c-0111-459b-81ac-571769f1e480" name="NonfairSync" visibility="package" isLeaf="true">
                <ownedComment xmi:id="a3a679b3-9fab-4eef-b1f1-762a7240d68f" body="NonFair version&#xA;" annotatedElement="71a2491c-0111-459b-81ac-571769f1e480"/>
                <generalization xmi:id="6e7fd91c-a6a0-4743-98b7-e33cbf56b03e" isSubstitutable="true" general="c9586fe6-bf08-4a03-b079-7608f7e290f4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="a62f5be8-bb4a-4537-b306-66b3e8862575" name="FairSync" visibility="package" isLeaf="true">
                <ownedComment xmi:id="a012feb4-b427-4e05-82df-d7536d90fa1d" body="Fair version&#xA;" annotatedElement="a62f5be8-bb4a-4537-b306-66b3e8862575"/>
                <generalization xmi:id="68f603f2-e7e8-4f48-8068-fd29fc05bc2a" isSubstitutable="true" general="c9586fe6-bf08-4a03-b079-7608f7e290f4"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="5fd687c4-c88f-42f3-b439-35650927f41f" name="ThreadFactory" isAbstract="true">
              <ownedComment xmi:id="ce0849e7-cd38-465c-b08e-fa82dd45f613" body="An object that creates new threads on demand.  Using thread factories&#xA;removes hardwiring of calls to {@link Thread#Thread(Runnable) new Thread},&#xA;enabling applications to use special thread subclasses, priorities, etc.&#xA;&#xA;&lt;p>&#xA;The simplest implementation of this interface is just:&#xA;&lt;pre>&#xA;class SimpleThreadFactory implements ThreadFactory {&#xA;public Thread newThread(Runnable r) {&#xA;return new Thread(r);&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;The {@link Executors#defaultThreadFactory} method provides a more&#xA;useful simple implementation, that sets the created thread context&#xA;to known values before returning it.&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="5fd687c4-c88f-42f3-b439-35650927f41f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="18dc6102-a040-4ae1-aefe-698abc18de28" name="List&lt;E>">
              <templateBinding xmi:id="29bec6db-ef29-4dfc-8b90-1b097aad78d5" signature="93231630-d3a5-4f79-aaf1-328407b4bf68">
                <parameterSubstitution xmi:id="9c3192bc-ae17-41d3-8b05-953acc386816" formal="a332785f-9dc3-422a-bc11-d423063288ae" actual="7877870f-8a32-49fe-ae9c-43db2909ba5e"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="845866fd-7ff1-4261-aafb-b3d5b00b0cf5" name="Future&lt;V>">
              <templateBinding xmi:id="b472239a-1ae6-420c-b2b1-42b69bb01859" signature="ae34d1c3-e7f9-468e-820c-1a49a69b7830">
                <parameterSubstitution xmi:id="8ec8c256-d9e0-4aa6-8b08-7d4b3d069076" formal="17f0fd63-b2d9-4731-a7c5-fe8b24da7daa" actual="01120961-e793-4703-80e9-acec9c2df763"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f" name="Iterator&lt;E>">
              <templateBinding xmi:id="a197cfce-c691-4581-b5ba-fd6e03d4d6ce" signature="0f8c6981-4608-4e07-a119-f77e4e17cb2d">
                <parameterSubstitution xmi:id="94950c6a-0e99-4f6d-9517-9718653e9359" formal="3b71f5d7-d328-40b6-8dcc-6484e179fd5e" actual="8f65d0a2-e835-47b1-8469-aded8828f317"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="99fa2dcf-8ef3-4c52-a88a-a6ebb9d2ac6e" name="CopyOnWriteArrayList" clientDependency="2073af1b-b0ac-4e0b-b35d-5a4245ef92ff f52043c9-7c9e-4d41-b1c0-9bc7624d2dc6 a9030661-2968-4b62-aa68-cb64bf705c2a 247ba408-d898-49df-a36d-f2d94f7d153e">
              <ownedComment xmi:id="07503f3b-16ef-46e0-87af-1da7ba7c7e1a" body="A thread-safe variant of {@link java.util.ArrayList} in which all mutative&#xA;operations (add, set, and so on) are implemented by making a fresh&#xA;copy of the underlying array.&#xA;&#xA;&lt;p> This is ordinarily too costly, but may be &lt;em>more&lt;/em> efficient&#xA;than alternatives when traversal operations vastly outnumber&#xA;mutations, and is useful when you cannot or don't want to&#xA;synchronize traversals, yet need to preclude interference among&#xA;concurrent threads.  The &quot;snapshot&quot; style iterator method uses a&#xA;reference to the state of the array at the point that the iterator&#xA;was created. This array never changes during the lifetime of the&#xA;iterator, so interference is impossible and the iterator is&#xA;guaranteed not to throw &lt;tt>ConcurrentModificationException&lt;/tt>.&#xA;The iterator will not reflect additions, removals, or changes to&#xA;the list since the iterator was created.  Element-changing&#xA;operations on iterators themselves (remove, set, and add) are not&#xA;supported. These methods throw&#xA;&lt;tt>UnsupportedOperationException&lt;/tt>.&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;E> the type of elements held in this collection&#xA;" annotatedElement="99fa2dcf-8ef3-4c52-a88a-a6ebb9d2ac6e"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="128901af-2c17-44ab-b071-52879881f1b0" name="" parameter="6db40a2e-3c91-4a1e-a198-2f2048dafc84">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="6db40a2e-3c91-4a1e-a198-2f2048dafc84" parameteredElement="7877870f-8a32-49fe-ae9c-43db2909ba5e">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="7877870f-8a32-49fe-ae9c-43db2909ba5e" name="E" templateParameter="6db40a2e-3c91-4a1e-a198-2f2048dafc84"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="f52043c9-7c9e-4d41-b1c0-9bc7624d2dc6" name="" supplier="18dc6102-a040-4ae1-aefe-698abc18de28" client="99fa2dcf-8ef3-4c52-a88a-a6ebb9d2ac6e" contract="18dc6102-a040-4ae1-aefe-698abc18de28"/>
              <interfaceRealization xmi:id="a9030661-2968-4b62-aa68-cb64bf705c2a" name="" supplier="29add607-d540-4560-b2b3-2e3c9d7f8dd2" client="99fa2dcf-8ef3-4c52-a88a-a6ebb9d2ac6e" contract="29add607-d540-4560-b2b3-2e3c9d7f8dd2"/>
              <interfaceRealization xmi:id="247ba408-d898-49df-a36d-f2d94f7d153e" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="99fa2dcf-8ef3-4c52-a88a-a6ebb9d2ac6e" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <interfaceRealization xmi:id="2073af1b-b0ac-4e0b-b35d-5a4245ef92ff" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="99fa2dcf-8ef3-4c52-a88a-a6ebb9d2ac6e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8d6fb04e-3b2e-44b4-8b6f-b91fc6d41228" name="COWIterator" visibility="private" clientDependency="13c743bc-6ae0-4a48-9d6c-02128d739f87">
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="ebc3655e-f705-45f4-b496-896fcede4cc5" name="" parameter="8ce5efdb-3b20-466c-b379-ed497d3a8a0e">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="8ce5efdb-3b20-466c-b379-ed497d3a8a0e" parameteredElement="8f463f4b-095d-4191-bb05-10d14b6dbdfb">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="8f463f4b-095d-4191-bb05-10d14b6dbdfb" name="E" templateParameter="8ce5efdb-3b20-466c-b379-ed497d3a8a0e"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <interfaceRealization xmi:id="13c743bc-6ae0-4a48-9d6c-02128d739f87" name="" supplier="125391a5-cf0a-4304-bc13-9acf146357ed" client="8d6fb04e-3b2e-44b4-8b6f-b91fc6d41228" contract="125391a5-cf0a-4304-bc13-9acf146357ed"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="50020346-e304-4d4b-809f-d594d4fbca20" name="COWSubList" visibility="private">
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="494f13c1-7cc5-4c61-993f-19b997680913" name="" parameter="fa7076b1-250d-4086-bc49-da6a00ac91ac">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="fa7076b1-250d-4086-bc49-da6a00ac91ac" parameteredElement="6098a001-385c-47e1-a848-deacecbab243">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="6098a001-385c-47e1-a848-deacecbab243" name="E" templateParameter="fa7076b1-250d-4086-bc49-da6a00ac91ac"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <generalization xmi:id="9d14e993-6901-45b3-8acf-e8962158ced6" isSubstitutable="true" general="ee758153-f931-43ca-bcea-40b9d95c713b"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8b5ef7f0-88a6-4dd8-a438-cb33fbb539a0" name="COWSubListIterator" visibility="private" clientDependency="455da6a7-e361-4d3a-bc93-ee2646d5d0e9">
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="51dbb340-eb3e-4d96-ae29-aad378d72897" name="" parameter="7e99adeb-a0af-4c5d-a4a5-6b4ea90c665c">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="7e99adeb-a0af-4c5d-a4a5-6b4ea90c665c" parameteredElement="ad4b06b5-4faf-4f6e-a022-fd71ec6a3b57">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="ad4b06b5-4faf-4f6e-a022-fd71ec6a3b57" name="E" templateParameter="7e99adeb-a0af-4c5d-a4a5-6b4ea90c665c"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <interfaceRealization xmi:id="455da6a7-e361-4d3a-bc93-ee2646d5d0e9" name="" supplier="125391a5-cf0a-4304-bc13-9acf146357ed" client="8b5ef7f0-88a6-4dd8-a438-cb33fbb539a0" contract="125391a5-cf0a-4304-bc13-9acf146357ed"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="dc7de75a-6f18-4d6a-a792-fabcec414f56" name="Exchanger">
              <ownedComment xmi:id="90da8ac8-6d47-441f-94c3-ba5b6af3d267" body="A synchronization point at which two threads can exchange objects.&#xA;Each thread presents some object on entry to the {@link #exchange&#xA;exchange} method, and receives the object presented by the other&#xA;thread on return.&#xA;&#xA;&lt;p>&lt;b>Sample Usage:&lt;/b>&#xA;Here are the highlights of a class that uses an &lt;tt>Exchanger&lt;/tt> to&#xA;swap buffers between threads so that the thread filling the&#xA;buffer gets a freshly&#xA;emptied one when it needs it, handing off the filled one to&#xA;the thread emptying the buffer.&#xA;&lt;pre>&#xA;class FillAndEmpty {&#xA;Exchanger&lt;DataBuffer> exchanger = new Exchanger();&#xA;DataBuffer initialEmptyBuffer = ... a made-up type&#xA;DataBuffer initialFullBuffer = ...&#xA;&#xA;class FillingLoop implements Runnable {&#xA;public void run() {&#xA;DataBuffer currentBuffer = initialEmptyBuffer;&#xA;try {&#xA;while (currentBuffer != null) {&#xA;addToBuffer(currentBuffer);&#xA;if (currentBuffer.full())&#xA;currentBuffer = exchanger.exchange(currentBuffer);&#xA;}&#xA;} catch (InterruptedException ex) { ... handle ... }&#xA;}&#xA;}&#xA;&#xA;class EmptyingLoop implements Runnable {&#xA;public void run() {&#xA;DataBuffer currentBuffer = initialFullBuffer;&#xA;try {&#xA;while (currentBuffer != null) {&#xA;takeFromBuffer(currentBuffer);&#xA;if (currentBuffer.empty())&#xA;currentBuffer = exchanger.exchange(currentBuffer);&#xA;}&#xA;} catch (InterruptedException ex) { ... handle ...}&#xA;}&#xA;}&#xA;&#xA;void start() {&#xA;new Thread(new FillingLoop()).start();&#xA;new Thread(new EmptyingLoop()).start();&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;V> The type of objects that may be exchanged&#xA;" annotatedElement="dc7de75a-6f18-4d6a-a792-fabcec414f56"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="2afc4169-1873-48a2-b2d5-3a54583e0dba" name="" parameter="72ecd45f-330c-4c8b-b3bb-42fbca07cd27">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="72ecd45f-330c-4c8b-b3bb-42fbca07cd27" parameteredElement="a6ee0eab-4e7e-4f95-b5b6-bafadb16b836">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="a6ee0eab-4e7e-4f95-b5b6-bafadb16b836" name="V" templateParameter="72ecd45f-330c-4c8b-b3bb-42fbca07cd27"/>
                </ownedParameter>
              </ownedTemplateSignature>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="88f6e468-d73e-430e-930e-48946d1a1f44" name="Future" isAbstract="true">
              <ownedComment xmi:id="cb0978eb-38da-413a-a208-05f89a43f695" body="A &lt;tt>Future&lt;/tt> represents the result of an asynchronous&#xA;computation.  Methods are provided to check if the computation is&#xA;complete, to wait for its completion, and to retrieve the result of&#xA;the computation.  The result can only be retrieved using method&#xA;&lt;tt>get&lt;/tt> when the computation has completed, blocking if&#xA;necessary until it is ready.  Cancellation is performed by the&#xA;&lt;tt>cancel&lt;/tt> method.  Additional methods are provided to&#xA;determine if the task completed normally or was cancelled. Once a&#xA;computation has completed, the computation cannot be cancelled.&#xA;If you would like to use a &lt;tt>Future&lt;/tt> for the sake&#xA;of cancellability but not provide a usable result, you can&#xA;declare types of the form &lt;tt>Future&lt;?>&lt;/tt> and&#xA;return &lt;tt>null&lt;/tt> as a result of the underlying task.&#xA;&#xA;&lt;p>&#xA;&lt;b>Sample Usage&lt;/b> (Note that the following classes are all&#xA;made-up.) &lt;p>&#xA;&lt;pre>&#xA;interface ArchiveSearcher { String search(String target); }&#xA;class App {&#xA;ExecutorService executor = ...&#xA;ArchiveSearcher searcher = ...&#xA;void showSearch(final String target) throws InterruptedException {&#xA;Future&lt;String> future = executor.submit(new Callable&lt;String>() {&#xA;public String call() { return searcher.search(target); }&#xA;});&#xA;displayOtherThings(); // do other things while searching&#xA;try {&#xA;displayText(future.get()); // use future&#xA;} catch (ExecutionException ex) { cleanup(); return; }&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;The {@link FutureTask} class is an implementation of &lt;tt>Future&lt;/tt> that&#xA;implements &lt;tt>Runnable&lt;/tt>, and so may be executed by an &lt;tt>Executor&lt;/tt>.&#xA;For example, the above construction with &lt;tt>submit&lt;/tt> could be replaced by:&#xA;&lt;pre>&#xA;FutureTask&lt;String> future =&#xA;new FutureTask&lt;String>(new Callable&lt;String>() {&#xA;public String call() {&#xA;return searcher.search(target);&#xA;}});&#xA;executor.execute(future);&#xA;&lt;/pre>&#xA;@see FutureTask&#xA;@see Executor&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;V> The result type returned by this Future's &lt;tt>get&lt;/tt> method&#xA;" annotatedElement="88f6e468-d73e-430e-930e-48946d1a1f44"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="ae34d1c3-e7f9-468e-820c-1a49a69b7830" name="" parameter="17f0fd63-b2d9-4731-a7c5-fe8b24da7daa">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="17f0fd63-b2d9-4731-a7c5-fe8b24da7daa" parameteredElement="737a86e6-81c7-42c2-9b6c-27aae3f32886">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="737a86e6-81c7-42c2-9b6c-27aae3f32886" name="V" templateParameter="17f0fd63-b2d9-4731-a7c5-fe8b24da7daa"/>
                </ownedParameter>
              </ownedTemplateSignature>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="13957531-5fa4-4bf4-bfb2-6c0e6572a4fa" name="CompletionService&lt;V>">
              <templateBinding xmi:id="660e8af4-34b7-41c2-bacc-052926f33d2a" signature="8facf3d4-0c91-4855-84d3-234fec81bee1">
                <parameterSubstitution xmi:id="603342d3-77ac-4bcc-a8d4-b167fef6dc98" formal="ac9b2c0e-2f10-4895-80e2-f188d458f964" actual="c6c0a759-d8b2-45d7-9248-0203bb1e7e01"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8c0a54c6-f0c6-428d-805e-c8a6db928de8" name="PriorityBlockingQueue" clientDependency="2616c53a-99e6-4d92-bc05-c7ee03c57d77 60b59eb2-2d8e-4aa9-8851-e9e7b1e85439">
              <ownedComment xmi:id="26703577-4586-4dac-a593-ae67c68484ea" body="An unbounded {@linkplain BlockingQueue blocking queue} that uses&#xA;the same ordering rules as class {@link PriorityQueue} and supplies&#xA;blocking retrieval operations.  While this queue is logically&#xA;unbounded, attempted additions may fail due to resource exhaustion&#xA;(causing &lt;tt>OutOfMemoryError&lt;/tt>). This class does not permit&#xA;&lt;tt>null&lt;/tt> elements.  A priority queue relying on natural&#xA;ordering also does not permit insertion of non-comparable objects&#xA;(doing so results in &lt;tt>ClassCastException&lt;/tt>).&#xA;&#xA;&lt;p>This class and its iterator implement all of the&#xA;&lt;em>optional&lt;/em> methods of the {@link Collection} and {@link&#xA;Iterator} interfaces.&#xA;The Iterator provided in method {@link #iterator()} is&#xA;&lt;em>not&lt;/em> guaranteed to traverse the elements of the&#xA;PriorityBlockingQueue in any particular order. If you need ordered&#xA;traversal, consider using &lt;tt>Arrays.sort(pq.toArray())&lt;/tt>.&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;E> the type of elements held in this collection&#xA;" annotatedElement="8c0a54c6-f0c6-428d-805e-c8a6db928de8"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="ae27490f-a5fd-494a-ab7c-bb70426ecf62" name="" parameter="3192bfe9-a0c1-4aba-a9b5-9dbb9e0ccdcf">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="3192bfe9-a0c1-4aba-a9b5-9dbb9e0ccdcf" parameteredElement="93db4284-49e3-4b56-8abd-d5cfaccb52a6">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="93db4284-49e3-4b56-8abd-d5cfaccb52a6" name="E" templateParameter="3192bfe9-a0c1-4aba-a9b5-9dbb9e0ccdcf"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="215bb8d4-3ce8-44c1-be2f-d155bc8fa44a" isSubstitutable="true" general="57267948-5b20-4000-a393-c9fc60c633c3"/>
              <interfaceRealization xmi:id="60b59eb2-2d8e-4aa9-8851-e9e7b1e85439" name="" supplier="fab524f7-59eb-4ace-bf91-fd1feeef80a3" client="8c0a54c6-f0c6-428d-805e-c8a6db928de8" contract="fab524f7-59eb-4ace-bf91-fd1feeef80a3"/>
              <interfaceRealization xmi:id="2616c53a-99e6-4d92-bc05-c7ee03c57d77" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="8c0a54c6-f0c6-428d-805e-c8a6db928de8" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="794f9467-c03d-4a6f-b9b6-9ff10c71f47e" name="Itr" visibility="private" clientDependency="e1677990-9977-4dc3-9281-df2d549f56a4">
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="bfe42ab5-bc2e-43e0-b5bc-96d1f3309579" name="" parameter="f71aed54-1d1c-4f1e-a0fd-3399a285210d">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="f71aed54-1d1c-4f1e-a0fd-3399a285210d" parameteredElement="7ba4ff4f-79c9-4de6-98fd-9e148448e659">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="7ba4ff4f-79c9-4de6-98fd-9e148448e659" name="E" templateParameter="f71aed54-1d1c-4f1e-a0fd-3399a285210d"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <interfaceRealization xmi:id="e1677990-9977-4dc3-9281-df2d549f56a4" name="" supplier="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f" client="794f9467-c03d-4a6f-b9b6-9ff10c71f47e" contract="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="57267948-5b20-4000-a393-c9fc60c633c3" name="AbstractQueue&lt;E>">
              <templateBinding xmi:id="383e51ee-8ecd-4653-b0f3-aa1cdde6d2c3" signature="2d2a86b4-5feb-4f77-be97-e8ad8bbb5c9e">
                <parameterSubstitution xmi:id="5fed7ad6-b9ca-4305-aa08-9b9090705991" formal="4102986b-eb8a-4a6d-9295-7b6f1ff8a9f1" actual="8f65d0a2-e835-47b1-8469-aded8828f317"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="01481a34-3b75-4493-84ca-4519f1a2e4fa" name="AbstractSet&lt;Entry&lt;K, V>>">
              <templateBinding xmi:id="f1275a43-20f8-47dd-8c35-1cbbcf09b153" signature="77607dee-756d-445e-96f4-9b3b4e6fb80b">
                <parameterSubstitution xmi:id="cf530222-ca9f-409d-aa41-1ec0681f85ad" formal="1c9b3942-53c2-4539-853b-a9aae2736fa2" actual="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="be04b0f0-53f6-42f8-ac76-56e8ed1bc043" name="ExecutionException">
              <ownedComment xmi:id="3d49ecdb-fb73-4aca-8348-c5d68ab4f83b" body="Exception thrown when attempting to retrieve the result of a task&#xA;that aborted by throwing an exception. This exception can be&#xA;inspected using the {@link #getCause()} method.&#xA;&#xA;@see Future&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="be04b0f0-53f6-42f8-ac76-56e8ed1bc043"/>
              <generalization xmi:id="6140db6b-91c7-43c6-9fce-0d6f005b4eae" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="b5eaa913-ac40-4b35-bf06-e3638ddc059a" name="Map&lt;K, V>">
              <templateBinding xmi:id="55575503-2d9e-4f56-9241-68a56a9559f4" signature="6fa510d5-30ff-4915-9f85-f28c17685f05">
                <parameterSubstitution xmi:id="817ad0df-21c3-49be-8d4b-0a78acb163cf" formal="c51fa5e3-696f-4fba-aca1-bf27a9542c44" actual="846c1715-eda9-40f6-8281-54cdfc0cfd44"/>
                <parameterSubstitution xmi:id="70b27850-590a-402b-850b-2b83b0c3ad2e" formal="f697aee6-8b2e-4b17-abc4-4158aecc3c87" actual="929127a4-a553-4490-8493-d712132279e2"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="b39b5055-a956-4ef0-9124-9f5d97d30a8c" name="Executor" isAbstract="true">
              <ownedComment xmi:id="62f6377f-8dae-4554-bb31-d5ca68b45392" body="An object that executes submitted {@link Runnable} tasks. This&#xA;interface provides a way of decoupling task submission from the&#xA;mechanics of how each task will be run, including details of thread&#xA;use, scheduling, etc.  An &lt;tt>Executor&lt;/tt> is normally used&#xA;instead of explicitly creating threads. For example, rather than&#xA;invoking &lt;tt>new Thread(new(RunnableTask())).start()&lt;/tt> for each&#xA;of a set of tasks, you might use:&#xA;&#xA;&lt;pre>&#xA;Executor executor = &lt;em>anExecutor&lt;/em>;&#xA;executor.execute(new RunnableTask1());&#xA;executor.execute(new RunnableTask2());&#xA;...&#xA;&lt;/pre>&#xA;&#xA;However, the &lt;tt>Executor&lt;/tt> interface does not strictly&#xA;require that execution be asynchronous. In the simplest case, an&#xA;executor can run the submitted task immediately in the caller's&#xA;thread:&#xA;&#xA;&lt;pre>&#xA;class DirectExecutor implements Executor {&#xA;public void execute(Runnable r) {&#xA;r.run();&#xA;}&#xA;}&lt;/pre>&#xA;&#xA;More typically, tasks are executed in some thread other&#xA;than the caller's thread.  The executor below spawns a new thread&#xA;for each task.&#xA;&#xA;&lt;pre>&#xA;class ThreadPerTaskExecutor implements Executor {&#xA;public void execute(Runnable r) {&#xA;new Thread(r).start();&#xA;}&#xA;}&lt;/pre>&#xA;&#xA;Many &lt;tt>Executor&lt;/tt> implementations impose some sort of&#xA;limitation on how and when tasks are scheduled.  The executor below&#xA;serializes the submission of tasks to a second executor,&#xA;illustrating a composite executor.&#xA;&#xA;&lt;pre>&#xA;class SerialExecutor implements Executor {&#xA;final Queue&lt;Runnable> tasks = new LinkedBlockingQueue&lt;Runnable>();&#xA;final Executor executor;&#xA;Runnable active;&#xA;&#xA;SerialExecutor(Executor executor) {&#xA;this.executor = executor;&#xA;}&#xA;&#xA;public synchronized void execute(final Runnable r) {&#xA;tasks.offer(new Runnable() {&#xA;public void run() {&#xA;try {&#xA;r.run();&#xA;} finally {&#xA;scheduleNext();&#xA;}&#xA;}&#xA;});&#xA;if (active == null) {&#xA;scheduleNext();&#xA;}&#xA;}&#xA;&#xA;protected synchronized void scheduleNext() {&#xA;if ((active = tasks.poll()) != null) {&#xA;executor.execute(active);&#xA;}&#xA;}&#xA;}&lt;/pre>&#xA;&#xA;The &lt;tt>Executor&lt;/tt> implementations provided in this package&#xA;implement {@link ExecutorService}, which is a more extensive&#xA;interface.  The {@link ThreadPoolExecutor} class provides an&#xA;extensible thread pool implementation. The {@link Executors} class&#xA;provides convenient factory methods for these Executors.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="b39b5055-a956-4ef0-9124-9f5d97d30a8c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="e6261464-9995-420b-8b7e-2d2aa94c4a89" name="Enumeration&lt;K>">
              <templateBinding xmi:id="a5873be3-e02e-4914-91a1-56bea5addf19" signature="521c8bf5-b0b1-4a86-820c-0614950913b8">
                <parameterSubstitution xmi:id="c3a49949-fede-4d1c-8e72-b6f6c8574d1b" formal="0dc15cf5-0f68-454b-a4d7-227d89f2d0c5" actual="1cbff166-18a5-4fb9-84b6-6f6aacb25f86"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="831cb79b-21c0-4203-9962-b2cebddd4105" name="AbstractCollection&lt;V>">
              <templateBinding xmi:id="7bde7514-7255-4fdc-8080-4d9fcec27516" signature="d64b29f5-bca8-49c3-8271-3097b690c222">
                <parameterSubstitution xmi:id="909dc874-19fd-458f-a2ef-d65c26bf7213" formal="2794615a-0f57-4cbc-82eb-10061cb9e375" actual="6e16dbee-010f-4cc1-a091-a6a0310dcd56"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="b9722b17-296e-4891-893c-daddd8d91c74" name="Queue&lt;E>">
              <templateBinding xmi:id="939b28e3-445d-4aa2-a745-7a636e40f387" signature="7cd01050-d015-4d0a-a3b3-a99a7c45f874">
                <parameterSubstitution xmi:id="ec9db9d4-e7f9-48e7-8cb1-2b0a7e52ef6f" formal="fc245dea-47b4-4652-b13d-4a8744ca00fc" actual="a8a2a397-11b9-4b42-846f-6b335369013a"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="4aadc586-04a0-45a1-afed-3590799e4a06" name="Callable" isAbstract="true">
              <ownedComment xmi:id="c8c393df-fd57-46e0-a6a9-d43208d4507e" body="A task that returns a result and may throw an exception.&#xA;Implementors define a single method with no arguments called&#xA;&lt;tt>call&lt;/tt>.&#xA;&#xA;&lt;p>The &lt;tt>Callable&lt;/tt> interface is similar to {@link&#xA;java.lang.Runnable}, in that both are designed for classes whose&#xA;instances are potentially executed by another thread.  A&#xA;&lt;tt>Runnable&lt;/tt>, however, does not return a result and cannot&#xA;throw a checked exception.&#xA;&#xA;&lt;p> The {@link Executors} class contains utility methods to&#xA;convert from other common forms to &lt;tt>Callable&lt;/tt> classes.&#xA;&#xA;@see Executor&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;V> the result type of method &lt;tt>call&lt;/tt>&#xA;" annotatedElement="4aadc586-04a0-45a1-afed-3590799e4a06"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="ea19d91f-ef70-4a4d-b2a8-16dbb149ada5" name="" parameter="c81b666b-7359-48a1-8676-92c8618c77bd">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="c81b666b-7359-48a1-8676-92c8618c77bd" parameteredElement="8d23c21c-2176-43f9-bad7-bfbe8c1fd580">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="8d23c21c-2176-43f9-bad7-bfbe8c1fd580" name="V" templateParameter="c81b666b-7359-48a1-8676-92c8618c77bd"/>
                </ownedParameter>
              </ownedTemplateSignature>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="6e35fd2a-e450-4a45-894b-c2d88ab08234" name="Iterator&lt;K>">
              <templateBinding xmi:id="25d16c63-f3e8-4403-b9ef-8f1784696db2" signature="0f8c6981-4608-4e07-a119-f77e4e17cb2d">
                <parameterSubstitution xmi:id="00e79c5a-7ecd-4949-a514-abe8a99cbf16" formal="3b71f5d7-d328-40b6-8dcc-6484e179fd5e" actual="1cbff166-18a5-4fb9-84b6-6f6aacb25f86"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="366a6b71-c7a9-4b22-95d5-74091ce96f5b" name="AbstractSet&lt;E>">
              <templateBinding xmi:id="47676e16-9718-4dfa-b01c-72860ca4bf23" signature="77607dee-756d-445e-96f4-9b3b4e6fb80b">
                <parameterSubstitution xmi:id="9a2e3cd7-d175-4fbf-ac1a-49eab91d22f8" formal="1c9b3942-53c2-4539-853b-a9aae2736fa2" actual="42828db4-c9e5-4b3b-b7b4-3cc2dd1b2a45"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d13d55f7-b432-4900-bd33-0938250c0de0" name="FutureTask" clientDependency="2e056602-e3bf-42b6-9633-fc366e04e6ea 545649c3-19ff-49aa-ac82-a6860c99db91">
              <ownedComment xmi:id="7ce54ab6-d7f7-4d59-874e-0d660e10168b" body="A cancellable asynchronous computation.  This class provides a base&#xA;implementation of {@link Future}, with methods to start and cancel&#xA;a computation, query to see if the computation is complete, and&#xA;retrieve the result of the computation.  The result can only be&#xA;retrieved when the computation has completed; the &lt;tt>get&lt;/tt>&#xA;method will block if the computation has not yet completed.  Once&#xA;the computation has completed, the computation cannot be restarted&#xA;or cancelled.&#xA;&#xA;&lt;p>A &lt;tt>FutureTask&lt;/tt> can be used to wrap a {@link Callable} or&#xA;{@link java.lang.Runnable} object.  Because &lt;tt>FutureTask&lt;/tt>&#xA;implements &lt;tt>Runnable&lt;/tt>, a &lt;tt>FutureTask&lt;/tt> can be&#xA;submitted to an {@link Executor} for execution.&#xA;&#xA;&lt;p>In addition to serving as a standalone class, this class provides&#xA;&lt;tt>protected&lt;/tt> functionality that may be useful when creating&#xA;customized task classes.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;V> The result type returned by this FutureTask's &lt;tt>get&lt;/tt> method&#xA;" annotatedElement="d13d55f7-b432-4900-bd33-0938250c0de0"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="382cfab0-5411-4580-8f52-bf4536e774e4" name="" parameter="0e83573d-81c2-4974-8aef-3d246fec4817">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="0e83573d-81c2-4974-8aef-3d246fec4817" parameteredElement="01120961-e793-4703-80e9-acec9c2df763">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="01120961-e793-4703-80e9-acec9c2df763" name="V" templateParameter="0e83573d-81c2-4974-8aef-3d246fec4817"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="2e056602-e3bf-42b6-9633-fc366e04e6ea" name="" supplier="845866fd-7ff1-4261-aafb-b3d5b00b0cf5" client="d13d55f7-b432-4900-bd33-0938250c0de0" contract="845866fd-7ff1-4261-aafb-b3d5b00b0cf5"/>
              <interfaceRealization xmi:id="545649c3-19ff-49aa-ac82-a6860c99db91" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="d13d55f7-b432-4900-bd33-0938250c0de0" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6cff4457-dfc3-4354-b1e7-b6d5a8c12bb6" name="Sync" visibility="private" isLeaf="true">
                <ownedComment xmi:id="cea0faf1-8a45-4d29-91ac-8a4c3f47537f" body="Synchronization control for FutureTask. Note that this must be&#xA;a non-static inner class in order to invoke the protected&#xA;&lt;tt>done&lt;/tt> method. For clarity, all inner class support&#xA;methods are same as outer, prefixed with &quot;inner&quot;.&#xA;&#xA;Uses AQS sync state to represent run status&#xA;" annotatedElement="6cff4457-dfc3-4354-b1e7-b6d5a8c12bb6"/>
                <generalization xmi:id="f4078fb1-ef57-451c-b1ce-1d4d29e4ed8f" isSubstitutable="true" general="b2096acc-0bdf-4dbc-95e0-4d21844c1bbc"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="14897e5e-4089-4338-93fc-f248469e30c6" name="RejectedExecutionHandler" isAbstract="true">
              <ownedComment xmi:id="ed01c15b-3c9e-4eb0-bbba-373121b69823" body="A handler for tasks that cannot be executed by a {@link&#xA;ThreadPoolExecutor}.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="14897e5e-4089-4338-93fc-f248469e30c6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="64cca0ac-cae0-4e56-93f4-596a094bd6b3" name="ThreadPoolExecutor">
              <ownedComment xmi:id="c02f1e1e-c2ae-4322-b40e-e3823c4170b5" body="An {@link ExecutorService} that executes each submitted task using&#xA;one of possibly several pooled threads, normally configured&#xA;using {@link Executors} factory methods.&#xA;&#xA;&lt;p>Thread pools address two different problems: they usually&#xA;provide improved performance when executing large numbers of&#xA;asynchronous tasks, due to reduced per-task invocation overhead,&#xA;and they provide a means of bounding and managing the resources,&#xA;including threads, consumed when executing a collection of tasks.&#xA;Each &lt;tt>ThreadPoolExecutor&lt;/tt> also maintains some basic&#xA;statistics, such as the number of completed tasks.&#xA;&#xA;&lt;p>To be useful across a wide range of contexts, this class&#xA;provides many adjustable parameters and extensibility&#xA;hooks. However, programmers are urged to use the more convenient&#xA;{@link Executors} factory methods {@link&#xA;Executors#newCachedThreadPool} (unbounded thread pool, with&#xA;automatic thread reclamation), {@link Executors#newFixedThreadPool}&#xA;(fixed size thread pool) and {@link&#xA;Executors#newSingleThreadExecutor} (single background thread), that&#xA;preconfigure settings for the most common usage&#xA;scenarios. Otherwise, use the following guide when manually&#xA;configuring and tuning this class:&#xA;&#xA;&lt;dl>&#xA;&#xA;&lt;dt>Core and maximum pool sizes&lt;/dt>&#xA;&#xA;&lt;dd>A &lt;tt>ThreadPoolExecutor&lt;/tt> will automatically adjust the&#xA;pool size&#xA;(see {@link ThreadPoolExecutor#getPoolSize})&#xA;according to the bounds set by corePoolSize&#xA;(see {@link ThreadPoolExecutor#getCorePoolSize})&#xA;and&#xA;maximumPoolSize&#xA;(see {@link ThreadPoolExecutor#getMaximumPoolSize}).&#xA;When a new task is submitted in method {@link&#xA;ThreadPoolExecutor#execute}, and fewer than corePoolSize threads&#xA;are running, a new thread is created to handle the request, even if&#xA;other worker threads are idle.  If there are more than&#xA;corePoolSize but less than maximumPoolSize threads running, a new&#xA;thread will be created only if the queue is full.  By setting&#xA;corePoolSize and maximumPoolSize the same, you create a fixed-size&#xA;thread pool. By setting maximumPoolSize to an essentially unbounded&#xA;value such as &lt;tt>Integer.MAX_VALUE&lt;/tt>, you allow the pool to&#xA;accommodate an arbitrary number of concurrent tasks. Most typically,&#xA;core and maximum pool sizes are set only upon construction, but they&#xA;may also be changed dynamically using {@link&#xA;ThreadPoolExecutor#setCorePoolSize} and {@link&#xA;ThreadPoolExecutor#setMaximumPoolSize}. &lt;dd>&#xA;&#xA;&lt;dt> On-demand construction&#xA;&#xA;&lt;dd> By default, even core threads are initially created and&#xA;started only when needed by new tasks, but this can be overridden&#xA;dynamically using method {@link&#xA;ThreadPoolExecutor#prestartCoreThread} or&#xA;{@link ThreadPoolExecutor#prestartAllCoreThreads}.  &lt;/dd>&#xA;&#xA;&lt;dt>Creating new threads&lt;/dt>&#xA;&#xA;&lt;dd>New threads are created using a {@link&#xA;java.util.concurrent.ThreadFactory}.  If not otherwise specified, a&#xA;{@link Executors#defaultThreadFactory} is used, that creates threads to all&#xA;be in the same {@link ThreadGroup} and with the same&#xA;&lt;tt>NORM_PRIORITY&lt;/tt> priority and non-daemon status. By supplying&#xA;a different ThreadFactory, you can alter the thread's name, thread&#xA;group, priority, daemon status, etc. If a &lt;tt>ThreadFactory&lt;/tt> fails to create&#xA;a thread when asked by returning null from &lt;tt>newThread&lt;/tt>,&#xA;the executor will continue, but might&#xA;not be able to execute any tasks. &lt;/dd>&#xA;&#xA;&lt;dt>Keep-alive times&lt;/dt>&#xA;&#xA;&lt;dd>If the pool currently has more than corePoolSize threads,&#xA;excess threads will be terminated if they have been idle for more&#xA;than the keepAliveTime (see {@link&#xA;ThreadPoolExecutor#getKeepAliveTime}). This provides a means of&#xA;reducing resource consumption when the pool is not being actively&#xA;used. If the pool becomes more active later, new threads will be&#xA;constructed. This parameter can also be changed dynamically&#xA;using method {@link ThreadPoolExecutor#setKeepAliveTime}. Using&#xA;a value of &lt;tt>Long.MAX_VALUE&lt;/tt> {@link TimeUnit#NANOSECONDS}&#xA;effectively disables idle threads from ever terminating prior&#xA;to shut down.&#xA;&lt;/dd>&#xA;&#xA;&lt;dt>Queuing&lt;/dt>&#xA;&#xA;&lt;dd>Any {@link BlockingQueue} may be used to transfer and hold&#xA;submitted tasks.  The use of this queue interacts with pool sizing:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li> If fewer than corePoolSize threads are running, the Executor&#xA;always prefers adding a new thread&#xA;rather than queuing.&lt;/li>&#xA;&#xA;&lt;li> If corePoolSize or more threads are running, the Executor&#xA;always prefers queuing a request rather than adding a new&#xA;thread.&lt;/li>&#xA;&#xA;&lt;li> If a request cannot be queued, a new thread is created unless&#xA;this would exceed maximumPoolSize, in which case, the task will be&#xA;rejected.&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;There are three general strategies for queuing:&#xA;&lt;ol>&#xA;&#xA;&lt;li> &lt;em> Direct handoffs.&lt;/em> A good default choice for a work&#xA;queue is a {@link SynchronousQueue} that hands off tasks to threads&#xA;without otherwise holding them. Here, an attempt to queue a task&#xA;will fail if no threads are immediately available to run it, so a&#xA;new thread will be constructed. This policy avoids lockups when&#xA;handling sets of requests that might have internal dependencies.&#xA;Direct handoffs generally require unbounded maximumPoolSizes to&#xA;avoid rejection of new submitted tasks. This in turn admits the&#xA;possibility of unbounded thread growth when commands continue to&#xA;arrive on average faster than they can be processed.  &lt;/li>&#xA;&#xA;&lt;li>&lt;em> Unbounded queues.&lt;/em> Using an unbounded queue (for&#xA;example a {@link LinkedBlockingQueue} without a predefined&#xA;capacity) will cause new tasks to be queued in cases where all&#xA;corePoolSize threads are busy. Thus, no more than corePoolSize&#xA;threads will ever be created. (And the value of the maximumPoolSize&#xA;therefore doesn't have any effect.)  This may be appropriate when&#xA;each task is completely independent of others, so tasks cannot&#xA;affect each others execution; for example, in a web page server.&#xA;While this style of queuing can be useful in smoothing out&#xA;transient bursts of requests, it admits the possibility of&#xA;unbounded work queue growth when commands continue to arrive on&#xA;average faster than they can be processed.  &lt;/li>&#xA;&#xA;&lt;li>&lt;em>Bounded queues.&lt;/em> A bounded queue (for example, an&#xA;{@link ArrayBlockingQueue}) helps prevent resource exhaustion when&#xA;used with finite maximumPoolSizes, but can be more difficult to&#xA;tune and control.  Queue sizes and maximum pool sizes may be traded&#xA;off for each other: Using large queues and small pools minimizes&#xA;CPU usage, OS resources, and context-switching overhead, but can&#xA;lead to artificially low throughput.  If tasks frequently block (for&#xA;example if they are I/O bound), a system may be able to schedule&#xA;time for more threads than you otherwise allow. Use of small queues&#xA;generally requires larger pool sizes, which keeps CPUs busier but&#xA;may encounter unacceptable scheduling overhead, which also&#xA;decreases throughput.  &lt;/li>&#xA;&#xA;&lt;/ol>&#xA;&#xA;&lt;/dd>&#xA;&#xA;&lt;dt>Rejected tasks&lt;/dt>&#xA;&#xA;&lt;dd> New tasks submitted in method {@link&#xA;ThreadPoolExecutor#execute} will be &lt;em>rejected&lt;/em> when the&#xA;Executor has been shut down, and also when the Executor uses finite&#xA;bounds for both maximum threads and work queue capacity, and is&#xA;saturated.  In either case, the &lt;tt>execute&lt;/tt> method invokes the&#xA;{@link RejectedExecutionHandler#rejectedExecution} method of its&#xA;{@link RejectedExecutionHandler}.  Four predefined handler policies&#xA;are provided:&#xA;&#xA;&lt;ol>&#xA;&#xA;&lt;li> In the&#xA;default {@link ThreadPoolExecutor.AbortPolicy}, the handler throws a&#xA;runtime {@link RejectedExecutionException} upon rejection. &lt;/li>&#xA;&#xA;&lt;li> In {@link&#xA;ThreadPoolExecutor.CallerRunsPolicy}, the thread that invokes&#xA;&lt;tt>execute&lt;/tt> itself runs the task. This provides a simple&#xA;feedback control mechanism that will slow down the rate that new&#xA;tasks are submitted. &lt;/li>&#xA;&#xA;&lt;li> In {@link ThreadPoolExecutor.DiscardPolicy},&#xA;a task that cannot be executed is simply dropped.  &lt;/li>&#xA;&#xA;&lt;li>In {@link&#xA;ThreadPoolExecutor.DiscardOldestPolicy}, if the executor is not&#xA;shut down, the task at the head of the work queue is dropped, and&#xA;then execution is retried (which can fail again, causing this to be&#xA;repeated.) &lt;/li>&#xA;&#xA;&lt;/ol>&#xA;&#xA;It is possible to define and use other kinds of {@link&#xA;RejectedExecutionHandler} classes. Doing so requires some care&#xA;especially when policies are designed to work only under particular&#xA;capacity or queuing policies. &lt;/dd>&#xA;&#xA;&lt;dt>Hook methods&lt;/dt>&#xA;&#xA;&lt;dd>This class provides &lt;tt>protected&lt;/tt> overridable {@link&#xA;ThreadPoolExecutor#beforeExecute} and {@link&#xA;ThreadPoolExecutor#afterExecute} methods that are called before and&#xA;after execution of each task.  These can be used to manipulate the&#xA;execution environment; for example, reinitializing ThreadLocals,&#xA;gathering statistics, or adding log entries. Additionally, method&#xA;{@link ThreadPoolExecutor#terminated} can be overridden to perform&#xA;any special processing that needs to be done once the Executor has&#xA;fully terminated.&#xA;&#xA;&lt;p>If hook or callback methods throw&#xA;exceptions, internal worker threads may in turn fail and&#xA;abruptly terminate.&lt;/dd>&#xA;&#xA;&lt;dt>Queue maintenance&lt;/dt>&#xA;&#xA;&lt;dd> Method {@link ThreadPoolExecutor#getQueue} allows access to&#xA;the work queue for purposes of monitoring and debugging.  Use of&#xA;this method for any other purpose is strongly discouraged.  Two&#xA;supplied methods, {@link ThreadPoolExecutor#remove} and {@link&#xA;ThreadPoolExecutor#purge} are available to assist in storage&#xA;reclamation when large numbers of queued tasks become&#xA;cancelled.&lt;/dd> &lt;/dl>&#xA;&#xA;&lt;p> &lt;b>Extension example&lt;/b>. Most extensions of this class&#xA;override one or more of the protected hook methods. For example,&#xA;here is a subclass that adds a simple pause/resume feature:&#xA;&#xA;&lt;pre>&#xA;class PausableThreadPoolExecutor extends ThreadPoolExecutor {&#xA;private boolean isPaused;&#xA;private ReentrantLock pauseLock = new ReentrantLock();&#xA;private Condition unpaused = pauseLock.newCondition();&#xA;&#xA;public PausableThreadPoolExecutor(...) { super(...); }&#xA;&#xA;protected void beforeExecute(Thread t, Runnable r) {&#xA;super.beforeExecute(t, r);&#xA;pauseLock.lock();&#xA;try {&#xA;while (isPaused) unpaused.await();&#xA;} catch(InterruptedException ie) {&#xA;t.interrupt();&#xA;} finally {&#xA;pauseLock.unlock();&#xA;}&#xA;}&#xA;&#xA;public void pause() {&#xA;pauseLock.lock();&#xA;try {&#xA;isPaused = true;&#xA;} finally {&#xA;pauseLock.unlock();&#xA;}&#xA;}&#xA;&#xA;public void resume() {&#xA;pauseLock.lock();&#xA;try {&#xA;isPaused = false;&#xA;unpaused.signalAll();&#xA;} finally {&#xA;pauseLock.unlock();&#xA;}&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="64cca0ac-cae0-4e56-93f4-596a094bd6b3"/>
              <generalization xmi:id="4ace5789-848e-4750-8332-4d63f6cd1f5b" isSubstitutable="true" general="d08afeb3-f663-4efc-b777-0425a56e36e3"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="ce1b6ec1-7826-4f5f-9149-8254689d5b6d" name="Worker" visibility="private" clientDependency="5cb3603e-d505-4f79-a30c-5c6deb64c68c">
                <ownedComment xmi:id="fb4a0859-bb8f-4750-8b6e-ff3b27404f12" body="Worker threads&#xA;" annotatedElement="ce1b6ec1-7826-4f5f-9149-8254689d5b6d"/>
                <interfaceRealization xmi:id="5cb3603e-d505-4f79-a30c-5c6deb64c68c" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="ce1b6ec1-7826-4f5f-9149-8254689d5b6d" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="cadfbb5c-325f-4196-bb25-81f3859c42f0" name="CallerRunsPolicy" clientDependency="2fb7edba-f1fd-44ab-ac67-eefc8ddbef0d">
                <ownedComment xmi:id="2578541e-861d-4bf4-a2ea-f39d247976a7" body="A handler for rejected tasks that runs the rejected task&#xA;directly in the calling thread of the &lt;tt>execute&lt;/tt> method,&#xA;unless the executor has been shut down, in which case the task&#xA;is discarded.&#xA;" annotatedElement="cadfbb5c-325f-4196-bb25-81f3859c42f0"/>
                <interfaceRealization xmi:id="2fb7edba-f1fd-44ab-ac67-eefc8ddbef0d" name="" supplier="14897e5e-4089-4338-93fc-f248469e30c6" client="cadfbb5c-325f-4196-bb25-81f3859c42f0" contract="14897e5e-4089-4338-93fc-f248469e30c6"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="4516d021-15c1-4e47-aebf-1c29da3c2b27" name="AbortPolicy" clientDependency="bc6d7d95-f049-4b82-92df-042688e9ea6a">
                <ownedComment xmi:id="1ee712fb-25e5-4102-822d-937ae9f22ddf" body="A handler for rejected tasks that throws a&#xA;&lt;tt>RejectedExecutionException&lt;/tt>.&#xA;" annotatedElement="4516d021-15c1-4e47-aebf-1c29da3c2b27"/>
                <interfaceRealization xmi:id="bc6d7d95-f049-4b82-92df-042688e9ea6a" name="" supplier="14897e5e-4089-4338-93fc-f248469e30c6" client="4516d021-15c1-4e47-aebf-1c29da3c2b27" contract="14897e5e-4089-4338-93fc-f248469e30c6"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="805e2ecd-f3a6-4815-9cba-8ab89548a831" name="DiscardPolicy" clientDependency="708c6872-f92d-4bc6-9c88-905d7a61b970">
                <ownedComment xmi:id="cf2171e2-d358-45c9-a50e-8a276b705b2a" body="A handler for rejected tasks that silently discards the&#xA;rejected task.&#xA;" annotatedElement="805e2ecd-f3a6-4815-9cba-8ab89548a831"/>
                <interfaceRealization xmi:id="708c6872-f92d-4bc6-9c88-905d7a61b970" name="" supplier="14897e5e-4089-4338-93fc-f248469e30c6" client="805e2ecd-f3a6-4815-9cba-8ab89548a831" contract="14897e5e-4089-4338-93fc-f248469e30c6"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="7d4db326-8d86-40f7-b931-2964c1d7ed19" name="DiscardOldestPolicy" clientDependency="41f53ed7-a936-420f-9b18-fc3f2c63feee">
                <ownedComment xmi:id="f8a402d3-73ea-493e-a72b-905cdb123918" body="A handler for rejected tasks that discards the oldest unhandled&#xA;request and then retries &lt;tt>execute&lt;/tt>, unless the executor&#xA;is shut down, in which case the task is discarded.&#xA;" annotatedElement="7d4db326-8d86-40f7-b931-2964c1d7ed19"/>
                <interfaceRealization xmi:id="41f53ed7-a936-420f-9b18-fc3f2c63feee" name="" supplier="14897e5e-4089-4338-93fc-f248469e30c6" client="7d4db326-8d86-40f7-b931-2964c1d7ed19" contract="14897e5e-4089-4338-93fc-f248469e30c6"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="063d736e-6a2f-4b7e-98d2-45cf581df730" name="BrokenBarrierException">
              <ownedComment xmi:id="cb66a369-e428-44f6-975d-43dcf3eea8aa" body="Exception thrown when a thread tries to wait upon a barrier that is&#xA;in a broken state, or which enters the broken state while the thread&#xA;is waiting.&#xA;&#xA;@see CyclicBarrier&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;&#xA;" annotatedElement="063d736e-6a2f-4b7e-98d2-45cf581df730"/>
              <generalization xmi:id="c7c2c34b-dd01-4de5-af5a-f5398d58dc30" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2cd3b087-f620-486e-b010-26af424d8648" name="TimeoutException">
              <ownedComment xmi:id="ed86c353-0ca1-4acc-a778-4889cbbac0ab" body="Exception thrown when a blocking operation times out.  Blocking&#xA;operations for which a timeout is specified need a means to&#xA;indicate that the timeout has occurred. For many such operations it&#xA;is possible to return a value that indicates timeout; when that is&#xA;not possible or desirable then &lt;tt>TimeoutException&lt;/tt> should be&#xA;declared and thrown.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="2cd3b087-f620-486e-b010-26af424d8648"/>
              <generalization xmi:id="93bb8379-203f-4e0a-91d5-c65b5661583d" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ffca99aa-70aa-4cb9-b37c-69189ea0ce72" name="ExecutorCompletionService" clientDependency="4df42d27-7255-4a42-8710-de5356b5d65d">
              <ownedComment xmi:id="ac9f1a63-88bf-496c-99f5-81bc819da238" body="A {@link CompletionService} that uses a supplied {@link Executor}&#xA;to execute tasks.  This class arranges that submitted tasks are,&#xA;upon completion, placed on a queue accessible using &lt;tt>take&lt;/tt>.&#xA;The class is lightweight enough to be suitable for transient use&#xA;when processing groups of tasks.&#xA;&#xA;&lt;p>&#xA;&#xA;&lt;b>Usage Examples.&lt;/b>&#xA;&#xA;Suppose you have a set of solvers for a certain problem, each&#xA;returning a value of some type &lt;tt>Result&lt;/tt>, and would like to&#xA;run them concurrently, processing the results of each of them that&#xA;return a non-null value, in some method &lt;tt>use(Result r)&lt;/tt>. You&#xA;could write this as:&#xA;&#xA;&lt;pre>&#xA;void solve(Executor e, Collection&lt;Callable&lt;Result>> solvers)&#xA;throws InterruptedException, ExecutionException {&#xA;CompletionService&lt;Result> ecs = new ExecutorCompletionService&lt;Result>(e);&#xA;for (Callable&lt;Result> s : solvers)&#xA;ecs.submit(s);&#xA;int n = solvers.size();&#xA;for (int i = 0; i &lt; n; ++i) {&#xA;Result r = ecs.take().get();&#xA;if (r != null)&#xA;use(r);&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;Suppose instead that you would like to use the first non-null result&#xA;of the set of tasks, ignoring any that encounter exceptions,&#xA;and cancelling all other tasks when the first one is ready:&#xA;&#xA;&lt;pre>&#xA;void solve(Executor e, Collection&lt;Callable&lt;Result>> solvers)&#xA;throws InterruptedException {&#xA;CompletionService&lt;Result> ecs = new ExecutorCompletionService&lt;Result>(e);&#xA;int n = solvers.size();&#xA;List&lt;Future&lt;Result>> futures = new ArrayList&lt;Future&lt;Result>>(n);&#xA;Result result = null;&#xA;try {&#xA;for (Callable&lt;Result> s : solvers)&#xA;futures.add(ecs.submit(s));&#xA;for (int i = 0; i &lt; n; ++i) {&#xA;try {&#xA;Result r = ecs.take().get();&#xA;if (r != null) {&#xA;result = r;&#xA;break;&#xA;}&#xA;} catch(ExecutionException ignore) {}&#xA;}&#xA;}&#xA;finally {&#xA;for (Future&lt;Result> f : futures)&#xA;f.cancel(true);&#xA;}&#xA;&#xA;if (result != null)&#xA;use(result);&#xA;}&#xA;&lt;/pre>&#xA;" annotatedElement="ffca99aa-70aa-4cb9-b37c-69189ea0ce72"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="e70a831c-2d48-4561-9ed2-91eb28e385af" name="" parameter="1db53c35-f0c6-4d66-b4a4-e8b1c7fb9c89">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="1db53c35-f0c6-4d66-b4a4-e8b1c7fb9c89" parameteredElement="c6c0a759-d8b2-45d7-9248-0203bb1e7e01">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="c6c0a759-d8b2-45d7-9248-0203bb1e7e01" name="V" templateParameter="1db53c35-f0c6-4d66-b4a4-e8b1c7fb9c89"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="4df42d27-7255-4a42-8710-de5356b5d65d" name="" supplier="13957531-5fa4-4bf4-bfb2-6c0e6572a4fa" client="ffca99aa-70aa-4cb9-b37c-69189ea0ce72" contract="13957531-5fa4-4bf4-bfb2-6c0e6572a4fa"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="00a9c4e5-1568-42ce-9b27-3246ec413385" name="QueueingFuture" visibility="private">
                <ownedComment xmi:id="fc50db41-8f64-4ddb-b0d8-074b22127b9c" body="FutureTask extension to enqueue upon completion&#xA;" annotatedElement="00a9c4e5-1568-42ce-9b27-3246ec413385"/>
                <generalization xmi:id="5ee808fb-4bee-4076-9251-fd49bb5db05e" isSubstitutable="true" general="4e52fe80-110b-4651-b623-ba5879c96543"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="1ae58366-6a63-40d1-99b3-39f17f57b0e2" name="ScheduledExecutorService" isAbstract="true">
              <ownedComment xmi:id="a775c0e8-411f-47f4-99c3-e2cb2ea2c5e9" body="An {@link ExecutorService} that can schedule commands to run after a given&#xA;delay, or to execute periodically.&#xA;&#xA;&lt;p> The &lt;tt>schedule&lt;/tt> methods create tasks with various delays&#xA;and return a task object that can be used to cancel or check&#xA;execution. The &lt;tt>scheduleAtFixedRate&lt;/tt> and&#xA;&lt;tt>scheduleWithFixedDelay&lt;/tt> methods create and execute tasks&#xA;that run periodically until cancelled.&#xA;&#xA;&lt;p> Commands submitted using the {@link Executor#execute} and&#xA;{@link ExecutorService} &lt;tt>submit&lt;/tt> methods are scheduled with&#xA;a requested delay of zero. Zero and negative delays (but not&#xA;periods) are also allowed in &lt;tt>schedule&lt;/tt> methods, and are&#xA;treated as requests for immediate execution.&#xA;&#xA;&lt;p>All &lt;tt>schedule&lt;/tt> methods accept &lt;em>relative&lt;/em> delays and&#xA;periods as arguments, not absolute times or dates. It is a simple&#xA;matter to transform an absolute time represented as a {@link&#xA;java.util.Date} to the required form. For example, to schedule at&#xA;a certain future &lt;tt>date&lt;/tt>, you can use: &lt;tt>schedule(task,&#xA;date.getTime() - System.currentTimeMillis(),&#xA;TimeUnit.MILLISECONDS)&lt;/tt>. Beware however that expiration of a&#xA;relative delay need not coincide with the current &lt;tt>Date&lt;/tt> at&#xA;which the task is enabled due to network time synchronization&#xA;protocols, clock drift, or other factors.&#xA;&#xA;The {@link Executors} class provides convenient factory methods for&#xA;the ScheduledExecutorService implementations provided in this package.&#xA;&#xA;&lt;h3>Usage Example&lt;/h3>&#xA;&#xA;Here is a class with a method that sets up a ScheduledExecutorService&#xA;to beep every ten seconds for an hour:&#xA;&#xA;&lt;pre>&#xA;import static java.util.concurrent.TimeUnit.*;&#xA;class BeeperControl {&#xA;private final ScheduledExecutorService scheduler =&#xA;Executors.newScheduledThreadPool(1);&#xA;&#xA;public void beepForAnHour() {&#xA;final Runnable beeper = new Runnable() {&#xA;public void run() { System.out.println(&quot;beep&quot;); }&#xA;};&#xA;final ScheduledFuture&lt;?> beeperHandle =&#xA;scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);&#xA;scheduler.schedule(new Runnable() {&#xA;public void run() { beeperHandle.cancel(true); }&#xA;}, 60 * 60, SECONDS);&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="1ae58366-6a63-40d1-99b3-39f17f57b0e2"/>
              <generalization xmi:id="1e737c15-7a33-47ac-a34a-b42e3e28fcf5" isSubstitutable="true" general="3a47b51d-98c9-4cff-8dbd-f1c4f7d52b9b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7aeba934-44c6-42f4-9082-79695a7c74c4" name="AbstractMap&lt;K, V>">
              <templateBinding xmi:id="07f969e0-0b43-41fe-a6a3-6ab3e1338627" signature="e1c0c6b1-bc5b-4c0b-a842-1dee570bfb72">
                <parameterSubstitution xmi:id="7fc51af2-1992-49ca-8dfc-8160603439cc" formal="5678fbfd-3b73-4f2d-9754-00fc4fbc970f" actual="1cbff166-18a5-4fb9-84b6-6f6aacb25f86"/>
                <parameterSubstitution xmi:id="1ecd23f0-d6d5-40e3-b992-cd2ad9e00e65" formal="7b16f894-dca4-4787-b2f9-4a01749f8a12" actual="6e16dbee-010f-4cc1-a091-a6a0310dcd56"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ee758153-f931-43ca-bcea-40b9d95c713b" name="AbstractList&lt;E>">
              <templateBinding xmi:id="b53282db-9ffe-43c6-81e4-c6faec33d918" signature="644f38f8-9f74-4a51-b690-c537f6da35cc">
                <parameterSubstitution xmi:id="2b145b71-21c6-4e6c-bb16-e316e865c35f" formal="23b58bd8-95d6-4436-97e9-b49cfc2bf205" actual="6098a001-385c-47e1-a848-deacecbab243"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="de677756-1dc9-4efd-a33e-221d00cda72d" name="ArrayBlockingQueue" clientDependency="3d5ef3d8-7897-4649-934a-8d5ac85d25f8 e54af901-b6db-4f90-b71b-2a9f0493342d">
              <ownedComment xmi:id="3f2a9fc3-33fa-4cdd-bf3d-79c20119e4be" body="A bounded {@linkplain BlockingQueue blocking queue} backed by an&#xA;array.  This queue orders elements FIFO (first-in-first-out).  The&#xA;&lt;em>head&lt;/em> of the queue is that element that has been on the&#xA;queue the longest time.  The &lt;em>tail&lt;/em> of the queue is that&#xA;element that has been on the queue the shortest time. New elements&#xA;are inserted at the tail of the queue, and the queue retrieval&#xA;operations obtain elements at the head of the queue.&#xA;&#xA;&lt;p>This is a classic &quot;bounded buffer&quot;, in which a&#xA;fixed-sized array holds elements inserted by producers and&#xA;extracted by consumers.  Once created, the capacity cannot be&#xA;increased.  Attempts to put an element to a full queue will&#xA;result in the put operation blocking; attempts to retrieve an&#xA;element from an empty queue will similarly block.&#xA;&#xA;&lt;p> This class supports an optional fairness policy for ordering&#xA;waiting producer and consumer threads.  By default, this ordering&#xA;is not guaranteed. However, a queue constructed with fairness set&#xA;to &lt;tt>true&lt;/tt> grants threads access in FIFO order. Fairness&#xA;generally decreases throughput but reduces variability and avoids&#xA;starvation.&#xA;&#xA;&lt;p>This class and its iterator implement all of the&#xA;&lt;em>optional&lt;/em> methods of the {@link Collection} and {@link&#xA;Iterator} interfaces.&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;E> the type of elements held in this collection&#xA;" annotatedElement="de677756-1dc9-4efd-a33e-221d00cda72d"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="c379ebca-6913-4b84-a12e-74f18d9017c0" name="" parameter="205d1e60-e270-43ea-a970-fc99674b6a32">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="205d1e60-e270-43ea-a970-fc99674b6a32" parameteredElement="8f65d0a2-e835-47b1-8469-aded8828f317">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="8f65d0a2-e835-47b1-8469-aded8828f317" name="E" templateParameter="205d1e60-e270-43ea-a970-fc99674b6a32"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="24d9c8a7-4c8c-495f-8266-d4283a349d2c" isSubstitutable="true" general="57267948-5b20-4000-a393-c9fc60c633c3"/>
              <interfaceRealization xmi:id="3d5ef3d8-7897-4649-934a-8d5ac85d25f8" name="" supplier="fab524f7-59eb-4ace-bf91-fd1feeef80a3" client="de677756-1dc9-4efd-a33e-221d00cda72d" contract="fab524f7-59eb-4ace-bf91-fd1feeef80a3"/>
              <interfaceRealization xmi:id="e54af901-b6db-4f90-b71b-2a9f0493342d" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="de677756-1dc9-4efd-a33e-221d00cda72d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="196d91a4-7df1-41b5-a11e-a97aac9da10b" name="Itr" visibility="private" clientDependency="e2690567-2bc6-4987-be8f-7fe29ebd1782">
                <ownedComment xmi:id="92c00495-7d2c-47c9-ae86-2816973fbdbc" body="Iterator for ArrayBlockingQueue&#xA;" annotatedElement="196d91a4-7df1-41b5-a11e-a97aac9da10b"/>
                <interfaceRealization xmi:id="e2690567-2bc6-4987-be8f-7fe29ebd1782" name="" supplier="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f" client="196d91a4-7df1-41b5-a11e-a97aac9da10b" contract="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d08afeb3-f663-4efc-b777-0425a56e36e3" name="AbstractExecutorService" clientDependency="d791da1d-7fa5-4a6e-a8bb-3d9f43c6e4d3" isAbstract="true">
              <ownedComment xmi:id="9de4a4fc-9610-4acd-b1c3-922e04de6f50" body="Provides default implementation of {@link ExecutorService}&#xA;execution methods. This class implements the &lt;tt>submit&lt;/tt>,&#xA;&lt;tt>invokeAny&lt;/tt> and &lt;tt>invokeAll&lt;/tt> methods using the default&#xA;{@link FutureTask} class provided in this package.  For example,&#xA;the implementation of &lt;tt>submit(Runnable)&lt;/tt> creates an&#xA;associated &lt;tt>FutureTask&lt;/tt> that is executed and&#xA;returned. Subclasses overriding these methods to use different&#xA;{@link Future} implementations should do so consistently for each&#xA;of these methods.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="d08afeb3-f663-4efc-b777-0425a56e36e3"/>
              <interfaceRealization xmi:id="d791da1d-7fa5-4a6e-a8bb-3d9f43c6e4d3" name="" supplier="3a47b51d-98c9-4cff-8dbd-f1c4f7d52b9b" client="d08afeb3-f663-4efc-b777-0425a56e36e3" contract="3a47b51d-98c9-4cff-8dbd-f1c4f7d52b9b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a1f8acb9-f227-459a-a771-2451b5a8a65e" name="ConcurrentLinkedQueue" clientDependency="eed1a350-24a8-4a09-9666-b77855428d28 764d2795-f5f5-425d-a76c-9a80e589e7ca">
              <ownedComment xmi:id="87e9a335-4de7-4b85-9b0d-88a93f0b363c" body="An unbounded thread-safe {@linkplain Queue queue} based on linked nodes.&#xA;This queue orders elements FIFO (first-in-first-out).&#xA;The &lt;em>head&lt;/em> of the queue is that element that has been on the&#xA;queue the longest time.&#xA;The &lt;em>tail&lt;/em> of the queue is that element that has been on the&#xA;queue the shortest time. New elements&#xA;are inserted at the tail of the queue, and the queue retrieval&#xA;operations obtain elements at the head of the queue.&#xA;A &lt;tt>ConcurrentLinkedQueue&lt;/tt> is an appropriate choice when&#xA;many threads will share access to a common collection.&#xA;This queue does not permit &lt;tt>null&lt;/tt> elements.&#xA;&#xA;&lt;p>This implementation employs an efficient &quot;wait-free&quot;&#xA;algorithm based on one described in &lt;a&#xA;href=&quot;http://www.cs.rochester.edu/u/michael/PODC96.html&quot;> Simple,&#xA;Fast, and Practical Non-Blocking and Blocking Concurrent Queue&#xA;Algorithms&lt;/a> by Maged M. Michael and Michael L. Scott.&#xA;&#xA;&lt;p>Beware that, unlike in most collections, the &lt;tt>size&lt;/tt> method&#xA;is &lt;em>NOT&lt;/em> a constant-time operation. Because of the&#xA;asynchronous nature of these queues, determining the current number&#xA;of elements requires a traversal of the elements.&#xA;&#xA;&lt;p>This class and its iterator implement all of the&#xA;&lt;em>optional&lt;/em> methods of the {@link Collection} and {@link&#xA;Iterator} interfaces.&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;E> the type of elements held in this collection&#xA;&#xA;" annotatedElement="a1f8acb9-f227-459a-a771-2451b5a8a65e"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="088c9c2e-2aca-482f-bf61-517990f70d2e" name="" parameter="7286cafe-cdbd-47da-9ab0-2677e484c28e">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="7286cafe-cdbd-47da-9ab0-2677e484c28e" parameteredElement="b33a65d9-a4b4-46f4-b462-2d2019e5b54e">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="b33a65d9-a4b4-46f4-b462-2d2019e5b54e" name="E" templateParameter="7286cafe-cdbd-47da-9ab0-2677e484c28e"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="2c063227-c3c8-4d19-a2c6-b1a88f0d5cfe" isSubstitutable="true" general="57267948-5b20-4000-a393-c9fc60c633c3"/>
              <interfaceRealization xmi:id="764d2795-f5f5-425d-a76c-9a80e589e7ca" name="" supplier="b9722b17-296e-4891-893c-daddd8d91c74" client="a1f8acb9-f227-459a-a771-2451b5a8a65e" contract="b9722b17-296e-4891-893c-daddd8d91c74"/>
              <interfaceRealization xmi:id="eed1a350-24a8-4a09-9666-b77855428d28" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="a1f8acb9-f227-459a-a771-2451b5a8a65e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6389e4d5-b224-48b1-9e5b-2458099a5f18" name="Node" visibility="private">
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="9e73b28f-7028-4770-a81e-da72e402d754" name="" parameter="a51f1699-3bdc-428e-b6ad-5d0c6295bd50">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="a51f1699-3bdc-428e-b6ad-5d0c6295bd50" parameteredElement="a13aa756-6108-4d48-8809-1ef95cdaca95">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="a13aa756-6108-4d48-8809-1ef95cdaca95" name="E" templateParameter="a51f1699-3bdc-428e-b6ad-5d0c6295bd50"/>
                  </ownedParameter>
                </ownedTemplateSignature>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="7b2c9ea9-884c-49b6-ad46-523bf6a575d6" name="Itr" visibility="private" clientDependency="444eb396-ddfe-49d4-a2dd-0be242fda34b">
                <interfaceRealization xmi:id="444eb396-ddfe-49d4-a2dd-0be242fda34b" name="" supplier="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f" client="7b2c9ea9-884c-49b6-ad46-523bf6a575d6" contract="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5f71545f-eb1c-4908-8ba9-c90ef39c1682" name="ConcurrentHashMap" clientDependency="b3b07804-928e-46c6-b81e-1ecfa303c693 8d68bbab-4313-4309-b9f4-2e6a66a7e29e">
              <ownedComment xmi:id="8a020bf1-f4f9-4a61-9061-290d05c63eac" body="A hash table supporting full concurrency of retrievals and&#xA;adjustable expected concurrency for updates. This class obeys the&#xA;same functional specification as {@link java.util.Hashtable}, and&#xA;includes versions of methods corresponding to each method of&#xA;&lt;tt>Hashtable&lt;/tt>. However, even though all operations are&#xA;thread-safe, retrieval operations do &lt;em>not&lt;/em> entail locking,&#xA;and there is &lt;em>not&lt;/em> any support for locking the entire table&#xA;in a way that prevents all access.  This class is fully&#xA;interoperable with &lt;tt>Hashtable&lt;/tt> in programs that rely on its&#xA;thread safety but not on its synchronization details.&#xA;&#xA;&lt;p> Retrieval operations (including &lt;tt>get&lt;/tt>) generally do not&#xA;block, so may overlap with update operations (including&#xA;&lt;tt>put&lt;/tt> and &lt;tt>remove&lt;/tt>). Retrievals reflect the results&#xA;of the most recently &lt;em>completed&lt;/em> update operations holding&#xA;upon their onset.  For aggregate operations such as &lt;tt>putAll&lt;/tt>&#xA;and &lt;tt>clear&lt;/tt>, concurrent retrievals may reflect insertion or&#xA;removal of only some entries.  Similarly, Iterators and&#xA;Enumerations return elements reflecting the state of the hash table&#xA;at some point at or since the creation of the iterator/enumeration.&#xA;They do &lt;em>not&lt;/em> throw&#xA;{@link ConcurrentModificationException}.  However, iterators are&#xA;designed to be used by only one thread at a time.&#xA;&#xA;&lt;p> The allowed concurrency among update operations is guided by&#xA;the optional &lt;tt>concurrencyLevel&lt;/tt> constructor argument&#xA;(default 16), which is used as a hint for internal sizing.  The&#xA;table is internally partitioned to try to permit the indicated&#xA;number of concurrent updates without contention. Because placement&#xA;in hash tables is essentially random, the actual concurrency will&#xA;vary.  Ideally, you should choose a value to accommodate as many&#xA;threads as will ever concurrently modify the table. Using a&#xA;significantly higher value than you need can waste space and time,&#xA;and a significantly lower value can lead to thread contention. But&#xA;overestimates and underestimates within an order of magnitude do&#xA;not usually have much noticeable impact. A value of one is&#xA;appropriate when it is known that only one thread will modify and&#xA;all others will only read. Also, resizing this or any other kind of&#xA;hash table is a relatively slow operation, so, when possible, it is&#xA;a good idea to provide estimates of expected table sizes in&#xA;constructors.&#xA;&#xA;&lt;p>This class and its views and iterators implement all of the&#xA;&lt;em>optional&lt;/em> methods of the {@link Map} and {@link Iterator}&#xA;interfaces.&#xA;&#xA;&lt;p> Like {@link java.util.Hashtable} but unlike {@link&#xA;java.util.HashMap}, this class does NOT allow &lt;tt>null&lt;/tt> to be&#xA;used as a key or value.&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;K> the type of keys maintained by this map&#xA;@param &lt;V> the type of mapped values&#xA;" annotatedElement="5f71545f-eb1c-4908-8ba9-c90ef39c1682"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="195d9c1a-f9d4-42f7-9e45-edadfeb25965" name="" parameter="37d4e67e-5091-4bad-a447-3f7749024da0 b89888b6-516b-4310-834b-179742f64291">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="37d4e67e-5091-4bad-a447-3f7749024da0" parameteredElement="1cbff166-18a5-4fb9-84b6-6f6aacb25f86">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="1cbff166-18a5-4fb9-84b6-6f6aacb25f86" name="K" templateParameter="37d4e67e-5091-4bad-a447-3f7749024da0"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="b89888b6-516b-4310-834b-179742f64291" parameteredElement="6e16dbee-010f-4cc1-a091-a6a0310dcd56">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="6e16dbee-010f-4cc1-a091-a6a0310dcd56" name="V" templateParameter="b89888b6-516b-4310-834b-179742f64291"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="77e5f428-7309-45b6-8640-f382008f39dc" isSubstitutable="true" general="7aeba934-44c6-42f4-9082-79695a7c74c4"/>
              <interfaceRealization xmi:id="b3b07804-928e-46c6-b81e-1ecfa303c693" name="" supplier="a2cdda80-53a0-4729-afe1-d6a5b85b6ecc" client="5f71545f-eb1c-4908-8ba9-c90ef39c1682" contract="a2cdda80-53a0-4729-afe1-d6a5b85b6ecc"/>
              <interfaceRealization xmi:id="8d68bbab-4313-4309-b9f4-2e6a66a7e29e" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="5f71545f-eb1c-4908-8ba9-c90ef39c1682" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f50386cf-94f8-4e05-a08f-f5e7ba05ec8e" name="HashEntry" visibility="package" isLeaf="true">
                <ownedComment xmi:id="a49aaf7d-2007-4eb5-8ed8-cf2db66a69a6" body="ConcurrentHashMap list entry. Note that this is never exported&#xA;out as a user-visible Map.Entry.&#xA;&#xA;Because the value field is volatile, not final, it is legal wrt&#xA;the Java Memory Model for an unsynchronized reader to see null&#xA;instead of initial value when read via a data race.  Although a&#xA;reordering leading to this is not likely to ever actually&#xA;occur, the Segment.readValueUnderLock method is used as a&#xA;backup in case a null (pre-initialized) value is ever seen in&#xA;an unsynchronized access method.&#xA;" annotatedElement="f50386cf-94f8-4e05-a08f-f5e7ba05ec8e"/>
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="ab8ad0f7-7f35-4a9a-9502-41792ccd8bae" name="" parameter="c2551e08-c36d-4de3-8a3a-a2a46695a369 b1e2d5ef-ed7d-4d05-bfd2-0e8fa1db19e0">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="c2551e08-c36d-4de3-8a3a-a2a46695a369" parameteredElement="e9c8137a-3ba8-4321-971c-f72a7bcf6a38">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="e9c8137a-3ba8-4321-971c-f72a7bcf6a38" name="K" templateParameter="c2551e08-c36d-4de3-8a3a-a2a46695a369"/>
                  </ownedParameter>
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="b1e2d5ef-ed7d-4d05-bfd2-0e8fa1db19e0" parameteredElement="05e5249e-111a-4666-9252-2376cd8826fe">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="05e5249e-111a-4666-9252-2376cd8826fe" name="V" templateParameter="b1e2d5ef-ed7d-4d05-bfd2-0e8fa1db19e0"/>
                  </ownedParameter>
                </ownedTemplateSignature>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="59bc7bb8-c9b7-4d7b-822b-0234848544ca" name="Segment" visibility="package" clientDependency="c4982f34-5145-46aa-8e2e-d49abac39c31" isLeaf="true">
                <ownedComment xmi:id="d8edb7c7-bf15-4af3-9ee9-e5b917f7c66d" body="Segments are specialized versions of hash tables.  This&#xA;subclasses from ReentrantLock opportunistically, just to&#xA;simplify some locking and avoid separate construction.&#xA;" annotatedElement="59bc7bb8-c9b7-4d7b-822b-0234848544ca"/>
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="b7a86b24-2d64-45ce-b279-4ba3b4982d13" name="" parameter="1c779c7d-c800-4499-959e-dd82b6a49f3e e5ad31d5-b1c9-42a0-ad1e-f8289270fd3f">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="1c779c7d-c800-4499-959e-dd82b6a49f3e" parameteredElement="3e33a3c2-f792-466d-8785-368cea88aba2">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="3e33a3c2-f792-466d-8785-368cea88aba2" name="K" templateParameter="1c779c7d-c800-4499-959e-dd82b6a49f3e"/>
                  </ownedParameter>
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="e5ad31d5-b1c9-42a0-ad1e-f8289270fd3f" parameteredElement="1d611428-5732-44bd-8558-92734629adce">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="1d611428-5732-44bd-8558-92734629adce" name="V" templateParameter="e5ad31d5-b1c9-42a0-ad1e-f8289270fd3f"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <generalization xmi:id="9e87a525-8a7b-4bdc-8eb0-8528eedbc279" isSubstitutable="true" general="d2e38c0f-e21f-41af-bc99-06aef4e7f6d4"/>
                <interfaceRealization xmi:id="c4982f34-5145-46aa-8e2e-d49abac39c31" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="59bc7bb8-c9b7-4d7b-822b-0234848544ca" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="22405875-af44-4f73-9b46-3c47c7227827" name="HashIterator" visibility="package" isAbstract="true"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="2f621045-b234-4632-8e64-7910e4fcbaa8" name="KeyIterator" visibility="package" clientDependency="47cd7c2d-6563-4958-85a1-ff3222e1245b f255a6ff-a011-435a-bc45-b3732fc8540c" isLeaf="true">
                <generalization xmi:id="14f788c3-2d51-4b6c-99a0-56b8fbd37764" isSubstitutable="true" general="22405875-af44-4f73-9b46-3c47c7227827"/>
                <interfaceRealization xmi:id="f255a6ff-a011-435a-bc45-b3732fc8540c" name="" supplier="6e35fd2a-e450-4a45-894b-c2d88ab08234" client="2f621045-b234-4632-8e64-7910e4fcbaa8" contract="6e35fd2a-e450-4a45-894b-c2d88ab08234"/>
                <interfaceRealization xmi:id="47cd7c2d-6563-4958-85a1-ff3222e1245b" name="" supplier="e6261464-9995-420b-8b7e-2d2aa94c4a89" client="2f621045-b234-4632-8e64-7910e4fcbaa8" contract="e6261464-9995-420b-8b7e-2d2aa94c4a89"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0271d7e7-68cf-45b8-a2d5-eea41542c25c" name="ValueIterator" visibility="package" clientDependency="0fab329b-b21b-4df9-8895-e61a7fd0ec11 85f861cb-68f2-452f-b66e-6fe6b2b79a27" isLeaf="true">
                <generalization xmi:id="af5cd78e-6708-4c68-b6b3-4bf8451c3c82" isSubstitutable="true" general="22405875-af44-4f73-9b46-3c47c7227827"/>
                <interfaceRealization xmi:id="85f861cb-68f2-452f-b66e-6fe6b2b79a27" name="" supplier="a7c0cc27-923c-4411-b843-fadea63b8787" client="0271d7e7-68cf-45b8-a2d5-eea41542c25c" contract="a7c0cc27-923c-4411-b843-fadea63b8787"/>
                <interfaceRealization xmi:id="0fab329b-b21b-4df9-8895-e61a7fd0ec11" name="" supplier="b2c4f843-2a70-44a1-b698-de4bd3875bb0" client="0271d7e7-68cf-45b8-a2d5-eea41542c25c" contract="b2c4f843-2a70-44a1-b698-de4bd3875bb0"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="b1a9190a-4ef1-40f7-bf56-4122b19dcf1a" name="EntryIterator" visibility="package" clientDependency="3963f89d-cd0d-4464-be44-efe679463e14 28bf8653-a236-4978-97bb-432171822078 c229b20c-8539-443d-a5e2-7e42f9067679" isLeaf="true">
                <ownedComment xmi:id="efcb3f34-0945-474c-9ad1-5736f3da79e5" body="Entry iterator. Exported Entry objects must write-through&#xA;changes in setValue, even if the nodes have been cloned. So we&#xA;cannot return internal HashEntry objects. Instead, the iterator&#xA;itself acts as a forwarding pseudo-entry.&#xA;" annotatedElement="b1a9190a-4ef1-40f7-bf56-4122b19dcf1a"/>
                <generalization xmi:id="fcb1daaa-83eb-43b5-9384-b8e7dd602e61" isSubstitutable="true" general="22405875-af44-4f73-9b46-3c47c7227827"/>
                <interfaceRealization xmi:id="28bf8653-a236-4978-97bb-432171822078" name="" supplier="5bebc1fb-871c-4596-8648-6ad46faeacab" client="b1a9190a-4ef1-40f7-bf56-4122b19dcf1a" contract="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
                <interfaceRealization xmi:id="c229b20c-8539-443d-a5e2-7e42f9067679" name="" supplier="8279aec4-cbd9-4efb-84f2-3e0124438161" client="b1a9190a-4ef1-40f7-bf56-4122b19dcf1a" contract="8279aec4-cbd9-4efb-84f2-3e0124438161"/>
                <interfaceRealization xmi:id="3963f89d-cd0d-4464-be44-efe679463e14" name="" supplier="eafa2c5e-a797-4021-a24b-a65d79338254" client="b1a9190a-4ef1-40f7-bf56-4122b19dcf1a" contract="eafa2c5e-a797-4021-a24b-a65d79338254"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="605f26e3-5fbe-428f-93b1-1af0f85242cf" name="KeySet" visibility="package" isLeaf="true">
                <generalization xmi:id="ef7197d2-92be-4a44-93d7-9a0c10d0dc98" isSubstitutable="true" general="d8e4bb4a-fea6-4600-8da2-311416fd86f2"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f0be3376-29d1-48d1-bdd2-17f8be0916ad" name="Values" visibility="package" isLeaf="true">
                <generalization xmi:id="d460b2a7-ae69-4844-8835-752e2fe5bfad" isSubstitutable="true" general="831cb79b-21c0-4203-9962-b2cebddd4105"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="c702c6a5-37c0-440f-89aa-b43d80b23e1c" name="EntrySet" visibility="package" isLeaf="true">
                <generalization xmi:id="bac56f3f-6929-40b1-b41a-21b3f9bb7c32" isSubstitutable="true" general="01481a34-3b75-4493-84ca-4519f1a2e4fa"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="5d05b96e-42ce-44d1-a6d9-b1b1b03792bb" name="SimpleEntry" visibility="package" clientDependency="4029a45f-3fa6-45f1-8137-c90af25c2d46" isLeaf="true">
                <ownedComment xmi:id="19eee8b3-ff07-4fc7-8110-5311c8c016db" body="This duplicates java.util.AbstractMap.SimpleEntry until this class&#xA;is made accessible.&#xA;" annotatedElement="5d05b96e-42ce-44d1-a6d9-b1b1b03792bb"/>
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="26c45717-e5f5-4144-8e10-6d76be92a88a" name="" parameter="4b22c39e-b3ca-44f6-a470-22fac6a6bb00 a9da1bd1-3daf-4964-ac55-04603f71f248">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="4b22c39e-b3ca-44f6-a470-22fac6a6bb00" parameteredElement="867ba23d-7bbd-49d9-9023-892def859cb8">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="867ba23d-7bbd-49d9-9023-892def859cb8" name="K" templateParameter="4b22c39e-b3ca-44f6-a470-22fac6a6bb00"/>
                  </ownedParameter>
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="a9da1bd1-3daf-4964-ac55-04603f71f248" parameteredElement="cf9c1b86-f72f-4edc-989f-634bf4b2485d">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="cf9c1b86-f72f-4edc-989f-634bf4b2485d" name="V" templateParameter="a9da1bd1-3daf-4964-ac55-04603f71f248"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <interfaceRealization xmi:id="4029a45f-3fa6-45f1-8137-c90af25c2d46" name="" supplier="5bebc1fb-871c-4596-8648-6ad46faeacab" client="5d05b96e-42ce-44d1-a6d9-b1b1b03792bb" contract="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="6ef22f8e-0d79-4431-855b-22c52b2c8bb8" name="BlockingQueue" isAbstract="true">
              <ownedComment xmi:id="56cee33c-bb3b-4174-a3bc-0e69bff2f614" body="A {@link java.util.Queue} that additionally supports operations&#xA;that wait for the queue to become non-empty when retrieving an element,&#xA;and wait for space to become available in the queue when storing an&#xA;element.&#xA;&#xA;&lt;p>A &lt;tt>BlockingQueue&lt;/tt> does not accept &lt;tt>null&lt;/tt> elements.&#xA;Implementations throw &lt;tt>NullPointerException&lt;/tt> on attempts&#xA;to &lt;tt>add&lt;/tt>, &lt;tt>put&lt;/tt> or &lt;tt>offer&lt;/tt> a &lt;tt>null&lt;/tt>.  A&#xA;&lt;tt>null&lt;/tt> is used as a sentinel value to indicate failure of&#xA;&lt;tt>poll&lt;/tt> operations.&#xA;&#xA;&lt;p>A &lt;tt>BlockingQueue&lt;/tt> may be capacity bounded. At any given&#xA;time it may have a &lt;tt>remainingCapacity&lt;/tt> beyond which no&#xA;additional elements can be &lt;tt>put&lt;/tt> without blocking.&#xA;A &lt;tt>BlockingQueue&lt;/tt> without any intrinsic capacity constraints always&#xA;reports a remaining capacity of &lt;tt>Integer.MAX_VALUE&lt;/tt>.&#xA;&#xA;&lt;p> &lt;tt>BlockingQueue&lt;/tt> implementations are designed to be used&#xA;primarily for producer-consumer queues, but additionally support&#xA;the {@link java.util.Collection} interface.  So, for example, it is&#xA;possible to remove an arbitrary element from a queue using&#xA;&lt;tt>remove(x)&lt;/tt>. However, such operations are in general&#xA;&lt;em>not&lt;/em> performed very efficiently, and are intended for only&#xA;occasional use, such as when a queued message is cancelled.&#xA;&#xA;&lt;p> &lt;tt>BlockingQueue&lt;/tt> implementations are thread-safe.  All&#xA;queuing methods achieve their effects atomically using internal&#xA;locks or other forms of concurrency control. However, the&#xA;&lt;em>bulk&lt;/em> Collection operations &lt;tt>addAll&lt;/tt>,&#xA;&lt;tt>containsAll&lt;/tt>, &lt;tt>retainAll&lt;/tt> and &lt;tt>removeAll&lt;/tt> are&#xA;&lt;em>not&lt;/em> necessarily performed atomically unless specified&#xA;otherwise in an implementation. So it is possible, for example, for&#xA;&lt;tt>addAll(c)&lt;/tt> to fail (throwing an exception) after adding&#xA;only some of the elements in &lt;tt>c&lt;/tt>.&#xA;&#xA;&lt;p>A &lt;tt>BlockingQueue&lt;/tt> does &lt;em>not&lt;/em> intrinsically support&#xA;any kind of &quot;close&quot; or &quot;shutdown&quot; operation to&#xA;indicate that no more items will be added.  The needs and usage of&#xA;such features tend to be implementation-dependent. For example, a&#xA;common tactic is for producers to insert special&#xA;&lt;em>end-of-stream&lt;/em> or &lt;em>poison&lt;/em> objects, that are&#xA;interpreted accordingly when taken by consumers.&#xA;&#xA;&lt;p>&#xA;Usage example, based on a typical producer-consumer scenario.&#xA;Note that a &lt;tt>BlockingQueue&lt;/tt> can safely be used with multiple&#xA;producers and multiple consumers.&#xA;&lt;pre>&#xA;class Producer implements Runnable {&#xA;private final BlockingQueue queue;&#xA;Producer(BlockingQueue q) { queue = q; }&#xA;public void run() {&#xA;try {&#xA;while(true) { queue.put(produce()); }&#xA;} catch (InterruptedException ex) { ... handle ...}&#xA;}&#xA;Object produce() { ... }&#xA;}&#xA;&#xA;class Consumer implements Runnable {&#xA;private final BlockingQueue queue;&#xA;Consumer(BlockingQueue q) { queue = q; }&#xA;public void run() {&#xA;try {&#xA;while(true) { consume(queue.take()); }&#xA;} catch (InterruptedException ex) { ... handle ...}&#xA;}&#xA;void consume(Object x) { ... }&#xA;}&#xA;&#xA;class Setup {&#xA;void main() {&#xA;BlockingQueue q = new SomeQueueImplementation();&#xA;Producer p = new Producer(q);&#xA;Consumer c1 = new Consumer(q);&#xA;Consumer c2 = new Consumer(q);&#xA;new Thread(p).start();&#xA;new Thread(c1).start();&#xA;new Thread(c2).start();&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p>This interface is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;E> the type of elements held in this collection&#xA;" annotatedElement="6ef22f8e-0d79-4431-855b-22c52b2c8bb8"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="3df8a56c-a69e-47a6-b9ba-5b7ad2b010d1" name="" parameter="ec3c5e56-2684-4450-a723-b7b565f5dc58">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="ec3c5e56-2684-4450-a723-b7b565f5dc58" parameteredElement="a8a2a397-11b9-4b42-846f-6b335369013a">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="a8a2a397-11b9-4b42-846f-6b335369013a" name="E" templateParameter="ec3c5e56-2684-4450-a723-b7b565f5dc58"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="24bc07ca-79c6-450d-b2fe-bb9721ba113c" isSubstitutable="true" general="b9722b17-296e-4891-893c-daddd8d91c74"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="f6dc9602-724c-479c-9aa0-a2b1b71398de" name="Delayed" isAbstract="true">
              <ownedComment xmi:id="9af321ab-7d50-42a2-b82f-fd380b91ee5e" body="A mix-in style interface for marking objects that should be&#xA;acted upon after a given delay.&#xA;&#xA;&lt;p>An implementation of this interface must define a&#xA;&lt;tt>compareTo&lt;/tt> method that provides an ordering consistent with&#xA;its &lt;tt>getDelay&lt;/tt> method.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="f6dc9602-724c-479c-9aa0-a2b1b71398de"/>
              <generalization xmi:id="0181f215-bea1-4182-aa1a-ff13f3f74f2f" isSubstitutable="true" general="f414d2e6-a3ec-4feb-995a-611c89549a1a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="fe10b8ba-b8c0-44ea-8ad1-6aceb077df2e" name="Executors">
              <ownedComment xmi:id="dc4fed38-e6b3-42d0-83f8-36f1bb7179ca" body="Factory and utility methods for {@link Executor}, {@link&#xA;ExecutorService}, {@link ScheduledExecutorService}, {@link&#xA;ThreadFactory}, and {@link Callable} classes defined in this&#xA;package. This class supports the following kinds of methods:&#xA;&#xA;&lt;ul>&#xA;&lt;li> Methods that create and return an {@link ExecutorService}&#xA;set up with commonly useful configuration settings.&#xA;&lt;li> Methods that create and return a {@link ScheduledExecutorService}&#xA;set up with commonly useful configuration settings.&#xA;&lt;li> Methods that create and return a &quot;wrapped&quot; ExecutorService, that&#xA;disables reconfiguration by making implementation-specific methods&#xA;inaccessible.&#xA;&lt;li> Methods that create and return a {@link ThreadFactory}&#xA;that sets newly created threads to a known state.&#xA;&lt;li> Methods that create and return a {@link Callable}&#xA;out of other closure-like forms, so they can be used&#xA;in execution methods requiring &lt;tt>Callable&lt;/tt>.&#xA;&lt;/ul>&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;" annotatedElement="fe10b8ba-b8c0-44ea-8ad1-6aceb077df2e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="4e8c8952-cd18-4226-bceb-4d94759c1c82" name="RunnableAdapter" visibility="package" clientDependency="20094078-a256-4f1d-a12e-692d8a6d9d80" isLeaf="true">
                <ownedComment xmi:id="3570db58-697a-4054-a6f4-329a5ee5eb4d" body="A callable that runs given task and returns given result&#xA;" annotatedElement="4e8c8952-cd18-4226-bceb-4d94759c1c82"/>
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="a67af8bb-8423-4fc3-9dfa-7c8d2e5b7dc1" name="" parameter="16e67fae-4864-4466-8cc4-bb430c540ecf">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="16e67fae-4864-4466-8cc4-bb430c540ecf" parameteredElement="525a1795-a8a4-4d51-b3be-a47cf90f1916">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="525a1795-a8a4-4d51-b3be-a47cf90f1916" name="T" templateParameter="16e67fae-4864-4466-8cc4-bb430c540ecf"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <interfaceRealization xmi:id="20094078-a256-4f1d-a12e-692d8a6d9d80" name="" supplier="f13859ab-f5c7-4e32-aec4-d277f0b50022" client="4e8c8952-cd18-4226-bceb-4d94759c1c82" contract="f13859ab-f5c7-4e32-aec4-d277f0b50022"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="021ca7b9-5aa8-4ae2-bc53-4234ce09ac32" name="PrivilegedActionAdapter" visibility="package" clientDependency="e00079a7-594b-4973-adf9-1685ebcf23a9" isLeaf="true">
                <ownedComment xmi:id="4f24cbc5-8188-4179-9ad0-a74e10d82926" body="A callable that runs given privileged action and returns its result&#xA;" annotatedElement="021ca7b9-5aa8-4ae2-bc53-4234ce09ac32"/>
                <interfaceRealization xmi:id="e00079a7-594b-4973-adf9-1685ebcf23a9" name="" supplier="5d9881d0-5acd-48a3-aaf9-2bc18719b242" client="021ca7b9-5aa8-4ae2-bc53-4234ce09ac32" contract="5d9881d0-5acd-48a3-aaf9-2bc18719b242"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0c6028d2-6c40-4806-be0a-54ec1e59ee9d" name="PrivilegedExceptionActionAdapter" visibility="package" clientDependency="443ec664-7889-4139-b111-23b3bc7275f8" isLeaf="true">
                <ownedComment xmi:id="13965c04-de4a-49ac-8614-cb7793518549" body="A callable that runs given privileged exception action and returns its result&#xA;" annotatedElement="0c6028d2-6c40-4806-be0a-54ec1e59ee9d"/>
                <interfaceRealization xmi:id="443ec664-7889-4139-b111-23b3bc7275f8" name="" supplier="5d9881d0-5acd-48a3-aaf9-2bc18719b242" client="0c6028d2-6c40-4806-be0a-54ec1e59ee9d" contract="5d9881d0-5acd-48a3-aaf9-2bc18719b242"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="3ab4bf6b-0fe7-4d2e-a419-8db3000745ef" name="PrivilegedCallable" visibility="package" clientDependency="712faeaa-eaf1-4994-8e00-5a01e1d3b81f" isLeaf="true">
                <ownedComment xmi:id="90e1a659-9bbc-47a5-bc09-ff6cb453c730" body="A callable that runs under established access control settings&#xA;" annotatedElement="3ab4bf6b-0fe7-4d2e-a419-8db3000745ef"/>
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="e2dda58a-88eb-4915-9583-a8c6899c6562" name="" parameter="8981f862-fd37-43c1-9959-c0384ab87ec5">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="8981f862-fd37-43c1-9959-c0384ab87ec5" parameteredElement="7f66bab9-a64c-425e-9137-c29d1dcd30b8">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="7f66bab9-a64c-425e-9137-c29d1dcd30b8" name="T" templateParameter="8981f862-fd37-43c1-9959-c0384ab87ec5"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <interfaceRealization xmi:id="712faeaa-eaf1-4994-8e00-5a01e1d3b81f" name="" supplier="f13859ab-f5c7-4e32-aec4-d277f0b50022" client="3ab4bf6b-0fe7-4d2e-a419-8db3000745ef" contract="f13859ab-f5c7-4e32-aec4-d277f0b50022"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="9064b514-3200-48f0-8ed2-cc757e8427a3" name="PrivilegedCallableUsingCurrentClassLoader" visibility="package" clientDependency="bc0f8c53-de42-4653-844d-ea729b2d0f67" isLeaf="true">
                <ownedComment xmi:id="7d5894b0-49c0-4a2b-bd9d-2b46e9155207" body="A callable that runs under established access control settings and&#xA;current ClassLoader&#xA;" annotatedElement="9064b514-3200-48f0-8ed2-cc757e8427a3"/>
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="91267db5-2fc4-4896-8b3c-a0128b913c4f" name="" parameter="1ecdf013-f595-40ef-853f-763177597d1c">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="1ecdf013-f595-40ef-853f-763177597d1c" parameteredElement="aebcfab6-7cd7-4b2e-9604-ab4e3f811231">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="aebcfab6-7cd7-4b2e-9604-ab4e3f811231" name="T" templateParameter="1ecdf013-f595-40ef-853f-763177597d1c"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <interfaceRealization xmi:id="bc0f8c53-de42-4653-844d-ea729b2d0f67" name="" supplier="f13859ab-f5c7-4e32-aec4-d277f0b50022" client="9064b514-3200-48f0-8ed2-cc757e8427a3" contract="f13859ab-f5c7-4e32-aec4-d277f0b50022"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="5a855d13-90a3-4628-bd1e-64d8700f52c5" name="DefaultThreadFactory" visibility="package" clientDependency="6df41a5e-d885-4749-bca1-98319604f321">
                <ownedComment xmi:id="f86c8fdb-cb1b-4c87-9806-db6bbb0cfcef" body="The default thread factory&#xA;" annotatedElement="5a855d13-90a3-4628-bd1e-64d8700f52c5"/>
                <interfaceRealization xmi:id="6df41a5e-d885-4749-bca1-98319604f321" name="" supplier="5fd687c4-c88f-42f3-b439-35650927f41f" client="5a855d13-90a3-4628-bd1e-64d8700f52c5" contract="5fd687c4-c88f-42f3-b439-35650927f41f"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="03b6bdd2-83bc-472f-946a-4abd4faa2ca4" name="PrivilegedThreadFactory" visibility="package">
                <ownedComment xmi:id="76cbad21-07ab-440c-92d6-bae68bed7f3b" body="Thread factory capturing access control and class loader&#xA;" annotatedElement="03b6bdd2-83bc-472f-946a-4abd4faa2ca4"/>
                <generalization xmi:id="cb0d0540-26f7-4fc0-957b-4c9438454084" isSubstitutable="true" general="5a855d13-90a3-4628-bd1e-64d8700f52c5"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="9a73165d-c906-4f3d-8936-091be0aa6cb9" name="DelegatedExecutorService" visibility="package">
                <ownedComment xmi:id="76ed275c-3afc-4639-98d5-68a57cf736a4" body="A wrapper class that exposes only the ExecutorService methods&#xA;of an implementation.&#xA;" annotatedElement="9a73165d-c906-4f3d-8936-091be0aa6cb9"/>
                <generalization xmi:id="dc68e3af-268e-48f9-bb4b-da59f7c378f6" isSubstitutable="true" general="d08afeb3-f663-4efc-b777-0425a56e36e3"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="d07c7cb5-d9c7-4dcd-bce0-25d5d76143ca" name="DelegatedScheduledExecutorService" visibility="package" clientDependency="745a3777-d990-413a-b196-2cccda975f84">
                <ownedComment xmi:id="339b49fd-a3a9-48a1-a17c-4c690935ac5b" body="A wrapper class that exposes only the ExecutorService and&#xA;ScheduleExecutor methods of a ScheduledExecutorService implementation.&#xA;" annotatedElement="d07c7cb5-d9c7-4dcd-bce0-25d5d76143ca"/>
                <generalization xmi:id="1cc6aa59-a066-49b0-b05f-9b372e0abe70" isSubstitutable="true" general="9a73165d-c906-4f3d-8936-091be0aa6cb9"/>
                <interfaceRealization xmi:id="745a3777-d990-413a-b196-2cccda975f84" name="" supplier="1ae58366-6a63-40d1-99b3-39f17f57b0e2" client="d07c7cb5-d9c7-4dcd-bce0-25d5d76143ca" contract="1ae58366-6a63-40d1-99b3-39f17f57b0e2"/>
              </nestedClassifier>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="87a9b261-4ddf-4477-9e3b-891c7f380357" name="TimerThread" visibility="package">
            <ownedComment xmi:id="7e72f7c4-72cb-41b8-b58e-1a3faeced5f4" body="This &quot;helper class&quot; implements the timer's task execution thread, which&#xA;waits for tasks on the timer queue, executions them when they fire,&#xA;reschedules repeating tasks, and removes cancelled tasks and spent&#xA;non-repeating tasks from the queue.&#xA;" annotatedElement="87a9b261-4ddf-4477-9e3b-891c7f380357"/>
            <generalization xmi:id="7d573b55-175e-46aa-adba-23a660172b8b" isSubstitutable="true" general="c9830202-c9c4-48c6-a18c-376520128934"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="15581cb3-f33d-4deb-9456-fe83f0817c37" name="Iterator&lt;T>">
            <templateBinding xmi:id="fa0cb6a6-13aa-4c22-ba40-cca2bd777c72" signature="0f8c6981-4608-4e07-a119-f77e4e17cb2d">
              <parameterSubstitution xmi:id="891db3b7-cbe2-4e69-9b9e-9211a81399a2" formal="3b71f5d7-d328-40b6-8dcc-6484e179fd5e" actual="6a2d2828-be7d-4514-9dad-9ba96f17e3b2"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="41a82874-01be-4b9e-ace2-f66f90f3969d" name="TooManyListenersException">
            <ownedComment xmi:id="4401cc9d-cb0b-46f4-92b6-16e354993a03" body="&lt;p>&#xA;The &lt;code> TooManyListenersException &lt;/code> Exception is used as part of&#xA;the Java Event model to annotate and implement a unicast special case of&#xA;a multicast Event Source.&#xA;&lt;/p>&#xA;&lt;p>&#xA;The presence of a &quot;throws TooManyListenersException&quot; clause on any given&#xA;concrete implementation of the normally multicast &quot;void addXyzEventListener&quot;&#xA;event listener registration pattern is used to annotate that interface as&#xA;implementing a unicast Listener special case, that is, that one and only&#xA;one Listener may be registered on the particular event listener source&#xA;concurrently.&#xA;&lt;/p>&#xA;&#xA;@see java.util.EventObject&#xA;@see java.util.EventListener&#xA;&#xA;@version 1.13 03/12/19&#xA;@author Laurence P. G. Cable&#xA;@since  JDK1.1&#xA;" annotatedElement="41a82874-01be-4b9e-ace2-f66f90f3969d"/>
            <generalization xmi:id="8eab243e-289c-4103-9f96-5f084f462a70" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0bc5fab0-36f4-4c62-8885-21ca82ffef34" name="IllegalFormatFlagsException">
            <ownedComment xmi:id="5a6d7bfa-76c7-46cd-a894-6d1a14f383e2" body="Unchecked exception thrown when an illegal combination flags is given.&#xA;&#xA;&lt;p> Unless otherwise specified, passing a &lt;tt>null&lt;/tt> argument to any&#xA;method or constructor in this class will cause a {@link&#xA;NullPointerException} to be thrown.&#xA;&#xA;@version &#x9;1.2, 12/19/03&#xA;@since 1.5&#xA;" annotatedElement="0bc5fab0-36f4-4c62-8885-21ca82ffef34"/>
            <generalization xmi:id="c9a72922-1598-417b-8e2b-522dae823661" isSubstitutable="true" general="615b003b-a7bd-4b48-ba53-15e2ad73fd34"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="a48c5458-c7b2-4e75-a2df-1f6b3497ce89" name="Comparable&lt;UUID>">
            <templateBinding xmi:id="89517642-c940-4b9d-b4e5-e2a6c75e0130" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="6ef737b0-2366-4bd4-a549-49a131121abc" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="08169de2-5b98-4cfa-9973-112d030aac98"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="cd0eec37-d9c2-4166-99f2-acdd6a97438c" name="regex">
            <packagedElement xmi:type="uml:Class" xmi:id="0b4f02ad-d6d9-4d8b-a644-7bc10a969235" name="PatternSyntaxException">
              <ownedComment xmi:id="07d2da40-003b-49f4-a190-2324f521e411" body="Unchecked exception thrown to indicate a syntax error in a&#xA;regular-expression pattern.&#xA;&#xA;@author  unascribed&#xA;@version 1.13, 03/12/19&#xA;@since 1.4&#xA;@spec JSR-51&#xA;" annotatedElement="0b4f02ad-d6d9-4d8b-a644-7bc10a969235"/>
              <generalization xmi:id="eb6df9b3-86d6-4bf5-b029-10fdc741f672" isSubstitutable="true" general="015b8627-f5b5-477f-8717-4d7c48152015"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0fd7e40e-9008-43f6-9417-81d661201005" name="Pattern" clientDependency="e1b40d27-b584-4a8d-b5c5-eb9df6e2928f" isLeaf="true">
              <ownedComment xmi:id="2dcc5469-257f-4487-872a-f8fec9b81b65" body="A compiled representation of a regular expression.&#xA;&#xA;&lt;p> A regular expression, specified as a string, must first be compiled into&#xA;an instance of this class.  The resulting pattern can then be used to create&#xA;a {@link Matcher} object that can match arbitrary {@link&#xA;java.lang.CharSequence &lt;/code>character sequences&lt;code>} against the regular&#xA;expression.  All of the state involved in performing a match resides in the&#xA;matcher, so many matchers can share the same pattern.&#xA;&#xA;&lt;p> A typical invocation sequence is thus&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;Pattern p = Pattern.{@link #compile compile}(&quot;a*b&quot;);&#xA;Matcher m = p.{@link #matcher matcher}(&quot;aaaaab&quot;);&#xA;boolean b = m.{@link Matcher#matches matches}();&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p> A {@link #matches matches} method is defined by this class as a&#xA;convenience for when a regular expression is used just once.  This method&#xA;compiles an expression and matches an input sequence against it in a single&#xA;invocation.  The statement&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;boolean b = Pattern.matches(&quot;a*b&quot;, &quot;aaaaab&quot;);&lt;/pre>&lt;/blockquote>&#xA;&#xA;is equivalent to the three statements above, though for repeated matches it&#xA;is less efficient since it does not allow the compiled pattern to be reused.&#xA;&#xA;&lt;p> Instances of this class are immutable and are safe for use by multiple&#xA;concurrent threads.  Instances of the {@link Matcher} class are not safe for&#xA;such use.&#xA;&#xA;&#xA;&lt;a name=&quot;sum&quot;>&#xA;&lt;h4> Summary of regular-expression constructs &lt;/h4>&#xA;&#xA;&lt;table border=&quot;0&quot; cellpadding=&quot;1&quot; cellspacing=&quot;0&quot;&#xA;summary=&quot;Regular expression constructs, and what they match&quot;>&#xA;&#xA;&lt;tr align=&quot;left&quot;>&#xA;&lt;th bgcolor=&quot;#CCCCFF&quot; align=&quot;left&quot; id=&quot;construct&quot;>Construct&lt;/th>&#xA;&lt;th bgcolor=&quot;#CCCCFF&quot; align=&quot;left&quot; id=&quot;matches&quot;>Matches&lt;/th>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&lt;th>&amp;nbsp;&lt;/th>&lt;/tr>&#xA;&lt;tr align=&quot;left&quot;>&lt;th colspan=&quot;2&quot; id=&quot;characters&quot;>Characters&lt;/th>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct characters&quot;>&lt;i>x&lt;/i>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The character &lt;i>x&lt;/i>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct characters&quot;>&lt;tt>\\&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The backslash character&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct characters&quot;>&lt;tt>\0&lt;/tt>&lt;i>n&lt;/i>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The character with octal value &lt;tt>0&lt;/tt>&lt;i>n&lt;/i>&#xA;(0&amp;nbsp;&lt;tt>&lt;=&lt;/tt>&amp;nbsp;&lt;i>n&lt;/i>&amp;nbsp;&lt;tt>&lt;=&lt;/tt>&amp;nbsp;7)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct characters&quot;>&lt;tt>\0&lt;/tt>&lt;i>nn&lt;/i>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The character with octal value &lt;tt>0&lt;/tt>&lt;i>nn&lt;/i>&#xA;(0&amp;nbsp;&lt;tt>&lt;=&lt;/tt>&amp;nbsp;&lt;i>n&lt;/i>&amp;nbsp;&lt;tt>&lt;=&lt;/tt>&amp;nbsp;7)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct characters&quot;>&lt;tt>\0&lt;/tt>&lt;i>mnn&lt;/i>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The character with octal value &lt;tt>0&lt;/tt>&lt;i>mnn&lt;/i>&#xA;(0&amp;nbsp;&lt;tt>&lt;=&lt;/tt>&amp;nbsp;&lt;i>m&lt;/i>&amp;nbsp;&lt;tt>&lt;=&lt;/tt>&amp;nbsp;3,&#xA;0&amp;nbsp;&lt;tt>&lt;=&lt;/tt>&amp;nbsp;&lt;i>n&lt;/i>&amp;nbsp;&lt;tt>&lt;=&lt;/tt>&amp;nbsp;7)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct characters&quot;>&lt;tt>\x&lt;/tt>&lt;i>hh&lt;/i>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The character with hexadecimal&amp;nbsp;value&amp;nbsp;&lt;tt>0x&lt;/tt>&lt;i>hh&lt;/i>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct characters&quot;>&lt;tt>&amp;#92;u&lt;/tt>&lt;i>hhhh&lt;/i>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The character with hexadecimal&amp;nbsp;value&amp;nbsp;&lt;tt>0x&lt;/tt>&lt;i>hhhh&lt;/i>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;matches&quot;>&lt;tt>\t&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The tab character (&lt;tt>'&amp;#92;u0009'&lt;/tt>)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct characters&quot;>&lt;tt>\n&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The newline (line feed) character (&lt;tt>'&amp;#92;u000A'&lt;/tt>)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct characters&quot;>&lt;tt>\r&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The carriage-return character (&lt;tt>'&amp;#92;u000D'&lt;/tt>)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct characters&quot;>&lt;tt>\f&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The form-feed character (&lt;tt>'&amp;#92;u000C'&lt;/tt>)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct characters&quot;>&lt;tt>\a&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The alert (bell) character (&lt;tt>'&amp;#92;u0007'&lt;/tt>)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct characters&quot;>&lt;tt>\e&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The escape character (&lt;tt>'&amp;#92;u001B'&lt;/tt>)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct characters&quot;>&lt;tt>\c&lt;/tt>&lt;i>x&lt;/i>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The control character corresponding to &lt;i>x&lt;/i>&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;th>&amp;nbsp;&lt;/th>&lt;/tr>&#xA;&lt;tr align=&quot;left&quot;>&lt;th colspan=&quot;2&quot; id=&quot;classes&quot;>Character classes&lt;/th>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct classes&quot;>&lt;tt>[abc]&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;tt>a&lt;/tt>, &lt;tt>b&lt;/tt>, or &lt;tt>c&lt;/tt> (simple class)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct classes&quot;>&lt;tt>[^abc]&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>Any character except &lt;tt>a&lt;/tt>, &lt;tt>b&lt;/tt>, or &lt;tt>c&lt;/tt> (negation)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct classes&quot;>&lt;tt>[a-zA-Z]&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;tt>a&lt;/tt> through &lt;tt>z&lt;/tt>&#xA;or &lt;tt>A&lt;/tt> through &lt;tt>Z&lt;/tt>, inclusive (range)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct classes&quot;>&lt;tt>[a-d[m-p]]&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;tt>a&lt;/tt> through &lt;tt>d&lt;/tt>,&#xA;or &lt;tt>m&lt;/tt> through &lt;tt>p&lt;/tt>: &lt;tt>[a-dm-p]&lt;/tt> (union)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct classes&quot;>&lt;tt>[a-z&amp;&amp;[def]]&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;tt>d&lt;/tt>, &lt;tt>e&lt;/tt>, or &lt;tt>f&lt;/tt> (intersection)&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct classes&quot;>&lt;tt>[a-z&amp;&amp;[^bc]]&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;tt>a&lt;/tt> through &lt;tt>z&lt;/tt>,&#xA;except for &lt;tt>b&lt;/tt> and &lt;tt>c&lt;/tt>: &lt;tt>[ad-z]&lt;/tt> (subtraction)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct classes&quot;>&lt;tt>[a-z&amp;&amp;[^m-p]]&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;tt>a&lt;/tt> through &lt;tt>z&lt;/tt>,&#xA;and not &lt;tt>m&lt;/tt> through &lt;tt>p&lt;/tt>: &lt;tt>[a-lq-z]&lt;/tt>(subtraction)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;th>&amp;nbsp;&lt;/th>&lt;/tr>&#xA;&#xA;&lt;tr align=&quot;left&quot;>&lt;th colspan=&quot;2&quot; id=&quot;predef&quot;>Predefined character classes&lt;/th>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct predef&quot;>&lt;tt>.&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>Any character (may or may not match &lt;a href=&quot;#lt&quot;>line terminators&lt;/a>)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct predef&quot;>&lt;tt>\d&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>A digit: &lt;tt>[0-9]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct predef&quot;>&lt;tt>\D&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>A non-digit: &lt;tt>[^0-9]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct predef&quot;>&lt;tt>\s&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>A whitespace character: &lt;tt>[ \t\n\x0B\f\r]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct predef&quot;>&lt;tt>\S&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>A non-whitespace character: &lt;tt>[^\s]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct predef&quot;>&lt;tt>\w&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>A word character: &lt;tt>[a-zA-Z_0-9]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct predef&quot;>&lt;tt>\W&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>A non-word character: &lt;tt>[^\w]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;th>&amp;nbsp;&lt;/th>&lt;/tr>&#xA;&lt;tr align=&quot;left&quot;>&lt;th colspan=&quot;2&quot; id=&quot;posix&quot;>POSIX character classes&lt;/b> (US-ASCII only)&lt;b>&lt;/th>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct posix&quot;>&lt;tt>\p{Lower}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>A lower-case alphabetic character: &lt;tt>[a-z]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct posix&quot;>&lt;tt>\p{Upper}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>An upper-case alphabetic character:&lt;tt>[A-Z]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct posix&quot;>&lt;tt>\p{ASCII}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>All ASCII:&lt;tt>[\x00-\x7F]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct posix&quot;>&lt;tt>\p{Alpha}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>An alphabetic character:&lt;tt>[\p{Lower}\p{Upper}]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct posix&quot;>&lt;tt>\p{Digit}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>A decimal digit: &lt;tt>[0-9]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct posix&quot;>&lt;tt>\p{Alnum}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>An alphanumeric character:&lt;tt>[\p{Alpha}\p{Digit}]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct posix&quot;>&lt;tt>\p{Punct}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>Punctuation: One of &lt;tt>!&quot;#$%&amp;'()*+,-./:;&lt;=>?@[\]^_`{|}~&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;!-- &lt;tt>[\!&quot;#\$%&amp;'\(\)\*\+,\-\./:;\&lt;=\>\?@\[\\\]\^_`\{\|\}~]&lt;/tt>&#xA;&lt;tt>[\X21-\X2F\X31-\X40\X5B-\X60\X7B-\X7E]&lt;/tt> -->&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct posix&quot;>&lt;tt>\p{Graph}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>A visible character: &lt;tt>[\p{Alnum}\p{Punct}]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct posix&quot;>&lt;tt>\p{Print}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>A printable character: &lt;tt>[\p{Graph}\x20]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct posix&quot;>&lt;tt>\p{Blank}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>A space or a tab: &lt;tt>[ \t]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct posix&quot;>&lt;tt>\p{Cntrl}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>A control character: &lt;tt>[\x00-\x1F\x7F]&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct posix&quot;>&lt;tt>\p{XDigit}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>A hexadecimal digit: &lt;tt>[0-9a-fA-F]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct posix&quot;>&lt;tt>\p{Space}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>A whitespace character: &lt;tt>[ \t\n\x0B\f\r]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;th>&amp;nbsp;&lt;/th>&lt;/tr>&#xA;&lt;tr align=&quot;left&quot;>&lt;th colspan=&quot;2&quot;>java.lang.Character classes (simple &lt;a href=&quot;#jcc&quot;>java character type&lt;/a>)&lt;/th>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>\p{javaLowerCase}&lt;/tt>&lt;/td>&#xA;&lt;td>Equivalent to java.lang.Character.isLowerCase()&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>\p{javaUpperCase}&lt;/tt>&lt;/td>&#xA;&lt;td>Equivalent to java.lang.Character.isUpperCase()&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>\p{javaWhitespace}&lt;/tt>&lt;/td>&#xA;&lt;td>Equivalent to java.lang.Character.isWhitespace()&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>\p{javaMirrored}&lt;/tt>&lt;/td>&#xA;&lt;td>Equivalent to java.lang.Character.isMirrored()&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;th>&amp;nbsp;&lt;/th>&lt;/tr>&#xA;&lt;tr align=&quot;left&quot;>&lt;th colspan=&quot;2&quot; id=&quot;unicode&quot;>Classes for Unicode blocks and categories&lt;/th>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct unicode&quot;>&lt;tt>\p{InGreek}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>A character in the Greek&amp;nbsp;block (simple &lt;a href=&quot;#ubc&quot;>block&lt;/a>)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct unicode&quot;>&lt;tt>\p{Lu}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>An uppercase letter (simple &lt;a href=&quot;#ubc&quot;>category&lt;/a>)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct unicode&quot;>&lt;tt>\p{Sc}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>A currency symbol&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct unicode&quot;>&lt;tt>\P{InGreek}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>Any character except one in the Greek block (negation)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct unicode&quot;>&lt;tt>[\p{L}&amp;&amp;[^\p{Lu}]]&amp;nbsp;&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>Any letter except an uppercase letter (subtraction)&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;th>&amp;nbsp;&lt;/th>&lt;/tr>&#xA;&lt;tr align=&quot;left&quot;>&lt;th colspan=&quot;2&quot; id=&quot;bounds&quot;>Boundary matchers&lt;/th>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct bounds&quot;>&lt;tt>^&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The beginning of a line&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct bounds&quot;>&lt;tt>$&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The end of a line&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct bounds&quot;>&lt;tt>\b&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>A word boundary&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct bounds&quot;>&lt;tt>\B&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>A non-word boundary&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct bounds&quot;>&lt;tt>\A&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The beginning of the input&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct bounds&quot;>&lt;tt>\G&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The end of the previous match&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct bounds&quot;>&lt;tt>\Z&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The end of the input but for the final&#xA;&lt;a href=&quot;#lt&quot;>terminator&lt;/a>, if&amp;nbsp;any&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct bounds&quot;>&lt;tt>\z&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>The end of the input&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;th>&amp;nbsp;&lt;/th>&lt;/tr>&#xA;&lt;tr align=&quot;left&quot;>&lt;th colspan=&quot;2&quot; id=&quot;greedy&quot;>Greedy quantifiers&lt;/th>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct greedy&quot;>&lt;i>X&lt;/i>&lt;tt>?&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, once or not at all&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct greedy&quot;>&lt;i>X&lt;/i>&lt;tt>*&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, zero or more times&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct greedy&quot;>&lt;i>X&lt;/i>&lt;tt>+&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, one or more times&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct greedy&quot;>&lt;i>X&lt;/i>&lt;tt>{&lt;/tt>&lt;i>n&lt;/i>&lt;tt>}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, exactly &lt;i>n&lt;/i> times&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct greedy&quot;>&lt;i>X&lt;/i>&lt;tt>{&lt;/tt>&lt;i>n&lt;/i>&lt;tt>,}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, at least &lt;i>n&lt;/i> times&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct greedy&quot;>&lt;i>X&lt;/i>&lt;tt>{&lt;/tt>&lt;i>n&lt;/i>&lt;tt>,&lt;/tt>&lt;i>m&lt;/i>&lt;tt>}&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, at least &lt;i>n&lt;/i> but not more than &lt;i>m&lt;/i> times&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;th>&amp;nbsp;&lt;/th>&lt;/tr>&#xA;&lt;tr align=&quot;left&quot;>&lt;th colspan=&quot;2&quot; id=&quot;reluc&quot;>Reluctant quantifiers&lt;/th>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct reluc&quot;>&lt;i>X&lt;/i>&lt;tt>??&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, once or not at all&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct reluc&quot;>&lt;i>X&lt;/i>&lt;tt>*?&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, zero or more times&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct reluc&quot;>&lt;i>X&lt;/i>&lt;tt>+?&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, one or more times&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct reluc&quot;>&lt;i>X&lt;/i>&lt;tt>{&lt;/tt>&lt;i>n&lt;/i>&lt;tt>}?&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, exactly &lt;i>n&lt;/i> times&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct reluc&quot;>&lt;i>X&lt;/i>&lt;tt>{&lt;/tt>&lt;i>n&lt;/i>&lt;tt>,}?&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, at least &lt;i>n&lt;/i> times&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct reluc&quot;>&lt;i>X&lt;/i>&lt;tt>{&lt;/tt>&lt;i>n&lt;/i>&lt;tt>,&lt;/tt>&lt;i>m&lt;/i>&lt;tt>}?&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, at least &lt;i>n&lt;/i> but not more than &lt;i>m&lt;/i> times&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;th>&amp;nbsp;&lt;/th>&lt;/tr>&#xA;&lt;tr align=&quot;left&quot;>&lt;th colspan=&quot;2&quot; id=&quot;poss&quot;>Possessive quantifiers&lt;/th>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct poss&quot;>&lt;i>X&lt;/i>&lt;tt>?+&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, once or not at all&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct poss&quot;>&lt;i>X&lt;/i>&lt;tt>*+&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, zero or more times&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct poss&quot;>&lt;i>X&lt;/i>&lt;tt>++&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, one or more times&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct poss&quot;>&lt;i>X&lt;/i>&lt;tt>{&lt;/tt>&lt;i>n&lt;/i>&lt;tt>}+&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, exactly &lt;i>n&lt;/i> times&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct poss&quot;>&lt;i>X&lt;/i>&lt;tt>{&lt;/tt>&lt;i>n&lt;/i>&lt;tt>,}+&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, at least &lt;i>n&lt;/i> times&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct poss&quot;>&lt;i>X&lt;/i>&lt;tt>{&lt;/tt>&lt;i>n&lt;/i>&lt;tt>,&lt;/tt>&lt;i>m&lt;/i>&lt;tt>}+&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, at least &lt;i>n&lt;/i> but not more than &lt;i>m&lt;/i> times&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;th>&amp;nbsp;&lt;/th>&lt;/tr>&#xA;&lt;tr align=&quot;left&quot;>&lt;th colspan=&quot;2&quot; id=&quot;logical&quot;>Logical operators&lt;/th>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct logical&quot;>&lt;i>XY&lt;/i>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i> followed by &lt;i>Y&lt;/i>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct logical&quot;>&lt;i>X&lt;/i>&lt;tt>|&lt;/tt>&lt;i>Y&lt;/i>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>Either &lt;i>X&lt;/i> or &lt;i>Y&lt;/i>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct logical&quot;>&lt;tt>(&lt;/tt>&lt;i>X&lt;/i>&lt;tt>)&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>X, as a &lt;a href=&quot;#cg&quot;>capturing group&lt;/a>&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;th>&amp;nbsp;&lt;/th>&lt;/tr>&#xA;&lt;tr align=&quot;left&quot;>&lt;th colspan=&quot;2&quot; id=&quot;backref&quot;>Back references&lt;/th>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;bottom&quot; headers=&quot;construct backref&quot;>&lt;tt>\&lt;/tt>&lt;i>n&lt;/i>&lt;/td>&#xA;&lt;td valign=&quot;bottom&quot; headers=&quot;matches&quot;>Whatever the &lt;i>n&lt;/i>&lt;sup>th&lt;/sup>&#xA;&lt;a href=&quot;#cg&quot;>capturing group&lt;/a> matched&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;th>&amp;nbsp;&lt;/th>&lt;/tr>&#xA;&lt;tr align=&quot;left&quot;>&lt;th colspan=&quot;2&quot; id=&quot;quot&quot;>Quotation&lt;/th>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct quot&quot;>&lt;tt>\&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>Nothing, but quotes the following character&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct quot&quot;>&lt;tt>\Q&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>Nothing, but quotes all characters until &lt;tt>\E&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct quot&quot;>&lt;tt>\E&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>Nothing, but ends quoting started by &lt;tt>\Q&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;!-- Metachars: !$()*+.&lt;>?[\]^{|} -->&#xA;&#xA;&lt;tr>&lt;th>&amp;nbsp;&lt;/th>&lt;/tr>&#xA;&lt;tr align=&quot;left&quot;>&lt;th colspan=&quot;2&quot; id=&quot;special&quot;>Special constructs (non-capturing)&lt;/th>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct special&quot;>&lt;tt>(?:&lt;/tt>&lt;i>X&lt;/i>&lt;tt>)&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, as a non-capturing group&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct special&quot;>&lt;tt>(?idmsux-idmsux)&amp;nbsp;&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>Nothing, but turns match flags on - off&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct special&quot;>&lt;tt>(?idmsux-idmsux:&lt;/tt>&lt;i>X&lt;/i>&lt;tt>)&lt;/tt>&amp;nbsp;&amp;nbsp;&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, as a &lt;a href=&quot;#cg&quot;>non-capturing group&lt;/a> with the&#xA;given flags on - off&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct special&quot;>&lt;tt>(?=&lt;/tt>&lt;i>X&lt;/i>&lt;tt>)&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, via zero-width positive lookahead&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct special&quot;>&lt;tt>(?!&lt;/tt>&lt;i>X&lt;/i>&lt;tt>)&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, via zero-width negative lookahead&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct special&quot;>&lt;tt>(?&lt;=&lt;/tt>&lt;i>X&lt;/i>&lt;tt>)&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, via zero-width positive lookbehind&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct special&quot;>&lt;tt>(?&lt;!&lt;/tt>&lt;i>X&lt;/i>&lt;tt>)&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, via zero-width negative lookbehind&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot; headers=&quot;construct special&quot;>&lt;tt>(?>&lt;/tt>&lt;i>X&lt;/i>&lt;tt>)&lt;/tt>&lt;/td>&#xA;&lt;td headers=&quot;matches&quot;>&lt;i>X&lt;/i>, as an independent, non-capturing group&lt;/td>&lt;/tr>&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;hr>&#xA;&#xA;&#xA;&lt;a name=&quot;bs&quot;>&#xA;&lt;h4> Backslashes, escapes, and quoting &lt;/h4>&#xA;&#xA;&lt;p> The backslash character (&lt;tt>'\'&lt;/tt>) serves to introduce escaped&#xA;constructs, as defined in the table above, as well as to quote characters&#xA;that otherwise would be interpreted as unescaped constructs.  Thus the&#xA;expression &lt;tt>\\&lt;/tt> matches a single backslash and &lt;tt>\{&lt;/tt> matches a&#xA;left brace.&#xA;&#xA;&lt;p> It is an error to use a backslash prior to any alphabetic character that&#xA;does not denote an escaped construct; these are reserved for future&#xA;extensions to the regular-expression language.  A backslash may be used&#xA;prior to a non-alphabetic character regardless of whether that character is&#xA;part of an unescaped construct.&#xA;&#xA;&lt;p> Backslashes within string literals in Java source code are interpreted&#xA;as required by the &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/jls/second_edition/html/&quot;>Java Language&#xA;Specification&lt;/a> as either &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#100850&quot;>Unicode&#xA;escapes&lt;/a> or other &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#101089&quot;>character&#xA;escapes&lt;/a>.  It is therefore necessary to double backslashes in string&#xA;literals that represent regular expressions to protect them from&#xA;interpretation by the Java bytecode compiler.  The string literal&#xA;&lt;tt>&quot;&amp;#92;b&quot;&lt;/tt>, for example, matches a single backspace character when&#xA;interpreted as a regular expression, while &lt;tt>&quot;&amp;#92;&amp;#92;b&quot;&lt;/tt> matches a&#xA;word boundary.  The string literal &lt;tt>&quot;&amp;#92;(hello&amp;#92;)&quot;&lt;/tt> is illegal&#xA;and leads to a compile-time error; in order to match the string&#xA;&lt;tt>(hello)&lt;/tt> the string literal &lt;tt>&quot;&amp;#92;&amp;#92;(hello&amp;#92;&amp;#92;)&quot;&lt;/tt>&#xA;must be used.&#xA;&#xA;&lt;a name=&quot;cc&quot;>&#xA;&lt;h4> Character Classes &lt;/h4>&#xA;&#xA;&lt;p> Character classes may appear within other character classes, and&#xA;may be composed by the union operator (implicit) and the intersection&#xA;operator (&lt;tt>&amp;&amp;&lt;/tt>).&#xA;The union operator denotes a class that contains every character that is&#xA;in at least one of its operand classes.  The intersection operator&#xA;denotes a class that contains every character that is in both of its&#xA;operand classes.&#xA;&#xA;&lt;p> The precedence of character-class operators is as follows, from&#xA;highest to lowest:&#xA;&#xA;&lt;blockquote>&lt;table border=&quot;0&quot; cellpadding=&quot;1&quot; cellspacing=&quot;0&quot;&#xA;summary=&quot;Precedence of character class operators.&quot;>&#xA;&lt;tr>&lt;th>1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/th>&#xA;&lt;td>Literal escape&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/td>&#xA;&lt;td>&lt;tt>\x&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;th>2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/th>&#xA;&lt;td>Grouping&lt;/td>&#xA;&lt;td>&lt;tt>[...]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;th>3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/th>&#xA;&lt;td>Range&lt;/td>&#xA;&lt;td>&lt;tt>a-z&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;th>4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/th>&#xA;&lt;td>Union&lt;/td>&#xA;&lt;td>&lt;tt>[a-e][i-u]&lt;tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;th>5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/th>&#xA;&lt;td>Intersection&lt;/td>&#xA;&lt;td>&lt;tt>[a-z&amp;&amp;[aeiou]]&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;/table>&lt;/blockquote>&#xA;&#xA;&lt;p> Note that a different set of metacharacters are in effect inside&#xA;a character class than outside a character class. For instance, the&#xA;regular expression &lt;tt>.&lt;/tt> loses its special meaning inside a&#xA;character class, while the expression &lt;tt>-&lt;/tt> becomes a range&#xA;forming metacharacter.&#xA;&#xA;&lt;a name=&quot;lt&quot;>&#xA;&lt;h4> Line terminators &lt;/h4>&#xA;&#xA;&lt;p> A &lt;i>line terminator&lt;/i> is a one- or two-character sequence that marks&#xA;the end of a line of the input character sequence.  The following are&#xA;recognized as line terminators:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li> A newline (line feed) character&amp;nbsp;(&lt;tt>'\n'&lt;/tt>),&#xA;&#xA;&lt;li> A carriage-return character followed immediately by a newline&#xA;character&amp;nbsp;(&lt;tt>&quot;\r\n&quot;&lt;/tt>),&#xA;&#xA;&lt;li> A standalone carriage-return character&amp;nbsp;(&lt;tt>'\r'&lt;/tt>),&#xA;&#xA;&lt;li> A next-line character&amp;nbsp;(&lt;tt>'&amp;#92;u0085'&lt;/tt>),&#xA;&#xA;&lt;li> A line-separator character&amp;nbsp;(&lt;tt>'&amp;#92;u2028'&lt;/tt>), or&#xA;&#xA;&lt;li> A paragraph-separator character&amp;nbsp;(&lt;tt>'&amp;#92;u2029&lt;/tt>).&#xA;&#xA;&lt;/ul>&#xA;&lt;p>If {@link #UNIX_LINES} mode is activated, then the only line terminators&#xA;recognized are newline characters.&#xA;&#xA;&lt;p> The regular expression &lt;tt>.&lt;/tt> matches any character except a line&#xA;terminator unless the {@link #DOTALL} flag is specified.&#xA;&#xA;&lt;p> By default, the regular expressions &lt;tt>^&lt;/tt> and &lt;tt>$&lt;/tt> ignore&#xA;line terminators and only match at the beginning and the end, respectively,&#xA;of the entire input sequence. If {@link #MULTILINE} mode is activated then&#xA;&lt;tt>^&lt;/tt> matches at the beginning of input and after any line terminator&#xA;except at the end of input. When in {@link #MULTILINE} mode &lt;tt>$&lt;/tt>&#xA;matches just before a line terminator or the end of the input sequence.&#xA;&#xA;&lt;a name=&quot;cg&quot;>&#xA;&lt;h4> Groups and capturing &lt;/h4>&#xA;&#xA;&lt;p> Capturing groups are numbered by counting their opening parentheses from&#xA;left to right.  In the expression &lt;tt>((A)(B(C)))&lt;/tt>, for example, there&#xA;are four such groups: &lt;/p>&#xA;&#xA;&lt;blockquote>&lt;table cellpadding=1 cellspacing=0 summary=&quot;Capturing group numberings&quot;>&#xA;&lt;tr>&lt;th>1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/th>&#xA;&lt;td>&lt;tt>((A)(B(C)))&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;th>2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/th>&#xA;&lt;td>&lt;tt>(A)&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;th>3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/th>&#xA;&lt;td>&lt;tt>(B(C))&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;th>4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/th>&#xA;&lt;td>&lt;tt>(C)&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;/table>&lt;/blockquote>&#xA;&#xA;&lt;p> Group zero always stands for the entire expression.&#xA;&#xA;&lt;p> Capturing groups are so named because, during a match, each subsequence&#xA;of the input sequence that matches such a group is saved.  The captured&#xA;subsequence may be used later in the expression, via a back reference, and&#xA;may also be retrieved from the matcher once the match operation is complete.&#xA;&#xA;&lt;p> The captured input associated with a group is always the subsequence&#xA;that the group most recently matched.  If a group is evaluated a second time&#xA;because of quantification then its previously-captured value, if any, will&#xA;be retained if the second evaluation fails.  Matching the string&#xA;&lt;tt>&quot;aba&quot;&lt;/tt> against the expression &lt;tt>(a(b)?)+&lt;/tt>, for example, leaves&#xA;group two set to &lt;tt>&quot;b&quot;&lt;/tt>.  All captured input is discarded at the&#xA;beginning of each match.&#xA;&#xA;&lt;p> Groups beginning with &lt;tt>(?&lt;/tt> are pure, &lt;i>non-capturing&lt;/i> groups&#xA;that do not capture text and do not count towards the group total.&#xA;&#xA;&#xA;&lt;h4> Unicode support &lt;/h4>&#xA;&#xA;&lt;p> This class is in conformance with Level 1 of &lt;a&#xA;href=&quot;http://www.unicode.org/reports/tr18/&quot;>&lt;i>Unicode Technical&#xA;Standard #18: Unicode Regular Expression Guidelines&lt;/i>&lt;/a>, plus RL2.1&#xA;Canonical Equivalents.&#xA;&#xA;&lt;p> Unicode escape sequences such as &lt;tt>&amp;#92;u2014&lt;/tt> in Java source code&#xA;are processed as described in &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#100850&quot;>\u00A73.3&lt;/a>&#xA;of the Java Language Specification.  Such escape sequences are also&#xA;implemented directly by the regular-expression parser so that Unicode&#xA;escapes can be used in expressions that are read from files or from the&#xA;keyboard.  Thus the strings &lt;tt>&quot;&amp;#92;u2014&quot;&lt;/tt> and &lt;tt>&quot;\\u2014&quot;&lt;/tt>,&#xA;while not equal, compile into the same pattern, which matches the character&#xA;with hexadecimal value &lt;tt>0x2014&lt;/tt>.&#xA;&#xA;&lt;a name=&quot;ubc&quot;> &lt;p>Unicode blocks and categories are written with the&#xA;&lt;tt>\p&lt;/tt> and &lt;tt>\P&lt;/tt> constructs as in&#xA;Perl. &lt;tt>\p{&lt;/tt>&lt;i>prop&lt;/i>&lt;tt>}&lt;/tt> matches if the input has the&#xA;property &lt;i>prop&lt;/i>, while \P{&lt;/tt>&lt;i>prop&lt;/i>&lt;tt>}&lt;/tt> does not match if&#xA;the input has that property.  Blocks are specified with the prefix&#xA;&lt;tt>In&lt;/tt>, as in &lt;tt>InMongolian&lt;/tt>.  Categories may be specified with&#xA;the optional prefix &lt;tt>Is&lt;/tt>: Both &lt;tt>\p{L}&lt;/tt> and &lt;tt>\p{IsL}&lt;/tt>&#xA;denote the category of Unicode letters.  Blocks and categories can be used&#xA;both inside and outside of a character class.&#xA;&#xA;&lt;p> The supported categories are those of&#xA;&lt;a href=&quot;http://www.unicode.org/unicode/standard/standard.html&quot;>&#xA;&lt;i>The Unicode Standard&lt;/i>&lt;/a> in the version specified by the&#xA;{@link java.lang.Character Character} class. The category names are those&#xA;defined in the Standard, both normative and informative.&#xA;The block names supported by &lt;code>Pattern&lt;/code> are the valid block names&#xA;accepted and defined by&#xA;{@link java.lang.Character.UnicodeBlock#forName(String) UnicodeBlock.forName}.&#xA;&#xA;&lt;a name=&quot;jcc&quot;> &lt;p>Categories that behave like the java.lang.Character&#xA;boolean is&lt;i>methodname&lt;/i> methods (except for the deprecated ones) are&#xA;available through the same &lt;tt>\p{&lt;/tt>&lt;i>prop&lt;/i>&lt;tt>}&lt;/tt> syntax where&#xA;the specified property has the name &lt;tt>java&lt;i>methodname&lt;/i>&lt;/tt>.&#xA;&#xA;&lt;h4> Comparison to Perl 5 &lt;/h4>&#xA;&#xA;&lt;p>The &lt;code>Pattern&lt;/code> engine performs traditional NFA-based matching&#xA;with ordered alternation as occurs in Perl 5.&#xA;&#xA;&lt;p> Perl constructs not supported by this class: &lt;/p>&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> The conditional constructs &lt;tt>(?{&lt;/tt>&lt;i>X&lt;/i>&lt;tt>})&lt;/tt> and&#xA;&lt;tt>(?(&lt;/tt>&lt;i>condition&lt;/i>&lt;tt>)&lt;/tt>&lt;i>X&lt;/i>&lt;tt>|&lt;/tt>&lt;i>Y&lt;/i>&lt;tt>)&lt;/tt>,&#xA;&lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> The embedded code constructs &lt;tt>(?{&lt;/tt>&lt;i>code&lt;/i>&lt;tt>})&lt;/tt>&#xA;and &lt;tt>(??{&lt;/tt>&lt;i>code&lt;/i>&lt;tt>})&lt;/tt>,&lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> The embedded comment syntax &lt;tt>(?#comment)&lt;/tt>, and &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> The preprocessing operations &lt;tt>\l&lt;/tt> &lt;tt>&amp;#92;u&lt;/tt>,&#xA;&lt;tt>\L&lt;/tt>, and &lt;tt>\U&lt;/tt>.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p> Constructs supported by this class but not by Perl: &lt;/p>&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> Possessive quantifiers, which greedily match as much as they can&#xA;and do not back off, even when doing so would allow the overall match to&#xA;succeed.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Character-class union and intersection as described&#xA;&lt;a href=&quot;#cc&quot;>above&lt;/a>.&lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p> Notable differences from Perl: &lt;/p>&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> In Perl, &lt;tt>\1&lt;/tt> through &lt;tt>\9&lt;/tt> are always interpreted&#xA;as back references; a backslash-escaped number greater than &lt;tt>9&lt;/tt> is&#xA;treated as a back reference if at least that many subexpressions exist,&#xA;otherwise it is interpreted, if possible, as an octal escape.  In this&#xA;class octal escapes must always begin with a zero. In this class,&#xA;&lt;tt>\1&lt;/tt> through &lt;tt>\9&lt;/tt> are always interpreted as back&#xA;references, and a larger number is accepted as a back reference if at&#xA;least that many subexpressions exist at that point in the regular&#xA;expression, otherwise the parser will drop digits until the number is&#xA;smaller or equal to the existing number of groups or it is one digit.&#xA;&lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Perl uses the &lt;tt>g&lt;/tt> flag to request a match that resumes&#xA;where the last match left off.  This functionality is provided implicitly&#xA;by the {@link Matcher} class: Repeated invocations of the {@link&#xA;Matcher#find find} method will resume where the last match left off,&#xA;unless the matcher is reset.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> In Perl, embedded flags at the top level of an expression affect&#xA;the whole expression.  In this class, embedded flags always take effect&#xA;at the point at which they appear, whether they are at the top level or&#xA;within a group; in the latter case, flags are restored at the end of the&#xA;group just as in Perl.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> Perl is forgiving about malformed matching constructs, as in the&#xA;expression &lt;tt>*a&lt;/tt>, as well as dangling brackets, as in the&#xA;expression &lt;tt>abc]&lt;/tt>, and treats them as literals.  This&#xA;class also accepts dangling brackets but is strict about dangling&#xA;metacharacters like +, ? and *, and will throw a&#xA;{@link PatternSyntaxException} if it encounters them. &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&#xA;&lt;p> For a more precise description of the behavior of regular expression&#xA;constructs, please see &lt;a href=&quot;http://www.oreilly.com/catalog/regex2/&quot;>&#xA;&lt;i>Mastering Regular Expressions, 2nd Edition&lt;/i>, Jeffrey E. F. Friedl,&#xA;O'Reilly and Associates, 2002.&lt;/a>&#xA;&lt;/p>&#xA;&#xA;@see java.lang.String#split(String, int)&#xA;@see java.lang.String#split(String)&#xA;&#xA;@author      Mike McCloskey&#xA;@author      Mark Reinhold&#xA;@author&#x9;JSR-51 Expert Group&#xA;@version &#x9;1.109, 04/06/28&#xA;@since       1.4&#xA;@spec&#x9;JSR-51&#xA;" annotatedElement="0fd7e40e-9008-43f6-9417-81d661201005"/>
              <interfaceRealization xmi:id="e1b40d27-b584-4a8d-b5c5-eb9df6e2928f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0fd7e40e-9008-43f6-9417-81d661201005" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="2d210cc1-8886-49c3-9aa3-3540b34e6aa0" name="TreeInfo" visibility="package" isLeaf="true">
                <ownedComment xmi:id="83613e96-6e2f-46ca-85f9-4ad4b9d05419" body="Used to accumulate information about a subtree of the object graph&#xA;so that optimizations can be applied to the subtree.&#xA;" annotatedElement="2d210cc1-8886-49c3-9aa3-3540b34e6aa0"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="126c580a-6c6d-4651-893c-4b9313a4fffb" name="BitClass" visibility="package" isLeaf="true">
                <ownedComment xmi:id="9c1b0d80-6fd3-4a26-a9df-b55a2965e61a" body="Creates a bit vector for matching Latin-1 values. A normal BitClass&#xA;never matches values above Latin-1, and a complemented BitClass always&#xA;matches values above Latin-1.&#xA;" annotatedElement="126c580a-6c6d-4651-893c-4b9313a4fffb"/>
                <generalization xmi:id="226fbf07-ae8c-4774-81bf-0579ae2868ba" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="e7901300-aa23-4b2f-88de-866200abe660" name="Node" visibility="package">
                <ownedComment xmi:id="50b65a60-de96-4e5c-955f-45785ff8d385" body="Base class for all node classes. Subclasses should override the match()&#xA;method as appropriate. This class is an accepting node, so its match()&#xA;always returns true.&#xA;" annotatedElement="e7901300-aa23-4b2f-88de-866200abe660"/>
                <generalization xmi:id="bb3610f0-48ca-49db-9949-8061f41745fe" isSubstitutable="true" general="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="5e357110-0cd4-4714-b469-069a84782eb2" name="LastNode" visibility="package">
                <generalization xmi:id="46d89a5a-2244-47d8-8297-90cbafff1ca5" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="caf8a3d5-73e9-411f-ae11-6accca1f9f61" name="Dummy" visibility="package">
                <ownedComment xmi:id="24fd45b5-b5ec-4f10-a869-7781fa65a3b3" body="Dummy node to assist in connecting branches.&#xA;" annotatedElement="caf8a3d5-73e9-411f-ae11-6accca1f9f61"/>
                <generalization xmi:id="e8b8673a-7326-4bfd-946e-fd8aada145ba" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="96a276d5-a3a1-42f2-9d62-db9b61e33eeb" name="Start" visibility="package">
                <ownedComment xmi:id="10b6d068-ba5b-438a-ac6b-b91f7662ed0d" body="Used for REs that can start anywhere within the input string.&#xA;This basically tries to match repeatedly at each spot in the&#xA;input string, moving forward after each try. An anchored search&#xA;or a BnM will bypass this node completely.&#xA;" annotatedElement="96a276d5-a3a1-42f2-9d62-db9b61e33eeb"/>
                <generalization xmi:id="68bfe260-ed6a-42ee-83cc-668fa418be96" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="12ea3179-6091-43a8-8667-bcd57938522b" name="Begin" visibility="package" isLeaf="true">
                <ownedComment xmi:id="72fc9498-3047-4033-bdd9-9ef8fb5b02fb" body="Node to anchor at the beginning of input. This object implements the&#xA;match for a \A sequence, and the caret anchor will use this if not in&#xA;multiline mode.&#xA;" annotatedElement="12ea3179-6091-43a8-8667-bcd57938522b"/>
                <generalization xmi:id="d43679af-323a-4656-a450-2deb4a7d1805" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="429b20ae-4866-49ef-95f3-046d958d90d4" name="End" visibility="package" isLeaf="true">
                <ownedComment xmi:id="078e9844-59d3-4fbc-9d40-392be220a0dd" body="Node to anchor at the end of input. This is the absolute end, so this&#xA;should not match at the last newline before the end as $ will.&#xA;" annotatedElement="429b20ae-4866-49ef-95f3-046d958d90d4"/>
                <generalization xmi:id="1149b343-dea3-4fc0-a6c8-79a1f8409cac" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8911a949-4146-4d1f-beee-159d1bf870ef" name="Caret" visibility="package" isLeaf="true">
                <ownedComment xmi:id="4ef68d01-47c0-4e51-8e39-666d1d9586f4" body="Node to anchor at the beginning of a line. This is essentially the&#xA;object to match for the multiline ^.&#xA;" annotatedElement="8911a949-4146-4d1f-beee-159d1bf870ef"/>
                <generalization xmi:id="33fc0fe7-7847-43f3-8b4d-5aeb59bfc8d8" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="3bff1272-d206-4e34-80af-d3ce9d6ba39a" name="UnixCaret" visibility="package" isLeaf="true">
                <ownedComment xmi:id="2e781dcf-d09c-487e-8eba-0ccb43a1c546" body="Node to anchor at the beginning of a line when in unixdot mode.&#xA;" annotatedElement="3bff1272-d206-4e34-80af-d3ce9d6ba39a"/>
                <generalization xmi:id="9b5fc662-4735-41c4-ab6a-bd5555c8fd3c" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="4b16c88a-c391-4ecc-9c3a-b57531c6a0a9" name="LastMatch" visibility="package" isLeaf="true">
                <ownedComment xmi:id="6af24e65-0931-4900-9244-3f858bfe0921" body="Node to match the location where the last match ended.&#xA;This is used for the \G construct.&#xA;" annotatedElement="4b16c88a-c391-4ecc-9c3a-b57531c6a0a9"/>
                <generalization xmi:id="776eb677-6671-4957-8e86-cb1390958865" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0edec1b9-fd1e-4c45-857c-23e3f47eb512" name="Dollar" visibility="package" isLeaf="true">
                <ownedComment xmi:id="09249e03-39c8-4ae6-9511-99942fa58331" body="Node to anchor at the end of a line or the end of input based on the&#xA;multiline mode.&#xA;&#xA;When not in multiline mode, the $ can only match at the very end&#xA;of the input, unless the input ends in a line terminator in which&#xA;it matches right before the last line terminator.&#xA;&#xA;Note that \r\n is considered an atomic line terminator.&#xA;&#xA;Like ^ the $ operator matches at a position, it does not match the&#xA;line terminators themselves.&#xA;" annotatedElement="0edec1b9-fd1e-4c45-857c-23e3f47eb512"/>
                <generalization xmi:id="f8441823-0082-4b4c-8dad-bfc7a7a54545" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="48670d05-0904-4966-b5dc-88b20fc21aed" name="UnixDollar" visibility="package" isLeaf="true">
                <ownedComment xmi:id="411bd9e2-59d7-48aa-ad12-af570ac49d3d" body="Node to anchor at the end of a line or the end of input based on the&#xA;multiline mode when in unix lines mode.&#xA;" annotatedElement="48670d05-0904-4966-b5dc-88b20fc21aed"/>
                <generalization xmi:id="3eba7ca3-f2bf-4522-8e57-600fe5525cbc" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="4071c7f0-9e90-4d6a-b4a4-bf47d26d5e3f" name="Single" visibility="package" isLeaf="true">
                <ownedComment xmi:id="c1bfd1ce-c49e-4a4d-b1a8-a2c8fceca30a" body="Node class for a single character value.&#xA;" annotatedElement="4071c7f0-9e90-4d6a-b4a4-bf47d26d5e3f"/>
                <generalization xmi:id="75d4a759-0743-4a10-bae8-b036f2735712" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="be398d0a-e791-4b2e-a93c-98abef26675a" name="NotSingle" visibility="package" isLeaf="true">
                <ownedComment xmi:id="d6a29308-4ac4-4dac-9769-874e56530759" body="Node class to match any character except a single char value.&#xA;" annotatedElement="be398d0a-e791-4b2e-a93c-98abef26675a"/>
                <generalization xmi:id="233876ee-981f-46ad-8a4f-b7cad95e88be" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="a478774a-87c7-4a1b-8751-7cb8b5544d5f" name="SingleA" visibility="package" isLeaf="true">
                <ownedComment xmi:id="bc9c5a40-e650-40e1-ae9b-0bbbe6b5b791" body="Case independent ASCII value.&#xA;" annotatedElement="a478774a-87c7-4a1b-8751-7cb8b5544d5f"/>
                <generalization xmi:id="d49209c6-eef3-44f6-a253-c7b3530ce83b" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="3a61e2a3-bada-4a58-aa64-203ce64cab47" name="NotSingleA" visibility="package" isLeaf="true">
                <generalization xmi:id="dccf9f56-76c1-439f-a72e-49a2251277c8" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="9c34a569-75f9-49e2-b5d5-ed6357c45e74" name="SingleU" visibility="package" isLeaf="true">
                <ownedComment xmi:id="115f2236-61e1-4109-8751-9f89cf2fc26c" body="Case independent unicode (including supplementary characters) value.&#xA;" annotatedElement="9c34a569-75f9-49e2-b5d5-ed6357c45e74"/>
                <generalization xmi:id="3e09c6eb-2709-4f68-8bef-1f6e4d7f2593" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="dd4fded9-0777-4c54-9c1f-5fb1f6238256" name="NotSingleU" visibility="package" isLeaf="true">
                <ownedComment xmi:id="248191be-d26a-45e7-9ed6-b5a32b13182b" body="Case independent unicode value.&#xA;" annotatedElement="dd4fded9-0777-4c54-9c1f-5fb1f6238256"/>
                <generalization xmi:id="012b6e1f-fb49-485a-a679-597835d82cde" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="02d796a2-2348-41fa-b078-9320b67ac67a" name="Category" visibility="package" isLeaf="true">
                <ownedComment xmi:id="c72b660a-854b-4e08-98ca-458e2711200a" body="Node class that matches a Unicode category.&#xA;" annotatedElement="02d796a2-2348-41fa-b078-9320b67ac67a"/>
                <generalization xmi:id="1d40cb0d-2dfb-4392-845c-8a7411683d54" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="cc88015a-d31d-48e3-967a-5c20645352a3" name="Ctype" visibility="package" isLeaf="true">
                <ownedComment xmi:id="160be962-6b1c-4448-b5f8-1e130f855048" body="Node class that matches a POSIX type.&#xA;" annotatedElement="cc88015a-d31d-48e3-967a-5c20645352a3"/>
                <generalization xmi:id="46f79419-95f0-4dd9-aa89-8b49df13a6d0" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="42681edd-be0f-42f0-a8be-ae2e07ebe6b9" name="NotCtype" visibility="package" isLeaf="true">
                <generalization xmi:id="2a929f79-1926-4439-93a8-5e4fb1b48141" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="555d083a-5455-4e7d-8967-1c31804cc269" name="Specials" visibility="package" isLeaf="true">
                <generalization xmi:id="1996fbc8-2399-408a-bfe2-1eed900c9fe1" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="50cc1cf6-81e8-4ad1-aac1-5d999d88b3f9" name="Not" visibility="package" isLeaf="true">
                <generalization xmi:id="453c199a-113b-4790-963d-844c0034bab2" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="55ee5be6-c169-4604-9177-3111905fac21" name="Slice" visibility="package">
                <ownedComment xmi:id="2c6bfea3-11b5-4130-87da-b516eec7c69f" body="Node class for a case sensitive sequence of literal characters.&#xA;" annotatedElement="55ee5be6-c169-4604-9177-3111905fac21"/>
                <generalization xmi:id="4698a1df-a6a5-4132-928e-2f97c592c3d5" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="fc3bcdfa-2cb5-4e05-be2b-16fed1affe1f" name="SliceA" visibility="package" isLeaf="true">
                <ownedComment xmi:id="163649c4-d2d7-41b8-81dd-a4e60fd09c1e" body="Node class for a case insensitive sequence of literal characters.&#xA;" annotatedElement="fc3bcdfa-2cb5-4e05-be2b-16fed1affe1f"/>
                <generalization xmi:id="b43b28d1-e86e-48ae-86ca-c31c88d9c073" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="2c5b9667-6de9-45f0-bd26-c782cb8f8ff4" name="SliceU" visibility="package" isLeaf="true">
                <ownedComment xmi:id="b8b90524-47ee-4252-af21-1a4b15a02d46" body="Node class for a case insensitive sequence of literal characters.&#xA;Uses unicode case folding.&#xA;" annotatedElement="2c5b9667-6de9-45f0-bd26-c782cb8f8ff4"/>
                <generalization xmi:id="46d0f7aa-91f6-4c44-9344-9d1c802d68a7" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="cbbca13d-27af-49e2-bffd-ca0a348e97ec" name="Range" visibility="package">
                <ownedComment xmi:id="91eae61e-45ae-429c-8eb8-7f4ff2a4a439" body="Node class for matching characters within an explicit value range.&#xA;" annotatedElement="cbbca13d-27af-49e2-bffd-ca0a348e97ec"/>
                <generalization xmi:id="046665b1-a57d-45a7-ba2e-5257eeca26f2" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="bb7945b7-3ef0-4823-a64a-310e181806da" name="CIRange" visibility="package" isLeaf="true">
                <ownedComment xmi:id="c2e120dc-8a83-4d5a-9dbf-c4d1b63d185d" body="Node class for matching characters within an explicit value range&#xA;in a case insensitive manner.&#xA;" annotatedElement="bb7945b7-3ef0-4823-a64a-310e181806da"/>
                <generalization xmi:id="c6717183-51d9-4e63-9f2b-e357eed6b43b" isSubstitutable="true" general="cbbca13d-27af-49e2-bffd-ca0a348e97ec"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8eca9673-d91f-4f2b-b392-de3dc6f83050" name="NotRange" visibility="package">
                <generalization xmi:id="12ade0ec-42de-4799-90ff-ad99168a527e" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="cb462e9f-9371-4e35-9ad7-321a325c88a8" name="CINotRange" visibility="package">
                <generalization xmi:id="5767fb15-a7b8-49e8-9d2d-62c2b9314223" isSubstitutable="true" general="8eca9673-d91f-4f2b-b392-de3dc6f83050"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0b382e93-672c-4e77-b0a4-12396124d4c3" name="All" visibility="package" isLeaf="true">
                <ownedComment xmi:id="faab3297-52af-402d-bcba-9d909763c50c" body="Implements the Unicode category ALL and the dot metacharacter when&#xA;in dotall mode.&#xA;" annotatedElement="0b382e93-672c-4e77-b0a4-12396124d4c3"/>
                <generalization xmi:id="35f00af7-f940-4817-8965-f70b7b892d99" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8932fdad-4b24-4211-8c83-2ff59128c3fb" name="Dot" visibility="package" isLeaf="true">
                <ownedComment xmi:id="3bc5bec4-97f7-4778-8134-1159b7fdfdee" body="Node class for the dot metacharacter when dotall is not enabled.&#xA;" annotatedElement="8932fdad-4b24-4211-8c83-2ff59128c3fb"/>
                <generalization xmi:id="ede21226-c4d5-4c38-88a8-bc9afd0a3c8b" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6d368d74-5512-411d-94f3-93d212cba8f0" name="UnixDot" visibility="package" isLeaf="true">
                <ownedComment xmi:id="6f6c0abc-a855-4a8b-8e62-56383afbda43" body="Node class for the dot metacharacter when dotall is not enabled&#xA;but UNIX_LINES is enabled.&#xA;" annotatedElement="6d368d74-5512-411d-94f3-93d212cba8f0"/>
                <generalization xmi:id="3b04fac4-4e39-4a5d-a7ae-3547e18c80a2" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="5538cd4c-2b75-488a-a0d4-b9464bf23ab9" name="Ques" visibility="package" isLeaf="true">
                <ownedComment xmi:id="c2f58ae7-bc2e-49c1-9b2b-fc98003b802d" body="The 0 or 1 quantifier. This one class implements all three types.&#xA;" annotatedElement="5538cd4c-2b75-488a-a0d4-b9464bf23ab9"/>
                <generalization xmi:id="21755c55-6752-44ce-aab3-b28f91bb7fe4" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6884d044-9dc6-4c0c-b0aa-236e4f66707b" name="Curly" visibility="package" isLeaf="true">
                <ownedComment xmi:id="e0b48279-05dc-4b23-8fdb-7a32dbf8fa01" body="Handles the curly-brace style repetition with a specified minimum and&#xA;maximum occurrences. The * quantifier is handled as a special case.&#xA;This class handles the three types.&#xA;" annotatedElement="6884d044-9dc6-4c0c-b0aa-236e4f66707b"/>
                <generalization xmi:id="5ed4590c-96f5-4966-8c37-a1d812f59c49" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="ea4102dc-4e85-47e1-ac12-3e3ff26b56ee" name="GroupCurly" visibility="package" isLeaf="true">
                <ownedComment xmi:id="a98cb55f-05a8-4031-b247-f867efc2173c" body="Handles the curly-brace style repetition with a specified minimum and&#xA;maximum occurrences in deterministic cases. This is an iterative&#xA;optimization over the Prolog and Loop system which would handle this&#xA;in a recursive way. The * quantifier is handled as a special case.&#xA;If capture is true then this class saves group settings and ensures&#xA;that groups are unset when backing off of a group match.&#xA;" annotatedElement="ea4102dc-4e85-47e1-ac12-3e3ff26b56ee"/>
                <generalization xmi:id="de986279-7546-4194-acfd-7a643adc48ad" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0ca85539-de78-4766-a960-40901f0ed20d" name="Branch" visibility="package" isLeaf="true">
                <ownedComment xmi:id="8b5f4635-1fd1-43b8-a20c-73b4b06b11fc" body="Handles the branching of alternations. Note this is also used for&#xA;the ? quantifier to branch between the case where it matches once&#xA;and where it does not occur.&#xA;" annotatedElement="0ca85539-de78-4766-a960-40901f0ed20d"/>
                <generalization xmi:id="170d33c7-e647-4869-b2a4-89aa0c1312d8" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f7b0902c-9fc6-4e4c-baaa-9fb16f587bbe" name="GroupHead" visibility="package" isLeaf="true">
                <ownedComment xmi:id="d2a342f2-4b16-464b-a5b1-f7d6f0194cb1" body="The GroupHead saves the location where the group begins in the locals&#xA;and restores them when the match is done.&#xA;&#xA;The matchRef is used when a reference to this group is accessed later&#xA;in the expression. The locals will have a negative value in them to&#xA;indicate that we do not want to unset the group if the reference&#xA;doesn't match.&#xA;" annotatedElement="f7b0902c-9fc6-4e4c-baaa-9fb16f587bbe"/>
                <generalization xmi:id="4293beb8-7d5c-4ddb-ad75-ee0d0109e7b2" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="ea9a7a41-03c9-47f9-8851-88d36f87021a" name="GroupRef" visibility="package" isLeaf="true">
                <ownedComment xmi:id="82f951c0-4220-45fa-a2b1-2abe937e548b" body="Recursive reference to a group in the regular expression. It calls&#xA;matchRef because if the reference fails to match we would not unset&#xA;the group.&#xA;" annotatedElement="ea9a7a41-03c9-47f9-8851-88d36f87021a"/>
                <generalization xmi:id="0e3b3abb-63cd-45af-b27e-d8736792fd49" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="3434740e-509a-4f7c-8414-9ace88f3d4d7" name="GroupTail" visibility="package" isLeaf="true">
                <ownedComment xmi:id="0ce68318-efaf-48a0-893b-8b03e282893d" body="The GroupTail handles the setting of group beginning and ending&#xA;locations when groups are successfully matched. It must also be able to&#xA;unset groups that have to be backed off of.&#xA;&#xA;The GroupTail node is also used when a previous group is referenced,&#xA;and in that case no group information needs to be set.&#xA;" annotatedElement="3434740e-509a-4f7c-8414-9ace88f3d4d7"/>
                <generalization xmi:id="547caef1-d87a-43a1-9ec0-e19c6cb9d018" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="60f30679-cc8e-403c-b20c-e3f8cc2a9442" name="Prolog" visibility="package" isLeaf="true">
                <ownedComment xmi:id="1de3f625-4091-4e84-8c70-f627db5f48c4" body="This sets up a loop to handle a recursive quantifier structure.&#xA;" annotatedElement="60f30679-cc8e-403c-b20c-e3f8cc2a9442"/>
                <generalization xmi:id="fb7056c8-6f3e-454b-9ab2-d06812c785b1" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="c2e5e31c-b7f4-439e-ba95-cca293c1d4a1" name="Loop" visibility="package">
                <ownedComment xmi:id="0ee2f61a-028b-427e-9a1f-b40c1f023644" body="Handles the repetition count for a greedy Curly. The matchInit&#xA;is called from the Prolog to save the index of where the group&#xA;beginning is stored. A zero length group check occurs in the&#xA;normal match but is skipped in the matchInit.&#xA;" annotatedElement="c2e5e31c-b7f4-439e-ba95-cca293c1d4a1"/>
                <generalization xmi:id="73946f0d-7f5f-463f-9354-ae11d9e54b99" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="38993261-a14e-4029-9382-d847b326c1bf" name="LazyLoop" visibility="package" isLeaf="true">
                <ownedComment xmi:id="01971eea-6927-41d0-a046-a920cb31ec14" body="Handles the repetition count for a reluctant Curly. The matchInit&#xA;is called from the Prolog to save the index of where the group&#xA;beginning is stored. A zero length group check occurs in the&#xA;normal match but is skipped in the matchInit.&#xA;" annotatedElement="38993261-a14e-4029-9382-d847b326c1bf"/>
                <generalization xmi:id="f7da9d3a-6f9d-4591-a50b-972d64525a7a" isSubstitutable="true" general="c2e5e31c-b7f4-439e-ba95-cca293c1d4a1"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="cc8c7756-b60e-4356-a512-958fe93995d7" name="BackRef" visibility="package">
                <ownedComment xmi:id="1a86dfd3-2f3e-4d2d-895d-f04ba8be5855" body="Refers to a group in the regular expression. Attempts to match&#xA;whatever the group referred to last matched.&#xA;" annotatedElement="cc8c7756-b60e-4356-a512-958fe93995d7"/>
                <generalization xmi:id="f5482ad2-8e54-4680-a200-cc60c658408f" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="360e847c-7700-4ed4-a88c-2e64a9f368e9" name="CIBackRef" visibility="package">
                <generalization xmi:id="9894a9cf-95a6-4f28-82c2-c7b211ed1837" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="58c2d679-4e51-4d14-a423-527c985f5b42" name="First" visibility="package" isLeaf="true">
                <ownedComment xmi:id="6a0b9277-56a7-4520-8eb2-820b5fdcf8b1" body="Searches until the next instance of its atom. This is useful for&#xA;finding the atom efficiently without passing an instance of it&#xA;(greedy problem) and without a lot of wasted search time (reluctant&#xA;problem).&#xA;" annotatedElement="58c2d679-4e51-4d14-a423-527c985f5b42"/>
                <generalization xmi:id="49957dbb-82d0-4f3e-adda-52fd02a91a96" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="c09cdc39-c140-47dd-868f-a085e8f2c521" name="Conditional" visibility="package" isLeaf="true">
                <generalization xmi:id="07b1ea31-5b0a-4ac8-9551-adcc58e2f7f0" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f542cb36-8e61-4ae9-87c0-1a9c5cef5db2" name="Pos" visibility="package" isLeaf="true">
                <ownedComment xmi:id="a78d303d-cf6e-4e02-9d7f-d03e6a09437c" body="Zero width positive lookahead.&#xA;" annotatedElement="f542cb36-8e61-4ae9-87c0-1a9c5cef5db2"/>
                <generalization xmi:id="4d0f6b36-296f-4479-a638-0cbdf044c2fb" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6bf1ac29-7bcc-4c93-98ea-b82e856ac95d" name="Neg" visibility="package" isLeaf="true">
                <ownedComment xmi:id="165ab364-2669-41aa-aca0-52b76a1ad50c" body="Zero width negative lookahead.&#xA;" annotatedElement="6bf1ac29-7bcc-4c93-98ea-b82e856ac95d"/>
                <generalization xmi:id="b53eca10-e978-4bf1-810a-9d917aca56b8" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="1a919a6b-e8a5-4004-b94b-3ca0b142082a" name="Behind" visibility="package">
                <ownedComment xmi:id="2883d7da-6405-40a9-9373-e4cced812dcb" body="Zero width positive lookbehind.&#xA;" annotatedElement="1a919a6b-e8a5-4004-b94b-3ca0b142082a"/>
                <generalization xmi:id="7614c2d4-5eab-4264-885d-88f6919b3873" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="ea07a90f-27e3-4886-9154-78bbded56aec" name="NotBehind" visibility="package">
                <ownedComment xmi:id="6b1980cb-c1f6-462e-9744-e4b66c53792f" body="Zero width negative lookbehind.&#xA;" annotatedElement="ea07a90f-27e3-4886-9154-78bbded56aec"/>
                <generalization xmi:id="7986d3cf-6c5a-4770-a291-c5ff98c5160e" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="50683fac-8fe5-4036-957f-500a11b36f0d" name="Add" visibility="package">
                <ownedComment xmi:id="6a3872c4-5b82-4c49-afba-1bc5c3e3b7ad" body="An object added to the tree when a character class has an additional&#xA;range added to it.&#xA;" annotatedElement="50683fac-8fe5-4036-957f-500a11b36f0d"/>
                <generalization xmi:id="8b7b2c1e-14a0-4059-924f-593dfb64058f" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0d354d80-c40c-44cf-b47b-6875459eb6f4" name="Both" visibility="package">
                <ownedComment xmi:id="4f90defa-533b-4675-a38e-f6ca51d30fac" body="An object added to the tree when a character class has another&#xA;nested class in it.&#xA;" annotatedElement="0d354d80-c40c-44cf-b47b-6875459eb6f4"/>
                <generalization xmi:id="1348b05f-66de-4b8a-8ff0-2fd279ae7b93" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="baf4a94b-0d52-4f98-b860-63f94824d881" name="Sub" visibility="package" isLeaf="true">
                <ownedComment xmi:id="d24226d4-5ecb-44f4-9d41-aeca66b546fd" body="An object added to the tree when a character class has a range&#xA;or single subtracted from it.&#xA;" annotatedElement="baf4a94b-0d52-4f98-b860-63f94824d881"/>
                <generalization xmi:id="ba331373-e454-48ed-bb99-b6874fc53884" isSubstitutable="true" general="50683fac-8fe5-4036-957f-500a11b36f0d"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f823513b-9129-4fcf-9298-2138405aa5f1" name="Bound" visibility="package" isLeaf="true">
                <ownedComment xmi:id="72e24452-fa46-4113-a62b-762ce7fddf0e" body="Handles word boundaries. Includes a field to allow this one class to&#xA;deal with the different types of word boundaries we can match. The word&#xA;characters include underscores, letters, and digits. Non spacing marks&#xA;can are also part of a word if they have a base character, otherwise&#xA;they are ignored for purposes of finding word boundaries.&#xA;" annotatedElement="f823513b-9129-4fcf-9298-2138405aa5f1"/>
                <generalization xmi:id="e0dd54a7-f7d3-47c4-a449-3242ae87783b" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="c469c1d6-146f-45a1-a9f4-fdb261ec493f" name="BnM" visibility="package">
                <ownedComment xmi:id="c2758162-e07d-456a-89b1-5b86fc382a30" body="Attempts to match a slice in the input using the Boyer-Moore string&#xA;matching algorithm. The algorithm is based on the idea that the&#xA;pattern can be shifted farther ahead in the search text if it is&#xA;matched right to left.&#xA;&lt;p>&#xA;The pattern is compared to the input one character at a time, from&#xA;the rightmost character in the pattern to the left. If the characters&#xA;all match the pattern has been found. If a character does not match,&#xA;the pattern is shifted right a distance that is the maximum of two&#xA;functions, the bad character shift and the good suffix shift. This&#xA;shift moves the attempted match position through the input more&#xA;quickly than a naive one position at a time check.&#xA;&lt;p>&#xA;The bad character shift is based on the character from the text that&#xA;did not match. If the character does not appear in the pattern, the&#xA;pattern can be shifted completely beyond the bad character. If the&#xA;character does occur in the pattern, the pattern can be shifted to&#xA;line the pattern up with the next occurrence of that character.&#xA;&lt;p>&#xA;The good suffix shift is based on the idea that some subset on the right&#xA;side of the pattern has matched. When a bad character is found, the&#xA;pattern can be shifted right by the pattern length if the subset does&#xA;not occur again in pattern, or by the amount of distance to the&#xA;next occurrence of the subset in the pattern.&#xA;&#xA;Boyer-Moore search methods adapted from code by Amy Yu.&#xA;" annotatedElement="c469c1d6-146f-45a1-a9f4-fdb261ec493f"/>
                <generalization xmi:id="041545b0-ed35-404e-9708-5aa5ab9de19b" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="b6042c57-9030-462c-8371-99833bfd3889" name="StartS" visibility="package" isLeaf="true">
                <generalization xmi:id="6ad8488c-01e2-445a-9724-ca755376098a" isSubstitutable="true" general="96a276d5-a3a1-42f2-9d62-db9b61e33eeb"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8bda78f5-6b34-4ea2-aff1-6ee10487eae2" name="JavaTypeClass" visibility="package" isAbstract="true">
                <generalization xmi:id="6786d539-221b-4e00-8f34-a37e0a32f60c" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="303ea723-665b-40fe-a010-0aea0685b5b0" name="JavaLowerCase" visibility="package" isLeaf="true">
                <generalization xmi:id="5dcf5995-a765-4c59-9892-b37e20aa33a3" isSubstitutable="true" general="8bda78f5-6b34-4ea2-aff1-6ee10487eae2"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="70592c94-9650-4d16-9de5-2bfd09d78bbc" name="JavaUpperCase" visibility="package" isLeaf="true">
                <generalization xmi:id="052d10cf-b191-430c-973e-8b55bba3c992" isSubstitutable="true" general="8bda78f5-6b34-4ea2-aff1-6ee10487eae2"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8ee6a459-fe0f-4574-bb78-1eff1b237306" name="JavaTitleCase" visibility="package" isLeaf="true">
                <generalization xmi:id="8ed10da5-7b71-4f47-b493-e58cddb578c7" isSubstitutable="true" general="8bda78f5-6b34-4ea2-aff1-6ee10487eae2"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="b3adea12-e5d6-4a5d-9066-49daa7851757" name="JavaDigit" visibility="package" isLeaf="true">
                <generalization xmi:id="1b4cfb9a-ec53-4022-8a79-a1d1ae709e9e" isSubstitutable="true" general="8bda78f5-6b34-4ea2-aff1-6ee10487eae2"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="239b0236-6de3-4f7b-adea-cd6b1cb68cc8" name="JavaDefined" visibility="package" isLeaf="true">
                <generalization xmi:id="74a723c4-2ed9-42f0-8ac2-833fe078c9a0" isSubstitutable="true" general="8bda78f5-6b34-4ea2-aff1-6ee10487eae2"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="78bf82d8-a2ac-4e47-ad5e-9ef691f248e6" name="JavaLetter" visibility="package" isLeaf="true">
                <generalization xmi:id="a7a2af3e-a958-4fc5-b327-4411d2ab2298" isSubstitutable="true" general="8bda78f5-6b34-4ea2-aff1-6ee10487eae2"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f2a79b50-3363-4dc7-b412-1fd08e20015c" name="JavaLetterOrDigit" visibility="package" isLeaf="true">
                <generalization xmi:id="9b1a95ac-e2bd-4a00-bf32-8368bfa5a0bf" isSubstitutable="true" general="8bda78f5-6b34-4ea2-aff1-6ee10487eae2"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="c8df2253-1ddb-459a-a0e6-b13746dcd550" name="JavaJavaIdentifierStart" visibility="package" isLeaf="true">
                <generalization xmi:id="7f641455-ccad-4b3b-835e-f064509f6a07" isSubstitutable="true" general="8bda78f5-6b34-4ea2-aff1-6ee10487eae2"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f6b7be76-ba84-4ab2-a8bc-6a6de30bdd3e" name="JavaJavaIdentifierPart" visibility="package" isLeaf="true">
                <generalization xmi:id="27e6ed88-95f6-4b67-b923-ad9fcf4aeabe" isSubstitutable="true" general="8bda78f5-6b34-4ea2-aff1-6ee10487eae2"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="fbe9b739-ae23-4497-9ca0-50485c25a3c1" name="JavaUnicodeIdentifierStart" visibility="package" isLeaf="true">
                <generalization xmi:id="493b1bd0-28e9-4ec7-87de-741b6c6637c7" isSubstitutable="true" general="8bda78f5-6b34-4ea2-aff1-6ee10487eae2"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="a244796f-ffb8-4c4d-a9c3-b7c704f9eb84" name="JavaUnicodeIdentifierPart" visibility="package" isLeaf="true">
                <generalization xmi:id="c0c4f844-0e06-4d96-ba59-94eb0017c274" isSubstitutable="true" general="8bda78f5-6b34-4ea2-aff1-6ee10487eae2"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="31dfaac7-d5b8-448b-8f57-7af3c6054def" name="JavaIdentifierIgnorable" visibility="package" isLeaf="true">
                <generalization xmi:id="38d7c72e-3acd-4f83-8dcf-6ca74acab28d" isSubstitutable="true" general="8bda78f5-6b34-4ea2-aff1-6ee10487eae2"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="03f5810f-49b6-47ea-a880-004d7929cc43" name="JavaSpaceChar" visibility="package" isLeaf="true">
                <generalization xmi:id="b6c8f32a-1203-42eb-8b65-71fd41e10c0d" isSubstitutable="true" general="8bda78f5-6b34-4ea2-aff1-6ee10487eae2"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="394dfa61-1b84-4f2b-b1e9-d4b8824cba83" name="JavaWhitespace" visibility="package" isLeaf="true">
                <generalization xmi:id="2e0fc51b-d2c0-46d3-9dbd-f052339fbc80" isSubstitutable="true" general="8bda78f5-6b34-4ea2-aff1-6ee10487eae2"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="855920d4-656e-4ead-a091-73f82cf3ce32" name="JavaISOControl" visibility="package" isLeaf="true">
                <generalization xmi:id="984db7d4-9d8d-48c4-b0b9-3960e5259ef3" isSubstitutable="true" general="8bda78f5-6b34-4ea2-aff1-6ee10487eae2"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="020f4a59-3146-433e-b705-c1479b7f0b69" name="JavaMirrored" visibility="package" isLeaf="true">
                <generalization xmi:id="c9710938-9dc1-48ee-ac33-613de03851e0" isSubstitutable="true" general="8bda78f5-6b34-4ea2-aff1-6ee10487eae2"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="bec8b95c-2ca9-40a3-9c48-eb73e343836f" name="SliceS" visibility="package" isLeaf="true">
                <ownedComment xmi:id="08f68a5e-7bb1-4cf0-8b85-79d65bf47a66" body="Node class for a case sensitive sequence of literal characters&#xA;including supplementary characters.&#xA;" annotatedElement="bec8b95c-2ca9-40a3-9c48-eb73e343836f"/>
                <generalization xmi:id="517843c9-518f-401f-95bd-0b394ae6056f" isSubstitutable="true" general="55ee5be6-c169-4604-9177-3111905fac21"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="c596047b-4eb3-4280-8bf3-5d71565a7bf6" name="BehindS" visibility="package" isLeaf="true">
                <ownedComment xmi:id="0e524506-d12e-4099-a84f-07cd82bca880" body="Zero width positive lookbehind, including supplementary&#xA;characters or unpaired surrogates.&#xA;" annotatedElement="c596047b-4eb3-4280-8bf3-5d71565a7bf6"/>
                <generalization xmi:id="6b27e35d-2255-48bf-94da-69692804778b" isSubstitutable="true" general="1a919a6b-e8a5-4004-b94b-3ca0b142082a"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="860dbf49-dcad-4f18-bab5-b67083db0a27" name="NotBehindS" visibility="package" isLeaf="true">
                <ownedComment xmi:id="93e73ae6-ef8c-424a-8e5b-39c7037f2c6e" body="Zero width negative lookbehind, including supplementary&#xA;characters or unpaired surrogates.&#xA;" annotatedElement="860dbf49-dcad-4f18-bab5-b67083db0a27"/>
                <generalization xmi:id="0d613f3c-2fea-49fc-bc43-64e8c51f8831" isSubstitutable="true" general="ea07a90f-27e3-4886-9154-78bbded56aec"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="c113b25e-abe3-44dc-8b7e-4e5454c395ce" name="BnMS" visibility="package" isLeaf="true">
                <ownedComment xmi:id="4fb84f56-0d1f-49e9-99d7-8641ffaa349d" body="Supplementary support version of BnM(). Unpaired surrogates are&#xA;also handled by this class.&#xA;" annotatedElement="c113b25e-abe3-44dc-8b7e-4e5454c395ce"/>
                <generalization xmi:id="02abdae5-2b10-445f-a61f-fedb74d0455c" isSubstitutable="true" general="c469c1d6-146f-45a1-a9f4-fdb261ec493f"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="71644b0b-7f43-4985-a332-e400a244c0ec" name="UBlock" visibility="package" isLeaf="true">
                <ownedComment xmi:id="9302b661-9b68-46cd-a504-a0eaa8b05934" body="Node class for matching characters in a Unicode block&#xA;" annotatedElement="71644b0b-7f43-4985-a332-e400a244c0ec"/>
                <generalization xmi:id="cfd15a8d-2068-4b12-b9b1-94109a1f1460" isSubstitutable="true" general="e7901300-aa23-4b2f-88de-866200abe660"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="a3f44ce3-ba82-44cd-a293-5d14567b6c92" name="categoryNames" visibility="package"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6aed8d13-16ec-4c8e-b821-b0cf22d9a3db" name="Matcher" clientDependency="c52f53d4-479f-4d52-bd37-24372bfe5a81" isLeaf="true">
              <ownedComment xmi:id="ef48cd7e-6007-4071-b63f-ee9b8f659127" body="An engine that performs match operations on a {@link java.lang.CharSequence&#xA;&lt;/code>character sequence&lt;code>} by interpreting a {@link Pattern}.&#xA;&#xA;&lt;p> A matcher is created from a pattern by invoking the pattern's {@link&#xA;Pattern#matcher matcher} method.  Once created, a matcher can be used to&#xA;perform three different kinds of match operations:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p> The {@link #matches matches} method attempts to match the entire&#xA;input sequence against the pattern.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> The {@link #lookingAt lookingAt} method attempts to match the&#xA;input sequence, starting at the beginning, against the pattern.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> The {@link #find find} method scans the input sequence looking for&#xA;the next subsequence that matches the pattern.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p> Each of these methods returns a boolean indicating success or failure.&#xA;More information about a successful match can be obtained by querying the&#xA;state of the matcher.&#xA;&#xA;&lt;p> A matcher finds matches in a subset of its input called the&#xA;&lt;i>region&lt;/i>. By default, the region contains all of the matcher's input.&#xA;The region can be modified via the{@link #region region} method and queried&#xA;via the {@link #regionStart regionStart} and {@link #regionEnd regionEnd}&#xA;methods. The way that the region boundaries interact with some pattern&#xA;constructs can be changed. See {@link #useAnchoringBounds&#xA;useAnchoringBounds} and {@link #useTransparentBounds useTransparentBounds}&#xA;for more details.&#xA;&#xA;&lt;p> This class also defines methods for replacing matched subsequences with&#xA;new strings whose contents can, if desired, be computed from the match&#xA;result.  The {@link #appendReplacement appendReplacement} and {@link&#xA;#appendTail appendTail} methods can be used in tandem in order to collect&#xA;the result into an existing string buffer, or the more convenient {@link&#xA;#replaceAll replaceAll} method can be used to create a string in which every&#xA;matching subsequence in the input sequence is replaced.&#xA;&#xA;&lt;p> The explicit state of a matcher includes the start and end indices of&#xA;the most recent successful match.  It also includes the start and end&#xA;indices of the input subsequence captured by each &lt;a&#xA;href=&quot;Pattern.html#cg&quot;>capturing group&lt;/a> in the pattern as well as a total&#xA;count of such subsequences.  As a convenience, methods are also provided for&#xA;returning these captured subsequences in string form.&#xA;&#xA;&lt;p> The explicit state of a matcher is initially undefined; attempting to&#xA;query any part of it before a successful match will cause an {@link&#xA;IllegalStateException} to be thrown.  The explicit state of a matcher is&#xA;recomputed by every match operation.&#xA;&#xA;&lt;p> The implicit state of a matcher includes the input character sequence as&#xA;well as the &lt;i>append position&lt;/i>, which is initially zero and is updated&#xA;by the {@link #appendReplacement appendReplacement} method.&#xA;&#xA;&lt;p> A matcher may be reset explicitly by invoking its {@link #reset()}&#xA;method or, if a new input sequence is desired, its {@link&#xA;#reset(java.lang.CharSequence) reset(CharSequence)} method.  Resetting a&#xA;matcher discards its explicit state information and sets the append position&#xA;to zero.&#xA;&#xA;&lt;p> Instances of this class are not safe for use by multiple concurrent&#xA;threads. &lt;/p>&#xA;&#xA;&#xA;@author      Mike McCloskey&#xA;@author&#x9;Mark Reinhold&#xA;@author&#x9;JSR-51 Expert Group&#xA;@version &#x9;1.58, 04/06/28&#xA;@since&#x9;1.4&#xA;@spec        JSR-51&#xA;" annotatedElement="6aed8d13-16ec-4c8e-b821-b0cf22d9a3db"/>
              <interfaceRealization xmi:id="c52f53d4-479f-4d52-bd37-24372bfe5a81" name="" supplier="f1e29612-b444-402a-beb9-97ca93e96f2b" client="6aed8d13-16ec-4c8e-b821-b0cf22d9a3db" contract="f1e29612-b444-402a-beb9-97ca93e96f2b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="f1e29612-b444-402a-beb9-97ca93e96f2b" name="MatchResult" isAbstract="true">
              <ownedComment xmi:id="841538ae-ee9f-4a42-860d-4ee3469c5a1f" body="The result of a match operation.&#xA;&#xA;&lt;p>This interface contains query methods used to determine the&#xA;results of a match against a regular expression. The match boundaries,&#xA;groups and group boundaries can be seen but not modified through&#xA;a &lt;code>MatchResult&lt;/code>.&#xA;&#xA;@author  Michael McCloskey&#xA;@version 1.5 06/28/04&#xA;@see Matcher&#xA;@since 1.5&#xA;" annotatedElement="f1e29612-b444-402a-beb9-97ca93e96f2b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="77b54de3-961f-4970-8cce-f6ba1ad6fba0" name="ASCII" visibility="package" isLeaf="true">
              <ownedComment xmi:id="1f621ea9-c6b6-4782-af78-5e362e18a088" body="Utility class that implements the standard C ctype functionality.&#xA;&#xA;@author Hong Zhang&#xA;" annotatedElement="77b54de3-961f-4970-8cce-f6ba1ad6fba0"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9564dcd8-2477-4f2a-9aa7-acbab5b7de79" name="Properties">
            <ownedComment xmi:id="c9ded088-4355-4c1e-b0f9-a4886f4f3b3d" body="The &lt;code>Properties&lt;/code> class represents a persistent set of&#xA;properties. The &lt;code>Properties&lt;/code> can be saved to a stream&#xA;or loaded from a stream. Each key and its corresponding value in&#xA;the property list is a string.&#xA;&lt;p>&#xA;A property list can contain another property list as its&#xA;&quot;defaults&quot;; this second property list is searched if&#xA;the property key is not found in the original property list.&#xA;&lt;p>&#xA;Because &lt;code>Properties&lt;/code> inherits from &lt;code>Hashtable&lt;/code>, the&#xA;&lt;code>put&lt;/code> and &lt;code>putAll&lt;/code> methods can be applied to a&#xA;&lt;code>Properties&lt;/code> object.  Their use is strongly discouraged as they&#xA;allow the caller to insert entries whose keys or values are not&#xA;&lt;code>Strings&lt;/code>.  The &lt;code>setProperty&lt;/code> method should be used&#xA;instead.  If the &lt;code>store&lt;/code> or &lt;code>save&lt;/code> method is called&#xA;on a &quot;compromised&quot; &lt;code>Properties&lt;/code> object that contains a&#xA;non-&lt;code>String&lt;/code> key or value, the call will fail.&#xA;&lt;p>&#xA;&lt;a name=&quot;encoding&quot;>&lt;/a>&#xA;&lt;p> The {@link #load load} and {@link #store store} methods load and store&#xA;properties in a simple line-oriented format specified below.  This format&#xA;uses the ISO 8859-1 character encoding.  Characters that cannot be directly&#xA;represented in this encoding can be written using&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/jls/html/3.doc.html#100850&quot;>Unicode escapes&lt;/a>&#xA;; only a single 'u' character is allowed in an escape&#xA;sequence. The native2ascii tool can be used to convert property files to and&#xA;from other character encodings.&#xA;&lt;p>&#xA;&lt;p> The {@link #loadFromXML(InputStream)} and {@link&#xA;#storeToXML(OutputStream, String, String)} methods load and store properties&#xA;in a simple XML format.  By default the UTF-8 character encoding is used,&#xA;however a specific encoding may be specified if required.  An XML properties&#xA;document has the following DOCTYPE declaration:&#xA;&#xA;&lt;pre>&#xA;&lt;!DOCTYPE properties SYSTEM &quot;http://java.sun.com/dtd/properties.dtd&quot;>&#xA;&lt;/pre>&#xA;Note that the system URI (http://java.sun.com/dtd/properties.dtd) is&#xA;&lt;i>not&lt;/i> accessed when exporting or importing properties; it merely&#xA;serves as a string to uniquely identify the DTD, which is:&#xA;&lt;pre>&#xA;&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&#xA;&lt;!-- DTD for properties -->&#xA;&#xA;&lt;!ELEMENT properties ( comment?, entry* ) >&#xA;&#xA;&lt;!ATTLIST properties version CDATA #FIXED &quot;1.0&quot;>&#xA;&#xA;&lt;!ELEMENT comment (#PCDATA) >&#xA;&#xA;&lt;!ELEMENT entry (#PCDATA) >&#xA;&#xA;&lt;!ATTLIST entry key CDATA #REQUIRED>&#xA;&lt;/pre>&#xA;&#xA;@see &lt;a href=&quot;../../../tooldocs/solaris/native2ascii.html&quot;>native2ascii tool for Solaris&lt;/a>&#xA;@see &lt;a href=&quot;../../../tooldocs/windows/native2ascii.html&quot;>native2ascii tool for Windows&lt;/a>&#xA;&#xA;@author  Arthur van Hoff&#xA;@author  Michael McCloskey&#xA;@version 1.84, 05/18/04&#xA;@since   JDK1.0&#xA;" annotatedElement="9564dcd8-2477-4f2a-9aa7-acbab5b7de79"/>
            <generalization xmi:id="49ce5372-e37a-4f77-9f12-7f758a0077ae" isSubstitutable="true" general="53c0e7ae-f262-41d7-bd5e-42f186f703f3"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="bf5a94a4-5768-4113-bc83-d5c2b5d00d59" name="LineReader" visibility="package"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d3ec4a2d-28e5-4594-9186-e05140c35ea5" name="LinkedHashIterator&lt;Entry&lt;K, V>>">
            <templateBinding xmi:id="9c9173c6-e8ec-421d-8638-e41d80424b2f" signature="4c079565-0789-4bf1-9e25-049f5e6a76ab">
              <parameterSubstitution xmi:id="f1552b0b-b30f-4115-b6f1-47fa77013da5" formal="e5247458-b71e-471a-aa50-e982ba010250" actual="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="08169de2-5b98-4cfa-9973-112d030aac98" name="UUID" clientDependency="7c79d347-b8e4-486b-87ba-c7650e9f437d 3d949be1-c398-4b62-a774-fb54050e6379" isLeaf="true">
            <ownedComment xmi:id="ae1825ec-f1f6-4db8-8337-8101ed77ce58" body="A class that represents an immutable universally unique identifier (UUID).&#xA;A UUID represents a 128-bit value.&#xA;&#xA;&lt;p>There exist different variants of these global identifiers. The methods&#xA;of this class are for manipulating the Leach-Salz variant, although the&#xA;constructors allow the creation of any variant of UUID (described below).&#xA;&#xA;&lt;p>The layout of a variant 2 (Leach-Salz) UUID is as follows:&#xA;&#xA;The most significant long consists of the following unsigned fields:&#xA;&lt;pre>&#xA;0xFFFFFFFF00000000 time_low&#xA;0x00000000FFFF0000 time_mid&#xA;0x000000000000F000 version&#xA;0x0000000000000FFF time_hi&#xA;&lt;/pre>&#xA;The least significant long consists of the following unsigned fields:&#xA;&lt;pre>&#xA;0xC000000000000000 variant&#xA;0x3FFF000000000000 clock_seq&#xA;0x0000FFFFFFFFFFFF node&#xA;&lt;/pre>&#xA;&#xA;&lt;p>The variant field contains a value which identifies the layout of&#xA;the &lt;tt>UUID&lt;/tt>. The bit layout described above is valid only for&#xA;a &lt;tt>UUID&lt;/tt> with a variant value of 2, which indicates the&#xA;Leach-Salz variant.&#xA;&#xA;&lt;p>The version field holds a value that describes the type of this&#xA;&lt;tt>UUID&lt;/tt>. There are four different basic types of UUIDs: time-based,&#xA;DCE security, name-based, and randomly generated UUIDs. These types&#xA;have a version value of 1, 2, 3 and 4, respectively.&#xA;&#xA;&lt;p>For more information including algorithms used to create &lt;tt>UUID&lt;/tt>s,&#xA;see the Internet-Draft &lt;a href=&quot;http://www.ietf.org/internet-drafts/draft-mealling-uuid-urn-03.txt&quot;>UUIDs and GUIDs&lt;/a>&#xA;or the standards body definition at&#xA;&lt;a href=&quot;http://www.iso.ch/cate/d2229.html&quot;>ISO/IEC 11578:1996&lt;/a>.&#xA;&#xA;@version 1.14, 07/12/04&#xA;@since   1.5&#xA;" annotatedElement="08169de2-5b98-4cfa-9973-112d030aac98"/>
            <interfaceRealization xmi:id="3d949be1-c398-4b62-a774-fb54050e6379" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="08169de2-5b98-4cfa-9973-112d030aac98" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="7c79d347-b8e4-486b-87ba-c7650e9f437d" name="" supplier="a48c5458-c7b2-4e75-a2df-1f6b3497ce89" client="08169de2-5b98-4cfa-9973-112d030aac98" contract="a48c5458-c7b2-4e75-a2df-1f6b3497ce89"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8925596f-1da7-420b-9191-dec0f190e4ee" name="TaskQueue" visibility="package">
            <ownedComment xmi:id="34296064-54f1-406f-8bd8-f330bf84ad08" body="This class represents a timer task queue: a priority queue of TimerTasks,&#xA;ordered on nextExecutionTime.  Each Timer object has one of these, which it&#xA;shares with its TimerThread.  Internally this class uses a heap, which&#xA;offers log(n) performance for the add, removeMin and rescheduleMin&#xA;operations, and constant time performance for the getMin operation.&#xA;" annotatedElement="8925596f-1da7-420b-9191-dec0f190e4ee"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="09e882a4-dd07-4c3b-9818-4252173f1394" name="Vector" clientDependency="143b21c1-14b9-41ff-a2e5-6c2676a8f14a 7f4a4e5a-8d65-4474-beae-de9e5fd0ffc0 89129d6e-5e2c-4b81-ab3b-4a815d3d2288 e75da139-09fa-4213-b0ed-efb03800a923">
            <ownedComment xmi:id="9ebff7e2-a18e-4731-b728-a90c567a44ee" body="The &lt;code>Vector&lt;/code> class implements a growable array of&#xA;objects. Like an array, it contains components that can be&#xA;accessed using an integer index. However, the size of a&#xA;&lt;code>Vector&lt;/code> can grow or shrink as needed to accommodate&#xA;adding and removing items after the &lt;code>Vector&lt;/code> has been created.&lt;p>&#xA;&#xA;Each vector tries to optimize storage management by maintaining a&#xA;&lt;code>capacity&lt;/code> and a &lt;code>capacityIncrement&lt;/code>. The&#xA;&lt;code>capacity&lt;/code> is always at least as large as the vector&#xA;size; it is usually larger because as components are added to the&#xA;vector, the vector's storage increases in chunks the size of&#xA;&lt;code>capacityIncrement&lt;/code>. An application can increase the&#xA;capacity of a vector before inserting a large number of&#xA;components; this reduces the amount of incremental reallocation. &lt;p>&#xA;&#xA;As of the Java 2 platform v1.2, this class has been retrofitted to&#xA;implement List, so that it becomes a part of Java's collection framework.&#xA;Unlike the new collection implementations, Vector is synchronized.&lt;p>&#xA;&#xA;The Iterators returned by Vector's iterator and listIterator&#xA;methods are &lt;em>fail-fast&lt;/em>: if the Vector is structurally modified&#xA;at any time after the Iterator is created, in any way except through the&#xA;Iterator's own remove or add methods, the Iterator will throw a&#xA;ConcurrentModificationException.  Thus, in the face of concurrent&#xA;modification, the Iterator fails quickly and cleanly, rather than risking&#xA;arbitrary, non-deterministic behavior at an undetermined time in the future.&#xA;The Enumerations returned by Vector's elements method are &lt;em>not&lt;/em>&#xA;fail-fast.&#xA;&#xA;&lt;p>Note that the fail-fast behavior of an iterator cannot be guaranteed&#xA;as it is, generally speaking, impossible to make any hard guarantees in the&#xA;presence of unsynchronized concurrent modification.  Fail-fast iterators&#xA;throw &lt;tt>ConcurrentModificationException&lt;/tt> on a best-effort basis.&#xA;Therefore, it would be wrong to write a program that depended on this&#xA;exception for its correctness:  &lt;i>the fail-fast behavior of iterators&#xA;should be used only to detect bugs.&lt;/i>&lt;p>&#xA;&#xA;This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Lee Boynton&#xA;@author  Jonathan Payne&#xA;@version 1.96, 02/19/04&#xA;@see Collection&#xA;@see List&#xA;@see ArrayList&#xA;@see LinkedList&#xA;@since   JDK1.0&#xA;" annotatedElement="09e882a4-dd07-4c3b-9818-4252173f1394"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="5fde8259-7e7b-4ce9-8ce1-0678abda8179" name="" parameter="55da36f1-9274-4068-a71d-08f9e1c2c732">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="55da36f1-9274-4068-a71d-08f9e1c2c732" parameteredElement="a942df60-1728-4ea3-aba1-e5495313d428">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="a942df60-1728-4ea3-aba1-e5495313d428" name="E" templateParameter="55da36f1-9274-4068-a71d-08f9e1c2c732"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="5815f656-143e-40ed-a901-8bf97934d496" isSubstitutable="true" general="ee758153-f931-43ca-bcea-40b9d95c713b"/>
            <interfaceRealization xmi:id="7f4a4e5a-8d65-4474-beae-de9e5fd0ffc0" name="" supplier="18dc6102-a040-4ae1-aefe-698abc18de28" client="09e882a4-dd07-4c3b-9818-4252173f1394" contract="18dc6102-a040-4ae1-aefe-698abc18de28"/>
            <interfaceRealization xmi:id="e75da139-09fa-4213-b0ed-efb03800a923" name="" supplier="29add607-d540-4560-b2b3-2e3c9d7f8dd2" client="09e882a4-dd07-4c3b-9818-4252173f1394" contract="29add607-d540-4560-b2b3-2e3c9d7f8dd2"/>
            <interfaceRealization xmi:id="143b21c1-14b9-41ff-a2e5-6c2676a8f14a" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="09e882a4-dd07-4c3b-9818-4252173f1394" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="89129d6e-5e2c-4b81-ab3b-4a815d3d2288" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="09e882a4-dd07-4c3b-9818-4252173f1394" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2d56f1d3-7755-42cb-8b39-82461dec1c67" name="RandomAccessSubList" visibility="package" clientDependency="1389a794-9eeb-4f50-9ff5-61314d7b73f8">
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="8c59c2a5-402b-4a7d-bcbb-839f8b24281d" name="" parameter="d35a7353-f1fd-4488-8158-c41b16d26107">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="d35a7353-f1fd-4488-8158-c41b16d26107" parameteredElement="0adb7c5e-2ffe-4a72-9415-fe0a2c9c820c">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="0adb7c5e-2ffe-4a72-9415-fe0a2c9c820c" name="E" templateParameter="d35a7353-f1fd-4488-8158-c41b16d26107"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="acbbe985-b161-4bde-8728-97b72cb9bcd3" isSubstitutable="true" general="7e9d3e75-5f65-4023-864a-40b1867da1e6"/>
            <interfaceRealization xmi:id="1389a794-9eeb-4f50-9ff5-61314d7b73f8" name="" supplier="29add607-d540-4560-b2b3-2e3c9d7f8dd2" client="2d56f1d3-7755-42cb-8b39-82461dec1c67" contract="29add607-d540-4560-b2b3-2e3c9d7f8dd2"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="f2ecd2a3-8039-41dd-a004-e978e2a488aa" name="Collection&lt;E>">
            <templateBinding xmi:id="5d935f7a-ee95-4559-9c27-92c9d36f1299" signature="86a822c7-1195-499c-91ef-c489596e713b">
              <parameterSubstitution xmi:id="5268e97f-9926-4004-a726-7e78ecf5393e" formal="588367f0-9bc8-4d52-aa5c-b86f797fc889" actual="8c882e13-c952-413a-a9d0-54509c03b108"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c566d0d5-9da7-4d88-8612-c4e25f1ef62b" name="CheckedCollection&lt;E>">
            <templateBinding xmi:id="1d000b18-3db0-4f2b-920a-66afa277f438" signature="dc876114-b385-4755-bd99-777106d48376">
              <parameterSubstitution xmi:id="ed7604c5-f492-4c7d-a6b0-22b74e1c03e8" formal="3068fb49-da95-44f5-a7f3-ef45165a3c86" actual="ac3a01de-2fcc-4602-bc20-58bf756625eb"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4a88c391-5956-4a97-b4c5-c778f75f157e" name="PrivateEntryIterator&lt;V>">
            <templateBinding xmi:id="0c450161-c5ca-4ed7-a5d3-ec8c980312fc" signature="d3b3fe15-6155-4eda-a308-89f7d8f408a4">
              <parameterSubstitution xmi:id="eb40a047-8f7a-42fa-9a56-b344f7975665" formal="c59750f5-d765-4382-90ab-8167ab831fc9" actual="ddfce40f-0dea-4c6c-9202-7ca8cbd89af8"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="df9b070d-18cf-4610-9a5e-23b0accfcf92" name="ResourceBundleEnumeration" visibility="package" clientDependency="4d82e8a9-942e-4b6b-ba49-5fe17c13fcdc">
            <ownedComment xmi:id="54eccb87-45ca-48af-81d6-7834a3493e03" body="Implements an Enumeration that combines elements from a Set and&#xA;an Enumeration. Used by ListResourceBundle and PropertyResourceBundle.&#xA;" annotatedElement="df9b070d-18cf-4610-9a5e-23b0accfcf92"/>
            <interfaceRealization xmi:id="4d82e8a9-942e-4b6b-ba49-5fe17c13fcdc" name="" supplier="15d4b817-77f0-4e89-91e0-21503bd76abe" client="df9b070d-18cf-4610-9a5e-23b0accfcf92" contract="15d4b817-77f0-4e89-91e0-21503bd76abe"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ae6462ba-8616-4d38-b491-e7ea36ec4241" name="StringTokenizer" clientDependency="b1e88863-d2c1-48f9-859c-631d3fbe580b">
            <ownedComment xmi:id="57de6be0-63ea-449b-b583-0f3d82f92d9e" body="The string tokenizer class allows an application to break a&#xA;string into tokens. The tokenization method is much simpler than&#xA;the one used by the &lt;code>StreamTokenizer&lt;/code> class. The&#xA;&lt;code>StringTokenizer&lt;/code> methods do not distinguish among&#xA;identifiers, numbers, and quoted strings, nor do they recognize&#xA;and skip comments.&#xA;&lt;p>&#xA;The set of delimiters (the characters that separate tokens) may&#xA;be specified either at creation time or on a per-token basis.&#xA;&lt;p>&#xA;An instance of &lt;code>StringTokenizer&lt;/code> behaves in one of two&#xA;ways, depending on whether it was created with the&#xA;&lt;code>returnDelims&lt;/code> flag having the value &lt;code>true&lt;/code>&#xA;or &lt;code>false&lt;/code>:&#xA;&lt;ul>&#xA;&lt;li>If the flag is &lt;code>false&lt;/code>, delimiter characters serve to&#xA;separate tokens. A token is a maximal sequence of consecutive&#xA;characters that are not delimiters.&#xA;&lt;li>If the flag is &lt;code>true&lt;/code>, delimiter characters are themselves&#xA;considered to be tokens. A token is thus either one delimiter&#xA;character, or a maximal sequence of consecutive characters that are&#xA;not delimiters.&#xA;&lt;/ul>&lt;p>&#xA;A &lt;tt>StringTokenizer&lt;/tt> object internally maintains a current&#xA;position within the string to be tokenized. Some operations advance this&#xA;current position past the characters processed.&lt;p>&#xA;A token is returned by taking a substring of the string that was used to&#xA;create the &lt;tt>StringTokenizer&lt;/tt> object.&#xA;&lt;p>&#xA;The following is one example of the use of the tokenizer. The code:&#xA;&lt;blockquote>&lt;pre>&#xA;StringTokenizer st = new StringTokenizer(&quot;this is a test&quot;);&#xA;while (st.hasMoreTokens()) {&#xA;System.out.println(st.nextToken());&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;prints the following output:&#xA;&lt;blockquote>&lt;pre>&#xA;this&#xA;is&#xA;a&#xA;test&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;&lt;tt>StringTokenizer&lt;/tt> is a legacy class that is retained for&#xA;compatibility reasons although its use is discouraged in new code. It is&#xA;recommended that anyone seeking this functionality use the &lt;tt>split&lt;/tt>&#xA;method of &lt;tt>String&lt;/tt> or the java.util.regex package instead.&#xA;&lt;p>&#xA;The following example illustrates how the &lt;tt>String.split&lt;/tt>&#xA;method can be used to break up a string into its basic tokens:&#xA;&lt;blockquote>&lt;pre>&#xA;String[] result = &quot;this is a test&quot;.split(&quot;\\s&quot;);&#xA;for (int x=0; x&lt;result.length; x++)&#xA;System.out.println(result[x]);&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;prints the following output:&#xA;&lt;blockquote>&lt;pre>&#xA;this&#xA;is&#xA;a&#xA;test&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;@author  unascribed&#xA;@version 1.34, 05/05/04&#xA;@see     java.io.StreamTokenizer&#xA;@since   JDK1.0&#xA;" annotatedElement="ae6462ba-8616-4d38-b491-e7ea36ec4241"/>
            <interfaceRealization xmi:id="b1e88863-d2c1-48f9-859c-631d3fbe580b" name="" supplier="ae48c0db-9bd1-4cc3-a19c-b4aacc62eb41" client="ae6462ba-8616-4d38-b491-e7ea36ec4241" contract="ae48c0db-9bd1-4cc3-a19c-b4aacc62eb41"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="5cfc5135-5649-495f-8f1e-26de7fb7bc4d" name="SortedMap&lt;K, V>">
            <templateBinding xmi:id="7897b45e-df7d-44a9-a7c8-5cfd89853299" signature="faee78e0-d12c-45b3-ad0a-6c80c65948c8">
              <parameterSubstitution xmi:id="6f823b3d-7d8c-4360-9e84-8602f47cbf68" formal="334d45e1-06b9-4fbc-a47d-042ccea8c0af" actual="c9b1c39f-1814-4592-92d8-85d432058e9d"/>
              <parameterSubstitution xmi:id="5272c2e9-9505-4e0d-9f24-0611d89c7fba" formal="260f68d1-2cff-4f5c-a6df-e3640a656fb5" actual="75ebb440-6b0e-4e24-ab2f-ac2881a42f4f"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8ab392e3-9e74-4d89-b2f5-b170c02d13e6" name="UnmodifiableCollection&lt;E>">
            <templateBinding xmi:id="e60993cb-a056-4373-b6fc-421e9f4ad46c" signature="929b14cc-f46d-4baf-8e8e-2fa25991930c">
              <parameterSubstitution xmi:id="7ff6ed8a-c6b9-4308-9eb9-7a7b8ef9ba3c" formal="0e6c63ce-e338-4546-ba33-c6783b8e02bc" actual="0726ea0b-b9c0-432e-a09f-b4ed7a51be2a"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9ad8d964-4efc-4340-b37c-fe6533573abe" name="EnumSet&lt;E>">
            <templateBinding xmi:id="30daafb8-ff6f-481e-8ef7-e76c86662dd7" signature="d4c0eeea-2396-4cf0-9a33-ed25f2d1b32f">
              <parameterSubstitution xmi:id="2b4648c7-d629-4ad9-94d4-65bcd08a03cf" formal="f1678616-e74b-479d-9264-a8b9109daa32" actual="b4678774-33d3-49b2-bd1e-e43970c50d5c"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="baa392ca-bff3-4d7d-b407-489a8610c855" name="Set&lt;E>">
            <templateBinding xmi:id="6af4d9a3-a058-4465-b81d-822959489cf1" signature="001703e6-ec1e-4603-87c0-aef2f0d224ba">
              <parameterSubstitution xmi:id="c3417504-e864-4b43-a60d-d1bdbae13541" formal="e5280fa0-76af-45bb-b215-be3f2107b566" actual="aa974897-ff9a-4352-b0e9-74046999afa7"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ccccb4f4-615a-4880-9e4c-0021ac5929bb" name="AbstractMap&lt;Object, Object>">
            <templateBinding xmi:id="57475b1f-daed-46c5-93a9-081bf2dbf8b8" signature="e1c0c6b1-bc5b-4c0b-a842-1dee570bfb72">
              <parameterSubstitution xmi:id="9394ac6f-a67d-4ac1-8a68-e59ce50a6de9" formal="5678fbfd-3b73-4f2d-9754-00fc4fbc970f" actual="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
              <parameterSubstitution xmi:id="3dcf4318-443b-472b-be6e-ece8c55b9101" formal="7b16f894-dca4-4787-b2f9-4a01749f8a12" actual="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6e231686-13c1-4b2d-a3d6-991269f1c950" name="EventObject" clientDependency="c13a9909-54b8-4bda-a881-ef4ed10a9146">
            <ownedComment xmi:id="21e9e9e5-1966-498e-8308-d4858d3f4162" body="&lt;p>&#xA;The root class from which all event state objects shall be derived.&#xA;&lt;p>&#xA;All Events are constructed with a reference to the object, the &quot;source&quot;,&#xA;that is logically deemed to be the object upon which the Event in question&#xA;initially occurred upon.&#xA;&#xA;@since JDK1.1&#xA;" annotatedElement="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            <interfaceRealization xmi:id="c13a9909-54b8-4bda-a881-ef4ed10a9146" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="6e231686-13c1-4b2d-a3d6-991269f1c950" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0417f47e-9929-4b1d-8f12-0e8aebc79b14" name="HashMap" clientDependency="3789b05b-4abe-473b-8843-2c8424da7d3c 6baa41b7-52a3-43fa-b00a-249e5fd1f092 a10f8e29-0002-486b-83f4-fdc7aed06e60">
            <ownedComment xmi:id="3f4dd6ed-e645-47e2-a908-c3f866ab66b8" body="Hash table based implementation of the &lt;tt>Map&lt;/tt> interface.  This&#xA;implementation provides all of the optional map operations, and permits&#xA;&lt;tt>null&lt;/tt> values and the &lt;tt>null&lt;/tt> key.  (The &lt;tt>HashMap&lt;/tt>&#xA;class is roughly equivalent to &lt;tt>Hashtable&lt;/tt>, except that it is&#xA;unsynchronized and permits nulls.)  This class makes no guarantees as to&#xA;the order of the map; in particular, it does not guarantee that the order&#xA;will remain constant over time.&#xA;&#xA;&lt;p>This implementation provides constant-time performance for the basic&#xA;operations (&lt;tt>get&lt;/tt> and &lt;tt>put&lt;/tt>), assuming the hash function&#xA;disperses the elements properly among the buckets.  Iteration over&#xA;collection views requires time proportional to the &quot;capacity&quot; of the&#xA;&lt;tt>HashMap&lt;/tt> instance (the number of buckets) plus its size (the number&#xA;of key-value mappings).  Thus, it's very important not to set the initial&#xA;capacity too high (or the load factor too low) if iteration performance is&#xA;important.&#xA;&#xA;&lt;p>An instance of &lt;tt>HashMap&lt;/tt> has two parameters that affect its&#xA;performance: &lt;i>initial capacity&lt;/i> and &lt;i>load factor&lt;/i>.  The&#xA;&lt;i>capacity&lt;/i> is the number of buckets in the hash table, and the initial&#xA;capacity is simply the capacity at the time the hash table is created.  The&#xA;&lt;i>load factor&lt;/i> is a measure of how full the hash table is allowed to&#xA;get before its capacity is automatically increased.  When the number of&#xA;entries in the hash table exceeds the product of the load factor and the&#xA;current capacity, the capacity is roughly doubled by calling the&#xA;&lt;tt>rehash&lt;/tt> method.&#xA;&#xA;&lt;p>As a general rule, the default load factor (.75) offers a good tradeoff&#xA;between time and space costs.  Higher values decrease the space overhead&#xA;but increase the lookup cost (reflected in most of the operations of the&#xA;&lt;tt>HashMap&lt;/tt> class, including &lt;tt>get&lt;/tt> and &lt;tt>put&lt;/tt>).  The&#xA;expected number of entries in the map and its load factor should be taken&#xA;into account when setting its initial capacity, so as to minimize the&#xA;number of &lt;tt>rehash&lt;/tt> operations.  If the initial capacity is greater&#xA;than the maximum number of entries divided by the load factor, no&#xA;&lt;tt>rehash&lt;/tt> operations will ever occur.&#xA;&#xA;&lt;p>If many mappings are to be stored in a &lt;tt>HashMap&lt;/tt> instance,&#xA;creating it with a sufficiently large capacity will allow the mappings to&#xA;be stored more efficiently than letting it perform automatic rehashing as&#xA;needed to grow the table.&#xA;&#xA;&lt;p>&lt;b>Note that this implementation is not synchronized.&lt;/b> If multiple&#xA;threads access this map concurrently, and at least one of the threads&#xA;modifies the map structurally, it &lt;i>must&lt;/i> be synchronized externally.&#xA;(A structural modification is any operation that adds or deletes one or&#xA;more mappings; merely changing the value associated with a key that an&#xA;instance already contains is not a structural modification.)  This is&#xA;typically accomplished by synchronizing on some object that naturally&#xA;encapsulates the map.  If no such object exists, the map should be&#xA;&quot;wrapped&quot; using the &lt;tt>Collections.synchronizedMap&lt;/tt> method.  This is&#xA;best done at creation time, to prevent accidental unsynchronized access to&#xA;the map: &lt;pre> Map m = Collections.synchronizedMap(new HashMap(...));&#xA;&lt;/pre>&#xA;&#xA;&lt;p>The iterators returned by all of this class's &quot;collection view methods&quot;&#xA;are &lt;i>fail-fast&lt;/i>: if the map is structurally modified at any time after&#xA;the iterator is created, in any way except through the iterator's own&#xA;&lt;tt>remove&lt;/tt> or &lt;tt>add&lt;/tt> methods, the iterator will throw a&#xA;&lt;tt>ConcurrentModificationException&lt;/tt>.  Thus, in the face of concurrent&#xA;modification, the iterator fails quickly and cleanly, rather than risking&#xA;arbitrary, non-deterministic behavior at an undetermined time in the&#xA;future.&#xA;&#xA;&lt;p>Note that the fail-fast behavior of an iterator cannot be guaranteed&#xA;as it is, generally speaking, impossible to make any hard guarantees in the&#xA;presence of unsynchronized concurrent modification.  Fail-fast iterators&#xA;throw &lt;tt>ConcurrentModificationException&lt;/tt> on a best-effort basis.&#xA;Therefore, it would be wrong to write a program that depended on this&#xA;exception for its correctness: &lt;i>the fail-fast behavior of iterators&#xA;should be used only to detect bugs.&lt;/i>&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Doug Lea&#xA;@author  Josh Bloch&#xA;@author  Arthur van Hoff&#xA;@author  Neal Gafter&#xA;@version 1.63, 02/19/04&#xA;@see     Object#hashCode()&#xA;@see     Collection&#xA;@see&#x9;    Map&#xA;@see&#x9;    TreeMap&#xA;@see&#x9;    Hashtable&#xA;@since   1.2&#xA;" annotatedElement="0417f47e-9929-4b1d-8f12-0e8aebc79b14"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="728ca417-c96f-45a1-8e42-8731b30e61ee" name="" parameter="941bb1e1-6bf3-431a-9e39-f73396ea1874 3e4536b5-4534-4015-85ed-a0cb7c4d8ff9">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="941bb1e1-6bf3-431a-9e39-f73396ea1874" parameteredElement="2a05247f-ff1c-4112-a876-55b56176f13d">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="2a05247f-ff1c-4112-a876-55b56176f13d" name="K" templateParameter="941bb1e1-6bf3-431a-9e39-f73396ea1874"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="3e4536b5-4534-4015-85ed-a0cb7c4d8ff9" parameteredElement="da460b87-fd1d-4c41-acd4-09517a7d4c65">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="da460b87-fd1d-4c41-acd4-09517a7d4c65" name="V" templateParameter="3e4536b5-4534-4015-85ed-a0cb7c4d8ff9"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="d09a2f94-4c74-4af9-a03b-aa6cbfd5a8bf" isSubstitutable="true" general="7aeba934-44c6-42f4-9082-79695a7c74c4"/>
            <interfaceRealization xmi:id="3789b05b-4abe-473b-8843-2c8424da7d3c" name="" supplier="b5eaa913-ac40-4b35-bf06-e3638ddc059a" client="0417f47e-9929-4b1d-8f12-0e8aebc79b14" contract="b5eaa913-ac40-4b35-bf06-e3638ddc059a"/>
            <interfaceRealization xmi:id="a10f8e29-0002-486b-83f4-fdc7aed06e60" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="0417f47e-9929-4b1d-8f12-0e8aebc79b14" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="6baa41b7-52a3-43fa-b00a-249e5fd1f092" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0417f47e-9929-4b1d-8f12-0e8aebc79b14" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a9dd1ed1-15f4-4e9a-88cb-2f4af5fbb5c9" name="Entry" visibility="package" clientDependency="00552793-a768-4aff-a087-4afbc9f48da5">
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="7cf51448-f1eb-4302-9df0-1bb65de7a0bc" name="" parameter="d8da125c-4daa-452a-829a-152b126639d6 24c364a9-9113-4693-b2f0-8ccded1cd0c8">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="d8da125c-4daa-452a-829a-152b126639d6" parameteredElement="d5afbc10-3413-49c0-b47e-bf636c0b97d6">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="d5afbc10-3413-49c0-b47e-bf636c0b97d6" name="K" templateParameter="d8da125c-4daa-452a-829a-152b126639d6"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="24c364a9-9113-4693-b2f0-8ccded1cd0c8" parameteredElement="2b17f55f-3145-41f4-b96b-0dd6f6a3ff05">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="2b17f55f-3145-41f4-b96b-0dd6f6a3ff05" name="V" templateParameter="24c364a9-9113-4693-b2f0-8ccded1cd0c8"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="00552793-a768-4aff-a087-4afbc9f48da5" name="" supplier="5bebc1fb-871c-4596-8648-6ad46faeacab" client="a9dd1ed1-15f4-4e9a-88cb-2f4af5fbb5c9" contract="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="e0179c36-0077-4914-b3fd-d1448d758d99" name="HashIterator" visibility="private" clientDependency="d9d76965-3c56-4a58-8b5d-7e787645f84c" isAbstract="true">
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="5bf2c9be-3da9-4abb-879a-cd9f7d570041" name="" parameter="8d329d03-ffda-4a1f-9dcd-d32d0f9bf4fd">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="8d329d03-ffda-4a1f-9dcd-d32d0f9bf4fd" parameteredElement="137e6185-a226-41d2-92c0-e28d6954359d">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="137e6185-a226-41d2-92c0-e28d6954359d" name="E" templateParameter="8d329d03-ffda-4a1f-9dcd-d32d0f9bf4fd"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="d9d76965-3c56-4a58-8b5d-7e787645f84c" name="" supplier="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f" client="e0179c36-0077-4914-b3fd-d1448d758d99" contract="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="efeaf8a5-b249-48fa-acf0-e4b14087dff1" name="ValueIterator" visibility="private">
              <generalization xmi:id="70980e73-b60e-4507-a362-3a494aae249a" isSubstitutable="true" general="42641463-6c49-4d1d-9887-7dd9028506e2"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="e21e9b06-0c81-4658-8ad7-983b2a1fdc4c" name="KeyIterator" visibility="private">
              <generalization xmi:id="8890df14-30c7-4253-bf19-dc2cf8f35766" isSubstitutable="true" general="d8be5686-fab6-423c-9030-a6e37ad23490"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="0373cbec-ec45-455d-8209-149abaf2bec9" name="EntryIterator" visibility="private">
              <generalization xmi:id="347cd14b-f245-48e8-beb9-eeeecaaeecf4" isSubstitutable="true" general="edebdcb7-7364-44ba-942e-f5457e8b6987"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="d3a8fd4f-80ef-4440-93c3-4706f2013274" name="KeySet" visibility="private">
              <generalization xmi:id="a5a1d7b1-89e7-46ae-a57c-b8220cad2f72" isSubstitutable="true" general="d8e4bb4a-fea6-4600-8da2-311416fd86f2"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ee9dbaa8-3bd7-45ce-9ed5-10bf2b0d3db0" name="Values" visibility="private">
              <generalization xmi:id="3d56cbd7-26b3-4f42-984e-d24a3524769c" isSubstitutable="true" general="831cb79b-21c0-4203-9962-b2cebddd4105"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="d5fc0eb8-b322-459a-acf4-0a32744b9482" name="EntrySet" visibility="private">
              <generalization xmi:id="7e3cc467-9499-4be7-b5e6-f12becf96652" isSubstitutable="true" general="a44e7a8f-24fa-45cd-b665-af0b7a72a836"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="36fa09b0-1fb2-4c2d-b613-d86964fc1034" name="InvalidPropertiesFormatException">
            <ownedComment xmi:id="e6684065-3bfb-4252-874c-f8096ef189bf" body="Thrown to indicate that an operation could not complete because&#xA;the input did not conform to the appropriate XML document type&#xA;for a collection of properties, as per the {@link Properties}&#xA;specification.&lt;p>&#xA;&#xA;Note, that although InvalidPropertiesFormatException inherits Serializable&#xA;interface from Exception, it is not intended to be Serializable. Appropriate&#xA;serialization methods are implemented to throw NotSerializableException.&#xA;&#xA;@version 1.3 03/12/19&#xA;@see     Properties&#xA;@since   1.5&#xA;@serial exclude&#xA;" annotatedElement="36fa09b0-1fb2-4c2d-b613-d86964fc1034"/>
            <generalization xmi:id="d0c8e755-058d-4ceb-b8dc-e0d5d0c6f3a4" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="31c411a9-e4d5-4a00-b395-a2e029339344" name="MissingFormatArgumentException">
            <ownedComment xmi:id="abe7f101-f8fc-49e1-ab12-bf5e0e0f2129" body="Unchecked exception thrown when there is a format specifier which does not&#xA;have a corresponding argument or if an argument index refers to an argument&#xA;that does not exist.&#xA;&#xA;&lt;p> Unless otherwise specified, passing a &lt;tt>null&lt;/tt> argument to any&#xA;method or constructor in this class will cause a {@link&#xA;NullPointerException} to be thrown.&#xA;&#xA;@version &#x9;1.2, 12/19/03&#xA;@since 1.5&#xA;" annotatedElement="31c411a9-e4d5-4a00-b395-a2e029339344"/>
            <generalization xmi:id="a52b1c26-1dc3-4d48-a1e9-8da08fa062f6" isSubstitutable="true" general="615b003b-a7bd-4b48-ba53-15e2ad73fd34"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="53c0e7ae-f262-41d7-bd5e-42f186f703f3" name="Hashtable&lt;Object, Object>">
            <templateBinding xmi:id="b491fab2-b9c3-42f3-9756-6c70e9e516c2" signature="38dfbd17-3345-474d-88ef-bf79caf28156">
              <parameterSubstitution xmi:id="4629cd8f-6208-4c42-9d8a-a5b4d78e0b99" formal="eeb4e7cb-76c6-4170-bc8f-720a3b2f69a4" actual="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
              <parameterSubstitution xmi:id="42d12254-2619-43d9-8d38-a5e7067ec8dc" formal="94536dda-5157-4349-9148-3546ca5f9897" actual="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="62eedb88-3f85-49f1-87a0-dc45d81efd9e" name="UnmodifiableMap&lt;K, V>">
            <templateBinding xmi:id="1a30c0de-c159-431f-bfab-c5b04a3e4f49" signature="927c71e8-66b7-466a-af25-d1fd5b91c442">
              <parameterSubstitution xmi:id="09d3e9fa-cbbc-4a58-9266-69e6d4136aad" formal="cdf04a92-f595-4da5-ac7a-d642e2492e7f" actual="c9b1c39f-1814-4592-92d8-85d432058e9d"/>
              <parameterSubstitution xmi:id="b748578a-c289-4bf4-95a7-e6fcf1e8aad6" formal="0abac655-a6d9-4170-b989-cb4966875539" actual="75ebb440-6b0e-4e24-ab2f-ac2881a42f4f"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d5e62618-f21e-4bfd-8959-057ea542522d" name="Formatter" clientDependency="63fd4723-4ab8-4087-82f7-0b02f53e15b4 39b413f3-9adc-4529-a018-17fc951b2988" isLeaf="true">
            <ownedComment xmi:id="fe0c1424-8924-4f50-b1ed-02ed62a4a75b" body="An interpreter for printf-style format strings.  This class provides support&#xA;for layout justification and alignment, common formats for numeric, string,&#xA;and date/time data, and locale-specific output.  Common Java types such as&#xA;&lt;tt>byte&lt;/tt>, {@link java.math.BigDecimal BigDecimal}, and {@link Calendar}&#xA;are supported.  Limited formatting customization for arbitrary user types is&#xA;provided through the {@link Formattable} interface.&#xA;&#xA;&lt;p> Formatters are not necessarily safe for multithreaded access.  Thread&#xA;safety is optional and is the responsibility of users of methods in this&#xA;class.&#xA;&#xA;&lt;p> Formatted printing for the Java language is heavily inspired by C's&#xA;&lt;tt>printf&lt;/tt>.  Although the format strings are similar to C, some&#xA;customizations have been made to accommodate the Java language and exploit&#xA;some of its features.  Also, Java formatting is more strict than C's; for&#xA;example, if a conversion is incompatible with a flag, an exception will be&#xA;thrown.  In C inapplicable flags are silently ignored.  The format strings&#xA;are thus intended to be recognizable to C programmers but not necessarily&#xA;completely compatible with those in C.&#xA;&#xA;&lt;p> Examples of expected usage:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;StringBuilder sb = new StringBuilder();&#xA;Send all output to the Appendable object sb&#xA;Formatter formatter = new Formatter(sb, Locale.US);&#xA;&#xA;Explicit argument indices may be used to re-order output.&#xA;formatter.format(&quot;%4$2s %3$2s %2$2s %1$2s&quot;, &quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;)&#xA;-> &quot; d  c  b  a&quot;&#xA;&#xA;Optional locale as the first argument can be used to get&#xA;locale-specific formatting of numbers.  The precision and width can be&#xA;given to round and align the value.&#xA;formatter.format(Locale.FRANCE, &quot;e = %+10.4f&quot;, Math.E);&#xA;-> &quot;e =    +2,7183&quot;&#xA;&#xA;The '(' numeric flag may be used to format negative numbers with&#xA;parentheses rather than a minus sign.  Group separators are&#xA;automatically inserted.&#xA;formatter.format(&quot;Amount gained or lost since last statement: $ %(,.2f&quot;,&#xA;balanceDelta);&#xA;-> &quot;Amount gained or lost since last statement: $ (6,217.58)&quot;&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p> Convenience methods for common formatting requests exist as illustrated&#xA;by the following invocations:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;Writes a formatted string to System.out.&#xA;System.out.format(&quot;Local time: %tT&quot;, Calendar.getInstance());&#xA;-> &quot;Local time: 13:34:18&quot;&#xA;&#xA;Writes formatted output to System.err.&#xA;System.err.printf(&quot;Unable to open file '%1$s': %2$s&quot;,&#xA;fileName, exception.getMessage());&#xA;-> &quot;Unable to open file 'food': No such file or directory&quot;&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p> Like C's &lt;tt>sprintf(3)&lt;/tt>, Strings may be formatted using the static&#xA;method {@link String#format(String,Object...) String.format}:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;Format a string containing a date.&#xA;import java.util.Calendar;&#xA;import java.util.GregorianCalendar;&#xA;import static java.util.Calendar.*;&#xA;&#xA;Calendar c = new GregorianCalendar(1995, MAY, 23);&#xA;String s = String.format(&quot;Duke's Birthday: %1$tm %1$te,%1$tY&quot;, c);&#xA;-> s == &quot;Duke's Birthday: May 23, 1995&quot;&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;a name=&quot;org&quot;>&lt;h3> Organization &lt;/h3>&lt;/a>&#xA;&#xA;&lt;p> This specification is divided into two sections.  The first section, &lt;a&#xA;href=&quot;#summary&quot;>Summary&lt;/a>, covers the basic formatting concepts.  This&#xA;section is intended for users who want to get started quickly and are&#xA;familiar with formatted printing in other programming languages.  The second&#xA;section, &lt;a href=&quot;#detail&quot;>Details&lt;/a>, covers the specific implementation&#xA;details.  It is intended for users who want more precise specification of&#xA;formatting behavior.&#xA;&#xA;&lt;a name=&quot;summary&quot;>&lt;h3> Summary &lt;/h3>&lt;/a>&#xA;&#xA;&lt;p> This section is intended to provide a brief overview of formatting&#xA;concepts.  For precise behavioral details, refer to the &lt;a&#xA;href=&quot;#detail&quot;>Details&lt;/a> section.&#xA;&#xA;&lt;a name=&quot;syntax&quot;>&lt;h4> Format String Syntax &lt;/h4>&lt;/a>&#xA;&#xA;&lt;p> Every method which produces formatted output requires a &lt;i>format&#xA;string&lt;/i> and an &lt;i>argument list&lt;/i>.  The format string is a {@link&#xA;String} which may contain fixed text and one or more embedded &lt;i>format&#xA;specifiers&lt;/i>.  Consider the following example:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;Calendar c = ...;&#xA;String s = String.format(&quot;Duke's Birthday: %1$tm %1$te,%1$tY&quot;, c);&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;This format string is the first argument to the &lt;tt>format&lt;/tt> method.  It&#xA;contains three format specifiers &quot;&lt;tt>%1$tm&lt;/tt>&quot;, &quot;&lt;tt>%1$te&lt;/tt>&quot;, and&#xA;&quot;&lt;tt>%1$tY&lt;/tt>&quot; which indicate how the arguments should be processed and&#xA;where they should be inserted in the text.  The remaining portions of the&#xA;format string are fixed text including &lt;tt>&quot;Dukes Birthday: &quot;&lt;/tt> and any&#xA;other spaces or punctuation.&#xA;&#xA;The argument list consists of all arguments passed to the method after the&#xA;format string.  In the above example, the argument list is of size one and&#xA;consists of the new {@link java.util.Calendar Calendar} object.&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li> The format specifiers for general, character, and numeric types have&#xA;the following syntax:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;%[argument_index$][flags][width][.precision]conversion&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p> The optional &lt;i>argument_index&lt;/i> is a decimal integer indicating the&#xA;position of the argument in the argument list.  The first argument is&#xA;referenced by &quot;&lt;tt>1$&lt;/tt>&quot;, the second by &quot;&lt;tt>2$&lt;/tt>&quot;, etc.&#xA;&#xA;&lt;p> The optional &lt;i>flags&lt;/i> is a set of characters that modify the output&#xA;format.  The set of valid flags depends on the conversion.&#xA;&#xA;&lt;p> The optional &lt;i>width&lt;/i> is a non-negative decimal integer indicating&#xA;the minimum number of characters to be written to the output.&#xA;&#xA;&lt;p> The optional &lt;i>precision&lt;/i> is a non-negative decimal integer usually&#xA;used to restrict the number of characters.  The specific behavior depends on&#xA;the conversion.&#xA;&#xA;&lt;p> The required &lt;i>conversion&lt;/i> is a character indicating how the&#xA;argument should be formatted.  The set of valid conversions for a given&#xA;argument depends on the argument's data type.&#xA;&#xA;&lt;li> The format specifiers for types which are used to represents dates and&#xA;times have the following syntax:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;%[argument_index$][flags][width]conversion&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p> The optional &lt;i>argument_index&lt;/i>, &lt;i>flags&lt;/i> and &lt;i>width&lt;/i> are&#xA;defined as above.&#xA;&#xA;&lt;p> The required &lt;i>conversion&lt;/i> is a two character sequence.  The first&#xA;character is &lt;tt>'t'&lt;/tt> or &lt;tt>'T'&lt;/tt>.  The second character indicates&#xA;the format to be used.  These characters are similar to but not completely&#xA;identical to those defined by GNU &lt;tt>date&lt;/tt> and POSIX&#xA;&lt;tt>strftime(3c)&lt;/tt>.&#xA;&#xA;&lt;li> The format specifiers which do not correspond to arguments have the&#xA;following syntax:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;%[flags][width]conversion&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p> The optional &lt;i>flags&lt;/i> and &lt;i>width&lt;/i> is defined as above.&#xA;&#xA;&lt;p> The required &lt;i>conversion&lt;/i> is a character indicating content to be&#xA;inserted in the output.&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;h4> Conversions &lt;/h4>&#xA;&#xA;&lt;p> Conversions are divided into the following categories:&#xA;&#xA;&lt;ol>&#xA;&#xA;&lt;li> &lt;b>General&lt;/b> - may be applied to any argument&#xA;type&#xA;&#xA;&lt;li> &lt;b>Character&lt;/b> - may be applied to basic types which represent&#xA;Unicode characters: &lt;tt>char&lt;/tt>, {@link Character}, &lt;tt>byte&lt;/tt>, {@link&#xA;Byte}, &lt;tt>short&lt;/tt>, and {@link Short}. This conversion may also be&#xA;applied to the types &lt;tt>int&lt;/tt> and {@link Integer} when {@link&#xA;Character#isValidCodePoint} returns &lt;tt>true&lt;/tt>&#xA;&#xA;&lt;li> &lt;b>Numeric&lt;/b>&#xA;&#xA;&lt;ol>&#xA;&#xA;&lt;li> &lt;b>Integral&lt;/b> - may be applied to Java integral types: &lt;tt>byte&lt;/tt>,&#xA;{@link Byte}, &lt;tt>short&lt;/tt>, {@link Short}, &lt;tt>int&lt;/tt> and {@link&#xA;Integer}, &lt;tt>long&lt;/tt>, {@link Long}, and {@link java.math.BigInteger&#xA;BigInteger}&#xA;&#xA;&lt;li>&lt;b>Floating Point&lt;/b> - may be applied to Java floating-point types:&#xA;&lt;tt>float&lt;/tt>, {@link Float}, &lt;tt>double&lt;/tt>, {@link Double}, and {@link&#xA;java.math.BigDecimal BigDecimal}&#xA;&#xA;&lt;/ol>&#xA;&#xA;&lt;li> &lt;b>Date/Time&lt;/b> - may be applied to Java types which are capable of&#xA;encoding a date or time: &lt;tt>long&lt;/tt>, {@link Long}, {@link Calendar}, and&#xA;{@link Date}.&#xA;&#xA;&lt;li> &lt;b>Percent&lt;/b> - produces a literal &lt;tt>'%'&lt;/tt>&#xA;(&lt;tt>'&amp;#92;u0025'&lt;/tt>)&#xA;&#xA;&lt;li> &lt;b>Line Separator&lt;/b> - produces the platform-specific line separator&#xA;&#xA;&lt;/ol>&#xA;&#xA;&lt;p> The following table summarizes the supported conversions.  Conversions&#xA;denoted by an upper-case character (i.e. &lt;tt>'B'&lt;/tt>, &lt;tt>'H'&lt;/tt>,&#xA;&lt;tt>'S'&lt;/tt>, &lt;tt>'C'&lt;/tt>, &lt;tt>'X'&lt;/tt>, &lt;tt>'E'&lt;/tt>, &lt;tt>'G'&lt;/tt>,&#xA;&lt;tt>'A'&lt;/tt>, and &lt;tt>'T'&lt;/tt>) are the same as those for the corresponding&#xA;lower-case conversion characters except that the result is converted to&#xA;upper case according to the rules of the prevailing {@link java.util.Locale&#xA;Locale}.  The result is equivalent to the following invocation of {@link&#xA;String#toUpperCase()}&#xA;&#xA;&lt;pre>&#xA;out.toUpperCase() &lt;/pre>&#xA;&#xA;&lt;table cellpadding=5 summary=&quot;genConv&quot;>&#xA;&#xA;&lt;tr>&lt;th valign=&quot;bottom&quot;> Conversion&#xA;&lt;th valign=&quot;bottom&quot;> Argument Category&#xA;&lt;th valign=&quot;bottom&quot;> Description&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'b'&lt;/tt>, &lt;tt>'B'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> general&#xA;&lt;td> If the argument &lt;i>arg&lt;/i> is &lt;tt>null&lt;/tt>, then the result is&#xA;&quot;&lt;tt>false&lt;/tt>&quot;.  If &lt;i>arg&lt;/i> is a &lt;tt>boolean&lt;/tt> or {@link&#xA;Boolean}, then the result is the string returned by {@link&#xA;String#valueOf(boolean) String.valueOf()}.  Otherwise, the result is&#xA;&quot;true&quot;.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'h'&lt;/tt>, &lt;tt>'H'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> general&#xA;&lt;td> If the argument &lt;i>arg&lt;/i> is &lt;tt>null&lt;/tt>, then the result is&#xA;&quot;&lt;tt>null&lt;/tt>&quot;.  Otherwise, the result is obtained by invoking&#xA;&lt;tt>Integer.toHexString(arg.hashCode())&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'s'&lt;/tt>, &lt;tt>'S'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> general&#xA;&lt;td> If the argument &lt;i>arg&lt;/i> is &lt;tt>null&lt;/tt>, then the result is&#xA;&quot;&lt;tt>null&lt;/tt>&quot;.  If &lt;i>arg&lt;/i> implements {@link Formattable}, then&#xA;{@link Formattable#formatTo arg.formatTo} is invoked. Otherwise, the&#xA;result is obtained by invoking &lt;tt>arg.toString()&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'c'&lt;/tt>, &lt;tt>'C'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> character&#xA;&lt;td> The result is a Unicode character&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'d'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> integral&#xA;&lt;td> The result is formatted as a decimal integer&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'o'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> integral&#xA;&lt;td> The result is formatted as an octal integer&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'x'&lt;/tt>, &lt;tt>'X'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> integral&#xA;&lt;td> The result is formatted as a hexadecimal integer&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'e'&lt;/tt>, &lt;tt>'E'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> floating point&#xA;&lt;td> The result is formatted as a decimal number in computerized&#xA;scientific notation&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'f'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> floating point&#xA;&lt;td> The result is formatted as a decimal number&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'g'&lt;/tt>, &lt;tt>'G'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> floating point&#xA;&lt;td> The result is formatted using computerized scientific notation or&#xA;decimal format, depending on the precision and the value after rounding.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'a'&lt;/tt>, &lt;tt>'A'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> floating point&#xA;&lt;td> The result is formatted as a hexadecimal floating-point number with&#xA;a significand and an exponent&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'t'&lt;/tt>, &lt;tt>'T'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> date/time&#xA;&lt;td> Prefix for date and time conversion characters.  See &lt;a&#xA;href=&quot;#dt&quot;>Date/Time Conversions&lt;/a>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'%'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> percent&#xA;&lt;td> The result is a literal &lt;tt>'%'&lt;/tt> (&lt;tt>'&amp;#92;u0025'&lt;/tt>)&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'n'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> line separator&#xA;&lt;td> The result is the platform-specific line separator&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;p> Any characters not explicitly defined as conversions are illegal and are&#xA;reserved for future extensions.&#xA;&#xA;&lt;a name=&quot;dt&quot;>&lt;h4> Date/Time Conversions &lt;/h4>&lt;/a>&#xA;&#xA;&lt;p> The following date and time conversion suffix characters are defined for&#xA;the &lt;tt>'t'&lt;/tt> and &lt;tt>'T'&lt;/tt> conversions.  The types are similar to but&#xA;not completely identical to those defined by GNU &lt;tt>date&lt;/tt> and POSIX&#xA;&lt;tt>strftime(3c)&lt;/tt>.  Additional conversion types are provided to access&#xA;Java-specific functionality (e.g. &lt;tt>'L'&lt;/tt> for milliseconds within the&#xA;second).&#xA;&#xA;&lt;p> The following conversion characters are used for formatting times:&#xA;&#xA;&lt;table cellpadding=5 summary=&quot;time&quot;>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'H'&lt;/tt>&#xA;&lt;td> Hour of the day for the 24-hour clock, formatted as two digits with&#xA;a leading zero as necessary i.e. &lt;tt>00 - 23&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'I'&lt;/tt>&#xA;&lt;td> Hour for the 12-hour clock, formatted as two digits with a leading&#xA;zero as necessary, i.e.  &lt;tt>01 - 12&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'k'&lt;/tt>&#xA;&lt;td> Hour of the day for the 24-hour clock, i.e. &lt;tt>0 - 23&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'l'&lt;/tt>&#xA;&lt;td> Hour for the 12-hour clock, i.e. &lt;tt>1 - 12&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'M'&lt;/tt>&#xA;&lt;td> Minute within the hour formatted as two digits with a leading zero&#xA;as necessary, i.e.  &lt;tt>00 - 59&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'S'&lt;/tt>&#xA;&lt;td> Seconds within the minute, formatted as two digits with a leading&#xA;zero as necessary, i.e. &lt;tt>00 - 60&lt;/tt> (&quot;&lt;tt>60&lt;/tt>&quot; is a special&#xA;value required to support leap seconds).&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'L'&lt;/tt>&#xA;&lt;td> Millisecond within the second formatted as three digits with&#xA;leading zeros as necessary, i.e. &lt;tt>000 - 999&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'N'&lt;/tt>&#xA;&lt;td> Nanosecond within the second, formatted as nine digits with leading&#xA;zeros as necessary, i.e. &lt;tt>000000000 - 999999999&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'p'&lt;/tt>&#xA;&lt;td> Locale-specific {@linkplain&#xA;java.text.DateFormatSymbols#getAmPmStrings morning or afternoon} marker&#xA;in lower case, e.g.&quot;&lt;tt>am&lt;/tt>&quot; or &quot;&lt;tt>pm&lt;/tt>&quot;. Use of the conversion&#xA;prefix &lt;tt>'T'&lt;/tt> forces this output to upper case.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'z'&lt;/tt>&#xA;&lt;td> &lt;a href=&quot;http://www.ietf.org/rfc/rfc0822.txt&quot;>RFC&amp;nbsp;822&lt;/a>&#xA;style numeric time zone offset from GMT, e.g. &lt;tt>-0800&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'Z'&lt;/tt>&#xA;&lt;td> A string representing the abbreviation for the time zone.  The&#xA;Formatter's locale will supersede the locale of the argument (if any).&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'s'&lt;/tt>&#xA;&lt;td> Seconds since the beginning of the epoch starting at 1 January 1970&#xA;&lt;tt>00:00:00&lt;/tt> UTC, i.e. &lt;tt>Long.MIN_VALUE/1000&lt;/tt> to&#xA;&lt;tt>Long.MAX_VALUE/1000&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'Q'&lt;/tt>&#xA;&lt;td> Milliseconds since the beginning of the epoch starting at 1 January&#xA;1970 &lt;tt>00:00:00&lt;/tt> UTC, i.e. &lt;tt>Long.MIN_VALUE&lt;/tt> to&#xA;&lt;tt>Long.MAX_VALUE&lt;/tt>.&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;p> The following conversion characters are used for formatting dates:&#xA;&#xA;&lt;table cellpadding=5 summary=&quot;date&quot;>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'B'&lt;/tt>&#xA;&lt;td> Locale-specific {@linkplain java.text.DateFormatSymbols#getMonths&#xA;full month name}, e.g. &lt;tt>&quot;January&quot;&lt;/tt>, &lt;tt>&quot;February&quot;&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'b'&lt;/tt>&#xA;&lt;td> Locale-specific {@linkplain&#xA;java.text.DateFormatSymbols#getShortMonths abbreviated month name},&#xA;e.g. &lt;tt>&quot;Jan&quot;&lt;/tt>, &lt;tt>&quot;Feb&quot;&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'h'&lt;/tt>&#xA;&lt;td> Same as &lt;tt>'b'&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'A'&lt;/tt>&#xA;&lt;td> Locale-specific full name of the {@linkplain&#xA;java.text.DateFormatSymbols#getWeekdays day of the week},&#xA;e.g. &lt;tt>&quot;Sunday&quot;&lt;/tt>, &lt;tt>&quot;Monday&quot;&lt;/tt>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'a'&lt;/tt>&#xA;&lt;td> Locale-specific short name of the {@linkplain&#xA;java.text.DateFormatSymbols#getShortWeekdays day of the week},&#xA;e.g. &lt;tt>&quot;Sun&quot;&lt;/tt>, &lt;tt>&quot;Mon&quot;&lt;/tt>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'C'&lt;/tt>&#xA;&lt;td> Four-digit year divided by &lt;tt>100&lt;/tt>, formatted as two digits&#xA;with leading zero as necessary, i.e. &lt;tt>00 - 99&lt;/tt>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'Y'&lt;/tt>&#xA;&lt;td> Year, formatted as at least four digits with leading zeros as&#xA;necessary, e.g. &lt;tt>0092&lt;/tt> equals &lt;tt>92&lt;/tt> CE for the Gregorian&#xA;calendar.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'y'&lt;/tt>&#xA;&lt;td> Last two digits of the year, formatted with leading zeros as&#xA;necessary, i.e. &lt;tt>00 - 99&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'j'&lt;/tt>&#xA;&lt;td> Day of year, formatted as three digits with leading zeros as&#xA;necessary, e.g. &lt;tt>001 - 366&lt;/tt> for the Gregorian calendar.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'m'&lt;/tt>&#xA;&lt;td> Month, formatted as two digits with leading zeros as necessary,&#xA;i.e. &lt;tt>01 - 13&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'d'&lt;/tt>&#xA;&lt;td> Day of month, formatted as two digits with leading zeros as&#xA;necessary, i.e. &lt;tt>01 - 31&lt;/tt>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'e'&lt;/tt>&#xA;&lt;td> Day of month, formatted as two digits, i.e. &lt;tt>1 - 31&lt;/tt>.&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;p> The following conversion characters are used for formatting common&#xA;date/time compositions.&#xA;&#xA;&lt;table cellpadding=5 summary=&quot;composites&quot;>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'R'&lt;/tt>&#xA;&lt;td> Time formatted for the 24-hour clock as &lt;tt>&quot;%tH:%tM&quot;&lt;/tt>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'T'&lt;/tt>&#xA;&lt;td> Time formatted for the 24-hour clock as &lt;tt>&quot;%tH:%tM:%tS&quot;&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'r'&lt;/tt>&#xA;&lt;td> Time formatted for the 12-hour clock as &lt;tt>&quot;%tI:%tM:%tS %Tp&quot;&lt;/tt>.&#xA;The location of the morning or afternoon marker (&lt;tt>'%Tp'&lt;/tt>) may be&#xA;locale-dependent.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'D'&lt;/tt>&#xA;&lt;td> Date formatted as &lt;tt>&quot;%tm/%td/%ty&quot;&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'F'&lt;/tt>&#xA;&lt;td> &lt;a href=&quot;http://www.w3.org/TR/NOTE-datetime&quot;>ISO&amp;nbsp;8601&lt;/a>&#xA;complete date formatted as &lt;tt>&quot;%tY-%tm-%td&quot;&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'c'&lt;/tt>&#xA;&lt;td> Date and time formatted as &lt;tt>&quot;%ta %tb %td %tT %tZ %tY&quot;&lt;/tt>,&#xA;e.g. &lt;tt>&quot;Sun Jul 20 16:17:00 EDT 1969&quot;&lt;/tt>.&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;p> Any characters not explicitly defined as date/time conversion suffixes&#xA;are illegal and are reserved for future extensions.&#xA;&#xA;&lt;h4> Flags &lt;/h4>&#xA;&#xA;&lt;p> The following table summarizes the supported flags.  &lt;i>y&lt;/i> means the&#xA;flag is supported for the indicated argument types.&#xA;&#xA;&lt;table cellpadding=5 summary=&quot;genConv&quot;>&#xA;&#xA;&lt;tr>&lt;th valign=&quot;bottom&quot;> Flag &lt;th valign=&quot;bottom&quot;> General&#xA;&lt;th valign=&quot;bottom&quot;> Character &lt;th valign=&quot;bottom&quot;> Integral&#xA;&lt;th valign=&quot;bottom&quot;> Floating Point&#xA;&lt;th valign=&quot;bottom&quot;> Date/Time&#xA;&lt;th valign=&quot;bottom&quot;> Description&#xA;&#xA;&lt;tr>&lt;td> '-' &lt;td align=&quot;center&quot; valign=&quot;top&quot;> y&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> y&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> y&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> y&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> y&#xA;&lt;td> The result will be left-justified.&#xA;&#xA;&lt;tr>&lt;td> '#' &lt;td align=&quot;center&quot; valign=&quot;top&quot;> y&lt;sup>1&lt;/sup>&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> -&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> y&lt;sup>3&lt;/sup>&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> y&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> -&#xA;&lt;td> The result should use a conversion-dependent alternate form&#xA;&#xA;&lt;tr>&lt;td> '+' &lt;td align=&quot;center&quot; valign=&quot;top&quot;> -&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> -&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> y&lt;sup>4&lt;/sup>&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> y&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> -&#xA;&lt;td> The result will always include a sign&#xA;&#xA;&lt;tr>&lt;td> '&amp;nbsp;&amp;nbsp;' &lt;td align=&quot;center&quot; valign=&quot;top&quot;> -&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> -&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> y&lt;sup>4&lt;/sup>&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> y&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> -&#xA;&lt;td> The result will include a leading space for positive values&#xA;&#xA;&lt;tr>&lt;td> '0' &lt;td align=&quot;center&quot; valign=&quot;top&quot;> -&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> -&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> y&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> y&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> -&#xA;&lt;td> The result will be zero-padded&#xA;&#xA;&lt;tr>&lt;td> ',' &lt;td align=&quot;center&quot; valign=&quot;top&quot;> -&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> -&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> y&lt;sup>2&lt;/sup>&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> y&lt;sup>5&lt;/sup>&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> -&#xA;&lt;td> The result will include locale-specific {@linkplain&#xA;java.text.DecimalFormatSymbols#getGroupingSeparator grouping separators}&#xA;&#xA;&lt;tr>&lt;td> '(' &lt;td align=&quot;center&quot; valign=&quot;top&quot;> -&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> -&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> y&lt;sup>4&lt;/sup>&#xA;&lt;td align=&quot;center&quot; valign=&quot;top&quot;> y&lt;sup>5&lt;/sup>&#xA;&lt;td align=&quot;center&quot;> -&#xA;&lt;td> The result will enclose negative numbers in parentheses&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;p> &lt;sup>1&lt;/sup> Depends on the definition of {@link Formattable}.&#xA;&#xA;&lt;p> &lt;sup>2&lt;/sup> For &lt;tt>'d'&lt;/tt> conversion only.&#xA;&#xA;&lt;p> &lt;sup>3&lt;/sup> For &lt;tt>'o'&lt;/tt>, &lt;tt>'x'&lt;/tt>, and &lt;tt>'X'&lt;/tt>&#xA;conversions only.&#xA;&#xA;&lt;p> &lt;sup>4&lt;/sup> For &lt;tt>'d'&lt;/tt>, &lt;tt>'o'&lt;/tt>, &lt;tt>'x'&lt;/tt>, and&#xA;&lt;tt>'X'&lt;/tt> conversions applied to {@link java.math.BigInteger BigInteger}&#xA;or &lt;tt>'d'&lt;/tt> applied to &lt;tt>byte&lt;/tt>, {@link Byte}, &lt;tt>short&lt;/tt>, {@link&#xA;Short}, &lt;tt>int&lt;/tt> and {@link Integer}, &lt;tt>long&lt;/tt>, and {@link Long}.&#xA;&#xA;&lt;p> &lt;sup>5&lt;/sup> For &lt;tt>'e'&lt;/tt>, &lt;tt>'E'&lt;/tt>, &lt;tt>'f'&lt;/tt>,&#xA;&lt;tt>'g'&lt;/tt>, and &lt;tt>'G'&lt;/tt> conversions only.&#xA;&#xA;&lt;p> Any characters not explicitly defined as flags are illegal and are&#xA;reserved for future extensions.&#xA;&#xA;&lt;h4> Width &lt;/h4>&#xA;&#xA;&lt;p> The width is the minimum number of characters to be written to the&#xA;output.  For the line separator conversion, width is not applicable; if it&#xA;is provided, an exception will be thrown.&#xA;&#xA;&lt;h4> Precision &lt;/h4>&#xA;&#xA;&lt;p> For general argument types, the precision is the maximum number of&#xA;characters to be written to the output.&#xA;&#xA;&lt;p> For the floating-point conversions &lt;tt>'e'&lt;/tt>, &lt;tt>'E'&lt;/tt>, and&#xA;&lt;tt>'f'&lt;/tt> the precision is the number of digits after the decimal&#xA;separator.  If the conversion is &lt;tt>'g'&lt;/tt> or &lt;tt>'G'&lt;/tt>, then the&#xA;precision is the total number of digits in the resulting magnitude after&#xA;rounding.  If the conversion is &lt;tt>'a'&lt;/tt> or &lt;tt>'A'&lt;/tt>, then the&#xA;precision must not be specified.&#xA;&#xA;&lt;p> For character, integral, and date/time argument types and the percent&#xA;and line separator conversions, the precision is not applicable; if a&#xA;precision is provided, an exception will be thrown.&#xA;&#xA;&lt;h4> Argument Index &lt;/h4>&#xA;&#xA;&lt;p> The argument index is a decimal integer indicating the position of the&#xA;argument in the argument list.  The first argument is referenced by&#xA;&quot;&lt;tt>1$&lt;/tt>&quot;, the second by &quot;&lt;tt>2$&lt;/tt>&quot;, etc.&#xA;&#xA;&lt;p> Another way to reference arguments by position is to use the&#xA;&lt;tt>'&lt;'&lt;/tt> (&lt;tt>'&amp;#92;u003c'&lt;/tt>) flag, which causes the argument for the&#xA;previous format specifier to be re-used.  For example, the following two&#xA;statements would produce identical strings:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;Calendar c = ...;&#xA;String s1 = String.format(&quot;Duke's Birthday: %1$tm %1$te,%1$tY&quot;, c);&#xA;&#xA;String s2 = String.format(&quot;Duke's Birthday: %1$tm %&lt;$te,%&lt;$tY&quot;, c);&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;hr>&#xA;&lt;a name=&quot;detail&quot;>&lt;h3> Details &lt;/h3>&lt;/a>&#xA;&#xA;&lt;p> This section is intended to provide behavioral details for formatting,&#xA;including conditions and exceptions, supported data types, localization, and&#xA;interactions between flags, conversions, and data types.  For an overview of&#xA;formatting concepts, refer to the &lt;a href=&quot;#summary&quot;>Summary&lt;/a>&#xA;&#xA;&lt;p> Any characters not explicitly defined as conversions, date/time&#xA;conversion suffixes, or flags are illegal and are reserved for&#xA;future extensions.  Use of such a character in a format string will&#xA;cause an {@link UnknownFormatConversionException} or {@link&#xA;UnknownFormatFlagsException} to be thrown.&#xA;&#xA;&lt;p> If the format specifier contains a width or precision with an invalid&#xA;value or which is otherwise unsupported, then a {@link&#xA;IllegalFormatWidthException} or {@link IllegalFormatPrecisionException}&#xA;respectively will be thrown.&#xA;&#xA;&lt;p> If a format specifier contains a conversion character that is not&#xA;applicable to the corresponding argument, then an {@link&#xA;IllegalFormatConversionException} will be thrown.&#xA;&#xA;&lt;p> All specified exceptions may be thrown by any of the &lt;tt>format&lt;/tt>&#xA;methods of &lt;tt>Formatter&lt;/tt> as well as by any &lt;tt>format&lt;/tt> convenience&#xA;methods such as {@link String#format(String,Object...) String.format} and&#xA;{@link java.io.PrintStream#printf(String,Object...) PrintStream.printf}.&#xA;&#xA;&lt;p> Conversions denoted by an upper-case character (i.e. &lt;tt>'B'&lt;/tt>,&#xA;&lt;tt>'H'&lt;/tt>, &lt;tt>'S'&lt;/tt>, &lt;tt>'C'&lt;/tt>, &lt;tt>'X'&lt;/tt>, &lt;tt>'E'&lt;/tt>,&#xA;&lt;tt>'G'&lt;/tt>, &lt;tt>'A'&lt;/tt>, and &lt;tt>'T'&lt;/tt>) are the same as those for the&#xA;corresponding lower-case conversion characters except that the result is&#xA;converted to upper case according to the rules of the prevailing {@link&#xA;java.util.Locale Locale}.  The result is equivalent to the following&#xA;invocation of {@link String#toUpperCase()}&#xA;&#xA;&lt;pre>&#xA;out.toUpperCase() &lt;/pre>&#xA;&#xA;&lt;a name=&quot;dgen&quot;>&lt;h4> General &lt;/h4>&lt;/a>&#xA;&#xA;&lt;p> The following general conversions may be applied to any argument type:&#xA;&#xA;&lt;table cellpadding=5 summary=&quot;dgConv&quot;>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'b'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0062'&lt;/tt>&#xA;&lt;td> Produces either &quot;&lt;tt>true&lt;/tt>&quot; or &quot;&lt;tt>false&lt;/tt>&quot; as returned by&#xA;{@link Boolean#toString(boolean)}.&#xA;&#xA;&lt;p> If the argument is &lt;tt>null&lt;/tt>, then the result is&#xA;&quot;&lt;tt>false&lt;/tt>&quot;.  If the argument is a &lt;tt>boolean&lt;/tt> or {@link&#xA;Boolean}, then the result is the string returned by {@link&#xA;String#valueOf(boolean) String.valueOf()}.  Otherwise, the result is&#xA;&quot;&lt;tt>true&lt;/tt>&quot;.&#xA;&#xA;&lt;p> If the &lt;tt>'#'&lt;/tt> flag is given, then a {@link&#xA;FormatFlagsConversionMismatchException} will be thrown.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'B'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0042'&lt;/tt>&#xA;&lt;td> The upper-case variant of &lt;tt>'b'&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'h'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0068'&lt;/tt>&#xA;&lt;td> Produces a string representing the hash code value of the object.&#xA;&#xA;&lt;p> If the argument, &lt;i>arg&lt;/i> is &lt;tt>null&lt;/tt>, then the&#xA;result is &quot;&lt;tt>null&lt;/tt>&quot;.  Otherwise, the result is obtained&#xA;by invoking &lt;tt>Integer.toHexString(arg.hashCode())&lt;/tt>.&#xA;&#xA;&lt;p> If the &lt;tt>'#'&lt;/tt> flag is given, then a {@link&#xA;FormatFlagsConversionMismatchException} will be thrown.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'H'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0048'&lt;/tt>&#xA;&lt;td> The upper-case variant of &lt;tt>'h'&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'s'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0073'&lt;/tt>&#xA;&lt;td> Produces a string.&#xA;&#xA;&lt;p> If the argument is &lt;tt>null&lt;/tt>, then the result is&#xA;&quot;&lt;tt>null&lt;/tt>&quot;.  If the argument implements {@link Formattable}, then&#xA;its {@link Formattable#formatTo formatTo} method is invoked.&#xA;Otherwise, the result is obtained by invoking the argument's&#xA;&lt;tt>toString()&lt;/tt> method.&#xA;&#xA;&lt;p> If the &lt;tt>'#'&lt;/tt> flag is given and the argument is not a {@link&#xA;Formattable} , then a {@link FormatFlagsConversionMismatchException}&#xA;will be thrown.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'S'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0053'&lt;/tt>&#xA;&lt;td> The upper-case variant of &lt;tt>'s'&lt;/tt>.&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;p> The following flags apply to general conversions:&#xA;&#xA;&lt;a name=&quot;dFlags&quot;>&lt;table cellpadding=5 summary=&quot;dFlags&quot;>&lt;/a>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'-'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u002d'&lt;/tt>&#xA;&lt;td> Left justifies the output.  Spaces (&lt;tt>'&amp;#92;u0020'&lt;/tt>) will be&#xA;added at the end of the converted value as required to fill the minimum&#xA;width of the field.  If the width is not provided, then a {@link&#xA;MissingFormatWidthException} will be thrown.  If this flag is not given&#xA;then the output will be right-justified.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'#'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0023'&lt;/tt>&#xA;&lt;td> Requires the output use an alternate form.  The definition of the&#xA;form is specified by the conversion.&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;a name=&quot;genWidth&quot;>&lt;/a>&#xA;&#xA;&lt;p> The width is the minimum number of characters to be written to the&#xA;output.  If the length of the converted value is less than the width then&#xA;the output will be padded by &lt;tt>'&amp;nbsp;&amp;nbsp;'&lt;/tt> (&lt;tt>&amp;#92;u0020'&lt;/tt>)&#xA;until the total number of characters equals the width.  The padding is on&#xA;the left by default.  If the &lt;tt>'-'&lt;/tt> flag is given, then the padding&#xA;will be on the right.  If the width is not specified then there is no&#xA;minimum.&#xA;&#xA;&lt;p> The precision is the maximum number of characters to be written to the&#xA;output.  The precision is applied before the width, thus the output will be&#xA;truncated to &lt;tt>precision&lt;/tt> characters even if the width is greater than&#xA;the precision.  If the precision is not specified then there is no explicit&#xA;limit on the number of characters.&#xA;&#xA;&lt;a name=&quot;dchar&quot;>&lt;h4> Character &lt;/h4>&lt;/a>&#xA;&#xA;This conversion may be applied to &lt;tt>char&lt;/tt>, {@link Character},&#xA;&lt;tt>byte&lt;/tt>, {@link Byte}, &lt;tt>short&lt;/tt>, and {@link Short}. This&#xA;conversion may also be applied to the types &lt;tt>int&lt;/tt> and {@link Integer}&#xA;when {@link Character#isValidCodePoint} returns &lt;tt>true&lt;/tt>.  If it&#xA;returns &lt;tt>false&lt;/tt> then an {@link IllegalFormatCodePointException} will&#xA;be thrown.&#xA;&#xA;&lt;table cellpadding=5 summary=&quot;charConv&quot;>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'c'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0063'&lt;/tt>&#xA;&lt;td> Formats the argument as a Unicode character as described in &lt;a&#xA;href=&quot;../lang/Character.html#unicode&quot;>Unicode Character&#xA;Representation&lt;/a>.  This may be more than one 16-bit &lt;tt>char&lt;/tt> in&#xA;the case where the argument represents a supplementary character.&#xA;&#xA;&lt;p> If the &lt;tt>'#'&lt;/tt> flag is given, then a {@link&#xA;FormatFlagsConversionMismatchException} will be thrown.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'C'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0043'&lt;/tt>&#xA;&lt;td> The upper-case variant of &lt;tt>'c'&lt;/tt>.&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;p> The &lt;tt>'-'&lt;/tt> flag defined for &lt;a href=&quot;#dFlags&quot;>General&#xA;conversions&lt;/a> applies.  If the &lt;tt>'#'&lt;/tt> flag is given, then a {@link&#xA;FormatFlagsConversionMismatchException} will be thrown.&#xA;&#xA;&lt;p> The width is defined as for &lt;a href=&quot;#genWidth&quot;>General conversions&lt;/a>.&#xA;&#xA;&lt;p> The precision is not applicable.  If the precision is specified then an&#xA;{@link IllegalFormatPrecisionException} will be thrown.&#xA;&#xA;&lt;a name=&quot;dnum&quot;>&lt;h4> Numeric &lt;/h4>&lt;/a>&#xA;&#xA;&lt;p> Numeric conversions are divided into the following categories:&#xA;&#xA;&lt;ol>&#xA;&#xA;&lt;li> &lt;a href=&quot;#dnint&quot;>&lt;b>Byte, Short, Integer, and Long&lt;/b>&lt;/a>&#xA;&#xA;&lt;li> &lt;a href=&quot;#dnbint&quot;>&lt;b>BigInteger&lt;/b>&lt;/a>&#xA;&#xA;&lt;li> &lt;a href=&quot;#dndec&quot;>&lt;b>Float and Double&lt;/b>&lt;/a>&#xA;&#xA;&lt;li> &lt;a href=&quot;#dndec&quot;>&lt;b>BigDecimal&lt;/b>&lt;/a>&#xA;&#xA;&lt;/ol>&#xA;&#xA;&lt;p> Numeric types will be formatted according to the following algorithm:&#xA;&#xA;&lt;p>&lt;b>&lt;a name=&quot;l10n algorithm&quot;> Number Localization Algorithm&lt;a>&lt;/b>&#xA;&#xA;&lt;p> After digits are obtained for the integer part, fractional part, and&#xA;exponent (as appropriate for the data type), the following transformation&#xA;is applied:&#xA;&#xA;&lt;ol>&#xA;&#xA;&lt;li> Each digit character &lt;i>d&lt;/i> in the string is replaced by a&#xA;locale-specific digit computed relative to the current locale's&#xA;{@linkplain java.text.DecimalFormatSymbols#getZeroDigit() zero digit}&#xA;&lt;i>z&lt;/i>; that is &lt;i>d&amp;nbsp;-&amp;nbsp;&lt;/i> &lt;tt>'0'&lt;/tt>&#xA;&lt;i>&amp;nbsp;+&amp;nbsp;z&lt;/i>.&#xA;&#xA;&lt;li> If a decimal separator is present, a locale-specific {@linkplain&#xA;java.text.DecimalFormatSymbols#getDecimalSeparator decimal separator} is&#xA;substituted.&#xA;&#xA;&lt;li> &lt;a name=&quot;l10n group&quot;>&lt;/a> If the &lt;tt>','&lt;/tt> (&lt;tt>'&amp;#92;u002c'&lt;/tt>)&#xA;flag is given, then the locale-specific {@linkplain&#xA;java.text.DecimalFormatSymbols#getGroupingSeparator grouping separator} is&#xA;inserted by scanning the integer part of the string from least significant&#xA;to most significant digits and inserting a separator at intervals defined by&#xA;the locale's {@linkplain java.text.DecimalFormat#getGroupingSize() grouping&#xA;size}.&#xA;&#xA;&lt;li> If the &lt;tt>'0'&lt;/tt> flag is given, then the locale-specific {@linkplain&#xA;java.text.DecimalFormatSymbols#getZeroDigit() zero digits} are inserted&#xA;after the sign character, if any, and before the first non-zero digit, until&#xA;the length of the string is equal to the requested field width.&#xA;&#xA;&lt;li> If the value is negative and the &lt;tt>'('&lt;/tt> flag is given, then a&#xA;&lt;tt>'('&lt;/tt> (&lt;tt>'&amp;#92;u0028'&lt;/tt>) is prepended and a &lt;tt>')'&lt;/tt>&#xA;(&lt;tt>'&amp;#92;u0029'&lt;/tt>) is appended.&#xA;&#xA;&lt;li> If the value is negative (or floating-point negative zero) and&#xA;&lt;tt>'('&lt;/tt> flag is not given, then a &lt;tt>'-'&lt;/tt> (&lt;tt>'&amp;#92;u002d'&lt;/tt>)&#xA;is prepended.&#xA;&#xA;&lt;li> If the &lt;tt>'+'&lt;/tt> flag is given and the value is positive or zero (or&#xA;floating-point positive zero), then a &lt;tt>'+'&lt;/tt> (&lt;tt>'&amp;#92;u002b'&lt;/tt>)&#xA;will be prepended.&#xA;&#xA;&lt;/ol>&#xA;&#xA;&lt;p> If the value is NaN or positive infinity the literal strings &quot;NaN&quot; or&#xA;&quot;Infinity&quot; respectively, will be output.  If the value is negative infinity,&#xA;then the output will be &quot;(Infinity)&quot; if the &lt;tt>'('&lt;/tt> flag is given&#xA;otherwise the output will be &quot;-Infinity&quot;.  These values are not localized.&#xA;&#xA;&lt;p>&lt;a name=&quot;dnint&quot;>&lt;b> Byte, Short, Integer, and Long &lt;/b>&lt;/a>&#xA;&#xA;&lt;p> The following conversions may be applied to &lt;tt>byte&lt;/tt>, {@link Byte},&#xA;&lt;tt>short&lt;/tt>, {@link Short}, &lt;tt>int&lt;/tt> and {@link Integer},&#xA;&lt;tt>long&lt;/tt>, and {@link Long}.&#xA;&#xA;&lt;table cellpadding=5 summary=&quot;IntConv&quot;>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'d'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0054'&lt;/tt>&#xA;&lt;td> Formats the argument as a decimal integer. The &lt;a&#xA;href=&quot;#l10n algorithm&quot;>localization algorithm&lt;/a> is applied.&#xA;&#xA;&lt;p> If the &lt;tt>'0'&lt;/tt> flag is given and the value is negative, then&#xA;the zero padding will occur after the sign.&#xA;&#xA;&lt;p> If the &lt;tt>'#'&lt;/tt> flag is given then a {@link&#xA;FormatFlagsConversionMismatchException} will be thrown.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'o'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u006f'&lt;/tt>&#xA;&lt;td> Formats the argument as an integer in base eight.  No localization&#xA;is applied.&#xA;&#xA;&lt;p> If &lt;i>x&lt;/i> is negative then the result will be an unsigned value&#xA;generated by adding 2&lt;sup>n&lt;/sup> to the value where &lt;tt>n&lt;/tt> is the&#xA;number of bits in the type as returned by the static &lt;tt>SIZE&lt;/tt> field&#xA;in the {@linkplain Byte#SIZE Byte}, {@linkplain Short#SIZE Short},&#xA;{@linkplain Integer#SIZE Integer}, or {@linkplain Long#SIZE Long}&#xA;classes as appropriate.&#xA;&#xA;&lt;p> If the &lt;tt>'#'&lt;/tt> flag is given then the output will always begin&#xA;with the radix indicator &lt;tt>'0'&lt;/tt>.&#xA;&#xA;&lt;p> If the &lt;tt>'0'&lt;/tt> flag is given then the output will be padded&#xA;with leading zeros to the field width following any indication of sign.&#xA;&#xA;&lt;p> If &lt;tt>'('&lt;/tt>, &lt;tt>'+'&lt;/tt>, '&amp;nbsp&amp;nbsp;', or &lt;tt>','&lt;/tt> flags&#xA;are given then a {@link FormatFlagsConversionMismatchException} will be&#xA;thrown.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'x'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0078'&lt;/tt>&#xA;&lt;td> Formats the argument as an integer in base sixteen. No&#xA;localization is applied.&#xA;&#xA;&lt;p> If &lt;i>x&lt;/i> is negative then the result will be an unsigned value&#xA;generated by adding 2&lt;sup>n&lt;/sup> to the value where &lt;tt>n&lt;/tt> is the&#xA;number of bits in the type as returned by the static &lt;tt>SIZE&lt;/tt> field&#xA;in the {@linkplain Byte#SIZE Byte}, {@linkplain Short#SIZE Short},&#xA;{@linkplain Integer#SIZE Integer}, or {@linkplain Long#SIZE Long}&#xA;classes as appropriate.&#xA;&#xA;&lt;p> If the &lt;tt>'#'&lt;/tt> flag is given then the output will always begin&#xA;with the radix indicator &lt;tt>&quot;0x&quot;&lt;/tt>.&#xA;&#xA;&lt;p> If the &lt;tt>'0'&lt;/tt> flag is given then the output will be padded to&#xA;the field width with leading zeros after the radix indicator or sign (if&#xA;present).&#xA;&#xA;&lt;p> If &lt;tt>'('&lt;/tt>, &lt;tt>'&amp;nbsp;&amp;nbsp;'&lt;/tt>, &lt;tt>'+'&lt;/tt>, or&#xA;&lt;tt>','&lt;/tt> flags are given then a {@link&#xA;FormatFlagsConversionMismatchException} will be thrown.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'X'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0058'&lt;/tt>&#xA;&lt;td> The upper-case variant of &lt;tt>'x'&lt;/tt>.  The entire string&#xA;representing the number will be converted to {@linkplain&#xA;String#toUpperCase upper case} including the &lt;tt>'x'&lt;/tt> (if any) and&#xA;all hexadecimal digits &lt;tt>'a'&lt;/tt> - &lt;tt>'f'&lt;/tt>&#xA;(&lt;tt>'&amp;#92;u0061'&lt;/tt> -  &lt;tt>'&amp;#92;u0066'&lt;/tt>).&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;p> If the conversion is &lt;tt>'o'&lt;/tt>, &lt;tt>'x'&lt;/tt>, or &lt;tt>'X'&lt;/tt> and&#xA;both the &lt;tt>'#'&lt;/tt> and the &lt;tt>'0'&lt;/tt> flags are given, then result will&#xA;contain the radix indicator (&lt;tt>'0'&lt;/tt> for octal and &lt;tt>&quot;0x&quot;&lt;/tt> or&#xA;&lt;tt>&quot;0X&quot;&lt;/tt> for hexadecimal), some number of zeros (based on the width),&#xA;and the value.&#xA;&#xA;&lt;p> If the &lt;tt>'-'&lt;/tt> flag is not given, then the space padding will occur&#xA;before the sign.&#xA;&#xA;&lt;p> The following flags apply to numeric integral conversions:&#xA;&#xA;&lt;table cellpadding=5 summary=&quot;intFlags&quot;>&lt;a name=&quot;intFlags&quot;>&lt;/a>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'+'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u002b'&lt;/tt>&#xA;&lt;td> Requires the output to include a positive sign for all positive&#xA;numbers.  If this flag is not given then only negative values will&#xA;include a sign.&#xA;&#xA;&lt;p> If both the &lt;tt>'+'&lt;/tt> and &lt;tt>'&amp;nbsp;&amp;nbsp;'&lt;/tt> flags are given&#xA;then an {@link IllegalFormatFlagsException} will be thrown.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;nbsp;&amp;nbsp;'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0020'&lt;/tt>&#xA;&lt;td> Requires the output to include a single extra space&#xA;(&lt;tt>'&amp;#92;u0020'&lt;/tt>) for non-negative values.&#xA;&#xA;&lt;p> If both the &lt;tt>'+'&lt;/tt> and &lt;tt>'&amp;nbsp;&amp;nbsp;'&lt;/tt> flags are given&#xA;then an {@link IllegalFormatFlagsException} will be thrown.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'0'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0030'&lt;/tt>&#xA;&lt;td> Requires the output to be padded with leading {@linkplain&#xA;java.text.DecimalFormatSymbols#getZeroDigit zeros} to the minimum field&#xA;width following any sign or radix indicator except when converting NaN&#xA;or infinity.  If the width is not provided, then a {@link&#xA;MissingFormatWidthException} will be thrown.&#xA;&#xA;&lt;p> If both the &lt;tt>'-'&lt;/tt> and &lt;tt>'0'&lt;/tt> flags are given then an&#xA;{@link IllegalFormatFlagsException} will be thrown.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>','&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u002c'&lt;/tt>&#xA;&lt;td> Requires the output to include the locale-specific {@linkplain&#xA;java.text.DecimalFormatSymbols#getGroupingSeparator group separators} as&#xA;described in the &lt;a href=&quot;#l10n group&quot;>&quot;group&quot; section&lt;/a> of the&#xA;localization algorithm.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'('&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0028'&lt;/tt>&#xA;&lt;td> Requires the output to prepend a &lt;tt>'('&lt;/tt>&#xA;(&lt;tt>'&amp;#92;u0028'&lt;/tt>) and append a &lt;tt>')'&lt;/tt>&#xA;(&lt;tt>'&amp;#92;u0029'&lt;/tt>) to negative values.&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;a name=&quot;intdFlags&quot;>&lt;/a>&lt;p> If no flags are given the default formatting is&#xA;as follows:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li> The output is right-justified within the &lt;tt>width&lt;/tt>&#xA;&#xA;&lt;li> Negative numbers begin with a &lt;tt>'-'&lt;/tt> (&lt;tt>'&amp;#92;u002d'&lt;/tt>)&#xA;&#xA;&lt;li> Positive numbers and zero do not include a sign or extra leading&#xA;space&#xA;&#xA;&lt;li> No grouping separators are included&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;a name=&quot;intWidth&quot;>&lt;/a>&lt;p> The width is the minimum number of characters to&#xA;be written to the output.  This includes any signs, digits, grouping&#xA;separators, radix indicator, and parentheses.  If the length of the&#xA;converted value is less than the width then the output will be padded by&#xA;spaces (&lt;tt>'&amp;#92;u0020'&lt;/tt>) until the total number of characters equals&#xA;width.  The padding is on the left by default.  If &lt;tt>'-'&lt;/tt> flag is&#xA;given then the padding will be on the right.  If width is not specified then&#xA;there is no minimum.&#xA;&#xA;&lt;p> The precision is not applicable.  If precision is specified then an&#xA;{@link IllegalFormatPrecisionException} will be thrown.&#xA;&#xA;&lt;p>&lt;a name=&quot;dnbint&quot;>&lt;b> BigInteger &lt;/b>&lt;/a>&#xA;&#xA;&lt;p> The following conversions may be applied to {@link&#xA;java.math.BigInteger}.&#xA;&#xA;&lt;table cellpadding=5 summary=&quot;BIntConv&quot;>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'d'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0054'&lt;/tt>&#xA;&lt;td> Requires the output to be formatted as a decimal integer. The &lt;a&#xA;href=&quot;#l10n algorithm&quot;>localization algorithm&lt;/a> is applied.&#xA;&#xA;&lt;p> If the &lt;tt>'#'&lt;/tt> flag is given {@link&#xA;FormatFlagsConversionMismatchException} will be thrown.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'o'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u006f'&lt;/tt>&#xA;&lt;td> Requires the output to be formatted as an integer in base eight.&#xA;No localization is applied.&#xA;&#xA;&lt;p> If &lt;i>x&lt;/i> is negative then the result will be a signed value&#xA;beginning with &lt;tt>'-'&lt;/tt> (&lt;tt>'&amp;#92;u002d'&lt;/tt>).  Signed output is&#xA;allowed for this type because unlike the primitive types it is not&#xA;possible to create an unsigned equivalent without assuming an explicit&#xA;data-type size.&#xA;&#xA;&lt;p> If &lt;i>x&lt;/i> is positive or zero and the &lt;tt>'+'&lt;/tt> flag is given&#xA;then the result will begin with &lt;tt>'+'&lt;/tt> (&lt;tt>'&amp;#92;u002b'&lt;/tt>).&#xA;&#xA;&lt;p> If the &lt;tt>'#'&lt;/tt> flag is given then the output will always begin&#xA;with &lt;tt>'0'&lt;/tt> prefix.&#xA;&#xA;&lt;p> If the &lt;tt>'0'&lt;/tt> flag is given then the output will be padded&#xA;with leading zeros to the field width following any indication of sign.&#xA;&#xA;&lt;p> If the &lt;tt>','&lt;/tt> flag is given then a {@link&#xA;FormatFlagsConversionMismatchException} will be thrown.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'x'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0078'&lt;/tt>&#xA;&lt;td> Requires the output to be formatted as an integer in base&#xA;sixteen.  No localization is applied.&#xA;&#xA;&lt;p> If &lt;i>x&lt;/i> is negative then the result will be a signed value&#xA;beginning with &lt;tt>'-'&lt;/tt> (&lt;tt>'&amp;#92;u002d'&lt;/tt>).  Signed output is&#xA;allowed for this type because unlike the primitive types it is not&#xA;possible to create an unsigned equivalent without assuming an explicit&#xA;data-type size.&#xA;&#xA;&lt;p> If &lt;i>x&lt;/i> is positive or zero and the &lt;tt>'+'&lt;/tt> flag is given&#xA;then the result will begin with &lt;tt>'+'&lt;/tt> (&lt;tt>'&amp;#92;u002b'&lt;/tt>).&#xA;&#xA;&lt;p> If the &lt;tt>'#'&lt;/tt> flag is given then the output will always begin&#xA;with the radix indicator &lt;tt>&quot;0x&quot;&lt;/tt>.&#xA;&#xA;&lt;p> If the &lt;tt>'0'&lt;/tt> flag is given then the output will be padded to&#xA;the field width with leading zeros after the radix indicator or sign (if&#xA;present).&#xA;&#xA;&lt;p> If the &lt;tt>','&lt;/tt> flag is given then a {@link&#xA;FormatFlagsConversionMismatchException} will be thrown.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'X'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0058'&lt;/tt>&#xA;&lt;td> The upper-case variant of &lt;tt>'x'&lt;/tt>.  The entire string&#xA;representing the number will be converted to {@linkplain&#xA;String#toUpperCase upper case} including the &lt;tt>'x'&lt;/tt> (if any) and&#xA;all hexadecimal digits &lt;tt>'a'&lt;/tt> - &lt;tt>'f'&lt;/tt>&#xA;(&lt;tt>'&amp;#92;u0061'&lt;/tt> - &lt;tt>'&amp;#92;u0066'&lt;/tt>).&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;p> If the conversion is &lt;tt>'o'&lt;/tt>, &lt;tt>'x'&lt;/tt>, or &lt;tt>'X'&lt;/tt> and&#xA;both the &lt;tt>'#'&lt;/tt> and the &lt;tt>'0'&lt;/tt> flags are given, then result will&#xA;contain the base indicator (&lt;tt>'0'&lt;/tt> for octal and &lt;tt>&quot;0x&quot;&lt;/tt> or&#xA;&lt;tt>&quot;0X&quot;&lt;/tt> for hexadecimal), some number of zeros (based on the width),&#xA;and the value.&#xA;&#xA;&lt;p> If the &lt;tt>'0'&lt;/tt> flag is given and the value is negative, then the&#xA;zero padding will occur after the sign.&#xA;&#xA;&lt;p> If the &lt;tt>'-'&lt;/tt> flag is not given, then the space padding will occur&#xA;before the sign.&#xA;&#xA;&lt;p> All &lt;a href=&quot;#intFlags&quot;>flags&lt;/a> defined for Byte, Short, Integer, and&#xA;Long apply.  The &lt;a href=&quot;#intdFlags&quot;>default behavior&lt;/a> when no flags are&#xA;given is the same as for Byte, Short, Integer, and Long.&#xA;&#xA;&lt;p> The specification of &lt;a href=&quot;#intWidth&quot;>width&lt;/a> is the same as&#xA;defined for Byte, Short, Integer, and Long.&#xA;&#xA;&lt;p> The precision is not applicable.  If precision is specified then an&#xA;{@link IllegalFormatPrecisionException} will be thrown.&#xA;&#xA;&lt;p>&lt;a name=&quot;dndec&quot;>&lt;b> Float and Double&lt;/b>&lt;a>&#xA;&#xA;&lt;p> The following conversions may be applied to &lt;tt>float&lt;/tt>, {@link&#xA;Float}, &lt;tt>double&lt;/tt> and {@link Double}.&#xA;&#xA;&lt;table cellpadding=5 summary=&quot;floatConv&quot;>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'e'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0065'&lt;/tt>&#xA;&lt;td> Requires the output to be formatted using &lt;a&#xA;name=&quot;scientific&quot;>computerized scientific notation&lt;/a>.  The &lt;a&#xA;href=&quot;#l10n algorithm&quot;>localization algorithm&lt;/a> is applied.&#xA;&#xA;&lt;p> The formatting of the magnitude &lt;i>m&lt;/i> depends upon its value.&#xA;&#xA;&lt;p> If &lt;i>m&lt;/i> is NaN or infinite, the literal strings &quot;NaN&quot; or&#xA;&quot;Infinity&quot;, respectively, will be output.  These values are not&#xA;localized.&#xA;&#xA;&lt;p> If &lt;i>m&lt;/i> is positive-zero or negative-zero, then the exponent&#xA;will be &lt;tt>&quot;+00&quot;&lt;/tt>.&#xA;&#xA;&lt;p> Otherwise, the result is a string that represents the sign and&#xA;magnitude (absolute value) of the argument.  The formatting of the sign&#xA;is described in the &lt;a href=&quot;#l10n algorithm&quot;>localization&#xA;algorithm&lt;/a>. The formatting of the magnitude &lt;i>m&lt;/i> depends upon its&#xA;value.&#xA;&#xA;&lt;p> Let &lt;i>n&lt;/i> be the unique integer such that 10&lt;sup>&lt;i>n&lt;/i>&lt;/sup>&#xA;&lt;= &lt;i>m&lt;/i> &lt; 10&lt;sup>&lt;i>n&lt;/i>+1&lt;/sup>; then let &lt;i>a&lt;/i> be the&#xA;mathematically exact quotient of &lt;i>m&lt;/i> and 10&lt;sup>&lt;i>n&lt;/i>&lt;/sup> so&#xA;that 1 &lt;= &lt;i>a&lt;/i> &lt; 10. The magnitude is then represented as the&#xA;integer part of &lt;i>a&lt;/i>, as a single decimal digit, followed by the&#xA;decimal separator followed by decimal digits representing the fractional&#xA;part of &lt;i>a&lt;/i>, followed by the exponent symbol &lt;tt>'e'&lt;/tt>&#xA;(&lt;tt>'&amp;#92;u0065'&lt;/tt>), followed by the sign of the exponent, followed&#xA;by a representation of &lt;i>n&lt;/i> as a decimal integer, as produced by the&#xA;method {@link Long#toString(long, int)}, and zero-padded to include at&#xA;least two digits.&#xA;&#xA;&lt;p> The number of digits in the result for the fractional part of&#xA;&lt;i>m&lt;/i> or &lt;i>a&lt;/i> is equal to the precision.  If the precision is not&#xA;specified then the default value is &lt;tt>6&lt;/tt>. If the precision is less&#xA;than the number of digits which would appear after the decimal point in&#xA;the string returned by {@link Float#toString(float)} or {@link&#xA;Double#toString(double)} respectively, then the value will be rounded&#xA;using the {@linkplain java.math.BigDecimal#ROUND_HALF_UP round half up&#xA;algorithm}.  Otherwise, zeros may be appended to reach the precision.&#xA;For a canonical representation of the value, use {@link&#xA;Float#toString(float)} or {@link Double#toString(double)} as&#xA;appropriate.&#xA;&#xA;&lt;p>If the &lt;tt>','&lt;/tt> flag is given, then an {@link&#xA;FormatFlagsConversionMismatchException} will be thrown.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'E'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0045'&lt;/tt>&#xA;&lt;td> The upper-case variant of &lt;tt>'e'&lt;/tt>.  The exponent symbol&#xA;will be &lt;tt>'E'&lt;/tt> (&lt;tt>'&amp;#92;u0045'&lt;/tt>).&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'g'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0067'&lt;/tt>&#xA;&lt;td> Requires the output to be formatted in general scientific notation&#xA;as described below. The &lt;a href=&quot;#l10n algorithm&quot;>localization&#xA;algorithm&lt;/a> is applied.&#xA;&#xA;&lt;p> After rounding for the precision, the formatting of the resulting&#xA;magnitude &lt;i>m&lt;/i> depends on its value.&#xA;&#xA;&lt;p> If &lt;i>m&lt;/i> is greater than or equal to 10&lt;sup>-4&lt;/sup> but less&#xA;than 10&lt;sup>precision&lt;/sup> then it is represented in &lt;i>&lt;a&#xA;href=&quot;#decimal&quot;>decimal format&lt;/a>&lt;/i>.&#xA;&#xA;&lt;p> If &lt;i>m&lt;/i> is less than 10&lt;sup>-4&lt;sup> or greater than or equal to&#xA;10&lt;sup>precision&lt;/sup>, then it is represented in &lt;i>&lt;a&#xA;href=&quot;#scientific&quot;>computerized scientific notation&lt;/a>&lt;/i>.&#xA;&#xA;&lt;p> The total number of significant digits in &lt;i>m&lt;/i> is equal to the&#xA;precision.  If the precision is not specified, then the default value is&#xA;&lt;tt>6&lt;/tt>.  If the precision is &lt;tt>0&lt;/tt>, then it is taken to be&#xA;&lt;tt>1&lt;/tt>.&#xA;&#xA;&lt;p> If the &lt;tt>'#'&lt;/tt> flag is given then an {@link&#xA;FormatFlagsConversionMismatchException} will be thrown.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'G'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0047'&lt;/tt>&#xA;&lt;td> The upper-case variant of &lt;tt>'g'&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'f'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0066'&lt;/tt>&#xA;&lt;td> Requires the output to be formatted using &lt;a name=&quot;decimal&quot;>decimal&#xA;format&lt;/a>.  The &lt;a href=&quot;#l10n algorithm&quot;>localization algorithm&lt;/a> is&#xA;applied.&#xA;&#xA;&lt;p> The result is a string that represents the sign and magnitude&#xA;(absolute value) of the argument.  The formatting of the sign is&#xA;described in the &lt;a href=&quot;#l10n algorithm&quot;>localization&#xA;algorithm&lt;/a>. The formatting of the magnitude &lt;i>m&lt;/i> depends upon its&#xA;value.&#xA;&#xA;&lt;p> If &lt;i>m&lt;/i> NaN or infinite, the literal strings &quot;NaN&quot; or&#xA;&quot;Infinity&quot;, respectively, will be output.  These values are not&#xA;localized.&#xA;&#xA;&lt;p> The magnitude is formatted as the integer part of &lt;i>m&lt;/i>, with no&#xA;leading zeroes, followed by the decimal separator followed by one or&#xA;more decimal digits representing the fractional part of &lt;i>m&lt;/i>.&#xA;&#xA;&lt;p> The number of digits in the result for the fractional part of&#xA;&lt;i>m&lt;/i> or &lt;i>a&lt;/i> is equal to the precision.  If the precision is not&#xA;specified then the default value is &lt;tt>6&lt;/tt>. If the precision is less&#xA;than the number of digits which would appear after the decimal point in&#xA;the string returned by {@link Float#toString(float)} or {@link&#xA;Double#toString(double)} respectively, then the value will be rounded&#xA;using the {@linkplain java.math.BigDecimal#ROUND_HALF_UP round half up&#xA;algorithm}.  Otherwise, zeros may be appended to reach the precision.&#xA;For a canonical representation of the value,use {@link&#xA;Float#toString(float)} or {@link Double#toString(double)} as&#xA;appropriate.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'a'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0061'&lt;/tt>&#xA;&lt;td> Requires the output to be formatted in hexadecimal exponential&#xA;form.  No localization is applied.&#xA;&#xA;&lt;p> The result is a string that represents the sign and magnitude&#xA;(absolute value) of the argument &lt;i>x&lt;/i>.&#xA;&#xA;&lt;p> If &lt;i>x&lt;/i> is negative or a negative-zero value then the result&#xA;will begin with &lt;tt>'-'&lt;/tt> (&lt;tt>'&amp;#92;u002d'&lt;/tt>).&#xA;&#xA;&lt;p> If &lt;i>x&lt;/i> is positive or a positive-zero value and the&#xA;&lt;tt>'+'&lt;/tt> flag is given then the result will begin with &lt;tt>'+'&lt;/tt>&#xA;(&lt;tt>'&amp;#92;u002b'&lt;/tt>).&#xA;&#xA;&lt;p> The formatting of the magnitude &lt;i>m&lt;/i> depends upon its value.&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li> If the value is NaN or infinite, the literal strings &quot;NaN&quot; or&#xA;&quot;Infinity&quot;, respectively, will be output.&#xA;&#xA;&lt;li> If &lt;i>m&lt;/i> is zero then it is represented by the string&#xA;&lt;tt>&quot;0x0.0p0&quot;&lt;/tt>.&#xA;&#xA;&lt;li> If &lt;i>m&lt;/i> is a &lt;tt>double&lt;/tt> value with a normalized&#xA;representation then substrings are used to represent the significand and&#xA;exponent fields.  The significand is represented by the characters&#xA;&lt;tt>&quot;0x1.&quot;&lt;/tt> followed by the hexadecimal representation of the rest&#xA;of the significand as a fraction.  The exponent is represented by&#xA;&lt;tt>'p'&lt;/tt> (&lt;tt>'&amp;#92;u0070'&lt;/tt>) followed by a decimal string of the&#xA;unbiased exponent as if produced by invoking {@link&#xA;Integer#toString(int) Integer.toString} on the exponent value.&#xA;&#xA;&lt;li> If &lt;i>m&lt;/i> is a &lt;tt>double&lt;/tt> value with a subnormal&#xA;representation then the significand is represented by the characters&#xA;&lt;tt>'0x0.'&lt;/tt> followed by the hexadecimal representation of the rest&#xA;of the significand as a fraction.  The exponent is represented by&#xA;&lt;tt>'p-1022'&lt;/tt>.  Note that there must be at least one nonzero digit&#xA;in a subnormal significand.&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p> If the &lt;tt>'('&lt;/tt> or &lt;tt>','&lt;/tt> flags are given, then a {@link&#xA;FormatFlagsConversionMismatchException} will be thrown.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'A'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0041'&lt;/tt>&#xA;&lt;td> The upper-case variant of &lt;tt>'a'&lt;/tt>.  The entire string&#xA;representing the number will be converted to upper case including the&#xA;&lt;tt>'x'&lt;/tt> (&lt;tt>'&amp;#92;u0078'&lt;/tt>) and &lt;tt>'p'&lt;/tt>&#xA;(&lt;tt>'&amp;#92;u0070'&lt;/tt> and all hexadecimal digits &lt;tt>'a'&lt;/tt> -&#xA;&lt;tt>'f'&lt;/tt> (&lt;tt>'&amp;#92;u0061'&lt;/tt> - &lt;tt>'&amp;#92;u0066'&lt;/tt>).&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;p> All &lt;a href=&quot;#intFlags&quot;>flags&lt;/a> defined for Byte, Short, Integer, and&#xA;Long apply.&#xA;&#xA;&lt;p> If the &lt;tt>'#'&lt;/tt> flag is given, then the decimal separator will&#xA;always be present.&#xA;&#xA;&lt;a name=&quot;floatdFlags&quot;>&lt;/a>&lt;p> If no flags are given the default formatting&#xA;is as follows:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li> The output is right-justified within the &lt;tt>width&lt;/tt>&#xA;&#xA;&lt;li> Negative numbers begin with a &lt;tt>'-'&lt;/tt>&#xA;&#xA;&lt;li> Positive numbers and positive zero do not include a sign or extra&#xA;leading space&#xA;&#xA;&lt;li> No grouping separators are included&#xA;&#xA;&lt;li> The decimal separator will only appear if a digit follows it&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;a name=&quot;floatDWidth&quot;>&lt;/a>&lt;p> The width is the minimum number of characters&#xA;to be written to the output.  This includes any signs, digits, grouping&#xA;separators, decimal separators, exponential symbol, radix indicator,&#xA;parentheses, and strings representing infinity and NaN as applicable.  If&#xA;the length of the converted value is less than the width then the output&#xA;will be padded by spaces (&lt;tt>'&amp;#92;u0020'&lt;/tt>) until the total number of&#xA;characters equals width.  The padding is on the left by default.  If the&#xA;&lt;tt>'-'&lt;/tt> flag is given then the padding will be on the right.  If width&#xA;is not specified then there is no minimum.&#xA;&#xA;&lt;a name=&quot;floatDPrec&quot;>&lt;/a>&lt;p> If the conversion is &lt;tt>'e'&lt;/tt>,&#xA;&lt;tt>'E'&lt;/tt> or &lt;tt>'f'&lt;/tt>, then the precision is the number of digits&#xA;after the decimal separator.  If the precision is not specified, then it is&#xA;assumed to be &lt;tt>6&lt;/tt>.&#xA;&#xA;&lt;p> If the conversion is &lt;tt>'g'&lt;/tt> or &lt;tt>'G'&lt;/tt>, then the precision is&#xA;the total number of significant digits in the resulting magnitude after&#xA;rounding.  If the precision is not specified, then the default value is&#xA;&lt;tt>6&lt;/tt>.  If the precision is &lt;tt>0&lt;/tt>, then it is taken to be&#xA;&lt;tt>1&lt;/tt>.&#xA;&#xA;&lt;p> If the conversion is &lt;tt>'a'&lt;/tt> or &lt;tt>'A'&lt;/tt>, then the precision&#xA;is the number of hexadecimal digits after the decimal separator.  If the&#xA;precision is not provided, then all of the digits as returned by {@link&#xA;Double#toHexString(double)} will be output.&#xA;&#xA;&lt;p>&lt;a name=&quot;dndec&quot;>&lt;b> BigDecimal &lt;/b>&lt;a>&#xA;&#xA;&lt;p> The following conversions may be applied {@link java.math.BigDecimal&#xA;BigDecimal}.&#xA;&#xA;&lt;table cellpadding=5 summary=&quot;floatConv&quot;>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'e'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0065'&lt;/tt>&#xA;&lt;td> Requires the output to be formatted using &lt;a&#xA;name=&quot;scientific&quot;>computerized scientific notation&lt;/a>.  The &lt;a&#xA;href=&quot;#l10n algorithm&quot;>localization algorithm&lt;/a> is applied.&#xA;&#xA;&lt;p> The formatting of the magnitude &lt;i>m&lt;/i> depends upon its value.&#xA;&#xA;&lt;p> If &lt;i>m&lt;/i> is positive-zero or negative-zero, then the exponent&#xA;will be &lt;tt>&quot;+00&quot;&lt;/tt>.&#xA;&#xA;&lt;p> Otherwise, the result is a string that represents the sign and&#xA;magnitude (absolute value) of the argument.  The formatting of the sign&#xA;is described in the &lt;a href=&quot;#l10n algorithm&quot;>localization&#xA;algorithm&lt;/a>. The formatting of the magnitude &lt;i>m&lt;/i> depends upon its&#xA;value.&#xA;&#xA;&lt;p> Let &lt;i>n&lt;/i> be the unique integer such that 10&lt;sup>&lt;i>n&lt;/i>&lt;/sup>&#xA;&lt;= &lt;i>m&lt;/i> &lt; 10&lt;sup>&lt;i>n&lt;/i>+1&lt;/sup>; then let &lt;i>a&lt;/i> be the&#xA;mathematically exact quotient of &lt;i>m&lt;/i> and 10&lt;sup>&lt;i>n&lt;/i>&lt;/sup> so&#xA;that 1 &lt;= &lt;i>a&lt;/i> &lt; 10. The magnitude is then represented as the&#xA;integer part of &lt;i>a&lt;/i>, as a single decimal digit, followed by the&#xA;decimal separator followed by decimal digits representing the fractional&#xA;part of &lt;i>a&lt;/i>, followed by the exponent symbol &lt;tt>'e'&lt;/tt>&#xA;(&lt;tt>'&amp;#92;u0065'&lt;/tt>), followed by the sign of the exponent, followed&#xA;by a representation of &lt;i>n&lt;/i> as a decimal integer, as produced by the&#xA;method {@link Long#toString(long, int)}, and zero-padded to include at&#xA;least two digits.&#xA;&#xA;&lt;p> The number of digits in the result for the fractional part of&#xA;&lt;i>m&lt;/i> or &lt;i>a&lt;/i> is equal to the precision.  If the precision is not&#xA;specified then the default value is &lt;tt>6&lt;/tt>.  If the precision is&#xA;less than the number of digits which would appear after the decimal&#xA;point in the string returned by {@link Float#toString(float)} or {@link&#xA;Double#toString(double)} respectively, then the value will be rounded&#xA;using the {@linkplain java.math.BigDecimal#ROUND_HALF_UP round half up&#xA;algorithm}.  Otherwise, zeros may be appended to reach the precision.&#xA;For a canonical representation of the value, use {@link&#xA;BigDecimal#toString()}.&#xA;&#xA;&lt;p> If the &lt;tt>','&lt;/tt> flag is given, then an {@link&#xA;FormatFlagsConversionMismatchException} will be thrown.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'E'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0045'&lt;/tt>&#xA;&lt;td> The upper-case variant of &lt;tt>'e'&lt;/tt>.  The exponent symbol&#xA;will be &lt;tt>'E'&lt;/tt> (&lt;tt>'&amp;#92;u0045'&lt;/tt>).&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'g'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0067'&lt;/tt>&#xA;&lt;td> Requires the output to be formatted in general scientific notation&#xA;as described below. The &lt;a href=&quot;#l10n algorithm&quot;>localization&#xA;algorithm&lt;/a> is applied.&#xA;&#xA;&lt;p> After rounding for the precision, the formatting of the resulting&#xA;magnitude &lt;i>m&lt;/i> depends on its value.&#xA;&#xA;&lt;p> If &lt;i>m&lt;/i> is greater than or equal to 10&lt;sup>-4&lt;/sup> but less&#xA;than 10&lt;sup>precision&lt;/sup> then it is represented in &lt;i>&lt;a&#xA;href=&quot;#decimal&quot;>decimal format&lt;/a>&lt;/i>.&#xA;&#xA;&lt;p> If &lt;i>m&lt;/i> is less than 10&lt;sup>-4&lt;/sup> or greater than or equal to&#xA;10&lt;sup>precision&lt;/sup>, then it is represented in &lt;i>&lt;a&#xA;href=&quot;#scientific&quot;>computerized scientific notation&lt;/a>&lt;/i>.&#xA;&#xA;&lt;p> The total number of significant digits in &lt;i>m&lt;/i> is equal to the&#xA;precision.  If the precision is not specified, then the default value is&#xA;&lt;tt>6&lt;/tt>.  If the precision is &lt;tt>0&lt;/tt>, then it is taken to be&#xA;&lt;tt>1&lt;/tt>.&#xA;&#xA;&lt;p> If the &lt;tt>'#'&lt;/tt> flag is given then an {@link&#xA;FormatFlagsConversionMismatchException} will be thrown.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'G'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0047'&lt;/tt>&#xA;&lt;td> The upper-case variant of &lt;tt>'g'&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'f'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0066'&lt;/tt>&#xA;&lt;td> Requires the output to be formatted using &lt;a name=&quot;decimal&quot;>decimal&#xA;format&lt;/a>.  The &lt;a href=&quot;#l10n algorithm&quot;>localization algorithm&lt;/a> is&#xA;applied.&#xA;&#xA;&lt;p> The result is a string that represents the sign and magnitude&#xA;(absolute value) of the argument.  The formatting of the sign is&#xA;described in the &lt;a href=&quot;#l10n algorithm&quot;>localization&#xA;algorithm&lt;/a>. The formatting of the magnitude &lt;i>m&lt;/i> depends upon its&#xA;value.&#xA;&#xA;&lt;p> The magnitude is formatted as the integer part of &lt;i>m&lt;/i>, with no&#xA;leading zeroes, followed by the decimal separator followed by one or&#xA;more decimal digits representing the fractional part of &lt;i>m&lt;/i>.&#xA;&#xA;&lt;p> The number of digits in the result for the fractional part of&#xA;&lt;i>m&lt;/i> or &lt;i>a&lt;/i> is equal to the precision.  If the precision is not&#xA;specified then the default value is &lt;tt>6&lt;/tt>.  If the precision is&#xA;less than the number of digits which would appear after the decimal&#xA;point in the string returned by {@link Float#toString(float)} or {@link&#xA;Double#toString(double)} respectively, then the value will be rounded&#xA;using the {@linkplain java.math.BigDecimal#ROUND_HALF_UP round half up&#xA;algorithm}.  Otherwise, zeros may be appended to reach the precision.&#xA;For a canonical representation of the value, use {@link&#xA;BigDecimal#toString()}.&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;p> All &lt;a href=&quot;#intFlags&quot;>flags&lt;/a> defined for Byte, Short, Integer, and&#xA;Long apply.&#xA;&#xA;&lt;p> If the &lt;tt>'#'&lt;/tt> flag is given, then the decimal separator will&#xA;always be present.&#xA;&#xA;&lt;p> The &lt;a href=&quot;#floatdFlags&quot;>default behavior&lt;/a> when no flags are&#xA;given is the same as for Float and Double.&#xA;&#xA;&lt;p> The specification of &lt;a href=&quot;#floatDWidth&quot;>width&lt;/a> and &lt;a&#xA;href=&quot;#floatDPrec&quot;>precision&lt;/a> is the same as defined for Float and&#xA;Double.&#xA;&#xA;&lt;a name=&quot;ddt&quot;>&lt;h4> Date/Time &lt;/h4>&lt;/a>&#xA;&#xA;&lt;p> This conversion may be applied to &lt;tt>long&lt;/tt>, {@link Long}, {@link&#xA;Calendar}, and {@link Date}.&#xA;&#xA;&lt;table cellpadding=5 summary=&quot;DTConv&quot;>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'t'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0074'&lt;/tt>&#xA;&lt;td> Prefix for date and time conversion characters.&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'T'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0054'&lt;/tt>&#xA;&lt;td> The upper-case variant of &lt;tt>'t'&lt;/tt>.&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;p> The following date and time conversion character suffixes are defined&#xA;for the &lt;tt>'t'&lt;/tt> and &lt;tt>'T'&lt;/tt> conversions.  The types are similar to&#xA;but not completely identical to those defined by GNU &lt;tt>date&lt;/tt> and&#xA;POSIX &lt;tt>strftime(3c)&lt;/tt>.  Additional conversion types are provided to&#xA;access Java-specific functionality (e.g. &lt;tt>'L'&lt;/tt> for milliseconds&#xA;within the second).&#xA;&#xA;&lt;p> The following conversion characters are used for formatting times:&#xA;&#xA;&lt;table cellpadding=5 summary=&quot;time&quot;>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;> &lt;tt>'H'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0048'&lt;/tt>&#xA;&lt;td> Hour of the day for the 24-hour clock, formatted as two digits with&#xA;a leading zero as necessary i.e. &lt;tt>00 - 23&lt;/tt>. &lt;tt>00&lt;/tt>&#xA;corresponds to midnight.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'I'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0049'&lt;/tt>&#xA;&lt;td> Hour for the 12-hour clock, formatted as two digits with a leading&#xA;zero as necessary, i.e.  &lt;tt>01 - 12&lt;/tt>.  &lt;tt>01&lt;/tt> corresponds to&#xA;one o'clock (either morning or afternoon).&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'k'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u006b'&lt;/tt>&#xA;&lt;td> Hour of the day for the 24-hour clock, i.e. &lt;tt>0 - 23&lt;/tt>.&#xA;&lt;tt>0&lt;/tt> corresponds to midnight.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'l'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u006c'&lt;/tt>&#xA;&lt;td> Hour for the 12-hour clock, i.e. &lt;tt>1 - 12&lt;/tt>.  &lt;tt>1&lt;/tt>&#xA;corresponds to one o'clock (either morning or afternoon).&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'M'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u004d'&lt;/tt>&#xA;&lt;td> Minute within the hour formatted as two digits with a leading zero&#xA;as necessary, i.e.  &lt;tt>00 - 59&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'S'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0053'&lt;/tt>&#xA;&lt;td> Seconds within the minute, formatted as two digits with a leading&#xA;zero as necessary, i.e. &lt;tt>00 - 60&lt;/tt> (&quot;&lt;tt>60&lt;/tt>&quot; is a special&#xA;value required to support leap seconds).&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'L'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u004c'&lt;/tt>&#xA;&lt;td> Millisecond within the second formatted as three digits with&#xA;leading zeros as necessary, i.e. &lt;tt>000 - 999&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'N'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u004e'&lt;/tt>&#xA;&lt;td> Nanosecond within the second, formatted as nine digits with leading&#xA;zeros as necessary, i.e. &lt;tt>000000000 - 999999999&lt;/tt>.  The precision&#xA;of this value is limited by the resolution of the underlying operating&#xA;system or hardware.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'p'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0070'&lt;/tt>&#xA;&lt;td> Locale-specific {@linkplain&#xA;java.text.DateFormatSymbols#getAmPmStrings morning or afternoon} marker&#xA;in lower case, e.g.&quot;&lt;tt>am&lt;/tt>&quot; or &quot;&lt;tt>pm&lt;/tt>&quot;.  Use of the&#xA;conversion prefix &lt;tt>'T'&lt;/tt> forces this output to upper case.  (Note&#xA;that &lt;tt>'p'&lt;/tt> produces lower-case output.  This is different from&#xA;GNU &lt;tt>date&lt;/tt> and POSIX &lt;tt>strftime(3c)&lt;/tt> which produce&#xA;upper-case output.)&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'z'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u007a'&lt;/tt>&#xA;&lt;td> &lt;a href=&quot;http://www.ietf.org/rfc/rfc0822.txt&quot;>RFC&amp;nbsp;822&lt;/a>&#xA;style numeric time zone offset from GMT, e.g. &lt;tt>-0800&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'Z'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u005a'&lt;/tt>&#xA;&lt;td> A string representing the abbreviation for the time zone.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'s'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0073'&lt;/tt>&#xA;&lt;td> Seconds since the beginning of the epoch starting at 1 January 1970&#xA;&lt;tt>00:00:00&lt;/tt> UTC, i.e. &lt;tt>Long.MIN_VALUE/1000&lt;/tt> to&#xA;&lt;tt>Long.MAX_VALUE/1000&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'Q'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u004f'&lt;/tt>&#xA;&lt;td> Milliseconds since the beginning of the epoch starting at 1 January&#xA;1970 &lt;tt>00:00:00&lt;/tt> UTC, i.e. &lt;tt>Long.MIN_VALUE&lt;/tt> to&#xA;&lt;tt>Long.MAX_VALUE&lt;/tt>. The precision of this value is limited by&#xA;the resolution of the underlying operating system or hardware.&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;p> The following conversion characters are used for formatting dates:&#xA;&#xA;&lt;table cellpadding=5 summary=&quot;date&quot;>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'B'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0042'&lt;/tt>&#xA;&lt;td> Locale-specific {@linkplain java.text.DateFormatSymbols#getMonths&#xA;full month name}, e.g. &lt;tt>&quot;January&quot;&lt;/tt>, &lt;tt>&quot;February&quot;&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'b'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0062'&lt;/tt>&#xA;&lt;td> Locale-specific {@linkplain&#xA;java.text.DateFormatSymbols#getShortMonths abbreviated month name},&#xA;e.g. &lt;tt>&quot;Jan&quot;&lt;/tt>, &lt;tt>&quot;Feb&quot;&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'h'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0068'&lt;/tt>&#xA;&lt;td> Same as &lt;tt>'b'&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'A'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0041'&lt;/tt>&#xA;&lt;td> Locale-specific full name of the {@linkplain&#xA;java.text.DateFormatSymbols#getWeekdays day of the week},&#xA;e.g. &lt;tt>&quot;Sunday&quot;&lt;/tt>, &lt;tt>&quot;Monday&quot;&lt;/tt>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'a'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0061'&lt;/tt>&#xA;&lt;td> Locale-specific short name of the {@linkplain&#xA;java.text.DateFormatSymbols#getShortWeekdays day of the week},&#xA;e.g. &lt;tt>&quot;Sun&quot;&lt;/tt>, &lt;tt>&quot;Mon&quot;&lt;/tt>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'C'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0043'&lt;/tt>&#xA;&lt;td> Four-digit year divided by &lt;tt>100&lt;/tt>, formatted as two digits&#xA;with leading zero as necessary, i.e. &lt;tt>00 - 99&lt;/tt>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'Y'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0059'&lt;/tt> &lt;td> Year, formatted to at least&#xA;four digits with leading zeros as necessary, e.g. &lt;tt>0092&lt;/tt> equals&#xA;&lt;tt>92&lt;/tt> CE for the Gregorian calendar.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'y'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0079'&lt;/tt>&#xA;&lt;td> Last two digits of the year, formatted with leading zeros as&#xA;necessary, i.e. &lt;tt>00 - 99&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'j'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u006a'&lt;/tt>&#xA;&lt;td> Day of year, formatted as three digits with leading zeros as&#xA;necessary, e.g. &lt;tt>001 - 366&lt;/tt> for the Gregorian calendar.&#xA;&lt;tt>001&lt;/tt> corresponds to the first day of the year.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'m'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u006d'&lt;/tt>&#xA;&lt;td> Month, formatted as two digits with leading zeros as necessary,&#xA;i.e. &lt;tt>01 - 13&lt;/tt>, where &quot;&lt;tt>01&lt;/tt>&quot; is the first month of the&#xA;year and (&quot;&lt;tt>13&lt;/tt>&quot; is a special value required to support lunar&#xA;calendars).&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'d'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0064'&lt;/tt>&#xA;&lt;td> Day of month, formatted as two digits with leading zeros as&#xA;necessary, i.e. &lt;tt>01 - 31&lt;/tt>, where &quot;&lt;tt>01&lt;/tt>&quot; is the first day&#xA;of the month.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'e'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0065'&lt;/tt>&#xA;&lt;td> Day of month, formatted as two digits, i.e. &lt;tt>1 - 31&lt;/tt> where&#xA;&quot;&lt;tt>1&lt;/tt>&quot; is the first day of the month.&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;p> The following conversion characters are used for formatting common&#xA;date/time compositions.&#xA;&#xA;&lt;table cellpadding=5 summary=&quot;composites&quot;>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'R'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0052'&lt;/tt>&#xA;&lt;td> Time formatted for the 24-hour clock as &lt;tt>&quot;%tH:%tM&quot;&lt;/tt>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'T'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0054'&lt;/tt>&#xA;&lt;td> Time formatted for the 24-hour clock as &lt;tt>&quot;%tH:%tM:%tS&quot;&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'r'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0072'&lt;/tt>&#xA;&lt;td> Time formatted for the 12-hour clock as &lt;tt>&quot;%tI:%tM:%tS&#xA;%Tp&quot;&lt;/tt>.  The location of the morning or afternoon marker&#xA;(&lt;tt>'%Tp'&lt;/tt>) may be locale-dependent.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'D'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0044'&lt;/tt>&#xA;&lt;td> Date formatted as &lt;tt>&quot;%tm/%td/%ty&quot;&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'F'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0046'&lt;/tt>&#xA;&lt;td> &lt;a href=&quot;http://www.w3.org/TR/NOTE-datetime&quot;>ISO&amp;nbsp;8601&lt;/a>&#xA;complete date formatted as &lt;tt>&quot;%tY-%tm-%td&quot;&lt;/tt>.&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'c'&lt;/tt>&#xA;&lt;td valign=&quot;top&quot;> &lt;tt>'&amp;#92;u0063'&lt;/tt>&#xA;&lt;td> Date and time formatted as &lt;tt>&quot;%ta %tb %td %tT %tZ %tY&quot;&lt;/tt>,&#xA;e.g. &lt;tt>&quot;Sun Jul 20 16:17:00 EDT 1969&quot;&lt;/tt>.&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;p> The &lt;tt>'-'&lt;/tt> flag defined for &lt;a href=&quot;#dFlags&quot;>General&#xA;conversions&lt;/a> applies.  If the &lt;tt>'#'&lt;/tt> flag is given, then a {@link&#xA;FormatFlagsConversionMismatchException} will be thrown.&#xA;&#xA;&lt;a name=&quot;dtWidth&quot;>&lt;/a>&lt;p> The width is the minimum number of characters to&#xA;be written to the output.  If the length of the converted value is less than&#xA;the &lt;tt>width&lt;/tt> then the output will be padded by spaces&#xA;(&lt;tt>'&amp;#92;u0020'&lt;/tt>) until the total number of characters equals width.&#xA;The padding is on the left by default.  If the &lt;tt>'-'&lt;/tt> flag is given&#xA;then the padding will be on the right.  If width is not specified then there&#xA;is no minimum.&#xA;&#xA;&lt;p> The precision is not applicable.  If the precision is specified then an&#xA;{@link IllegalFormatPrecisionException} will be thrown.&#xA;&#xA;&lt;a name=&quot;dper&quot;>&lt;h4> Percent &lt;/h4>&lt;/a>&#xA;&#xA;&lt;p> The conversion does not correspond to any argument.&#xA;&#xA;&lt;table cellpadding=5 summary=&quot;DTConv&quot;>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'%'&lt;/tt>&#xA;&lt;td> The result is a literal &lt;tt>'%'&lt;/tt> (&lt;tt>'&amp;#92;u0025'&lt;/tt>)&#xA;&#xA;&lt;a name=&quot;dtWidth&quot;>&lt;/a>&lt;p> The width is the minimum number of characters to&#xA;be written to the output including the &lt;tt>'%'&lt;/tt>.  If the length of the&#xA;converted value is less than the &lt;tt>width&lt;/tt> then the output will be&#xA;padded by spaces (&lt;tt>'&amp;#92;u0020'&lt;/tt>) until the total number of&#xA;characters equals width.  The padding is on the left.  If width is not&#xA;specified then just the &lt;tt>'%'&lt;/tt> is output.&#xA;&#xA;&lt;p> The &lt;tt>'-'&lt;/tt> flag defined for &lt;a href=&quot;#dFlags&quot;>General&#xA;conversions&lt;/a> applies.  If any other flags are provided, then a&#xA;{@link FormatFlagsConversionMismatchException} will be thrown.&#xA;&#xA;&lt;p> The precision is not applicable.  If the precision is specified an&#xA;{@link IllegalFormatPrecisionException} will be thrown.&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;a name=&quot;dls&quot;>&lt;h4> Line Separator &lt;/h4>&lt;/a>&#xA;&#xA;&lt;p> The conversion does not correspond to any argument.&#xA;&#xA;&lt;table cellpadding=5 summary=&quot;DTConv&quot;>&#xA;&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;tt>'n'&lt;/tt>&#xA;&lt;td> the platform-specific line separator as returned by {@link&#xA;System#getProperty System.getProperty(&quot;line.separator&quot;)}.&#xA;&#xA;&lt;/table>&#xA;&#xA;&lt;p> Flags, width, and precision are not applicable.  If any are provided an&#xA;{@link IllegalFormatFlagsException}, {@link IllegalFormatWidthException},&#xA;and {@link IllegalFormatPrecisionException}, respectively will be thrown.&#xA;&#xA;&lt;a name=&quot;dpos&quot;>&lt;h4> Argument Index &lt;/h4>&lt;/a>&#xA;&#xA;&lt;p> Format specifiers can reference arguments in three ways:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li> &lt;i>Explicit indexing&lt;/i> is used when the format specifier contains an&#xA;argument index.  The argument index is a decimal integer indicating the&#xA;position of the argument in the argument list.  The first argument is&#xA;referenced by &quot;&lt;tt>1$&lt;/tt>&quot;, the second by &quot;&lt;tt>2$&lt;/tt>&quot;, etc.  An argument&#xA;may be referenced more than once.&#xA;&#xA;&lt;p> For example:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;formatter.format(&quot;%4$s %3$s %2$s %1$s %4$s %3$s %2$s %1$s&quot;,&#xA;&quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;)&#xA;-> &quot;d c b a d c b a&quot;&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;li> &lt;i>Relative indexing&lt;/i> is used when the format specifier contains a&#xA;&lt;tt>'&lt;'&lt;/tt> (&lt;tt>'&amp;#92;u003c'&lt;/tt>) flag which causes the argument for the&#xA;previous format specifier to be re-used.  If there is no previous argument,&#xA;then a {@link MissingFormatArgumentException} is thrown.&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;formatter.format(&quot;%s %s %&lt;s %&lt;s&quot;, &quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;)&#xA;-> &quot;a b b b&quot;&#xA;&quot;c&quot; and &quot;d&quot; are ignored because they are not referenced&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;li> &lt;i>Ordinary indexing&lt;/i> is used when the format specifier contains&#xA;neither an argument index nor a &lt;tt>'&lt;'&lt;/tt> flag.  Each format specifier&#xA;which uses ordinary indexing is assigned a sequential implicit index into&#xA;argument list which is independent of the indices used by explicit or&#xA;relative indexing.&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;formatter.format(&quot;%s %s %s %s&quot;, &quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;)&#xA;-> &quot;a b c d&quot;&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p> It is possible to have a format string which uses all forms of indexing,&#xA;for example:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;formatter.format(&quot;%2$s %s %&lt;s %s&quot;, &quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;)&#xA;-> &quot;b a a b&quot;&#xA;&quot;c&quot; and &quot;d&quot; are ignored because they are not referenced&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p> The maximum number of arguments is limited by the maximum dimension of a&#xA;Java array as defined by the &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/vmspec/&quot;>Java Virtual Machine&#xA;Specification&lt;/a>.  If the argument index is does not correspond to an&#xA;available argument, then a {@link MissingFormatArgumentException} is thrown.&#xA;&#xA;&lt;p> If there are more arguments than format specifiers, the extra arguments&#xA;are ignored.&#xA;&#xA;&lt;p> Unless otherwise specified, passing a &lt;tt>null&lt;/tt> argument to any&#xA;method or constructor in this class will cause a {@link&#xA;NullPointerException} to be thrown.&#xA;&#xA;@author  Iris Garcia&#xA;@version &#x9;1.14, 07/16/04&#xA;@since 1.5&#xA;" annotatedElement="d5e62618-f21e-4bfd-8959-057ea542522d"/>
            <interfaceRealization xmi:id="39b413f3-9adc-4529-a018-17fc951b2988" name="" supplier="3c998d9c-d5c5-4e4f-b879-d51904b00107" client="d5e62618-f21e-4bfd-8959-057ea542522d" contract="3c998d9c-d5c5-4e4f-b879-d51904b00107"/>
            <interfaceRealization xmi:id="63fd4723-4ab8-4087-82f7-0b02f53e15b4" name="" supplier="2811b8ed-7762-4e53-9fef-44916e7c1e6f" client="d5e62618-f21e-4bfd-8959-057ea542522d" contract="2811b8ed-7762-4e53-9fef-44916e7c1e6f"/>
            <nestedClassifier xmi:type="uml:Interface" xmi:id="801c09ff-a83d-4bdd-93ab-661c1bcbad05" name="FormatString" visibility="private" isAbstract="true"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8238c033-b5fe-4636-8f2a-00c5d8d4ab75" name="FixedString" visibility="private" clientDependency="0484d3f4-693a-4993-8306-383d547095ba">
              <interfaceRealization xmi:id="0484d3f4-693a-4993-8306-383d547095ba" name="" supplier="801c09ff-a83d-4bdd-93ab-661c1bcbad05" client="8238c033-b5fe-4636-8f2a-00c5d8d4ab75" contract="801c09ff-a83d-4bdd-93ab-661c1bcbad05"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="3e588ea9-7f7c-49fe-abca-41b23650269b" name="BigDecimalLayoutForm"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ff445673-d89b-40e6-8687-f39106d40817" name="FormatSpecifier" visibility="private" clientDependency="0ceaac7a-1f94-4667-b9c7-ab3a04bc80f0">
              <interfaceRealization xmi:id="0ceaac7a-1f94-4667-b9c7-ab3a04bc80f0" name="" supplier="801c09ff-a83d-4bdd-93ab-661c1bcbad05" client="ff445673-d89b-40e6-8687-f39106d40817" contract="801c09ff-a83d-4bdd-93ab-661c1bcbad05"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="9004688c-2e0a-4a15-8587-1e1f5484c80f" name="BigDecimalLayout" visibility="private"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="97e31e77-3d21-47c3-8c4d-118b63bc15d5" name="Flags" visibility="private"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="1513de30-845a-4122-8c65-e7e2c724e0cf" name="Conversion" visibility="private"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="90c20b88-c57c-4e80-8939-7323bce29204" name="DateTime" visibility="private"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b1bbe143-d34a-4dce-ac16-c56d65f7f9e6" name="IdentityHashMapIterator&lt;V>">
            <templateBinding xmi:id="9170e333-c2de-4a1a-a33d-e2652e886bd6" signature="cc5e9a89-aa7b-48c9-917f-1c40a6cbcf70">
              <parameterSubstitution xmi:id="237d0da8-f233-44f1-b38e-d6ed311382ca" formal="caa9c9aa-065d-44ba-a72e-756962f73e92" actual="7c3b303d-1a7c-4085-b263-8918b5229a33"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="80e4734e-dded-4932-bb32-3d902947e2ea" name="PropertyPermissionCollection" visibility="package" clientDependency="2fa3ff32-d185-4d24-a72c-2926060448c6" isLeaf="true">
            <ownedComment xmi:id="583832e9-5a4d-4e86-9c4a-f699c49b0a6f" body="A PropertyPermissionCollection stores a set of PropertyPermission&#xA;permissions.&#xA;&#xA;@see java.security.Permission&#xA;@see java.security.Permissions&#xA;@see java.security.PermissionCollection&#xA;&#xA;@version 1.33, 12/19/03&#xA;&#xA;@author Roland Schemers&#xA;&#xA;@serial include&#xA;" annotatedElement="80e4734e-dded-4932-bb32-3d902947e2ea"/>
            <generalization xmi:id="9743595d-fa06-430b-b769-d3ebc3ddd5b9" isSubstitutable="true" general="528e6ee9-bd4d-433a-b08d-a8e30fb7d9c7"/>
            <interfaceRealization xmi:id="2fa3ff32-d185-4d24-a72c-2926060448c6" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="80e4734e-dded-4932-bb32-3d902947e2ea" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a785d4b8-5e5b-4095-ac03-7c1c8ed7e8b3" name="SynchronizedCollection&lt;E>">
            <templateBinding xmi:id="0e6582d7-f50f-4e5b-8df4-7eccd3796c0a" signature="b16eb85e-21c6-4d84-a691-e11d9914d7da">
              <parameterSubstitution xmi:id="64ee6203-4e17-47e2-8f45-673f65b2b817" formal="b288c2ed-c541-45ca-89a5-6de0c263e348" actual="48970e5d-b79d-4bd9-901c-391d2c2394f4"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="b858419f-93d0-45dd-8a32-02e73d64d0e8" name="Comparable&lt;Calendar>">
            <templateBinding xmi:id="f5812c4d-3865-463a-8773-b85c3759ff48" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="c9a72be1-4d09-4a94-9375-4b879e75a1d9" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="7e4b4f4d-c7d8-4cd4-9f7b-a64b40b9afb1"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="876503e0-55ec-4d2e-ad43-a5bae3d7d7b5" name="XMLUtils" visibility="package">
            <ownedComment xmi:id="d42cb66c-deca-4ff8-b01d-6082f3963378" body="A class used to aid in Properties load and save in XML. Keeping this&#xA;code outside of Properties helps reduce the number of classes loaded&#xA;when Properties is loaded.&#xA;&#xA;@version 1.9, 01/23/03&#xA;@author  Michael McCloskey&#xA;@since   1.3&#xA;" annotatedElement="876503e0-55ec-4d2e-ad43-a5bae3d7d7b5"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="f1e08a39-8195-438a-a998-f703437e3973" name="Resolver" visibility="private" clientDependency="ce729ee0-2512-4ca7-a42d-d6963df863d0">
              <interfaceRealization xmi:id="ce729ee0-2512-4ca7-a42d-d6963df863d0" name="" supplier="c88944e8-f26c-4709-85da-80e0b8567088" client="f1e08a39-8195-438a-a998-f703437e3973" contract="c88944e8-f26c-4709-85da-80e0b8567088"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="135129ed-a39f-4747-b352-4bb96d69bc48" name="EH" visibility="private" clientDependency="588d6506-92f3-4ec6-a492-527fdee687aa">
              <interfaceRealization xmi:id="588d6506-92f3-4ec6-a492-527fdee687aa" name="" supplier="e318caf1-552e-476f-9f5b-f24f70797339" client="135129ed-a39f-4747-b352-4bb96d69bc48" contract="e318caf1-552e-476f-9f5b-f24f70797339"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="821822d6-26f9-42d9-b968-5777759c14d8" name="Iterator&lt;String>">
            <templateBinding xmi:id="65b5650c-e230-4a7f-a0ca-0496911a9b2c" signature="0f8c6981-4608-4e07-a119-f77e4e17cb2d">
              <parameterSubstitution xmi:id="1b6d036f-2f10-4e13-a023-5d814ac12782" formal="3b71f5d7-d328-40b6-8dcc-6484e179fd5e" actual="44c739ae-2460-4446-b06e-bab4190d37f4"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="f76a7162-3c3f-4523-974b-3a692b2908c5" name="Comparable&lt;Date>">
            <templateBinding xmi:id="00272129-0592-402e-9c74-9bfd1b4def27" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="cfb2f77e-36d3-432b-8062-1c0cd6a119ba" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="66f22d5f-389b-4eb1-852a-78904751a116"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="16d31ddc-7fd8-4f09-92b2-5f923c11b6d9" name="jar">
            <packagedElement xmi:type="uml:Class" xmi:id="a7f238a6-6519-4f17-8919-03bf2b4fe7bd" name="JarOutputStream">
              <ownedComment xmi:id="2f58e663-f3b1-4d9f-97ed-985ba569e2ca" body="The &lt;code>JarOutputStream&lt;/code> class is used to write the contents&#xA;of a JAR file to any output stream. It extends the class&#xA;&lt;code>java.util.zip.ZipOutputStream&lt;/code> with support&#xA;for writing an optional &lt;code>Manifest&lt;/code> entry. The&#xA;&lt;code>Manifest&lt;/code> can be used to specify meta-information about&#xA;the JAR file and its entries.&#xA;&#xA;@author  David Connelly&#xA;@version 1.22, 12/19/03&#xA;@see&#x9;    Manifest&#xA;@see&#x9;    java.util.zip.ZipOutputStream&#xA;@since   1.2&#xA;" annotatedElement="a7f238a6-6519-4f17-8919-03bf2b4fe7bd"/>
              <generalization xmi:id="714b2eb9-7d3a-40e6-a172-e223bffdc3be" isSubstitutable="true" general="ef104b1b-31c2-48e3-90c4-74dd03a95f2f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a3a8f52a-018c-4988-8037-9a67518dbdf8" name="JarVerifier" visibility="package">
              <ownedComment xmi:id="e4181719-3806-496a-a4b7-34bdac3ebb64" body="@version &#x9;1.35 03/12/19&#xA;@author&#x9;Roland Schemers&#xA;" annotatedElement="a3a8f52a-018c-4988-8037-9a67518dbdf8"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="3a9a292e-5a94-4d90-a67a-32894f768a4a" name="VerifierStream" visibility="package">
                <generalization xmi:id="c0bfd5c2-3704-4367-9b07-3f5bda64c319" isSubstitutable="true" general="ee3aaef0-e959-4cca-9d5d-9bd2a90ad7dd"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="079d1c85-2594-4a52-b10c-a675daf9fa34" name="Attributes" clientDependency="a80ef473-d859-43e0-89f3-12ae7f5cab64 ec54cb63-97fc-443f-9465-f15bd0b11311">
              <ownedComment xmi:id="4c9ce65f-cd59-4998-b19a-3bba9c356329" body="The Attributes class maps Manifest attribute names to associated string&#xA;values. Valid attribute names are case-insensitive, are restricted to&#xA;the ASCII characters in the set [0-9a-zA-Z_-], and cannot exceed 70&#xA;characters in length. Attribute values can contain any characters and&#xA;will be UTF8-encoded when written to the output stream.  See the&#xA;&lt;a href=&quot;../../../../guide/jar/jar.html&quot;>JAR File Specification&lt;/a>&#xA;for more information about valid attribute names and values.&#xA;&#xA;@author  David Connelly&#xA;@version 1.50, 05/05/04&#xA;@see&#x9;    Manifest&#xA;@since   1.2&#xA;" annotatedElement="079d1c85-2594-4a52-b10c-a675daf9fa34"/>
              <interfaceRealization xmi:id="a80ef473-d859-43e0-89f3-12ae7f5cab64" name="" supplier="7515f8ad-109f-499a-a4a5-5eeba6170ad2" client="079d1c85-2594-4a52-b10c-a675daf9fa34" contract="7515f8ad-109f-499a-a4a5-5eeba6170ad2"/>
              <interfaceRealization xmi:id="ec54cb63-97fc-443f-9465-f15bd0b11311" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="079d1c85-2594-4a52-b10c-a675daf9fa34" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="3e8fb280-4403-432b-a669-580bc309e2d4" name="Name">
                <ownedComment xmi:id="911153e9-d8b4-447c-a5b5-087008745ba9" body="The Attributes.Name class represents an attribute name stored in&#xA;this Map. Valid attribute names are case-insensitive, are restricted&#xA;to the ASCII characters in the set [0-9a-zA-Z_-], and cannot exceed&#xA;70 characters in length. Attribute values can contain any characters&#xA;and will be UTF8-encoded when written to the output stream.  See the&#xA;&lt;a href=&quot;../../../../guide/jar/jar.html&quot;>JAR File Specification&lt;/a>&#xA;for more information about valid attribute names and values.&#xA;" annotatedElement="3e8fb280-4403-432b-a669-580bc309e2d4"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="76fe9c87-592f-47dd-83a7-f95e6481f9ba" name="JarEntry">
              <ownedComment xmi:id="c2b3c35f-855d-4194-bc24-005897c0534f" body="This class is used to represent a JAR file entry.&#xA;" annotatedElement="76fe9c87-592f-47dd-83a7-f95e6481f9ba"/>
              <generalization xmi:id="596255a8-a86a-4332-8c65-259151c4e6f5" isSubstitutable="true" general="ad4b0fea-050d-4426-88e8-23a9fa3f8d1c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="3cc9dde9-fadd-4f04-a71f-a761f4da4cd4" name="Pack200" isAbstract="true">
              <ownedComment xmi:id="55f3cd4c-68e4-4a08-8a16-d5e5f4e83db7" body="Transforms a JAR file to or from a packed stream in Pack200 format.&#xA;Please refer to Network Trasfer Format JSR 200 Specification at&#xA;http://jcp.org/aboutJava/communityprocess/review/jsr200/index.html&#xA;&lt;p>&#xA;Typically the packer engine is used by application developers&#xA;to deploy or host JAR files on a website.&#xA;The unpacker  engine is used by deployment applications to&#xA;transform the byte-stream back to JAR format.&#xA;&lt;p>&#xA;Here is an example using  packer and unpacker:&lt;p>&#xA;&lt;blockquote>&lt;pre>&#xA;import java.util.jar.Pack200;&#xA;import java.util.jar.Pack200.*;&#xA;...&#xA;Create the Packer object&#xA;Packer packer = Pack200.newPacker();&#xA;&#xA;Initialize the state by setting the desired properties&#xA;Map p = packer.properties();&#xA;take more time choosing codings for better compression&#xA;p.put(Packer.EFFORT, &quot;7&quot;);  // default is &quot;5&quot;&#xA;use largest-possible archive segments (>10% better compression).&#xA;p.put(Packer.SEGMENT_LIMIT, &quot;-1&quot;);&#xA;reorder files for better compression.&#xA;p.put(Packer.KEEP_FILE_ORDER, Packer.FALSE);&#xA;smear modification times to a single value.&#xA;p.put(Packer.MODIFICATION_TIME, Packer.LATEST);&#xA;ignore all JAR deflation requests,&#xA;transmitting a single request to use &quot;store&quot; mode.&#xA;p.put(Packer.DEFLATE_HINT, Packer.FALSE);&#xA;discard debug attributes&#xA;p.put(Packer.CODE_ATTRIBUTE_PFX+&quot;LineNumberTable&quot;, Packer.STRIP);&#xA;throw an error if an attribute is unrecognized&#xA;p.put(Packer.UNKNOWN_ATTRIBUTE, Packer.ERROR);&#xA;pass one class file uncompressed:&#xA;p.put(Packer.PASS_FILE_PFX+0, &quot;mutants/Rogue.class&quot;);&#xA;try {&#xA;JarFile jarFile = new JarFile(&quot;/tmp/testref.jar&quot;);&#xA;FileOutputStream fos = new FileOutputStream(&quot;/tmp/test.pack&quot;);&#xA;Call the packer&#xA;packer.pack(jarFile, fos);&#xA;jarFile.close();&#xA;fos.close();&#xA;&#xA;File f = new File(&quot;/tmp/test.pack&quot;);&#xA;FileOutputStream fostream = new FileOutputStream(&quot;/tmp/test.jar&quot;);&#xA;JarOutputStream jostream = new JarOutputStream(fostream);&#xA;Unpacker unpacker = Pack200.newUnpacker();&#xA;Call the unpacker&#xA;unpacker.unpack(f, jostream);&#xA;Must explicitly close the output.&#xA;jostream.close();&#xA;} catch (IOException ioe) {&#xA;ioe.printStackTrace();&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;A Pack200 file compressed with gzip can be hosted on HTTP/1.1 web servers.&#xA;The deployment applications can use &quot;Accept-Encoding=pack200-gzip&quot;. This&#xA;indicates to the server that the client application desires a version of&#xA;the file encoded with Pack200 and further compressed with gzip. Please&#xA;refer to Java Deployment Guide &lt;TBD> for more details and techniques.&#xA;&lt;p>&#xA;Unless otherwise noted, passing a &lt;tt>null&lt;/tt> argument to a constructor or&#xA;method in this class will cause a {@link NullPointerException} to be thrown.&#xA;&#xA;@author John Rose&#xA;@author Kumar Srinivasan&#xA;@version 1.4, 12/08/03&#xA;@since 1.5&#xA;" annotatedElement="3cc9dde9-fadd-4f04-a71f-a761f4da4cd4"/>
              <nestedClassifier xmi:type="uml:Interface" xmi:id="75f596d5-9ca0-4ede-92b7-ec9ed031c070" name="Packer" isAbstract="true">
                <ownedComment xmi:id="27df577a-9ed2-43ff-b6f8-784f5d173262" body="The packer engine applies various transformations to the input JAR file,&#xA;making the pack stream highly compressible by a compressor such as&#xA;gzip or zip. An instance of the engine can be obtained&#xA;using {@link #newPacker}.&#xA;The high degree of compression is achieved&#xA;by using a number of techniques described in the JSR 200 specification.&#xA;Some of the techniques are sorting, re-ordering and co-location of the&#xA;constant pool.&#xA;&lt;p>&#xA;The pack engine is initialized to an initial state as described&#xA;by their properties below.&#xA;The initial state can be manipulated by getting the&#xA;engine properties (using {@link #properties}) and storing&#xA;the modified properties on the map.&#xA;The resource files will be passed through with no changes at all.&#xA;The class files will not contain identical bytes, since the unpacker&#xA;is free to change minor class file features such as constant pool order.&#xA;However, the class files will be semantically identical,&#xA;as specified in the Java Virtual Machine Specification&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/vmspec/html/ClassFile.doc.html&quot;>http://java.sun.com/docs/books/vmspec/html/ClassFile.doc.html&lt;/a>.&#xA;&lt;p>&#xA;By default, the packer does not change the order of JAR elements.&#xA;Also, the modification time and deflation hint of each&#xA;JAR element is passed unchanged.&#xA;(Any other ZIP-archive information, such as extra attributes&#xA;giving Unix file permissions, are lost.)&#xA;&lt;p>&#xA;Note that packing and unpacking a JAR will in general alter the&#xA;bytewise contents of classfiles in the JAR.  This means that packing&#xA;and unpacking will in general invalidate any digital signatures&#xA;which rely on bytewise images of JAR elements.  In order both to sign&#xA;and to pack a JAR, you must first pack and unpack the JAR to&#xA;&quot;normalize&quot; it, then compute signatures on the unpacked JAR elements,&#xA;and finally repack the signed JAR.&#xA;Both packing steps should&#xA;use precisely the same options, and the segment limit may also&#xA;need to be set to &quot;-1&quot;, to prevent accidental variation of segment&#xA;boundaries as class file sizes change slightly.&#xA;&lt;p>&#xA;(Here's why this works:  Any reordering the packer does&#xA;of any classfile structures is idempotent, so the second packing&#xA;does not change the orderings produced by the first packing.&#xA;Also, the unpacker is guaranteed by the JSR 200 specification&#xA;to produce a specific bytewise image for any given transmission&#xA;ordering of archive elements.)&#xA;" annotatedElement="75f596d5-9ca0-4ede-92b7-ec9ed031c070"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Interface" xmi:id="d8519fe7-59f6-4a1f-bdd4-0b455e44ec30" name="Unpacker" isAbstract="true">
                <ownedComment xmi:id="d36ae3b0-37a7-4419-941e-02373a83ff3e" body="The unpacker engine converts the packed stream to a JAR file.&#xA;An instance of the engine can be obtained&#xA;using {@link #newUnpacker}.&#xA;&lt;p>&#xA;Every JAR file produced by this engine will include the string&#xA;&quot;&lt;tt>PACK200&lt;/tt>&quot; as a zip file comment.&#xA;This allows a deployer to detect if a JAR archive was packed and unpacked.&#xA;&lt;p>&#xA;" annotatedElement="d8519fe7-59f6-4a1f-bdd4-0b455e44ec30"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="15ab251b-9b0f-4ed1-a766-97bd93d22e2c" name="JarException">
              <ownedComment xmi:id="808d914b-3a5f-4a58-bdef-13292ce582a3" body="Signals that an error of some sort has occurred while reading from&#xA;or writing to a JAR file.&#xA;&#xA;@author  David Connelly&#xA;@version 1.12, 12/19/03&#xA;@since   1.2&#xA;" annotatedElement="15ab251b-9b0f-4ed1-a766-97bd93d22e2c"/>
              <generalization xmi:id="41aff50c-317c-42ea-bc15-3e2e82a1dec4" isSubstitutable="true" general="0d3f97a6-5679-45d4-800f-f9a0e1222444"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="53d58230-99f2-4188-a328-cb1d938619d7" name="Manifest" clientDependency="3596799f-0f5c-4596-ab4d-4f272a429c9c">
              <ownedComment xmi:id="2e3fbbf7-372f-40af-a1a1-710b77ad255f" body="The Manifest class is used to maintain Manifest entry names and their&#xA;associated Attributes. There are main Manifest Attributes as well as&#xA;per-entry Attributes. For information on the Manifest format, please&#xA;see the&#xA;&lt;a href=&quot;../../../../guide/jar/jar.html&quot;>&#xA;Manifest format specification&lt;/a>.&#xA;&#xA;@author  David Connelly&#xA;@version 1.45, 05/05/04&#xA;@see&#x9;    Attributes&#xA;@since   1.2&#xA;" annotatedElement="53d58230-99f2-4188-a328-cb1d938619d7"/>
              <interfaceRealization xmi:id="3596799f-0f5c-4596-ab4d-4f272a429c9c" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="53d58230-99f2-4188-a328-cb1d938619d7" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="aa2b8be4-4c60-4058-9de6-8bef8d92b67a" name="FastInputStream" visibility="package">
                <generalization xmi:id="afe2f59c-d9e5-4aea-95af-a762ae090152" isSubstitutable="true" general="740d283f-3027-4647-a498-6f94656e662b"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="866ec115-a646-4a32-abac-751c46127e75" name="JarInputStream">
              <ownedComment xmi:id="77e9c73c-d727-4a07-9b2e-53992214e31e" body="The &lt;code>JarInputStream&lt;/code> class is used to read the contents of&#xA;a JAR file from any input stream. It extends the class&#xA;&lt;code>java.util.zip.ZipInputStream&lt;/code> with support for reading&#xA;an optional &lt;code>Manifest&lt;/code> entry. The &lt;code>Manifest&lt;/code>&#xA;can be used to store meta-information about the JAR file and its entries.&#xA;&#xA;@author  David Connelly&#xA;@version 1.33, 04/21/04&#xA;@see&#x9;    Manifest&#xA;@see&#x9;    java.util.zip.ZipInputStream&#xA;@since   1.2&#xA;" annotatedElement="866ec115-a646-4a32-abac-751c46127e75"/>
              <generalization xmi:id="cb8ffade-df7a-4f3e-acad-ebb85aa7fd6e" isSubstitutable="true" general="d1aad7af-fa4c-4f9b-b8e4-a714cf89d21c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="fad58f4f-4186-4d14-8da2-deb1af3949f8" name="JavaUtilJarAccessImpl" visibility="package"/>
            <packagedElement xmi:type="uml:Class" xmi:id="52c4df40-6d8f-4d72-be7a-9c0bff8da0ab" name="JarFile">
              <ownedComment xmi:id="2fd634cb-0d62-4a97-a0fc-04f8a7712c4b" body="The &lt;code>JarFile&lt;/code> class is used to read the contents of a jar file&#xA;from any file that can be opened with &lt;code>java.io.RandomAccessFile&lt;/code>.&#xA;It extends the class &lt;code>java.util.zip.ZipFile&lt;/code> with support&#xA;for reading an optional &lt;code>Manifest&lt;/code> entry. The&#xA;&lt;code>Manifest&lt;/code> can be used to specify meta-information about the&#xA;jar file and its entries.&#xA;&#xA;&lt;p> Unless otherwise noted, passing a &lt;tt>null&lt;/tt> argument to a constructor&#xA;or method in this class will cause a {@link NullPointerException} to be&#xA;thrown.&#xA;&#xA;@author  David Connelly&#xA;@version 1.58, 05/05/04&#xA;@see&#x9;    Manifest&#xA;@see     java.util.zip.ZipFile&#xA;@see     java.util.jar.JarEntry&#xA;@since   1.2&#xA;" annotatedElement="52c4df40-6d8f-4d72-be7a-9c0bff8da0ab"/>
              <generalization xmi:id="b134bb35-8c4a-4170-b12b-69065ab64249" isSubstitutable="true" general="6f85baea-bc2a-4de8-b26d-05cc6b6c5d50"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="04ad9789-33a7-4ff6-b6f8-830431df9505" name="JarFileEntry" visibility="private">
                <generalization xmi:id="23207b9a-6395-4f88-9b40-e0afcbe81661" isSubstitutable="true" general="76fe9c87-592f-47dd-83a7-f95e6481f9ba"/>
              </nestedClassifier>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="99b32005-674d-4d88-bbd3-909ba548afe3" name="prefs">
            <packagedElement xmi:type="uml:Class" xmi:id="b31d46dd-f4fb-4677-a880-111a5f354325" name="BackingStoreException">
              <ownedComment xmi:id="2b6af4ff-3970-498a-a88f-2d137a469ea1" body="Thrown to indicate that a preferences operation could not complete because&#xA;of a failure in the backing store, or a failure to contact the backing&#xA;store.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.7, 12/19/03&#xA;@since   1.4&#xA;" annotatedElement="b31d46dd-f4fb-4677-a880-111a5f354325"/>
              <generalization xmi:id="3928d2db-eef8-4dd5-843b-2e078d11b3b8" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="649b6e5b-74d4-4960-acc8-8d9a1fe7fa30" name="Preferences" isAbstract="true">
              <ownedComment xmi:id="f961c248-441c-45bb-8d3e-883d2a15c946" body="A node in a hierarchical collection of preference data.  This class&#xA;allows applications to store and retrieve user and system&#xA;preference and configuration data.  This data is stored&#xA;persistently in an implementation-dependent backing store.  Typical&#xA;implementations include flat files, OS-specific registries,&#xA;directory servers and SQL databases.  The user of this class needn't&#xA;be concerned with details of the backing store.&#xA;&#xA;&lt;p>There are two separate trees of preference nodes, one for user&#xA;preferences and one for system preferences.  Each user has a separate user&#xA;preference tree, and all users in a given system share the same system&#xA;preference tree.  The precise description of &quot;user&quot; and &quot;system&quot; will vary&#xA;from implementation to implementation.  Typical information stored in the&#xA;user preference tree might include font choice, color choice, or preferred&#xA;window location and size for a particular application.  Typical information&#xA;stored in the system preference tree might include installation&#xA;configuration data for an application.&#xA;&#xA;&lt;p>Nodes in a preference tree are named in a similar fashion to&#xA;directories in a hierarchical file system.   Every node in a preference&#xA;tree has a &lt;i>node name&lt;/i> (which is not necessarily unique),&#xA;a unique &lt;i>absolute path name&lt;/i>, and a path name &lt;i>relative&lt;/i> to each&#xA;ancestor including itself.&#xA;&#xA;&lt;p>The root node has a node name of the empty string (&quot;&quot;).  Every other&#xA;node has an arbitrary node name, specified at the time it is created.  The&#xA;only restrictions on this name are that it cannot be the empty string, and&#xA;it cannot contain the slash character ('/').&#xA;&#xA;&lt;p>The root node has an absolute path name of &lt;tt>&quot;/&quot;&lt;/tt>.  Children of&#xA;the root node have absolute path names of &lt;tt>&quot;/&quot; + &lt;/tt>&lt;i>&lt;node&#xA;name>&lt;/i>.  All other nodes have absolute path names of &lt;i>&lt;parent's&#xA;absolute path name>&lt;/i>&lt;tt> + &quot;/&quot; + &lt;/tt>&lt;i>&lt;node name>&lt;/i>.&#xA;Note that all absolute path names begin with the slash character.&#xA;&#xA;&lt;p>A node &lt;i>n&lt;/i>'s path name relative to its ancestor &lt;i>a&lt;/i>&#xA;is simply the string that must be appended to &lt;i>a&lt;/i>'s absolute path name&#xA;in order to form &lt;i>n&lt;/i>'s absolute path name, with the initial slash&#xA;character (if present) removed.  Note that:&#xA;&lt;ul>&#xA;&lt;li>No relative path names begin with the slash character.&#xA;&lt;li>Every node's path name relative to itself is the empty string.&#xA;&lt;li>Every node's path name relative to its parent is its node name (except&#xA;for the root node, which does not have a parent).&#xA;&lt;li>Every node's path name relative to the root is its absolute path name&#xA;with the initial slash character removed.&#xA;&lt;/ul>&#xA;&#xA;&lt;p>Note finally that:&#xA;&lt;ul>&#xA;&lt;li>No path name contains multiple consecutive slash characters.&#xA;&lt;li>No path name with the exception of the root's absolute path name&#xA;ends in the slash character.&#xA;&lt;li>Any string that conforms to these two rules is a valid path name.&#xA;&lt;/ul>&#xA;&#xA;&lt;p>All of the methods that modify preferences data are permitted to operate&#xA;asynchronously; they may return immediately, and changes will eventually&#xA;propagate to the persistent backing store with an implementation-dependent&#xA;delay.  The &lt;tt>flush&lt;/tt> method may be used to synchronously force&#xA;updates to the backing store.  Normal termination of the Java Virtual&#xA;Machine will &lt;i>not&lt;/i> result in the loss of pending updates -- an explicit&#xA;&lt;tt>flush&lt;/tt> invocation is &lt;i>not&lt;/i> required upon termination to ensure&#xA;that pending updates are made persistent.&#xA;&#xA;&lt;p>All of the methods that read preferences from a &lt;tt>Preferences&lt;/tt>&#xA;object require the invoker to provide a default value.  The default value is&#xA;returned if no value has been previously set &lt;i>or if the backing store is&#xA;unavailable&lt;/i>.  The intent is to allow applications to operate, albeit&#xA;with slightly degraded functionality, even if the backing store becomes&#xA;unavailable.  Several methods, like &lt;tt>flush&lt;/tt>, have semantics that&#xA;prevent them from operating if the backing store is unavailable.  Ordinary&#xA;applications should have no need to invoke any of these methods, which can&#xA;be identified by the fact that they are declared to throw {@link&#xA;BackingStoreException}.&#xA;&#xA;&lt;p>The methods in this class may be invoked concurrently by multiple threads&#xA;in a single JVM without the need for external synchronization, and the&#xA;results will be equivalent to some serial execution.  If this class is used&#xA;concurrently &lt;i>by multiple JVMs&lt;/i> that store their preference data in&#xA;the same backing store, the data store will not be corrupted, but no&#xA;other guarantees are made concerning the consistency of the preference&#xA;data.&#xA;&#xA;&lt;p>This class contains an export/import facility, allowing preferences&#xA;to be &quot;exported&quot; to an XML document, and XML documents representing&#xA;preferences to be &quot;imported&quot; back into the system.  This facility&#xA;may be used to back up all or part of a preference tree, and&#xA;subsequently restore from the backup.&#xA;&#xA;&lt;p>The XML document has the following DOCTYPE declaration:&#xA;&lt;pre>&#xA;&lt;!DOCTYPE preferences SYSTEM &quot;http://java.sun.com/dtd/preferences.dtd&quot;>&#xA;&lt;/pre>&#xA;Note that the system URI (http://java.sun.com/dtd/preferences.dtd) is&#xA;&lt;i>not&lt;/i> accessed when exporting or importing preferences; it merely&#xA;serves as a string to uniquely identify the DTD, which is:&#xA;&lt;pre>&#xA;&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&#xA;&lt;!-- DTD for a Preferences tree. -->&#xA;&#xA;&lt;!-- The preferences element is at the root of an XML document&#xA;representing a Preferences tree. -->&#xA;&lt;!ELEMENT preferences (root)>&#xA;&#xA;&lt;!-- The preferences element contains an optional version attribute,&#xA;which specifies version of DTD. -->&#xA;&lt;!ATTLIST preferences EXTERNAL_XML_VERSION CDATA &quot;0.0&quot; &amp;gt&#xA;&#xA;&lt;!-- The root element has a map representing the root's preferences&#xA;(if any), and one node for each child of the root (if any). -->&#xA;&lt;!ELEMENT root (map, node*) >&#xA;&#xA;&lt;!-- Additionally, the root contains a type attribute, which&#xA;specifies whether it's the system or user root. -->&#xA;&lt;!ATTLIST root&#xA;type (system|user) #REQUIRED >&#xA;&#xA;&lt;!-- Each node has a map representing its preferences (if any),&#xA;and one node for each child (if any). -->&#xA;&lt;!ELEMENT node (map, node*) >&#xA;&#xA;&lt;!-- Additionally, each node has a name attribute -->&#xA;&lt;!ATTLIST node&#xA;name CDATA #REQUIRED >&#xA;&#xA;&lt;!-- A map represents the preferences stored at a node (if any). -->&#xA;&lt;!ELEMENT map (entry*) >&#xA;&#xA;&lt;!-- An entry represents a single preference, which is simply&#xA;a key-value pair. -->&#xA;&lt;!ELEMENT entry EMPTY >&#xA;&lt;!ATTLIST entry&#xA;key   CDATA #REQUIRED&#xA;value CDATA #REQUIRED >&#xA;&lt;/pre>&#xA;&#xA;Every &lt;tt>Preferences&lt;/tt> implementation must have an associated {@link&#xA;PreferencesFactory} implementation.  Every J2SE implementation must provide&#xA;some means of specifying which &lt;tt>PreferencesFactory&lt;/tt> implementation&#xA;is used to generate the root preferences nodes.  This allows the&#xA;administrator to replace the default preferences implementation with an&#xA;alternative implementation.&#xA;&#xA;&lt;p>Implementation note: In Sun's JRE, the &lt;tt>PreferencesFactory&lt;/tt>&#xA;implementation is located as follows:&#xA;&#xA;&lt;ol>&#xA;&#xA;&lt;li>&lt;p>If the system property&#xA;&lt;tt>java.util.prefs.PreferencesFactory&lt;/tt> is defined, then it is&#xA;taken to be the fully-qualified name of a class implementing the&#xA;&lt;tt>PreferencesFactory&lt;/tt> interface.  The class is loaded and&#xA;instantiated; if this process fails then an unspecified error is&#xA;thrown.&lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p> If a &lt;tt>PreferencesFactory&lt;/tt> implementation class file&#xA;has been installed in a jar file that is visible to the&#xA;{@link java.lang.ClassLoader#getSystemClassLoader system class loader},&#xA;and that jar file contains a provider-configuration file named&#xA;&lt;tt>java.util.prefs.PreferencesFactory&lt;/tt> in the resource&#xA;directory &lt;tt>META-INF/services&lt;/tt>, then the first class name&#xA;specified in that file is taken.  If more than one such jar file is&#xA;provided, the first one found will be used.  The class is loaded&#xA;and instantiated; if this process fails then an unspecified error&#xA;is thrown.  &lt;/p>&lt;/li>&#xA;&#xA;&lt;li>&lt;p>Finally, if neither the above-mentioned system property nor&#xA;an extension jar file is provided, then the system-wide default&#xA;&lt;tt>PreferencesFactory&lt;/tt> implementation for the underlying&#xA;platform is loaded and instantiated.&lt;/p>&lt;/li>&#xA;&#xA;&lt;/ol>&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.25, 06/21/04&#xA;@since   1.4&#xA;" annotatedElement="649b6e5b-74d4-4960-acc8-8d9a1fe7fa30"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0db81dc0-5bce-4f7f-a188-1e2b635e8e3c" name="XmlSupport" visibility="package">
              <ownedComment xmi:id="b56e03ed-2772-441d-82ff-abbdb227fc7f" body="XML Support for java.util.prefs. Methods to import and export preference&#xA;nodes and subtrees.&#xA;&#xA;@author  Josh Bloch and Mark Reinhold&#xA;@version 1.7, 01/12/04&#xA;@see     Preferences&#xA;@since   1.4&#xA;" annotatedElement="0db81dc0-5bce-4f7f-a188-1e2b635e8e3c"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="eda4633f-7d33-40ba-882c-47d3faee386b" name="Resolver" visibility="private" clientDependency="f3061d9d-2855-40e1-98b0-373ab83bc3e8">
                <interfaceRealization xmi:id="f3061d9d-2855-40e1-98b0-373ab83bc3e8" name="" supplier="c88944e8-f26c-4709-85da-80e0b8567088" client="eda4633f-7d33-40ba-882c-47d3faee386b" contract="c88944e8-f26c-4709-85da-80e0b8567088"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="18f8ede3-4cc2-4dae-8705-b05fb099e436" name="EH" visibility="private" clientDependency="c2900f40-643a-4fc3-80da-3803d37c9e94">
                <interfaceRealization xmi:id="c2900f40-643a-4fc3-80da-3803d37c9e94" name="" supplier="e318caf1-552e-476f-9f5b-f24f70797339" client="18f8ede3-4cc2-4dae-8705-b05fb099e436" contract="e318caf1-552e-476f-9f5b-f24f70797339"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="2b1a65d1-7eb5-41c3-b2df-76235fd0088a" name="PreferenceChangeListener" isAbstract="true">
              <ownedComment xmi:id="aa86f146-d13c-4122-ac2c-178c3a5dfee5" body="A listener for receiving preference change events.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.4, 12/19/03&#xA;@see Preferences&#xA;@see PreferenceChangeEvent&#xA;@see NodeChangeListener&#xA;@since   1.4&#xA;" annotatedElement="2b1a65d1-7eb5-41c3-b2df-76235fd0088a"/>
              <generalization xmi:id="bc127085-f5fb-49e0-8d1a-92e759ad68fe" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7b87815d-2d38-4fc5-97ca-35483a0d371d" name="WindowsPreferencesFactory" visibility="package" clientDependency="214c33e6-543c-45fc-8f43-1797c05ac904">
              <ownedComment xmi:id="b0d37265-4cc5-4112-9783-ab2e86af0824" body="Implementation of  &lt;tt>PreferencesFactory&lt;/tt> to return&#xA;WindowsPreferences objects.&#xA;&#xA;@author  Konstantin Kladko&#xA;@version 1.7, 12/19/03&#xA;@see Preferences&#xA;@see WindowsPreferences&#xA;@since 1.4&#xA;" annotatedElement="7b87815d-2d38-4fc5-97ca-35483a0d371d"/>
              <interfaceRealization xmi:id="214c33e6-543c-45fc-8f43-1797c05ac904" name="" supplier="b9f46304-c8ac-46b7-8003-f19fda443c01" client="7b87815d-2d38-4fc5-97ca-35483a0d371d" contract="b9f46304-c8ac-46b7-8003-f19fda443c01"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="4e0f57fa-5753-470f-af99-4836a041edf6" name="NodeChangeListener" isAbstract="true">
              <ownedComment xmi:id="fad6a63d-1a9e-479f-9e64-d6f26fe81e3f" body="A listener for receiving preference node change events.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.4, 12/19/03&#xA;@see     Preferences&#xA;@see     NodeChangeEvent&#xA;@see     PreferenceChangeListener&#xA;@since   1.4&#xA;" annotatedElement="4e0f57fa-5753-470f-af99-4836a041edf6"/>
              <generalization xmi:id="8d5add01-ba73-46e7-af42-18a6938ee4ca" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8494269a-9527-44c3-a8db-07d88a8a7ded" name="NodeChangeEvent">
              <ownedComment xmi:id="a4d68d82-849e-40be-901f-c0005ed71587" body="An event emitted by a &lt;tt>Preferences&lt;/tt> node to indicate that&#xA;a child of that node has been added or removed.&lt;p>&#xA;&#xA;Note, that although NodeChangeEvent inherits Serializable interface from&#xA;java.util.EventObject, it is not intended to be Serializable. Appropriate&#xA;serialization methods are implemented to throw NotSerializableException.&#xA;&#xA;@author  Josh Bloch&#xA;@version $I$, $G$&#xA;@see     Preferences&#xA;@see     NodeChangeListener&#xA;@see     PreferenceChangeEvent&#xA;@since   1.4&#xA;@serial  exclude&#xA;" annotatedElement="8494269a-9527-44c3-a8db-07d88a8a7ded"/>
              <generalization xmi:id="c8cdb170-2f3e-4810-bd74-649f441e008c" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="df0c2027-9182-4f7a-ad82-c571d17c56c0" name="PreferenceChangeEvent">
              <ownedComment xmi:id="3d07a2d4-f933-42f4-8f9d-e1db0ac991e3" body="An event emitted by a &lt;tt>Preferences&lt;/tt> node to indicate that&#xA;a preference has been added, removed or has had its value changed.&lt;p>&#xA;&#xA;Note, that although PreferenceChangeEvent inherits Serializable interface&#xA;from EventObject, it is not intended to be Serializable. Appropriate&#xA;serialization methods are implemented to throw NotSerializableException.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.6, 12/19/03&#xA;@see Preferences&#xA;@see PreferenceChangeListener&#xA;@see NodeChangeEvent&#xA;@since   1.4&#xA;@serial exclude&#xA;" annotatedElement="df0c2027-9182-4f7a-ad82-c571d17c56c0"/>
              <generalization xmi:id="312ffe62-3f22-4c8c-adbb-30d060da4a57" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="b9f46304-c8ac-46b7-8003-f19fda443c01" name="PreferencesFactory" isAbstract="true">
              <ownedComment xmi:id="c7411759-2a5b-43c1-b577-745598ef95da" body="A factory object that generates Preferences objects.  Providers of&#xA;new {@link Preferences} implementations should provide corresponding&#xA;&lt;tt>PreferencesFactory&lt;/tt> implementations so that the new&#xA;&lt;tt>Preferences&lt;/tt> implementation can be installed in place of the&#xA;platform-specific default implementation.&#xA;&#xA;&lt;p>&lt;strong>This class is for &lt;tt>Preferences&lt;/tt> implementers only.&#xA;Normal users of the  &lt;tt>Preferences&lt;/tt> facility should have no need to&#xA;consult this documentation.&lt;/strong>&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.4, 12/19/03&#xA;@see     Preferences&#xA;@since   1.4&#xA;" annotatedElement="b9f46304-c8ac-46b7-8003-f19fda443c01"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6f31ef47-024d-4b44-af97-59273a22b78f" name="InvalidPreferencesFormatException">
              <ownedComment xmi:id="651fa759-f0de-4926-9460-23014e39e714" body="Thrown to indicate that an operation could not complete because&#xA;the input did not conform to the appropriate XML document type&#xA;for a collection of preferences, as per the {@link Preferences}&#xA;specification.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.7, 12/19/03&#xA;@see     Preferences&#xA;@since   1.4&#xA;" annotatedElement="6f31ef47-024d-4b44-af97-59273a22b78f"/>
              <generalization xmi:id="90b488f5-e0e5-422d-ae14-a85a54842403" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5bb9ca71-91c8-4d51-b7ad-2d1fd289ccd9" name="AbstractPreferences" isAbstract="true">
              <ownedComment xmi:id="e2b00651-9d6d-4b30-9feb-1476c6fcf885" body="This class provides a skeletal implementation of the {@link Preferences}&#xA;class, greatly easing the task of implementing it.&#xA;&#xA;&lt;p>&lt;strong>This class is for &lt;tt>Preferences&lt;/tt> implementers only.&#xA;Normal users of the &lt;tt>Preferences&lt;/tt> facility should have no need to&#xA;consult this documentation.  The {@link Preferences} documentation&#xA;should suffice.&lt;/strong>&#xA;&#xA;&lt;p>Implementors must override the nine abstract service-provider interface&#xA;(SPI) methods: {@link #getSpi(String)}, {@link #putSpi(String,String)},&#xA;{@link #removeSpi(String)}, {@link #childSpi(String)}, {@link&#xA;#removeNodeSpi()}, {@link #keysSpi()}, {@link #childrenNamesSpi()}, {@link&#xA;#syncSpi()} and {@link #flushSpi()}.  All of the concrete methods specify&#xA;precisely how they are implemented atop these SPI methods.  The implementor&#xA;may, at his discretion, override one or more of the concrete methods if the&#xA;default implementation is unsatisfactory for any reason, such as&#xA;performance.&#xA;&#xA;&lt;p>The SPI methods fall into three groups concerning exception&#xA;behavior. The &lt;tt>getSpi&lt;/tt> method should never throw exceptions, but it&#xA;doesn't really matter, as any exception thrown by this method will be&#xA;intercepted by {@link #get(String,String)}, which will return the specified&#xA;default value to the caller.  The &lt;tt>removeNodeSpi, keysSpi,&#xA;childrenNamesSpi, syncSpi&lt;/tt> and &lt;tt>flushSpi&lt;/tt> methods are specified&#xA;to throw {@link BackingStoreException}, and the implementation is required&#xA;to throw this checked exception if it is unable to perform the operation.&#xA;The exception propagates outward, causing the corresponding API method&#xA;to fail.&#xA;&#xA;&lt;p>The remaining SPI methods {@link #putSpi(String,String)}, {@link&#xA;#removeSpi(String)} and {@link #childSpi(String)} have more complicated&#xA;exception behavior.  They are not specified to throw&#xA;&lt;tt>BackingStoreException&lt;/tt>, as they can generally obey their contracts&#xA;even if the backing store is unavailable.  This is true because they return&#xA;no information and their effects are not required to become permanent until&#xA;a subsequent call to {Preferences#flush()} or&#xA;{Preferences#sync()}. Generally speaking, these SPI methods should not&#xA;throw exceptions.  In some implementations, there may be circumstances&#xA;under which these calls cannot even enqueue the requested operation for&#xA;later processing.  Even under these circumstances it is generally better to&#xA;simply ignore the invocation and return, rather than throwing an&#xA;exception.  Under these circumstances, however, all subsequent invocations&#xA;of &lt;tt>flush()&lt;/tt> and &lt;tt>sync&lt;/tt> should return &lt;tt>false&lt;/tt>, as&#xA;returning &lt;tt>true&lt;/tt> would imply that all previous operations had&#xA;successfully been made permanent.&#xA;&#xA;&lt;p>There is one circumstance under which &lt;tt>putSpi, removeSpi and&#xA;childSpi&lt;/tt> &lt;i>should&lt;/i> throw an exception: if the caller lacks&#xA;sufficient privileges on the underlying operating system to perform the&#xA;requested operation.  This will, for instance, occur on most systems&#xA;if a non-privileged user attempts to modify system preferences.&#xA;(The required privileges will vary from implementation to&#xA;implementation.  On some implementations, they are the right to modify the&#xA;contents of some directory in the file system; on others they are the right&#xA;to modify contents of some key in a registry.)  Under any of these&#xA;circumstances, it would generally be undesirable to let the program&#xA;continue executing as if these operations would become permanent at a later&#xA;time.  While implementations are not required to throw an exception under&#xA;these circumstances, they are encouraged to do so.  A {@link&#xA;SecurityException} would be appropriate.&#xA;&#xA;&lt;p>Most of the SPI methods require the implementation to read or write&#xA;information at a preferences node.  The implementor should beware of the&#xA;fact that another VM may have concurrently deleted this node from the&#xA;backing store.  It is the implementation's responsibility to recreate the&#xA;node if it has been deleted.&#xA;&#xA;&lt;p>Implementation note: In Sun's default &lt;tt>Preferences&lt;/tt>&#xA;implementations, the user's identity is inherited from the underlying&#xA;operating system and does not change for the lifetime of the virtual&#xA;machine.  It is recognized that server-side &lt;tt>Preferences&lt;/tt>&#xA;implementations may have the user identity change from request to request,&#xA;implicitly passed to &lt;tt>Preferences&lt;/tt> methods via the use of a&#xA;static {@link ThreadLocal} instance.  Authors of such implementations are&#xA;&lt;i>strongly&lt;/i> encouraged to determine the user at the time preferences&#xA;are accessed (for example by the {@link #get(String,String)} or {@link&#xA;#put(String,String)} method) rather than permanently associating a user&#xA;with each &lt;tt>Preferences&lt;/tt> instance.  The latter behavior conflicts&#xA;with normal &lt;tt>Preferences&lt;/tt> usage and would lead to great confusion.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.20, 01/12/04&#xA;@see     Preferences&#xA;@since   1.4&#xA;" annotatedElement="5bb9ca71-91c8-4d51-b7ad-2d1fd289ccd9"/>
              <generalization xmi:id="6cf5693d-333a-4431-9792-2b7b9769c052" isSubstitutable="true" general="649b6e5b-74d4-4960-acc8-8d9a1fe7fa30"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="7971b4d7-1cec-4764-b5ac-ddb53cdf1d4b" name="NodeAddedEvent" visibility="private">
                <ownedComment xmi:id="d48d65b7-bfdb-4e2a-a936-9be950d0aeeb" body="These two classes are used to distinguish NodeChangeEvents on&#xA;eventQueue so the event dispatch thread knows whether to call&#xA;childAdded or childRemoved.&#xA;" annotatedElement="7971b4d7-1cec-4764-b5ac-ddb53cdf1d4b"/>
                <generalization xmi:id="366450e7-7c1d-492a-b728-ab9b845b9021" isSubstitutable="true" general="8494269a-9527-44c3-a8db-07d88a8a7ded"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="a460fa31-febe-4cf1-afec-efbcac16f3ff" name="NodeRemovedEvent" visibility="private">
                <generalization xmi:id="02c8f7c7-42b5-4dc0-a353-7a116708e407" isSubstitutable="true" general="8494269a-9527-44c3-a8db-07d88a8a7ded"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f1938395-c625-4afa-a655-a88232301f70" name="EventDispatchThread" visibility="private">
                <ownedComment xmi:id="560da92e-9123-4eb2-bac9-f6fb8400daed" body="A single background thread (&quot;the event notification thread&quot;) monitors&#xA;the event queue and delivers events that are placed on the queue.&#xA;" annotatedElement="f1938395-c625-4afa-a655-a88232301f70"/>
                <generalization xmi:id="94149df5-a149-4ed5-a86d-a4a7cc3b0db3" isSubstitutable="true" general="c9830202-c9c4-48c6-a18c-376520128934"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2fd383ec-0152-445c-8bdd-3101ee4b9f8b" name="Base64" visibility="package">
              <ownedComment xmi:id="781512db-8ad1-4d13-8534-417f050a66c2" body="Static methods for translating Base64 encoded strings to byte arrays&#xA;and vice-versa.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.5, 12/19/03&#xA;@see     Preferences&#xA;@since   1.4&#xA;" annotatedElement="2fd383ec-0152-445c-8bdd-3101ee4b9f8b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9711b873-f8d4-4d7a-81b2-20403a4d87eb" name="WindowsPreferences" visibility="package">
              <ownedComment xmi:id="a2123f65-699a-49fa-a8b9-44ee5b975211" body="Windows registry based implementation of  &lt;tt>Preferences&lt;/tt>.&#xA;&lt;tt>Preferences&lt;/tt>' &lt;tt>systemRoot&lt;/tt> and &lt;tt>userRoot&lt;/tt> are stored in&#xA;&lt;tt>HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs&lt;/tt> and&#xA;&lt;tt>HKEY_CURRENT_USER\Software\JavaSoft\Prefs&lt;/tt> correspondingly.&#xA;&#xA;@author  Konstantin Kladko&#xA;@version 1.18, 12/19/03&#xA;@see Preferences&#xA;@see PreferencesFactory&#xA;@since 1.4&#xA;" annotatedElement="9711b873-f8d4-4d7a-81b2-20403a4d87eb"/>
              <generalization xmi:id="aff890c2-a560-4ec4-816e-568e7b69c8be" isSubstitutable="true" general="5bb9ca71-91c8-4d51-b7ad-2d1fd289ccd9"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="83f3f12e-9707-43d5-9fba-344ae0fc1422" name="EnumSet" clientDependency="19bff771-f572-4e8c-8e64-4e474232e8ee d08b307f-4c29-4d43-9535-b280a0ac6e45" isAbstract="true">
            <ownedComment xmi:id="d0086681-51e6-4444-87bd-11c7296a9f0e" body="A specialized {@link Set} implementation for use with enum types.  All of&#xA;the elements in an enum set must come from a single enum type that is&#xA;specified, explicitly or implicitly, when the set is created.  Enum sets&#xA;are represented internally as bit vectors.  This representation is&#xA;extremely compact and efficient. The space and time performance of this&#xA;class should be good enough to allow its use as a high-quality, typesafe&#xA;alternative to traditional &lt;tt>int&lt;/tt>-based &quot;bit flags.&quot;  Even bulk&#xA;operations (such as &lt;tt>containsAll&lt;/tt> and &lt;tt>retainAll&lt;/tt>) should&#xA;run very quickly if the specified collection is also an enum set.&#xA;&#xA;&lt;p>The iterator returned by the &lt;tt>iterator&lt;/tt>method traverses the&#xA;elements in their &lt;i>natural order&lt;/i> (the order in which the enum&#xA;constants are declared).  The returned iterator is &lt;i>weakly&#xA;consistent&lt;/i>: it will never throw {@link ConcurrentModificationException}&#xA;and it may or may not show the effects of any modifications to the set that&#xA;occur while the iteration is in progress.&#xA;&#xA;&lt;p>Null elements are not permitted.  Attempts to insert a null element&#xA;will throw {@link NullPointerException}.  Attempts to test for the&#xA;presence of a null element or to remove one will, however, function&#xA;properly.&#xA;&#xA;&lt;P>Like most collection implementations &lt;tt>EnumSet&lt;/tt> is not&#xA;synchronized.  If multiple threads access an enum set concurrently, and at&#xA;least one of the threads modifies the set, it should be synchronized&#xA;externally.  This is typically accomplished by synchronizing on some&#xA;object that naturally encapsulates the enum set.  If no such object exists,&#xA;the set should be &quot;wrapped&quot; using the {@link Collections#synchronizedSet}&#xA;method.  This is best done at creation time, to prevent accidental&#xA;unsynchronized access:&#xA;&#xA;&lt;pre>&#xA;Set&lt;MyEnum> s = Collections.synchronizedSet(EnumSet.noneOf(Foo.class));&#xA;&lt;/pre>&#xA;&#xA;&lt;p>Implementation note: All basic operations execute in constant time.&#xA;They are likely (though not guaranteed) to be much faster than their&#xA;{@link HashSet} counterparts.  Even bulk operations, such as {@link&#xA;#addAll} and  {@link #removeAll} execute in constant time if the&#xA;parameter is another &lt;tt>EnumSet&lt;/tt> instance.&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author Josh Bloch&#xA;@version 1.10, 05/28/04&#xA;@since 1.5&#xA;@see EnumMap&#xA;@serial exclude&#xA;" annotatedElement="83f3f12e-9707-43d5-9fba-344ae0fc1422"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="d4c0eeea-2396-4cf0-9a33-ed25f2d1b32f" name="" parameter="f1678616-e74b-479d-9264-a8b9109daa32">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="f1678616-e74b-479d-9264-a8b9109daa32" parameteredElement="60db73a6-f6ab-45d6-8955-8f3399204138" constrainingClassifier="8d507840-0689-43a1-af5d-92da8e7ac7e4">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="60db73a6-f6ab-45d6-8955-8f3399204138" name="E" templateParameter="f1678616-e74b-479d-9264-a8b9109daa32"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="8b68e382-f42e-49c3-a5f3-3b45f082d544" isSubstitutable="true" general="366a6b71-c7a9-4b22-95d5-74091ce96f5b"/>
            <interfaceRealization xmi:id="19bff771-f572-4e8c-8e64-4e474232e8ee" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="83f3f12e-9707-43d5-9fba-344ae0fc1422" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="d08b307f-4c29-4d43-9535-b280a0ac6e45" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="83f3f12e-9707-43d5-9fba-344ae0fc1422" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="30162f18-a0be-42c5-a32f-bda8708113e4" name="SerializationProxy" visibility="private" clientDependency="5e2ef7d6-db13-4f8a-ad21-c16807124d33">
              <ownedComment xmi:id="491a64a3-99c6-4e5e-9a55-9904686a3096" body="This class is used to serialize all EnumSet instances, regardless of&#xA;implementation type.  It captures their &quot;logical contents&quot; and they&#xA;are reconstructed using public static factories.  This is necessary&#xA;to ensure that the existence of a particular implementation type is&#xA;an implementation detail.&#xA;&#xA;@serial include&#xA;" annotatedElement="30162f18-a0be-42c5-a32f-bda8708113e4"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="7877c5ad-9116-4a09-8981-91565ecb8a98" name="" parameter="a3dcdd2e-0d1a-464d-b219-1f87a2dc9705">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="a3dcdd2e-0d1a-464d-b219-1f87a2dc9705" parameteredElement="9c77447b-846d-43a3-9ea7-3f17b479fc6a" constrainingClassifier="8d507840-0689-43a1-af5d-92da8e7ac7e4">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="9c77447b-846d-43a3-9ea7-3f17b479fc6a" name="E" templateParameter="a3dcdd2e-0d1a-464d-b219-1f87a2dc9705"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="5e2ef7d6-db13-4f8a-ad21-c16807124d33" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="30162f18-a0be-42c5-a32f-bda8708113e4" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="254c1746-4a9d-41ba-9afb-2a190cd4281b" name="RegularEnumSet" visibility="package">
            <ownedComment xmi:id="d1c4b3af-3ec9-4051-939f-c13dce32a625" body="Private implementation class for EnumSet, for &quot;regular sized&quot; enum types&#xA;(i.e., those with 64 or fewer enum constants).&#xA;&#xA;@author Josh Bloch&#xA;@since 1.5&#xA;@serial exclude&#xA;" annotatedElement="254c1746-4a9d-41ba-9afb-2a190cd4281b"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="c1b80299-e459-400f-bc70-9d7f00d93358" name="" parameter="3631d442-1f0c-4eff-8116-060932f3d2b1">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="3631d442-1f0c-4eff-8116-060932f3d2b1" parameteredElement="98975015-27de-4470-b782-bb6f8e61f697" constrainingClassifier="8d507840-0689-43a1-af5d-92da8e7ac7e4">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="98975015-27de-4470-b782-bb6f8e61f697" name="E" templateParameter="3631d442-1f0c-4eff-8116-060932f3d2b1"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="b9599afb-f148-4e03-946b-0324586bb9cf" isSubstitutable="true" general="9ad8d964-4efc-4340-b37c-fe6533573abe"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="6e1e8b93-c7cf-4376-a078-17d092a74852" name="EnumSetIterator" visibility="private" clientDependency="a9f2a3c5-3488-4cc5-abee-b0d0bcfdc436">
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="b1316d13-ce79-4394-83a2-5f5fd026262c" name="" parameter="21825ee0-0ffb-441e-bd05-b392c8dfd752">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="21825ee0-0ffb-441e-bd05-b392c8dfd752" parameteredElement="48f14779-0bc7-4a9c-b0a3-6f4066c320d4" constrainingClassifier="8d507840-0689-43a1-af5d-92da8e7ac7e4">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="48f14779-0bc7-4a9c-b0a3-6f4066c320d4" name="E" templateParameter="21825ee0-0ffb-441e-bd05-b392c8dfd752"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="a9f2a3c5-3488-4cc5-abee-b0d0bcfdc436" name="" supplier="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f" client="6e1e8b93-c7cf-4376-a078-17d092a74852" contract="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="3e956946-2a4c-4bef-8845-11aaa0bf325b" name="zip">
            <packagedElement xmi:type="uml:Class" xmi:id="66104099-86dd-401f-aadd-0f12fbbbb77e" name="GZIPInputStream">
              <ownedComment xmi:id="709e899c-d41c-40f9-b4b0-ddcc096adc6c" body="This class implements a stream filter for reading compressed data in&#xA;the GZIP file format.&#xA;&#xA;@see&#x9;&#x9;InflaterInputStream&#xA;@version &#x9;1.28, 06/11/04&#xA;@author &#x9;David Connelly&#xA;&#xA;" annotatedElement="66104099-86dd-401f-aadd-0f12fbbbb77e"/>
              <generalization xmi:id="0de43c1c-026e-4fd6-8259-efed4bdbdf97" isSubstitutable="true" general="854ac90b-03dd-4e96-8914-9f448ceba12d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5459aec4-80c7-4a21-a897-6b7ec6fd4dc7" name="CheckedOutputStream">
              <ownedComment xmi:id="c1fe0deb-0695-4364-95ea-8fb40a7a6933" body="An output stream that also maintains a checksum of the data being&#xA;written. The checksum can then be used to verify the integrity of&#xA;the output data.&#xA;&#xA;@see&#x9;&#x9;Checksum&#xA;@version &#x9;1.18, 12/19/03&#xA;@author &#x9;David Connelly&#xA;" annotatedElement="5459aec4-80c7-4a21-a897-6b7ec6fd4dc7"/>
              <generalization xmi:id="10703dcd-d1a2-4db5-bf06-7f3c30851404" isSubstitutable="true" general="c01a0cc2-82be-41f9-973c-05c9c60bb7e8"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0ee562cf-a17b-4c02-acd8-57a8de33c7b6" name="GZIPOutputStream">
              <ownedComment xmi:id="e85fd288-7ffc-41ce-91ae-c6cba14b005f" body="This class implements a stream filter for writing compressed data in&#xA;the GZIP file format.&#xA;@version &#x9;1.22, 12/19/03&#xA;@author &#x9;David Connelly&#xA;&#xA;" annotatedElement="0ee562cf-a17b-4c02-acd8-57a8de33c7b6"/>
              <generalization xmi:id="db17d39a-e5ce-4635-98dc-ede90ab32334" isSubstitutable="true" general="eebddaba-e834-4c17-a3a4-50e1336d1525"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="eebddaba-e834-4c17-a3a4-50e1336d1525" name="DeflaterOutputStream">
              <ownedComment xmi:id="a07da502-2874-4bbb-95f8-a5ae117a8a15" body="This class implements an output stream filter for compressing data in&#xA;the &quot;deflate&quot; compression format. It is also used as the basis for other&#xA;types of compression filters, such as GZIPOutputStream.&#xA;&#xA;@see&#x9;&#x9;Deflater&#xA;@version &#x9;1.34, 01/12/04&#xA;@author &#x9;David Connelly&#xA;" annotatedElement="eebddaba-e834-4c17-a3a4-50e1336d1525"/>
              <generalization xmi:id="79fa4a86-cf3f-436f-af41-1d245fade167" isSubstitutable="true" general="c01a0cc2-82be-41f9-973c-05c9c60bb7e8"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ad4b0fea-050d-4426-88e8-23a9fa3f8d1c" name="ZipEntry" clientDependency="337ce057-6718-458e-9e01-74c6f6824700 fc38e1d1-1396-485b-b10c-91daade83eac">
              <ownedComment xmi:id="80891777-0eb0-4455-a8ac-a15f92b310d4" body="This class is used to represent a ZIP file entry.&#xA;&#xA;@version&#x9;1.36, 12/19/03&#xA;@author&#x9;David Connelly&#xA;" annotatedElement="ad4b0fea-050d-4426-88e8-23a9fa3f8d1c"/>
              <interfaceRealization xmi:id="fc38e1d1-1396-485b-b10c-91daade83eac" name="" supplier="3c9a32b6-21be-46e1-b278-fed4a443a61e" client="ad4b0fea-050d-4426-88e8-23a9fa3f8d1c" contract="3c9a32b6-21be-46e1-b278-fed4a443a61e"/>
              <interfaceRealization xmi:id="337ce057-6718-458e-9e01-74c6f6824700" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="ad4b0fea-050d-4426-88e8-23a9fa3f8d1c" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="3c9a32b6-21be-46e1-b278-fed4a443a61e" name="ZipConstants" visibility="package" isAbstract="true"/>
            <packagedElement xmi:type="uml:Class" xmi:id="10cad433-7fb4-49a0-869d-9651cecd9414" name="Inflater">
              <ownedComment xmi:id="477198a8-3e7c-4f0c-9511-63dc18bfd585" body="This class provides support for general purpose decompression using the&#xA;popular ZLIB compression library. The ZLIB compression library was&#xA;initially developed as part of the PNG graphics standard and is not&#xA;protected by patents. It is fully described in the specifications at&#xA;the &lt;a href=&quot;package-summary.html#package_description&quot;>java.util.zip&#xA;package description&lt;/a>.&#xA;&#xA;&lt;p>The following code fragment demonstrates a trivial compression&#xA;and decompression of a string using &lt;tt>Deflater&lt;/tt> and&#xA;&lt;tt>Inflater&lt;/tt>.&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;Encode a String into bytes&#xA;String inputString = &quot;blahblahblah\u20AC\u20AC&quot;;&#xA;byte[] input = inputString.getBytes(&quot;UTF-8&quot;);&#xA;&#xA;Compress the bytes&#xA;byte[] output = new byte[100];&#xA;Deflater compresser = new Deflater();&#xA;compresser.setInput(input);&#xA;compresser.finish();&#xA;int compressedDataLength = compresser.deflate(output);&#xA;&#xA;Decompress the bytes&#xA;Inflater decompresser = new Inflater();&#xA;decompresser.setInput(output, 0, compressedDataLength);&#xA;byte[] result = new byte[100];&#xA;int resultLength = decompresser.inflate(result);&#xA;decompresser.end();&#xA;&#xA;Decode the bytes into a String&#xA;String outputString = new String(result, 0, resultLength, &quot;UTF-8&quot;);&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;@see&#x9;&#x9;Deflater&#xA;@version &#x9;1.41, 12/19/03&#xA;@author &#x9;David Connelly&#xA;&#xA;" annotatedElement="10cad433-7fb4-49a0-869d-9651cecd9414"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0d3f97a6-5679-45d4-800f-f9a0e1222444" name="ZipException">
              <ownedComment xmi:id="f2c5d15a-d38b-4e0c-8a63-101e19df913f" body="Signals that a Zip exception of some sort has occurred.&#xA;&#xA;@author  unascribed&#xA;@version 1.16 12/19/03&#xA;@see     java.io.IOException&#xA;@since   JDK1.0&#xA;" annotatedElement="0d3f97a6-5679-45d4-800f-f9a0e1222444"/>
              <generalization xmi:id="4e28bbe6-9145-4dee-9edc-73ccdd014044" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="42f47c9c-b2ff-4bf9-aff8-19a0bae8e283" name="CRC32" clientDependency="9287d80c-45ea-41d7-944b-48b4a4494a38">
              <ownedComment xmi:id="688aa1b2-30b6-4c14-ad06-ccc5f22e7036" body="A class that can be used to compute the CRC-32 of a data stream.&#xA;&#xA;@see&#x9;&#x9;Checksum&#xA;@version &#x9;1.30, 12/19/03&#xA;@author &#x9;David Connelly&#xA;" annotatedElement="42f47c9c-b2ff-4bf9-aff8-19a0bae8e283"/>
              <interfaceRealization xmi:id="9287d80c-45ea-41d7-944b-48b4a4494a38" name="" supplier="36d83fea-31ec-4f2f-9168-5a9155802e6a" client="42f47c9c-b2ff-4bf9-aff8-19a0bae8e283" contract="36d83fea-31ec-4f2f-9168-5a9155802e6a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ba065d84-a4a4-46c9-b8e2-5be7e814e208" name="Deflater">
              <ownedComment xmi:id="9278c466-9634-4111-add1-45149babd9b4" body="This class provides support for general purpose compression using the&#xA;popular ZLIB compression library. The ZLIB compression library was&#xA;initially developed as part of the PNG graphics standard and is not&#xA;protected by patents. It is fully described in the specifications at&#xA;the &lt;a href=&quot;package-summary.html#package_description&quot;>java.util.zip&#xA;package description&lt;/a>.&#xA;&#xA;&lt;p>The following code fragment demonstrates a trivial compression&#xA;and decompression of a string using &lt;tt>Deflater&lt;/tt> and&#xA;&lt;tt>Inflater&lt;/tt>.&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;Encode a String into bytes&#xA;String inputString = &quot;blahblahblah\u20AC\u20AC&quot;;&#xA;byte[] input = inputString.getBytes(&quot;UTF-8&quot;);&#xA;&#xA;Compress the bytes&#xA;byte[] output = new byte[100];&#xA;Deflater compresser = new Deflater();&#xA;compresser.setInput(input);&#xA;compresser.finish();&#xA;int compressedDataLength = compresser.deflate(output);&#xA;&#xA;Decompress the bytes&#xA;Inflater decompresser = new Inflater();&#xA;decompresser.setInput(output, 0, compressedDataLength);&#xA;byte[] result = new byte[100];&#xA;int resultLength = decompresser.inflate(result);&#xA;decompresser.end();&#xA;&#xA;Decode the bytes into a String&#xA;String outputString = new String(result, 0, resultLength, &quot;UTF-8&quot;);&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;@see&#x9;&#x9;Inflater&#xA;@version &#x9;1.40, 12/19/03&#xA;@author &#x9;David Connelly&#xA;" annotatedElement="ba065d84-a4a4-46c9-b8e2-5be7e814e208"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ef104b1b-31c2-48e3-90c4-74dd03a95f2f" name="ZipOutputStream" clientDependency="e6b471a7-96b6-461b-854d-396fb29dbf1c">
              <ownedComment xmi:id="f9692a33-6c69-4bbe-83f3-b456bec16bc9" body="This class implements an output stream filter for writing files in the&#xA;ZIP file format. Includes support for both compressed and uncompressed&#xA;entries.&#xA;&#xA;@author&#x9;David Connelly&#xA;@version&#x9;1.31, 12/19/03&#xA;" annotatedElement="ef104b1b-31c2-48e3-90c4-74dd03a95f2f"/>
              <generalization xmi:id="cb618a7d-efa5-4b76-b2bd-895c7a9da2e5" isSubstitutable="true" general="eebddaba-e834-4c17-a3a4-50e1336d1525"/>
              <interfaceRealization xmi:id="e6b471a7-96b6-461b-854d-396fb29dbf1c" name="" supplier="3c9a32b6-21be-46e1-b278-fed4a443a61e" client="ef104b1b-31c2-48e3-90c4-74dd03a95f2f" contract="3c9a32b6-21be-46e1-b278-fed4a443a61e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d1aad7af-fa4c-4f9b-b8e4-a714cf89d21c" name="ZipInputStream" clientDependency="48c859c5-ef73-48a0-af35-f9f9134fdcae">
              <ownedComment xmi:id="d92eb81f-1bc0-4b6b-b39d-d01c64391f09" body="This class implements an input stream filter for reading files in the&#xA;ZIP file format. Includes support for both compressed and uncompressed&#xA;entries.&#xA;&#xA;@author&#x9;David Connelly&#xA;@version&#x9;1.37, 06/11/04&#xA;" annotatedElement="d1aad7af-fa4c-4f9b-b8e4-a714cf89d21c"/>
              <generalization xmi:id="e2365f66-1849-4923-8140-1485ff9723e7" isSubstitutable="true" general="854ac90b-03dd-4e96-8914-9f448ceba12d"/>
              <interfaceRealization xmi:id="48c859c5-ef73-48a0-af35-f9f9134fdcae" name="" supplier="3c9a32b6-21be-46e1-b278-fed4a443a61e" client="d1aad7af-fa4c-4f9b-b8e4-a714cf89d21c" contract="3c9a32b6-21be-46e1-b278-fed4a443a61e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6f85baea-bc2a-4de8-b26d-05cc6b6c5d50" name="ZipFile" clientDependency="be67f1b0-8596-42a1-a3d4-0b152995321b">
              <ownedComment xmi:id="b03bc064-990a-4644-a01d-212e22e065bb" body="This class is used to read entries from a zip file.&#xA;&#xA;&lt;p> Unless otherwise noted, passing a &lt;tt>null&lt;/tt> argument to a constructor&#xA;or method in this class will cause a {@link NullPointerException} to be&#xA;thrown.&#xA;&#xA;@version   1.67, 05/05/04&#xA;@author&#x9;David Connelly&#xA;" annotatedElement="6f85baea-bc2a-4de8-b26d-05cc6b6c5d50"/>
              <interfaceRealization xmi:id="be67f1b0-8596-42a1-a3d4-0b152995321b" name="" supplier="3c9a32b6-21be-46e1-b278-fed4a443a61e" client="6f85baea-bc2a-4de8-b26d-05cc6b6c5d50" contract="3c9a32b6-21be-46e1-b278-fed4a443a61e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8c01b624-765b-474e-b122-89541ad89a9e" name="ZipFileInputStream" visibility="private">
                <generalization xmi:id="8422cc69-205a-49b1-b0d4-bbd11c0bcbc4" isSubstitutable="true" general="ee3aaef0-e959-4cca-9d5d-9bd2a90ad7dd"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="ef818e08-f2db-4ffe-a324-869f28b43606" name="ZipCloser" visibility="private" clientDependency="56a99939-c0f8-4c33-9eae-09f14bdce6b3">
                <ownedComment xmi:id="f3045166-6e80-45e0-b1ab-76b040a291d3" body="Handles cleanup after mappedBuffer is no longer referenced.&#xA;&#xA;The DirectByteBuffer code creates a phantom reference to mappedBuffer&#xA;that will call ZipCloser.run() when mappedBuffer is no longer&#xA;(strongly) referenced.&#xA;If it was safe to do so, ZipFile.close() (and finalize()) will have&#xA;already cleaned up.&#xA;&#xA;Note: since ZipFile references MappedByteBuffer, we can be sure that&#xA;the ZipFile has already been finalized by the time ZipCloser.run()&#xA;is called.&#xA;" annotatedElement="ef818e08-f2db-4ffe-a324-869f28b43606"/>
                <interfaceRealization xmi:id="56a99939-c0f8-4c33-9eae-09f14bdce6b3" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="ef818e08-f2db-4ffe-a324-869f28b43606" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="90b61126-dfb3-480c-b2e0-76b74ae579c5" name="MappedZipFileInputStream" visibility="private">
                <generalization xmi:id="c2345df6-eb70-4df8-ac7c-c9afd952cdac" isSubstitutable="true" general="8c01b624-765b-474e-b122-89541ad89a9e"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="854ac90b-03dd-4e96-8914-9f448ceba12d" name="InflaterInputStream">
              <ownedComment xmi:id="18c058bf-52d9-4160-a370-57d6d48da516" body="This class implements a stream filter for uncompressing data in the&#xA;&quot;deflate&quot; compression format. It is also used as the basis for other&#xA;decompression filters, such as GZIPInputStream.&#xA;&#xA;@see&#x9;&#x9;Inflater&#xA;@version &#x9;1.37, 06/11/04&#xA;@author &#x9;David Connelly&#xA;" annotatedElement="854ac90b-03dd-4e96-8914-9f448ceba12d"/>
              <generalization xmi:id="404e3636-4ad7-412e-9959-486824752e6f" isSubstitutable="true" general="740d283f-3027-4647-a498-6f94656e662b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ce0ef3ae-e9ac-47c4-8610-3ef48a280f87" name="CheckedInputStream">
              <ownedComment xmi:id="0b506217-1b0b-4d8e-b310-397236587417" body="An input stream that also maintains a checksum of the data being read.&#xA;The checksum can then be used to verify the integrity of the input data.&#xA;&#xA;@see&#x9;&#x9;Checksum&#xA;@version &#x9;1.19, 12/19/03&#xA;@author &#x9;David Connelly&#xA;" annotatedElement="ce0ef3ae-e9ac-47c4-8610-3ef48a280f87"/>
              <generalization xmi:id="a3d814f0-4d9d-43fa-9c3e-c0d2ad402568" isSubstitutable="true" general="740d283f-3027-4647-a498-6f94656e662b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="612b2846-20a4-407b-a556-b310642d1923" name="Adler32" clientDependency="925352b0-6090-4d2e-8727-6235304aeb02">
              <ownedComment xmi:id="f0af6fc9-cd92-4431-b2b1-2ab7b0ada8fc" body="A class that can be used to compute the Adler-32 checksum of a data&#xA;stream. An Adler-32 checksum is almost as reliable as a CRC-32 but&#xA;can be computed much faster.&#xA;&#xA;@see&#x9;&#x9;Checksum&#xA;@version &#x9;1.27, 12/19/03&#xA;@author &#x9;David Connelly&#xA;" annotatedElement="612b2846-20a4-407b-a556-b310642d1923"/>
              <interfaceRealization xmi:id="925352b0-6090-4d2e-8727-6235304aeb02" name="" supplier="36d83fea-31ec-4f2f-9168-5a9155802e6a" client="612b2846-20a4-407b-a556-b310642d1923" contract="36d83fea-31ec-4f2f-9168-5a9155802e6a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="36d83fea-31ec-4f2f-9168-5a9155802e6a" name="Checksum" isAbstract="true">
              <ownedComment xmi:id="f2e59c32-bf35-464d-8681-c96e4dec1802" body="An interface representing a data checksum.&#xA;&#xA;@version &#x9;1.16, 12/19/03&#xA;@author &#x9;David Connelly&#xA;" annotatedElement="36d83fea-31ec-4f2f-9168-5a9155802e6a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="770cb056-849a-4969-8f69-82224d4323c3" name="DataFormatException">
              <ownedComment xmi:id="776b41b1-b782-4ab4-a48d-6bf1e9e96b3e" body="Signals that a data format error has occurred.&#xA;&#xA;@version &#x9;1.13, 12/19/03&#xA;@author &#x9;David Connelly&#xA;" annotatedElement="770cb056-849a-4969-8f69-82224d4323c3"/>
              <generalization xmi:id="7c0825ea-2c41-46b6-810f-322f028462d1" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="314841b2-8694-413a-bac7-be391b98633f" name="Scanner" clientDependency="49ea166b-40e5-447c-8f9f-d665e21be577" isLeaf="true">
            <ownedComment xmi:id="5bd21a6a-81dc-4e02-ac7b-c32fe0b36ed3" body="A simple text scanner which can parse primitive types and strings using&#xA;regular expressions.&#xA;&#xA;&lt;p>A &lt;code>Scanner&lt;/code> breaks its input into tokens using a&#xA;delimiter pattern, which by default matches whitespace. The resulting&#xA;tokens may then be converted into values of different types using the&#xA;various &lt;tt>next&lt;/tt> methods.&#xA;&#xA;&lt;p>For example, this code allows a user to read a number from&#xA;&lt;tt>System.in&lt;/tt>:&#xA;&lt;blockquote>&lt;pre>&#xA;Scanner sc = new Scanner(System.in);&#xA;int i = sc.nextInt();&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p>As another example, this code allows &lt;code>long&lt;/code> types to be&#xA;assigned from entries in a file &lt;code>myNumbers&lt;/code>:&#xA;&lt;blockquote>&lt;pre>&#xA;Scanner sc = new Scanner(new File(&quot;myNumbers&quot;));&#xA;while (sc.hasNextLong()) {&#xA;long aLong = sc.nextLong();&#xA;}&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p>The scanner can also use delimiters other than whitespace. This&#xA;example reads several items in from a string:&#xA;&lt;blockquote>&lt;pre>&#xA;String input = &quot;1 fish 2 fish red fish blue fish&quot;;&#xA;Scanner s = new Scanner(input).useDelimiter(&quot;\\s*fish\\s*&quot;);&#xA;System.out.println(s.nextInt());&#xA;System.out.println(s.nextInt());&#xA;System.out.println(s.next());&#xA;System.out.println(s.next());&#xA;s.close(); &lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;prints the following output:&#xA;&lt;blockquote>&lt;pre>&#xA;1&#xA;2&#xA;red&#xA;blue &lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p>The same output can be generated with this code, which uses a regular&#xA;expression to parse all four tokens at once:&#xA;&lt;blockquote>&lt;pre>&#xA;String input = &quot;1 fish 2 fish red fish blue fish&quot;;&#xA;Scanner s = new Scanner(input);&#xA;s.findInLine(&quot;(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)&quot;);&#xA;MatchResult result = s.match();&#xA;for (int i=1; i&lt;=result.groupCount(); i++)&#xA;System.out.println(result.group(i);&#xA;s.close(); &lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;p>The default whitespace delimiter used by a scanner is as&#xA;recognized by {@link java.lang.Character}.{@link&#xA;java.lang.Character#isWhitespace(char) isWhitespace}.&#xA;&#xA;&lt;p>A scanning operation may block waiting for input.&#xA;&#xA;&lt;p>The {@link #next} and {@link #hasNext} methods and their&#xA;primitive-type companion methods (such as {@link #nextInt} and&#xA;{@link #hasNextInt}) first skip any input that matches the delimiter&#xA;pattern, and then attempt to return the next token. Both &lt;tt>hasNext&lt;/tt>&#xA;and &lt;tt>next&lt;/tt> methods may block waiting for further input.  Whether a&#xA;&lt;tt>hasNext&lt;/tt> method blocks has no connection to whether or not its&#xA;associated &lt;tt>next&lt;/tt> method will block.&#xA;&#xA;&lt;p> The {@link #findInLine}, {@link #findWithinHorizon}, and {@link #skip}&#xA;methods operate independently of the delimiter pattern. These methods will&#xA;attempt to match the specified pattern with no regard to delimiters in the&#xA;input and thus can be used in special circumstances where delimiters are&#xA;not relevant. These methods may block waiting for more input.&#xA;&#xA;&lt;p>When a scanner throws an {@link InputMismatchException}, the scanner&#xA;will not pass the token that caused the exception, so that it may be&#xA;retrieved or skipped via some other method.&#xA;&#xA;&lt;p>Depending upon the type of delimiting pattern, empty tokens may be&#xA;returned. For example, the pattern &lt;tt>&quot;\\s+&quot;&lt;/tt> will return no empty&#xA;tokens since it matches multiple instances of the delimiter. The delimiting&#xA;pattern &lt;tt>&quot;\\s&quot;&lt;/tt> could return empty tokens since it only passes one&#xA;space at a time.&#xA;&#xA;&lt;p> A scanner can read text from any object which implements the {@link&#xA;java.lang.Readable} interface.  If an invocation of the underlying&#xA;readable's {@link java.lang.Readable#read} method throws an {@link&#xA;java.io.IOException} then the scanner assumes that the end of the input&#xA;has been reached.  The most recent &lt;tt>IOException&lt;/tt> thrown by the&#xA;underlying readable can be retrieved via the {@link #ioException} method.&#xA;&#xA;&lt;p>When a &lt;code>Scanner&lt;/code> is closed, it will close its input source&#xA;if the source implements the {@link java.io.Closeable} interface.&#xA;&#xA;&lt;p>A &lt;code>Scanner&lt;/code> is not safe for multithreaded use without&#xA;external synchronization.&#xA;&#xA;&lt;p>Unless otherwise mentioned, passing a &lt;code>null&lt;/code> parameter into&#xA;any method of a &lt;code>Scanner&lt;/code> will cause a&#xA;&lt;code>NullPointerException&lt;/code> to be thrown.&#xA;&#xA;&lt;p>A scanner will default to interpreting numbers as decimal unless a&#xA;different radix has been set by using the {@link #useRadix} method.&#xA;&#xA;&lt;a name=&quot;localized-numbers&quot;>&#xA;&lt;h4> Localized numbers &lt;/h4>&#xA;&#xA;&lt;p> An instance of this class is capable of scanning numbers in the standard&#xA;formats as well as in the formats of the scanner's locale. A scanner's&#xA;initial locale is the value returned by the {@link&#xA;java.util.Locale#getDefault} method; it may be changed via the {@link&#xA;#useLocale} method.&#xA;&#xA;&lt;p>The localized formats are defined in terms of the following parameters,&#xA;which for a particular locale are taken from that locale's {@link&#xA;java.text.DecimalFormat DecimalFormat} object, &lt;tt>df&lt;/tt>, and its and&#xA;{@link java.text.DecimalFormatSymbols DecimalFormatSymbols} object,&#xA;&lt;tt>dfs&lt;/tt>.&#xA;&#xA;&lt;blockquote>&lt;table>&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;i>LocalGroupSeparator&amp;nbsp;&amp;nbsp;&lt;/i>&lt;/td>&#xA;&lt;td valign=&quot;top&quot;>The character used to separate thousands groups,&#xA;&lt;i>i.e.,&lt;/i>&amp;nbsp;&lt;tt>dfs.&lt;/tt>{@link&#xA;java.text.DecimalFormatSymbols#getGroupingSeparator&#xA;getGroupingSeparator()}&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;i>LocalDecimalSeparator&amp;nbsp;&amp;nbsp;&lt;/i>&lt;/td>&#xA;&lt;td valign=&quot;top&quot;>The character used for the decimal point,&#xA;&lt;i>i.e.,&lt;/i>&amp;nbsp;&lt;tt>dfs.&lt;/tt>{@link&#xA;java.text.DecimalFormatSymbols#getDecimalSeparator&#xA;getDecimalSeparator()}&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;i>LocalPositivePrefix&amp;nbsp;&amp;nbsp;&lt;/i>&lt;/td>&#xA;&lt;td valign=&quot;top&quot;>The string that appears before a positive number (may&#xA;be empty), &lt;i>i.e.,&lt;/i>&amp;nbsp;&lt;tt>df.&lt;/tt>{@link&#xA;java.text.DecimalFormat#getPositivePrefix&#xA;getPositivePrefix()}&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;i>LocalPositiveSuffix&amp;nbsp;&amp;nbsp;&lt;/i>&lt;/td>&#xA;&lt;td valign=&quot;top&quot;>The string that appears after a positive number (may be&#xA;empty), &lt;i>i.e.,&lt;/i>&amp;nbsp;&lt;tt>df.&lt;/tt>{@link&#xA;java.text.DecimalFormat#getPositiveSuffix&#xA;getPositiveSuffix()}&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;i>LocalNegativePrefix&amp;nbsp;&amp;nbsp;&lt;/i>&lt;/td>&#xA;&lt;td valign=&quot;top&quot;>The string that appears before a negative number (may&#xA;be empty), &lt;i>i.e.,&lt;/i>&amp;nbsp;&lt;tt>df.&lt;/tt>{@link&#xA;java.text.DecimalFormat#getNegativePrefix&#xA;getNegativePrefix()}&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;i>LocalNegativeSuffix&amp;nbsp;&amp;nbsp;&lt;/i>&lt;/td>&#xA;&lt;td valign=&quot;top&quot;>The string that appears after a negative number (may be&#xA;empty), &lt;i>i.e.,&lt;/i>&amp;nbsp;&lt;tt>df.&lt;/tt>{@link&#xA;java.text.DecimalFormat#getNegativeSuffix&#xA;getNegativeSuffix()}&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;i>LocalNaN&amp;nbsp;&amp;nbsp;&lt;/i>&lt;/td>&#xA;&lt;td valign=&quot;top&quot;>The string that represents not-a-number for&#xA;floating-point values,&#xA;&lt;i>i.e.,&lt;/i>&amp;nbsp;&lt;tt>dfs.&lt;/tt>{@link&#xA;java.text.DecimalFormatSymbols#getInfinity&#xA;getInfinity()}&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td valign=&quot;top&quot;>&lt;i>LocalInfinity&amp;nbsp;&amp;nbsp;&lt;/i>&lt;/td>&#xA;&lt;td valign=&quot;top&quot;>The string that represents infinity for floating-point&#xA;values, &lt;i>i.e.,&lt;/i>&amp;nbsp;&lt;tt>dfs.&lt;/tt>{@link&#xA;java.text.DecimalFormatSymbols#getInfinity&#xA;getInfinity()}&lt;/td>&lt;/tr>&#xA;&lt;/table>&lt;/blockquote>&#xA;&#xA;&lt;a name=&quot;number-syntax&quot;>&#xA;&lt;h4> Number syntax &lt;/h4>&#xA;&#xA;&lt;p> The strings that can be parsed as numbers by an instance of this class&#xA;are specified in terms of the following regular-expression grammar, where&#xA;Rmax is the highest digit in the radix being used (for example, Rmax is 9&#xA;in base 10).&#xA;&#xA;&lt;p>&#xA;&lt;table cellspacing=0 cellpadding=0 align=center>&#xA;&#xA;&lt;tr>&lt;td valign=top align=right>&lt;i>NonASCIIDigit&lt;/i>&amp;nbsp;&amp;nbsp;::&lt;/td>&#xA;&lt;td valign=top>= A non-ASCII character c for which&#xA;{@link java.lang.Character#isDigit Character.isDigit}&lt;tt>(c)&lt;/tt>&#xA;returns&amp;nbsp;true&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td>&amp;nbsp;&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td align=right>&lt;i>Non0Digit&lt;/i>&amp;nbsp;&amp;nbsp;::&lt;/td>&#xA;&lt;td>&lt;tt>= [1-&lt;/tt>&lt;i>Rmax&lt;/i>&lt;tt>] | &lt;/tt>&lt;i>NonASCIIDigit&lt;/i>&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td>&amp;nbsp;&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td align=right>&lt;i>Digit&lt;/i>&amp;nbsp;&amp;nbsp;::&lt;/td>&#xA;&lt;td>&lt;tt>= [0-&lt;/tt>&lt;i>Rmax&lt;/i>&lt;tt>] | &lt;/tt>&lt;i>NonASCIIDigit&lt;/i>&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td>&amp;nbsp;&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td valign=top align=right>&lt;i>GroupedNumeral&lt;/i>&amp;nbsp;&amp;nbsp;::&lt;/td>&#xA;&lt;td valign=top>&#xA;&lt;table cellpadding=0 cellspacing=0>&#xA;&lt;tr>&lt;td>&lt;tt>= (&amp;nbsp;&lt;/tt>&lt;/td>&#xA;&lt;td>&lt;i>Non0Digit&lt;/i>&lt;tt>&#xA;&lt;/tt>&lt;i>Digit&lt;/i>&lt;tt>?&#xA;&lt;/tt>&lt;i>Digit&lt;/i>&lt;tt>?&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;/td>&#xA;&lt;td>&lt;tt>(&amp;nbsp;&lt;/tt>&lt;i>LocalGroupSeparator&lt;/i>&lt;tt>&#xA;&lt;/tt>&lt;i>Digit&lt;/i>&lt;tt>&#xA;&lt;/tt>&lt;i>Digit&lt;/i>&lt;tt>&#xA;&lt;/tt>&lt;i>Digit&lt;/i>&lt;tt> )+ )&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;/table>&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td>&amp;nbsp;&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td align=right>&lt;i>Numeral&lt;/i>&amp;nbsp;&amp;nbsp;::&lt;/td>&#xA;&lt;td>&lt;tt>= ( ( &lt;/tt>&lt;i>Digit&lt;/i>&lt;tt>+ )&#xA;| &lt;/tt>&lt;i>GroupedNumeral&lt;/i>&lt;tt> )&lt;/tt>&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td>&amp;nbsp;&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td valign=top align=right>&#xA;&lt;a name=&quot;Integer-regex&quot;>&lt;i>Integer&lt;/i>&amp;nbsp;&amp;nbsp;::&lt;/td>&#xA;&lt;td valign=top>&lt;tt>= ( [-+]? ( &lt;/tt>&lt;i>Numeral&lt;/i>&lt;tt>&#xA;) )&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;/td>&#xA;&lt;td>&lt;tt>| &lt;/tt>&lt;i>LocalPositivePrefix&lt;/i>&lt;tt> &lt;/tt>&lt;i>Numeral&lt;/i>&lt;tt>&#xA;&lt;/tt>&lt;i>LocalPositiveSuffix&lt;/i>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;/td>&#xA;&lt;td>&lt;tt>| &lt;/tt>&lt;i>LocalNegativePrefix&lt;/i>&lt;tt> &lt;/tt>&lt;i>Numeral&lt;/i>&lt;tt>&#xA;&lt;/tt>&lt;i>LocalNegativeSuffix&lt;/i>&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td>&amp;nbsp;&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td align=right>&lt;i>DecimalNumeral&lt;/i>&amp;nbsp;&amp;nbsp;::&lt;/td>&#xA;&lt;td>&lt;tt>= &lt;/tt>&lt;i>Numeral&lt;/i>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;/td>&#xA;&lt;td>&lt;tt>| &lt;/tt>&lt;i>Numeral&lt;/i>&lt;tt>&#xA;&lt;/tt>&lt;i>LocalDecimalSeparator&lt;/i>&lt;tt>&#xA;&lt;/tt>&lt;i>Digit&lt;/i>&lt;tt>*&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;/td>&#xA;&lt;td>&lt;tt>| &lt;/tt>&lt;i>LocalDecimalSeparator&lt;/i>&lt;tt>&#xA;&lt;/tt>&lt;i>Digit&lt;/i>&lt;tt>+&lt;/tt>&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td>&amp;nbsp;&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td align=right>&lt;i>Exponent&lt;/i>&amp;nbsp;&amp;nbsp;::&lt;/td>&#xA;&lt;td>&lt;tt>= ( [eE] [+-]? &lt;/tt>&lt;i>Digit&lt;/i>&lt;tt>+ )&lt;/tt>&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td>&amp;nbsp;&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td align=right>&#xA;&lt;a name=&quot;Decimal-regex&quot;>&lt;i>Decimal&lt;/i>&amp;nbsp;&amp;nbsp;::&lt;/td>&#xA;&lt;td>&lt;tt>= ( [-+]? &lt;/tt>&lt;i>DecimalNumeral&lt;/i>&lt;tt>&#xA;&lt;/tt>&lt;i>Exponent&lt;/i>&lt;tt>? )&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;/td>&#xA;&lt;td>&lt;tt>| &lt;/tt>&lt;i>LocalPositivePrefix&lt;/i>&lt;tt>&#xA;&lt;/tt>&lt;i>DecimalNumeral&lt;/i>&lt;tt>&#xA;&lt;/tt>&lt;i>LocalPositiveSuffix&lt;/i>&#xA;&lt;/tt>&lt;i>Exponent&lt;/i>&lt;tt>?&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;/td>&#xA;&lt;td>&lt;tt>| &lt;/tt>&lt;i>LocalNegativePrefix&lt;/i>&lt;tt>&#xA;&lt;/tt>&lt;i>DecimalNumeral&lt;/i>&lt;tt>&#xA;&lt;/tt>&lt;i>LocalNegativeSuffix&lt;/i>&#xA;&lt;/tt>&lt;i>Exponent&lt;/i>&lt;tt>?&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td>&amp;nbsp;&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td align=right>&lt;i>HexFloat&lt;/i>&amp;nbsp;&amp;nbsp;::&lt;/td>&#xA;&lt;td>&lt;tt>= [-+]? 0[xX][0-9a-fA-F]*\.[0-9a-fA-F]+&#xA;([pP][-+]?[0-9]+)?&lt;/tt>&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td>&amp;nbsp;&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td align=right>&lt;i>NonNumber&lt;/i>&amp;nbsp;&amp;nbsp;::&lt;/td>&#xA;&lt;td valign=top>&lt;tt>= NaN&#xA;| &lt;/tt>&lt;i>LocalNan&lt;/i>&lt;tt>&#xA;| Infinity&#xA;| &lt;/tt>&lt;i>LocalInfinity&lt;/i>&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td>&amp;nbsp;&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td align=right>&lt;i>SignedNonNumber&lt;/i>&amp;nbsp;&amp;nbsp;::&lt;/td>&#xA;&lt;td>&lt;tt>= ( [-+]? &lt;/tt>&lt;i>NonNumber&lt;/i>&lt;tt> )&lt;/tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;/td>&#xA;&lt;td>&lt;tt>| &lt;/tt>&lt;i>LocalPositivePrefix&lt;/i>&lt;tt>&#xA;&lt;/tt>&lt;i>NonNumber&lt;/i>&lt;tt>&#xA;&lt;/tt>&lt;i>LocalPositiveSuffix&lt;/i>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;/td>&#xA;&lt;td>&lt;tt>| &lt;/tt>&lt;i>LocalNegativePrefix&lt;/i>&lt;tt>&#xA;&lt;/tt>&lt;i>NonNumber&lt;/i>&lt;tt>&#xA;&lt;/tt>&lt;i>LocalNegativeSuffix&lt;/i>&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td>&amp;nbsp;&lt;/td>&lt;/tr>&#xA;&#xA;&lt;tr>&lt;td valign=top align=right>&#xA;&lt;a name=&quot;Float-regex&quot;>&lt;i>Float&lt;/i>&amp;nbsp;&amp;nbsp;::&lt;/td>&#xA;&lt;td valign=top>&lt;tt>= &lt;/tt>&lt;i>Decimal&lt;/i>&lt;tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;/td>&#xA;&lt;td>&lt;tt>| &lt;/tt>&lt;i>HexFloat&lt;/i>&lt;tt>&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;/td>&#xA;&lt;td>&lt;tt>| &lt;/tt>&lt;i>SignedNonNumber&lt;/i>&lt;tt>&lt;/td>&lt;/tr>&#xA;&#xA;&lt;/table>&#xA;&lt;/center>&#xA;&#xA;&lt;p> Whitespace is not significant in the above regular expressions.&#xA;&#xA;@version 1.15, 07/15/04&#xA;@since   1.5&#xA;" annotatedElement="314841b2-8694-413a-bac7-be391b98633f"/>
            <interfaceRealization xmi:id="49ea166b-40e5-447c-8f9f-d665e21be577" name="" supplier="821822d6-26f9-42d9-b968-5777759c14d8" client="314841b2-8694-413a-bac7-be391b98633f" contract="821822d6-26f9-42d9-b968-5777759c14d8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="15d4b817-77f0-4e89-91e0-21503bd76abe" name="Enumeration&lt;String>">
            <templateBinding xmi:id="ddceea96-1bde-4f8b-8393-bbab59afd51f" signature="521c8bf5-b0b1-4a86-820c-0614950913b8">
              <parameterSubstitution xmi:id="6ee55fdb-cb1f-47b5-874d-23791a90c1f5" formal="0dc15cf5-0f68-454b-a4d7-227d89f2d0c5" actual="44c739ae-2460-4446-b06e-bab4190d37f4"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="8f0b159d-1699-480f-949b-5de4e0916ac2" name="SortedSet&lt;E>">
            <templateBinding xmi:id="c771977f-0398-4706-b2a3-4dd1b19c8055" signature="ff11d768-6e05-4715-b0c5-8f7cff7f34b1">
              <parameterSubstitution xmi:id="14236936-9dde-4d2f-8587-e94a857ac255" formal="11934889-d883-43b5-8e46-05814c3a9f2d" actual="25c13eb7-e4ee-462c-8671-5bcfbf133da3"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="6624b707-c6e5-4fa4-999b-5663ae09b542" name="Comparator&lt;T>">
            <templateBinding xmi:id="bd476441-b6e1-4468-8105-01413c1bc367" signature="5ca0174c-f6a2-499c-8047-b28b014e167d">
              <parameterSubstitution xmi:id="9624ca76-d55f-4b55-9e26-6c44a35c4ba8" formal="778d8bc4-7722-4223-9041-c33432cd4640" actual="a92a62c1-c404-4c7c-913c-150b50ab0fa7"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="615b003b-a7bd-4b48-ba53-15e2ad73fd34" name="IllegalFormatException">
            <ownedComment xmi:id="239ece33-7260-4401-84ee-512806a638c7" body="Unchecked exception thrown when a format string contains an illegal syntax&#xA;or a format specifier that is incompatible with the given arguments.  Only&#xA;explicit subtypes of this exception which correspond to specific errors&#xA;should be instantiated.&#xA;&#xA;@version &#x9;1.3, 04/21/04&#xA;@since 1.5&#xA;" annotatedElement="615b003b-a7bd-4b48-ba53-15e2ad73fd34"/>
            <generalization xmi:id="a4289e9e-469d-4c2e-ab98-652f25951a6b" isSubstitutable="true" general="015b8627-f5b5-477f-8717-4d7c48152015"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ae783eda-caa8-4071-b131-df92d1225782" name="IdentityHashMapIterator&lt;Entry&lt;K, V>>">
            <templateBinding xmi:id="15ca5110-b5e0-4418-b424-fe24acf7b284" signature="cc5e9a89-aa7b-48c9-917f-1c40a6cbcf70">
              <parameterSubstitution xmi:id="7412f251-c9a2-418e-abb8-fb73a86a630e" formal="caa9c9aa-065d-44ba-a72e-756962f73e92" actual="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ca0d3675-b0f8-4e05-96a9-35bf960d5342" name="PriorityQueue" clientDependency="fd27bafd-2d25-4138-af1f-296dc4f49d98">
            <ownedComment xmi:id="d6dd4b9c-a778-4c7e-8e48-6dcd14a09029" body="An unbounded priority {@linkplain Queue queue} based on a priority&#xA;heap.  This queue orders elements according to an order specified&#xA;at construction time, which is specified either according to their&#xA;&lt;i>natural order&lt;/i> (see {@link Comparable}), or according to a&#xA;{@link java.util.Comparator}, depending on which constructor is&#xA;used. A priority queue does not permit &lt;tt>null&lt;/tt> elements.&#xA;A priority queue relying on natural ordering also does not&#xA;permit insertion of non-comparable objects (doing so may result&#xA;in &lt;tt>ClassCastException&lt;/tt>).&#xA;&#xA;&lt;p>The &lt;em>head&lt;/em> of this queue is the &lt;em>least&lt;/em> element&#xA;with respect to the specified ordering.  If multiple elements are&#xA;tied for least value, the head is one of those elements -- ties are&#xA;broken arbitrarily.  The queue retrieval operations &lt;tt>poll&lt;/tt>,&#xA;&lt;tt>remove&lt;/tt>, &lt;tt>peek&lt;/tt>, and &lt;tt>element&lt;/tt> access the&#xA;element at the head of the queue.&#xA;&#xA;&lt;p>A priority queue is unbounded, but has an internal&#xA;&lt;i>capacity&lt;/i> governing the size of an array used to store the&#xA;elements on the queue.  It is always at least as large as the queue&#xA;size.  As elements are added to a priority queue, its capacity&#xA;grows automatically.  The details of the growth policy are not&#xA;specified.&#xA;&#xA;&lt;p>This class and its iterator implement all of the&#xA;&lt;em>optional&lt;/em> methods of the {@link Collection} and {@link&#xA;Iterator} interfaces.&#xA;The&#xA;Iterator provided in method {@link #iterator()} is &lt;em>not&lt;/em>&#xA;guaranteed to traverse the elements of the PriorityQueue in any&#xA;particular order. If you need ordered traversal, consider using&#xA;&lt;tt>Arrays.sort(pq.toArray())&lt;/tt>.&#xA;&#xA;&lt;p> &lt;strong>Note that this implementation is not synchronized.&lt;/strong>&#xA;Multiple threads should not access a &lt;tt>PriorityQueue&lt;/tt>&#xA;instance concurrently if any of the threads modifies the list&#xA;structurally. Instead, use the thread-safe {@link&#xA;java.util.concurrent.PriorityBlockingQueue} class.&#xA;&#xA;&#xA;&lt;p>Implementation note: this implementation provides O(log(n)) time&#xA;for the insertion methods (&lt;tt>offer&lt;/tt>, &lt;tt>poll&lt;/tt>,&#xA;&lt;tt>remove()&lt;/tt> and &lt;tt>add&lt;/tt>) methods; linear time for the&#xA;&lt;tt>remove(Object)&lt;/tt> and &lt;tt>contains(Object)&lt;/tt> methods; and&#xA;constant time for the retrieval methods (&lt;tt>peek&lt;/tt>,&#xA;&lt;tt>element&lt;/tt>, and &lt;tt>size&lt;/tt>).&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;@since 1.5&#xA;@version 1.6, 06/11/04&#xA;@author Josh Bloch&#xA;@param &lt;E> the type of elements held in this collection&#xA;" annotatedElement="ca0d3675-b0f8-4e05-96a9-35bf960d5342"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="139a55c7-4ec9-4133-abb8-1379383a262e" name="" parameter="d2c289b0-4102-4051-873a-ca1a8c118adc">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="d2c289b0-4102-4051-873a-ca1a8c118adc" parameteredElement="d3bae745-27f6-493e-981b-40b3843765b8">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="d3bae745-27f6-493e-981b-40b3843765b8" name="E" templateParameter="d2c289b0-4102-4051-873a-ca1a8c118adc"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="7b0c2b72-4ab6-4074-9fce-e06786596a86" isSubstitutable="true" general="57267948-5b20-4000-a393-c9fc60c633c3"/>
            <interfaceRealization xmi:id="fd27bafd-2d25-4138-af1f-296dc4f49d98" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ca0d3675-b0f8-4e05-96a9-35bf960d5342" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="7ee90ad1-7020-458d-ac01-3458ecc7411e" name="Itr" visibility="private" clientDependency="a7327d30-d976-48bf-a258-963edb341070">
              <interfaceRealization xmi:id="a7327d30-d976-48bf-a258-963edb341070" name="" supplier="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f" client="7ee90ad1-7020-458d-ac01-3458ecc7411e" contract="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4778b867-044a-4278-aa7c-8da602ca9322" name="EmptyStackException">
            <ownedComment xmi:id="7e87afb1-8c1d-49f8-8ae3-4a20e79fa76f" body="Thrown by methods in the &lt;code>Stack&lt;/code> class to indicate&#xA;that the stack is empty.&#xA;&#xA;@author  Jonathan Payne&#xA;@version 1.20, 12/19/03&#xA;@see     java.util.Stack&#xA;@since   JDK1.0&#xA;" annotatedElement="4778b867-044a-4278-aa7c-8da602ca9322"/>
            <generalization xmi:id="78654838-1ebb-4e3f-aee2-1f6f4b1cf4e3" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e215201b-0476-4296-b280-db142b5018d4" name="IdentityHashMap" clientDependency="7ccb2aeb-013a-42c9-919b-3cf5ced73856 92679d83-f5f8-44c7-9b06-3e3dd3569916 1f04700d-f57b-422d-ad2f-4eba3753944c">
            <ownedComment xmi:id="2e023879-5cf8-41e6-bc59-70e366e99c49" body="This class implements the &lt;tt>Map&lt;/tt> interface with a hash table, using&#xA;reference-equality in place of object-equality when comparing keys (and&#xA;values).  In other words, in an &lt;tt>IdentityHashMap&lt;/tt>, two keys&#xA;&lt;tt>k1&lt;/tt> and &lt;tt>k2&lt;/tt> are considered equal if and only if&#xA;&lt;tt>(k1==k2)&lt;/tt>.  (In normal &lt;tt>Map&lt;/tt> implementations (like&#xA;&lt;tt>HashMap&lt;/tt>) two keys &lt;tt>k1&lt;/tt> and &lt;tt>k2&lt;/tt> are considered equal&#xA;if and only if &lt;tt>(k1==null ? k2==null : k1.equals(k2))&lt;/tt>.)&#xA;&#xA;&lt;p>&lt;b>This class is &lt;i>not&lt;/i> a general-purpose &lt;tt>Map&lt;/tt>&#xA;implementation!  While this class implements the &lt;tt>Map&lt;/tt> interface, it&#xA;intentionally violates &lt;tt>Map's&lt;/tt> general contract, which mandates the&#xA;use of the &lt;tt>equals&lt;/tt> method when comparing objects.  This class is&#xA;designed for use only in the rare cases wherein reference-equality&#xA;semantics are required.&lt;/b>&#xA;&#xA;&lt;p>A typical use of this class is &lt;i>topology-preserving object graph&#xA;transformations&lt;/i>, such as serialization or deep-copying.  To perform such&#xA;a transformation, a program must maintain a &quot;node table&quot; that keeps track&#xA;of all the object references that have already been processed.  The node&#xA;table must not equate distinct objects even if they happen to be equal.&#xA;Another typical use of this class is to maintain &lt;i>proxy objects&lt;/i>.  For&#xA;example, a debugging facility might wish to maintain a proxy object for&#xA;each object in the program being debugged.&#xA;&#xA;&lt;p>This class provides all of the optional map operations, and permits&#xA;&lt;tt>null&lt;/tt> values and the &lt;tt>null&lt;/tt> key.  This class makes no&#xA;guarantees as to the order of the map; in particular, it does not guarantee&#xA;that the order will remain constant over time.&#xA;&#xA;&lt;p>This class provides constant-time performance for the basic&#xA;operations (&lt;tt>get&lt;/tt> and &lt;tt>put&lt;/tt>), assuming the system&#xA;identity hash function ({@link System#identityHashCode(Object)})&#xA;disperses elements properly among the buckets.&#xA;&#xA;&lt;p>This class has one tuning parameter (which affects performance but not&#xA;semantics): &lt;i>expected maximum size&lt;/i>.  This parameter is the maximum&#xA;number of key-value mappings that the map is expected to hold.  Internally,&#xA;this parameter is used to determine the number of buckets initially&#xA;comprising the hash table.  The precise relationship between the expected&#xA;maximum size and the number of buckets is unspecified.&#xA;&#xA;&lt;p>If the size of the map (the number of key-value mappings) sufficiently&#xA;exceeds the expected maximum size, the number of buckets is increased&#xA;Increasing the number of buckets (&quot;rehashing&quot;) may be fairly expensive, so&#xA;it pays to create identity hash maps with a sufficiently large expected&#xA;maximum size.  On the other hand, iteration over collection views requires&#xA;time proportional to the number of buckets in the hash table, so it&#xA;pays not to set the expected maximum size too high if you are especially&#xA;concerned with iteration performance or memory usage.&#xA;&#xA;&lt;p>&lt;b>Note that this implementation is not synchronized.&lt;/b> If multiple&#xA;threads access this map concurrently, and at least one of the threads&#xA;modifies the map structurally, it &lt;i>must&lt;/i> be synchronized externally.&#xA;(A structural modification is any operation that adds or deletes one or&#xA;more mappings; merely changing the value associated with a key that an&#xA;instance already contains is not a structural modification.)  This is&#xA;typically accomplished by synchronizing on some object that naturally&#xA;encapsulates the map.  If no such object exists, the map should be&#xA;&quot;wrapped&quot; using the &lt;tt>Collections.synchronizedMap&lt;/tt> method.  This is&#xA;best done at creation time, to prevent accidental unsynchronized access to&#xA;the map: &lt;pre>&#xA;Map m = Collections.synchronizedMap(new HashMap(...));&#xA;&lt;/pre>&#xA;&#xA;&lt;p>The iterators returned by all of this class's &quot;collection view methods&quot;&#xA;are &lt;i>fail-fast&lt;/i>: if the map is structurally modified at any time after&#xA;the iterator is created, in any way except through the iterator's own&#xA;&lt;tt>remove&lt;/tt> or &lt;tt>add&lt;/tt> methods, the iterator will throw a&#xA;&lt;tt>ConcurrentModificationException&lt;/tt>.  Thus, in the face of concurrent&#xA;modification, the iterator fails quickly and cleanly, rather than risking&#xA;arbitrary, non-deterministic behavior at an undetermined time in the&#xA;future.&#xA;&#xA;&lt;p>Note that the fail-fast behavior of an iterator cannot be guaranteed&#xA;as it is, generally speaking, impossible to make any hard guarantees in the&#xA;presence of unsynchronized concurrent modification.  Fail-fast iterators&#xA;throw &lt;tt>ConcurrentModificationException&lt;/tt> on a best-effort basis.&#xA;Therefore, it would be wrong to write a program that depended on this&#xA;exception for its correctness: &lt;i>fail-fast iterators should be used only&#xA;to detect bugs.&lt;/i>&#xA;&#xA;&lt;p>Implementation note: This is a simple &lt;i>linear-probe&lt;/i> hash table,&#xA;as described for example in texts by Sedgewick and Knuth.  The array&#xA;alternates holding keys and values.  (This has better locality for large&#xA;tables than does using separate arrays.)  For many JRE implementations&#xA;and operation mixes, this class will yield better performance than&#xA;{@link HashMap} (which uses &lt;i>chaining&lt;/i> rather than linear-probing).&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@see     System#identityHashCode(Object)&#xA;@see     Object#hashCode()&#xA;@see     Collection&#xA;@see&#x9;    Map&#xA;@see&#x9;    HashMap&#xA;@see&#x9;    TreeMap&#xA;@author  Doug Lea and Josh Bloch&#xA;@since   1.4&#xA;" annotatedElement="e215201b-0476-4296-b280-db142b5018d4"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="1a91dbd0-ecbc-4234-821f-67f6e32c6f7d" name="" parameter="b569288f-670c-4f24-bc86-94533f8a0311 35f0fbe4-9689-46a8-b06c-63e3cbdf8285">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="b569288f-670c-4f24-bc86-94533f8a0311" parameteredElement="a1b8436f-87dd-4463-a007-2ca2f27c312b">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="a1b8436f-87dd-4463-a007-2ca2f27c312b" name="K" templateParameter="b569288f-670c-4f24-bc86-94533f8a0311"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="35f0fbe4-9689-46a8-b06c-63e3cbdf8285" parameteredElement="7c3b303d-1a7c-4085-b263-8918b5229a33">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="7c3b303d-1a7c-4085-b263-8918b5229a33" name="V" templateParameter="35f0fbe4-9689-46a8-b06c-63e3cbdf8285"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="10a6dbf8-ba68-46d3-af8e-8b5a518fba0f" isSubstitutable="true" general="7aeba934-44c6-42f4-9082-79695a7c74c4"/>
            <interfaceRealization xmi:id="92679d83-f5f8-44c7-9b06-3e3dd3569916" name="" supplier="b5eaa913-ac40-4b35-bf06-e3638ddc059a" client="e215201b-0476-4296-b280-db142b5018d4" contract="b5eaa913-ac40-4b35-bf06-e3638ddc059a"/>
            <interfaceRealization xmi:id="1f04700d-f57b-422d-ad2f-4eba3753944c" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="e215201b-0476-4296-b280-db142b5018d4" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="7ccb2aeb-013a-42c9-919b-3cf5ced73856" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="e215201b-0476-4296-b280-db142b5018d4" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="db353295-71b4-4c5e-8d50-262338472f6f" name="IdentityHashMapIterator" visibility="private" clientDependency="5e1b490a-f279-4ad9-999f-b206c6a05f2b" isAbstract="true">
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="cc5e9a89-aa7b-48c9-917f-1c40a6cbcf70" name="" parameter="caa9c9aa-065d-44ba-a72e-756962f73e92">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="caa9c9aa-065d-44ba-a72e-756962f73e92" parameteredElement="37c674e1-2de8-424e-87ef-9bf6baa06cdb">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="37c674e1-2de8-424e-87ef-9bf6baa06cdb" name="T" templateParameter="caa9c9aa-065d-44ba-a72e-756962f73e92"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="5e1b490a-f279-4ad9-999f-b206c6a05f2b" name="" supplier="15581cb3-f33d-4deb-9456-fe83f0817c37" client="db353295-71b4-4c5e-8d50-262338472f6f" contract="15581cb3-f33d-4deb-9456-fe83f0817c37"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c9ba1269-6440-4d69-823f-33e080addb5e" name="KeyIterator" visibility="private">
              <generalization xmi:id="cfb8ca51-49c0-4c60-b20c-23d97c9a4f12" isSubstitutable="true" general="2d6e88c8-cb4b-4962-b7bd-da43ade86d13"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="d688c4aa-bfbb-4d3a-bea3-57898667bdfe" name="ValueIterator" visibility="private">
              <generalization xmi:id="e3fd19f8-0bbb-458d-80b5-acd89a07e8b9" isSubstitutable="true" general="b1bbe143-d34a-4dce-ac16-c56d65f7f9e6"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="7a946231-394b-486b-a463-fa42cdb315b4" name="EntryIterator" visibility="private" clientDependency="95ef193d-8e02-44c4-8e73-63f6f478b797">
              <ownedComment xmi:id="d59d407d-1c41-4225-9abf-4e1fde3886bf" body="Since we don't use Entry objects, we use the Iterator&#xA;itself as an entry.&#xA;" annotatedElement="7a946231-394b-486b-a463-fa42cdb315b4"/>
              <generalization xmi:id="e33dac60-3cad-4b7c-9b25-f77a96f38bdb" isSubstitutable="true" general="ae783eda-caa8-4071-b131-df92d1225782"/>
              <interfaceRealization xmi:id="95ef193d-8e02-44c4-8e73-63f6f478b797" name="" supplier="5bebc1fb-871c-4596-8648-6ad46faeacab" client="7a946231-394b-486b-a463-fa42cdb315b4" contract="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="1566343a-a28b-4ae4-baa2-17ed57ebf472" name="KeySet" visibility="private">
              <generalization xmi:id="90b399cb-82ee-4f1a-8d90-1a9265fcf607" isSubstitutable="true" general="d8e4bb4a-fea6-4600-8da2-311416fd86f2"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="87a302e0-ea1d-4efb-a623-2d3bfc5e6516" name="Values" visibility="private">
              <generalization xmi:id="9b4fc041-bbe9-455c-bb85-3541a13605f4" isSubstitutable="true" general="831cb79b-21c0-4203-9962-b2cebddd4105"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="493d8291-b0ed-449a-bb5e-c30e28a49cf8" name="EntrySet" visibility="private">
              <generalization xmi:id="4396ffa7-8781-4a57-b848-54f12336accc" isSubstitutable="true" general="01481a34-3b75-4493-84ca-4519f1a2e4fa"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="0d949ca4-9860-4cf4-b0e8-985ddae2b4a5" name="Observer" isAbstract="true">
            <ownedComment xmi:id="4926a09a-88ac-47c5-82f0-004019bc060a" body="A class can implement the &lt;code>Observer&lt;/code> interface when it&#xA;wants to be informed of changes in observable objects.&#xA;&#xA;@author  Chris Warth&#xA;@version 1.19, 12/19/03&#xA;@see     java.util.Observable&#xA;@since   JDK1.0&#xA;" annotatedElement="0d949ca4-9860-4cf4-b0e8-985ddae2b4a5"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f866a8c6-9a8f-4eee-b100-ff87e5fdb430" name="Random" clientDependency="8289ddc6-9371-40cc-baf0-39c6f45a06ec">
            <ownedComment xmi:id="065e9a76-a48d-4a4b-af85-7af6fe9efefd" body="An instance of this class is used to generate a stream of&#xA;pseudorandom numbers. The class uses a 48-bit seed, which is&#xA;modified using a linear congruential formula. (See Donald Knuth,&#xA;&lt;i>The Art of Computer Programming, Volume 2&lt;/i>, Section 3.2.1.)&#xA;&lt;p>&#xA;If two instances of &lt;code>Random&lt;/code> are created with the same&#xA;seed, and the same sequence of method calls is made for each, they&#xA;will generate and return identical sequences of numbers. In order to&#xA;guarantee this property, particular algorithms are specified for the&#xA;class &lt;tt>Random&lt;/tt>. Java implementations must use all the algorithms&#xA;shown here for the class &lt;tt>Random&lt;/tt>, for the sake of absolute&#xA;portability of Java code. However, subclasses of class &lt;tt>Random&lt;/tt>&#xA;are permitted to use other algorithms, so long as they adhere to the&#xA;general contracts for all the methods.&#xA;&lt;p>&#xA;The algorithms implemented by class &lt;tt>Random&lt;/tt> use a&#xA;&lt;tt>protected&lt;/tt> utility method that on each invocation can supply&#xA;up to 32 pseudorandomly generated bits.&#xA;&lt;p>&#xA;Many applications will find the &lt;code>random&lt;/code> method in&#xA;class &lt;code>Math&lt;/code> simpler to use.&#xA;&#xA;@author  Frank Yellin&#xA;@version 1.43, 01/12/04&#xA;@see     java.lang.Math#random()&#xA;@since   JDK1.0&#xA;" annotatedElement="f866a8c6-9a8f-4eee-b100-ff87e5fdb430"/>
            <interfaceRealization xmi:id="8289ddc6-9371-40cc-baf0-39c6f45a06ec" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f866a8c6-9a8f-4eee-b100-ff87e5fdb430" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="55e177f2-b717-41f7-a367-e36173d2bcae" name="LinkedHashSet" clientDependency="5c32ea55-4719-444c-88db-0cff95d450f7 b6c509a2-12ca-45bb-b8dc-c779b750b1bc af820ef5-10ae-4c12-bc38-f35ad8619b09">
            <ownedComment xmi:id="2ee0b81b-071b-4855-908f-c66ee74e278b" body="&lt;p>Hash table and linked list implementation of the &lt;tt>Set&lt;/tt> interface,&#xA;with predictable iteration order.  This implementation differs from&#xA;&lt;tt>HashSet&lt;/tt> in that it maintains a doubly-linked list running through&#xA;all of its entries.  This linked list defines the iteration ordering,&#xA;which is the order in which elements were inserted into the set&#xA;(&lt;i>insertion-order&lt;/i>).  Note that insertion order is &lt;i>not&lt;/i> affected&#xA;if an element is &lt;i>re-inserted&lt;/i> into the set.  (An element &lt;tt>e&lt;/tt>&#xA;is reinserted into a set &lt;tt>s&lt;/tt> if &lt;tt>s.add(e)&lt;/tt> is invoked when&#xA;&lt;tt>s.contains(e)&lt;/tt> would return &lt;tt>true&lt;/tt> immediately prior to&#xA;the invocation.)&#xA;&#xA;&lt;p>This implementation spares its clients from the unspecified, generally&#xA;chaotic ordering provided by {@link HashSet}, without incurring the&#xA;increased cost associated with {@link TreeSet}.  It can be used to&#xA;produce a copy of a set that has the same order as the original, regardless&#xA;of the original set's implementation:&#xA;&lt;pre>&#xA;void foo(Set m) {&#xA;Set copy = new LinkedHashSet(m);&#xA;...&#xA;}&#xA;&lt;/pre>&#xA;This technique is particularly useful if a module takes a set on input,&#xA;copies it, and later returns results whose order is determined by that of&#xA;the copy.  (Clients generally appreciate having things returned in the same&#xA;order they were presented.)&#xA;&#xA;&lt;p>This class provides all of the optional &lt;tt>Set&lt;/tt> operations, and&#xA;permits null elements.  Like &lt;tt>HashSet&lt;/tt>, it provides constant-time&#xA;performance for the basic operations (&lt;tt>add&lt;/tt>, &lt;tt>contains&lt;/tt> and&#xA;&lt;tt>remove&lt;/tt>), assuming the hash function disperses elements&#xA;properly among the buckets.  Performance is likely to be just slightly&#xA;below that of &lt;tt>HashSet&lt;/tt>, due to the added expense of maintaining the&#xA;linked list, with one exception: Iteration over a &lt;tt>LinkedHashSet&lt;/tt>&#xA;requires time proportional to the &lt;i>size&lt;/i> of the set, regardless of&#xA;its capacity.  Iteration over a &lt;tt>HashSet&lt;/tt> is likely to be more&#xA;expensive, requiring time proportional to its &lt;i>capacity&lt;/i>.&#xA;&#xA;&lt;p>A linked hash set has two parameters that affect its performance:&#xA;&lt;i>initial capacity&lt;/i> and &lt;i>load factor&lt;/i>.  They are defined precisely&#xA;as for &lt;tt>HashSet&lt;/tt>.  Note, however, that the penalty for choosing an&#xA;excessively high value for initial capacity is less severe for this class&#xA;than for &lt;tt>HashSet&lt;/tt>, as iteration times for this class are unaffected&#xA;by capacity.&#xA;&#xA;&lt;p>&lt;strong>Note that this implementation is not synchronized.&lt;/strong> If&#xA;multiple threads access a linked hash set concurrently, and at least one of&#xA;the threads modifies the set, it &lt;em>must&lt;/em> be synchronized externally.&#xA;This is typically accomplished by synchronizing on some object that&#xA;naturally encapsulates the set.  If no such object exists, the set should&#xA;be &quot;wrapped&quot; using the &lt;tt>Collections.synchronizedSet&lt;/tt>method.  This is&#xA;best done at creation time, to prevent accidental unsynchronized access:&#xA;&lt;pre>&#xA;Set s = Collections.synchronizedSet(new LinkedHashSet(...));&#xA;&lt;/pre>&#xA;&#xA;&lt;p>The iterators returned by the this class's &lt;tt>iterator&lt;/tt> method are&#xA;&lt;em>fail-fast&lt;/em>: if the set is modified at any time after the iterator&#xA;is created, in any way except through the iterator's own remove method, the&#xA;iterator will throw a &lt;tt>ConcurrentModificationException&lt;/tt>.  Thus, in&#xA;the face of concurrent modification, the Iterator fails quickly and&#xA;cleanly, rather than risking arbitrary, non-deterministic behavior at an&#xA;undetermined time in the future.&#xA;&#xA;&lt;p>Note that the fail-fast behavior of an iterator cannot be guaranteed&#xA;as it is, generally speaking, impossible to make any hard guarantees in the&#xA;presence of unsynchronized concurrent modification.  Fail-fast iterators&#xA;throw &lt;tt>ConcurrentModificationException&lt;/tt> on a best-effort basis.&#xA;Therefore, it would be wrong to write a program that depended on this&#xA;exception for its correctness:   &lt;i>the fail-fast behavior of iterators&#xA;should be used only to detect bugs.&lt;/i>&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.14 04/02/19&#xA;@see     Object#hashCode()&#xA;@see     Collection&#xA;@see     Set&#xA;@see     HashSet&#xA;@see     TreeSet&#xA;@see     Hashtable&#xA;@since   1.4&#xA;" annotatedElement="55e177f2-b717-41f7-a367-e36173d2bcae"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="63b8679e-a213-4a82-845f-e8de343374f8" name="" parameter="d465c339-e804-4b33-8f69-b094c7572409">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="d465c339-e804-4b33-8f69-b094c7572409" parameteredElement="2205ecb0-fdd3-4d48-a2fb-00eeb09cda7d">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="2205ecb0-fdd3-4d48-a2fb-00eeb09cda7d" name="E" templateParameter="d465c339-e804-4b33-8f69-b094c7572409"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="0efda9ea-facb-4a8b-b64f-c035a7e1fef0" isSubstitutable="true" general="32039b30-5f37-4895-b302-b6075d436dab"/>
            <interfaceRealization xmi:id="af820ef5-10ae-4c12-bc38-f35ad8619b09" name="" supplier="baa392ca-bff3-4d7d-b407-489a8610c855" client="55e177f2-b717-41f7-a367-e36173d2bcae" contract="baa392ca-bff3-4d7d-b407-489a8610c855"/>
            <interfaceRealization xmi:id="5c32ea55-4719-444c-88db-0cff95d450f7" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="55e177f2-b717-41f7-a367-e36173d2bcae" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="b6c509a2-12ca-45bb-b8dc-c779b750b1bc" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="55e177f2-b717-41f7-a367-e36173d2bcae" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="de5a9764-eeba-446d-be29-2522c554eb35" name="MissingFormatWidthException">
            <ownedComment xmi:id="10baf2fc-22a7-4879-a0b4-443a110c0d6a" body="Unchecked exception thrown when the format width is required.&#xA;&#xA;&lt;p> Unless otherwise specified, passing a &lt;tt>null&lt;/tt> argument to anyg&#xA;method or constructor in this class will cause a {@link&#xA;NullPointerException} to be thrown.&#xA;&#xA;@version &#x9;1.2, 12/19/03&#xA;@since 1.5&#xA;" annotatedElement="de5a9764-eeba-446d-be29-2522c554eb35"/>
            <generalization xmi:id="0a4bcbe5-ccbd-4ae6-aa3b-0ae1018575ef" isSubstitutable="true" general="615b003b-a7bd-4b48-ba53-15e2ad73fd34"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8bb15bb1-5789-4eb8-903f-e5c5c72d1e7e" name="EnumMap" clientDependency="15778f1b-2aa2-4474-8398-8122f2f8fcbc 683f56be-64eb-4d91-8d35-8caa819fd5d4">
            <ownedComment xmi:id="d9f691d3-0f32-4c8e-bfb9-ff998ba093dc" body="A specialized {@link Map} implementation for use with enum type keys.  All&#xA;of the keys in an enum map must come from a single enum type that is&#xA;specified, explicitly or implicitly, when the map is created.  Enum maps&#xA;are represented internally as arrays.  This representation is extremely&#xA;compact and efficient.&#xA;&#xA;&lt;p>Enum maps are maintained in the &lt;i>natural order&lt;/i> of their keys&#xA;(the order in which the enum constants are declared).  This is reflected&#xA;in the iterators returned by the collections views ({@link #keySet()},&#xA;{@link #entrySet()}, and {@link #values()}).&#xA;&#xA;&lt;p>Iterators returned by the collection views are &lt;i>weakly consistent&lt;/i>:&#xA;they will never throw {@link ConcurrentModificationException} and they may&#xA;or may not show the effects of any modifications to the map that occur while&#xA;the iteration is in progress.&#xA;&#xA;&lt;p>Null keys are not permitted.  Attempts to insert a null key will&#xA;throw {@link NullPointerException}.  Attempts to test for the&#xA;presence of a null key or to remove one will, however, function properly.&#xA;Null values are permitted.&#xA;&lt;P>Like most collection implementations &lt;tt>EnumMap&lt;/tt> is not&#xA;synchronized. If multiple threads access an enum map concurrently, and at&#xA;least one of the threads modifies the map, it should be synchronized&#xA;externally.  This is typically accomplished by synchronizing on some&#xA;object that naturally encapsulates the enum map.  If no such object exists,&#xA;the map should be &quot;wrapped&quot; using the {@link Collections#synchronizedMap}&#xA;method.  This is best done at creation time, to prevent accidental&#xA;unsynchronized access:&#xA;&#xA;&lt;pre>&#xA;Map&lt;EnumKey, V> m = Collections.synchronizedMap(new EnumMap(...));&#xA;&lt;/pre>&#xA;&#xA;&lt;p>Implementation note: All basic operations execute in constant time.&#xA;They are likely (though not guaranteed) to be faster than their&#xA;{@link HashMap} counterparts.&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author Josh Bloch&#xA;@version 1.10, 07/15/04&#xA;@see EnumSet&#xA;@since 1.5&#xA;" annotatedElement="8bb15bb1-5789-4eb8-903f-e5c5c72d1e7e"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="ee768807-f19a-42c2-9620-391624a5f650" name="" parameter="a8cbcaed-ca5b-489c-a156-aeab781b3d4c fd7fa3f2-6863-44b9-b020-a2f3d79b03df">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="a8cbcaed-ca5b-489c-a156-aeab781b3d4c" parameteredElement="0db45f87-53f1-44ab-8c66-b8bcf5a58284" constrainingClassifier="2213c8d9-feed-4d9a-bb48-b0498fb0c0c3">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="0db45f87-53f1-44ab-8c66-b8bcf5a58284" name="K" templateParameter="a8cbcaed-ca5b-489c-a156-aeab781b3d4c"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="fd7fa3f2-6863-44b9-b020-a2f3d79b03df" parameteredElement="26b6c8b6-c70e-48b5-84d1-02f0bbef16c1">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="26b6c8b6-c70e-48b5-84d1-02f0bbef16c1" name="V" templateParameter="fd7fa3f2-6863-44b9-b020-a2f3d79b03df"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="0e06b5f4-be62-40d1-874e-a4727a6f9baa" isSubstitutable="true" general="7aeba934-44c6-42f4-9082-79695a7c74c4"/>
            <interfaceRealization xmi:id="15778f1b-2aa2-4474-8398-8122f2f8fcbc" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="8bb15bb1-5789-4eb8-903f-e5c5c72d1e7e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="683f56be-64eb-4d91-8d35-8caa819fd5d4" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="8bb15bb1-5789-4eb8-903f-e5c5c72d1e7e" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="26c6b048-ae80-4221-9be6-186ddd8e2374" name="KeySet" visibility="private">
              <generalization xmi:id="033c2036-48f0-4e46-9f83-2514efeed9d9" isSubstitutable="true" general="d8e4bb4a-fea6-4600-8da2-311416fd86f2"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="eb31ddeb-97db-40d6-a27a-8a90cbe82756" name="Values" visibility="private">
              <generalization xmi:id="148c0ad3-5e5d-4a41-939a-9a9c2c96879f" isSubstitutable="true" general="831cb79b-21c0-4203-9962-b2cebddd4105"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="fecfa035-5fae-4cd1-9bff-cc91ef722e3c" name="EntrySet" visibility="private">
              <generalization xmi:id="8887fc4d-a4e6-4aaf-813b-3bc6d354d269" isSubstitutable="true" general="01481a34-3b75-4493-84ca-4519f1a2e4fa"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="49d7b4e7-ba16-4997-b4de-959dfc0f39c7" name="EnumMapIterator" visibility="private" clientDependency="ab3190e4-dd2a-4ed6-bf7e-fdaeb8e6be01" isAbstract="true">
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="150e524f-7dee-4b7d-b793-886a51284c29" name="" parameter="fc0ff6cd-6d3d-4473-bce8-82bf97987257">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="fc0ff6cd-6d3d-4473-bce8-82bf97987257" parameteredElement="6a2d2828-be7d-4514-9dad-9ba96f17e3b2">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="6a2d2828-be7d-4514-9dad-9ba96f17e3b2" name="T" templateParameter="fc0ff6cd-6d3d-4473-bce8-82bf97987257"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="ab3190e4-dd2a-4ed6-bf7e-fdaeb8e6be01" name="" supplier="15581cb3-f33d-4deb-9456-fe83f0817c37" client="49d7b4e7-ba16-4997-b4de-959dfc0f39c7" contract="15581cb3-f33d-4deb-9456-fe83f0817c37"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="d8e62ba9-7b21-46d2-b0f7-93357960e43b" name="KeyIterator" visibility="private">
              <generalization xmi:id="da68f168-1bef-4f10-be4b-f0a76a1cc471" isSubstitutable="true" general="6ec2f206-019f-4b84-b3ec-c730b497c45d"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a6678385-8e5f-47c6-a396-b7c2d94fcbbf" name="ValueIterator" visibility="private">
              <generalization xmi:id="41fd9512-d55d-490e-b3e1-4f09865298ed" isSubstitutable="true" general="98411b27-4371-4ec2-bc44-d88236f06e02"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="33eab649-1512-4591-9121-e4d301adb9f5" name="EntryIterator" visibility="private" clientDependency="cccc7d3a-8525-4f1b-9692-092f0784f71a">
              <ownedComment xmi:id="01ef78e0-1cc4-4bb2-bbf2-87a9170565e8" body="Since we don't use Entry objects, we use the Iterator itself as entry.&#xA;" annotatedElement="33eab649-1512-4591-9121-e4d301adb9f5"/>
              <generalization xmi:id="681846e1-9dc6-4fc4-a6a2-132746149d39" isSubstitutable="true" general="401062e2-18c7-4e0e-91d0-8111f17f526b"/>
              <interfaceRealization xmi:id="cccc7d3a-8525-4f1b-9692-092f0784f71a" name="" supplier="5bebc1fb-871c-4596-8648-6ad46faeacab" client="33eab649-1512-4591-9121-e4d301adb9f5" contract="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2333b373-056e-41a1-8382-9789ac6f6d46" name="CheckedList&lt;E>">
            <templateBinding xmi:id="29067d5f-88cf-42d8-adf6-543c847f1346" signature="841dd6d2-3e10-400a-9904-576e5a00ec00">
              <parameterSubstitution xmi:id="59af4abd-d7be-427f-9f13-0c8b3053cd8b" formal="cfbcdc95-ece9-4c57-acd3-d18a6f3b2027" actual="e3f7699d-d191-4c56-b5b0-254252b178d9"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ed1e1c51-1c1f-4362-9677-91b9bdb8a5ff" name="GregorianCalendar">
            <ownedComment xmi:id="0a7431c4-6d03-4bfc-86c9-5125ad526b09" body="&lt;code>GregorianCalendar&lt;/code> is a concrete subclass of&#xA;&lt;code>Calendar&lt;/code> and provides the standard calendar system&#xA;used by most of the world.&#xA;&#xA;&lt;p> &lt;code>GregorianCalendar&lt;/code> is a hybrid calendar that&#xA;supports both the Julian and Gregorian calendar systems with the&#xA;support of a single discontinuity, which corresponds by default to&#xA;the Gregorian date when the Gregorian calendar was instituted&#xA;(October 15, 1582 in some countries, later in others).  The cutover&#xA;date may be changed by the caller by calling {@link&#xA;#setGregorianChange(Date) setGregorianChange()}.&#xA;&#xA;&lt;p>&#xA;Historically, in those countries which adopted the Gregorian calendar first,&#xA;October 4, 1582 (Julian) was thus followed by October 15, 1582 (Gregorian). This calendar models&#xA;this correctly.  Before the Gregorian cutover, &lt;code>GregorianCalendar&lt;/code>&#xA;implements the Julian calendar.  The only difference between the Gregorian&#xA;and the Julian calendar is the leap year rule. The Julian calendar specifies&#xA;leap years every four years, whereas the Gregorian calendar omits century&#xA;years which are not divisible by 400.&#xA;&#xA;&lt;p>&#xA;&lt;code>GregorianCalendar&lt;/code> implements &lt;em>proleptic&lt;/em> Gregorian and&#xA;Julian calendars. That is, dates are computed by extrapolating the current&#xA;rules indefinitely far backward and forward in time. As a result,&#xA;&lt;code>GregorianCalendar&lt;/code> may be used for all years to generate&#xA;meaningful and consistent results. However, dates obtained using&#xA;&lt;code>GregorianCalendar&lt;/code> are historically accurate only from March 1, 4&#xA;AD onward, when modern Julian calendar rules were adopted.  Before this date,&#xA;leap year rules were applied irregularly, and before 45 BC the Julian&#xA;calendar did not even exist.&#xA;&#xA;&lt;p>&#xA;Prior to the institution of the Gregorian calendar, New Year's Day was&#xA;March 25. To avoid confusion, this calendar always uses January 1. A manual&#xA;adjustment may be made if desired for dates that are prior to the Gregorian&#xA;changeover and which fall between January 1 and March 24.&#xA;&#xA;&lt;p>Values calculated for the &lt;code>WEEK_OF_YEAR&lt;/code> field range from 1 to&#xA;53.  Week 1 for a year is the earliest seven day period starting on&#xA;&lt;code>getFirstDayOfWeek()&lt;/code> that contains at least&#xA;&lt;code>getMinimalDaysInFirstWeek()&lt;/code> days from that year.  It thus&#xA;depends on the values of &lt;code>getMinimalDaysInFirstWeek()&lt;/code>,&#xA;&lt;code>getFirstDayOfWeek()&lt;/code>, and the day of the week of January 1.&#xA;Weeks between week 1 of one year and week 1 of the following year are&#xA;numbered sequentially from 2 to 52 or 53 (as needed).&#xA;&lt;p>For example, January 1, 1998 was a Thursday.  If&#xA;&lt;code>getFirstDayOfWeek()&lt;/code> is &lt;code>MONDAY&lt;/code> and&#xA;&lt;code>getMinimalDaysInFirstWeek()&lt;/code> is 4 (these are the values&#xA;reflecting ISO 8601 and many national standards), then week 1 of 1998 starts&#xA;on December 29, 1997, and ends on January 4, 1998.  If, however,&#xA;&lt;code>getFirstDayOfWeek()&lt;/code> is &lt;code>SUNDAY&lt;/code>, then week 1 of 1998&#xA;starts on January 4, 1998, and ends on January 10, 1998; the first three days&#xA;of 1998 then are part of week 53 of 1997.&#xA;&#xA;&lt;p>Values calculated for the &lt;code>WEEK_OF_MONTH&lt;/code> field range from 0&#xA;to 6.  Week 1 of a month (the days with &lt;code>WEEK_OF_MONTH =&#xA;1&lt;/code>) is the earliest set of at least&#xA;&lt;code>getMinimalDaysInFirstWeek()&lt;/code> contiguous days in that month,&#xA;ending on the day before &lt;code>getFirstDayOfWeek()&lt;/code>.  Unlike&#xA;week 1 of a year, week 1 of a month may be shorter than 7 days, need&#xA;not start on &lt;code>getFirstDayOfWeek()&lt;/code>, and will not include days of&#xA;the previous month.  Days of a month before week 1 have a&#xA;&lt;code>WEEK_OF_MONTH&lt;/code> of 0.&#xA;&#xA;&lt;p>For example, if &lt;code>getFirstDayOfWeek()&lt;/code> is &lt;code>SUNDAY&lt;/code>&#xA;and &lt;code>getMinimalDaysInFirstWeek()&lt;/code> is 4, then the first week of&#xA;January 1998 is Sunday, January 4 through Saturday, January 10.  These days&#xA;have a &lt;code>WEEK_OF_MONTH&lt;/code> of 1.  Thursday, January 1 through&#xA;Saturday, January 3 have a &lt;code>WEEK_OF_MONTH&lt;/code> of 0.  If&#xA;&lt;code>getMinimalDaysInFirstWeek()&lt;/code> is changed to 3, then January 1&#xA;through January 3 have a &lt;code>WEEK_OF_MONTH&lt;/code> of 1.&#xA;&#xA;&lt;p>The &lt;code>clear&lt;/code> methods set calendar field(s)&#xA;undefined. &lt;code>GregorianCalendar&lt;/code> uses the following&#xA;default value for each calendar field if its value is undefined.&#xA;&#xA;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;3&quot; border=&quot;0&quot;&#xA;summary=&quot;GregorianCalendar default field values&quot;&#xA;style=&quot;text-align: left; width: 66%;&quot;>&#xA;&lt;tbody>&#xA;&lt;tr>&#xA;&lt;th style=&quot;vertical-align: top; background-color: rgb(204, 204, 255);&#xA;text-align: center;&quot;>Field&lt;br>&#xA;&lt;/th>&#xA;&lt;th style=&quot;vertical-align: top; background-color: rgb(204, 204, 255);&#xA;text-align: center;&quot;>Default Value&lt;br>&#xA;&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td style=&quot;vertical-align: middle;&quot;>&#xA;&lt;code>ERA&lt;br>&lt;/code>&#xA;&lt;/td>&#xA;&lt;td style=&quot;vertical-align: middle;&quot;>&#xA;&lt;code>AD&lt;br>&lt;/code>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td style=&quot;vertical-align: middle; background-color: rgb(238, 238, 255);&quot;>&#xA;&lt;code>YEAR&lt;br>&lt;/code>&#xA;&lt;/td>&#xA;&lt;td style=&quot;vertical-align: middle; background-color: rgb(238, 238, 255);&quot;>&#xA;&lt;code>1970&lt;br>&lt;/code>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td style=&quot;vertical-align: middle;&quot;>&#xA;&lt;code>MONTH&lt;br>&lt;/code>&#xA;&lt;/td>&#xA;&lt;td style=&quot;vertical-align: middle;&quot;>&#xA;&lt;code>JANUARY&lt;br>&lt;/code>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td style=&quot;vertical-align: top; background-color: rgb(238, 238, 255);&quot;>&#xA;&lt;code>DAY_OF_MONTH&lt;br>&lt;/code>&#xA;&lt;/td>&#xA;&lt;td style=&quot;vertical-align: top; background-color: rgb(238, 238, 255);&quot;>&#xA;&lt;code>1&lt;br>&lt;/code>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td style=&quot;vertical-align: middle;&quot;>&#xA;&lt;code>DAY_OF_WEEK&lt;br>&lt;/code>&#xA;&lt;/td>&#xA;&lt;td style=&quot;vertical-align: middle;&quot;>&#xA;&lt;code>the first day of week&lt;br>&lt;/code>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td style=&quot;vertical-align: top; background-color: rgb(238, 238, 255);&quot;>&#xA;&lt;code>WEEK_OF_MONTH&lt;br>&lt;/code>&#xA;&lt;/td>&#xA;&lt;td style=&quot;vertical-align: top; background-color: rgb(238, 238, 255);&quot;>&#xA;&lt;code>0&lt;br>&lt;/code>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td style=&quot;vertical-align: top;&quot;>&#xA;&lt;code>DAY_OF_WEEK_IN_MONTH&lt;br>&lt;/code>&#xA;&lt;/td>&#xA;&lt;td style=&quot;vertical-align: top;&quot;>&#xA;&lt;code>1&lt;br>&lt;/code>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td style=&quot;vertical-align: middle; background-color: rgb(238, 238, 255);&quot;>&#xA;&lt;code>AM_PM&lt;br>&lt;/code>&#xA;&lt;/td>&#xA;&lt;td style=&quot;vertical-align: middle; background-color: rgb(238, 238, 255);&quot;>&#xA;&lt;code>AM&lt;br>&lt;/code>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td style=&quot;vertical-align: middle;&quot;>&#xA;&lt;code>HOUR, HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND&lt;br>&lt;/code>&#xA;&lt;/td>&#xA;&lt;td style=&quot;vertical-align: middle;&quot;>&#xA;&lt;code>0&lt;br>&lt;/code>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/tbody>&#xA;&lt;/table>&#xA;&lt;br>Default values are not applicable for the fields not listed above.&#xA;&#xA;&lt;p>&#xA;&lt;strong>Example:&lt;/strong>&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;get the supported ids for GMT-08:00 (Pacific Standard Time)&#xA;String[] ids = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);&#xA;if no ids were returned, something is wrong. get out.&#xA;if (ids.length == 0)&#xA;System.exit(0);&#xA;&#xA;begin output&#xA;System.out.println(&quot;Current Time&quot;);&#xA;&#xA;create a Pacific Standard Time time zone&#xA;SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids[0]);&#xA;&#xA;set up rules for daylight savings time&#xA;pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);&#xA;pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);&#xA;&#xA;create a GregorianCalendar with the Pacific Daylight time zone&#xA;and the current date and time&#xA;Calendar calendar = new GregorianCalendar(pdt);&#xA;Date trialTime = new Date();&#xA;calendar.setTime(trialTime);&#xA;&#xA;print out a bunch of interesting things&#xA;System.out.println(&quot;ERA: &quot; + calendar.get(Calendar.ERA));&#xA;System.out.println(&quot;YEAR: &quot; + calendar.get(Calendar.YEAR));&#xA;System.out.println(&quot;MONTH: &quot; + calendar.get(Calendar.MONTH));&#xA;System.out.println(&quot;WEEK_OF_YEAR: &quot; + calendar.get(Calendar.WEEK_OF_YEAR));&#xA;System.out.println(&quot;WEEK_OF_MONTH: &quot; + calendar.get(Calendar.WEEK_OF_MONTH));&#xA;System.out.println(&quot;DATE: &quot; + calendar.get(Calendar.DATE));&#xA;System.out.println(&quot;DAY_OF_MONTH: &quot; + calendar.get(Calendar.DAY_OF_MONTH));&#xA;System.out.println(&quot;DAY_OF_YEAR: &quot; + calendar.get(Calendar.DAY_OF_YEAR));&#xA;System.out.println(&quot;DAY_OF_WEEK: &quot; + calendar.get(Calendar.DAY_OF_WEEK));&#xA;System.out.println(&quot;DAY_OF_WEEK_IN_MONTH: &quot;&#xA;+ calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));&#xA;System.out.println(&quot;AM_PM: &quot; + calendar.get(Calendar.AM_PM));&#xA;System.out.println(&quot;HOUR: &quot; + calendar.get(Calendar.HOUR));&#xA;System.out.println(&quot;HOUR_OF_DAY: &quot; + calendar.get(Calendar.HOUR_OF_DAY));&#xA;System.out.println(&quot;MINUTE: &quot; + calendar.get(Calendar.MINUTE));&#xA;System.out.println(&quot;SECOND: &quot; + calendar.get(Calendar.SECOND));&#xA;System.out.println(&quot;MILLISECOND: &quot; + calendar.get(Calendar.MILLISECOND));&#xA;System.out.println(&quot;ZONE_OFFSET: &quot;&#xA;+ (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000)));&#xA;System.out.println(&quot;DST_OFFSET: &quot;&#xA;+ (calendar.get(Calendar.DST_OFFSET)/(60*60*1000)));&#xA;System.out.println(&quot;Current Time, with hour reset to 3&quot;);&#xA;calendar.clear(Calendar.HOUR_OF_DAY); // so doesn't override&#xA;calendar.set(Calendar.HOUR, 3);&#xA;System.out.println(&quot;ERA: &quot; + calendar.get(Calendar.ERA));&#xA;System.out.println(&quot;YEAR: &quot; + calendar.get(Calendar.YEAR));&#xA;System.out.println(&quot;MONTH: &quot; + calendar.get(Calendar.MONTH));&#xA;System.out.println(&quot;WEEK_OF_YEAR: &quot; + calendar.get(Calendar.WEEK_OF_YEAR));&#xA;System.out.println(&quot;WEEK_OF_MONTH: &quot; + calendar.get(Calendar.WEEK_OF_MONTH));&#xA;System.out.println(&quot;DATE: &quot; + calendar.get(Calendar.DATE));&#xA;System.out.println(&quot;DAY_OF_MONTH: &quot; + calendar.get(Calendar.DAY_OF_MONTH));&#xA;System.out.println(&quot;DAY_OF_YEAR: &quot; + calendar.get(Calendar.DAY_OF_YEAR));&#xA;System.out.println(&quot;DAY_OF_WEEK: &quot; + calendar.get(Calendar.DAY_OF_WEEK));&#xA;System.out.println(&quot;DAY_OF_WEEK_IN_MONTH: &quot;&#xA;+ calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));&#xA;System.out.println(&quot;AM_PM: &quot; + calendar.get(Calendar.AM_PM));&#xA;System.out.println(&quot;HOUR: &quot; + calendar.get(Calendar.HOUR));&#xA;System.out.println(&quot;HOUR_OF_DAY: &quot; + calendar.get(Calendar.HOUR_OF_DAY));&#xA;System.out.println(&quot;MINUTE: &quot; + calendar.get(Calendar.MINUTE));&#xA;System.out.println(&quot;SECOND: &quot; + calendar.get(Calendar.SECOND));&#xA;System.out.println(&quot;MILLISECOND: &quot; + calendar.get(Calendar.MILLISECOND));&#xA;System.out.println(&quot;ZONE_OFFSET: &quot;&#xA;+ (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000))); // in hours&#xA;System.out.println(&quot;DST_OFFSET: &quot;&#xA;+ (calendar.get(Calendar.DST_OFFSET)/(60*60*1000))); // in hours&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;@see          TimeZone&#xA;@version      1.84&#xA;@author David Goldsmith, Mark Davis, Chen-Lieh Huang, Alan Liu&#xA;@since JDK1.1&#xA;" annotatedElement="ed1e1c51-1c1f-4362-9677-91b9bdb8a5ff"/>
            <generalization xmi:id="6c4990ba-2d85-4365-99dc-02bdaea76d34" isSubstitutable="true" general="7e4b4f4d-c7d8-4cd4-9f7b-a64b40b9afb1"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="93b6c735-30df-4873-8a02-cbbe5dfce4fa" name="PropertyResourceBundle">
            <ownedComment xmi:id="fce0e44f-1381-4547-9655-e194e47b2860" body="&lt;code>PropertyResourceBundle&lt;/code> is a concrete subclass of&#xA;&lt;code>ResourceBundle&lt;/code> that manages resources for a locale&#xA;using a set of static strings from a property file. See&#xA;{@link ResourceBundle ResourceBundle} for more information about resource&#xA;bundles. See {@link Properties Properties} for more information&#xA;about properties files, in particular the&#xA;&lt;a href=&quot;Properties.html#encoding&quot;>information on character encodings&lt;/a>.&#xA;&#xA;&lt;p>&#xA;Unlike other types of resource bundle, you don't subclass&#xA;&lt;code>PropertyResourceBundle&lt;/code>.  Instead, you supply properties&#xA;files containing the resource data.  &lt;code>ResourceBundle.getBundle&lt;/code>&#xA;will automatically look for the appropriate properties file and create a&#xA;&lt;code>PropertyResourceBundle&lt;/code> that refers to it. See&#xA;{@link ResourceBundle#getBundle(java.lang.String, java.util.Locale, java.lang.ClassLoader) ResourceBundle.getBundle}&#xA;for a complete description of the search and instantiation strategy.&#xA;&#xA;&lt;p>&#xA;The following &lt;a name=&quot;sample&quot;>example&lt;/a> shows a member of a resource&#xA;bundle family with the base name &quot;MyResources&quot;.&#xA;The text defines the bundle &quot;MyResources_de&quot;,&#xA;the German member of the bundle family.&#xA;This member is based on &lt;code>PropertyResourceBundle&lt;/code>, and the text&#xA;therefore is the content of the file &quot;MyResources_de.properties&quot;&#xA;(a related &lt;a href=&quot;ListResourceBundle.html#sample&quot;>example&lt;/a> shows&#xA;how you can add bundles to this family that are implemented as subclasses&#xA;of &lt;code>ListResourceBundle&lt;/code>).&#xA;The keys in this example are of the form &quot;s1&quot; etc. The actual&#xA;keys are entirely up to your choice, so long as they are the same as&#xA;the keys you use in your program to retrieve the objects from the bundle.&#xA;Keys are case-sensitive.&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;# MessageFormat pattern&#xA;s1=Die Platte \&quot;{1}\&quot; enth&amp;auml;lt {0}.&#xA;&#xA;# location of {0} in pattern&#xA;s2=1&#xA;&#xA;# sample disk name&#xA;s3=Meine Platte&#xA;&#xA;# first ChoiceFormat choice&#xA;s4=keine Dateien&#xA;&#xA;# second ChoiceFormat choice&#xA;s5=eine Datei&#xA;&#xA;# third ChoiceFormat choice&#xA;s6={0,number} Dateien&#xA;&#xA;# sample date&#xA;s7=3. M&amp;auml;rz 1996&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;@see ResourceBundle&#xA;@see ListResourceBundle&#xA;@see Properties&#xA;@since JDK1.1&#xA;" annotatedElement="93b6c735-30df-4873-8a02-cbbe5dfce4fa"/>
            <generalization xmi:id="1cde2238-3696-479f-a96b-6bb95b098241" isSubstitutable="true" general="3aeb4cea-0b5b-4219-98a6-a1e99d5405db"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="0cc81863-581e-4c69-b5cf-ace9f5fa633b" name="Queue" isAbstract="true">
            <ownedComment xmi:id="3e3bb02c-5556-4577-bf69-8d7d97e194f7" body="A collection designed for holding elements prior to processing.&#xA;Besides basic {@link java.util.Collection Collection} operations, queues provide&#xA;additional insertion, extraction, and inspection operations.&#xA;&#xA;&lt;p>Queues typically, but do not necessarily, order elements in a&#xA;FIFO (first-in-first-out) manner.  Among the exceptions are&#xA;priority queues, which order elements according to a supplied&#xA;comparator, or the elements' natural ordering, and LIFO queues (or&#xA;stacks) which order the elements LIFO (last-in-first-out).&#xA;Whatever the ordering used, the &lt;em>head&lt;/em> of the queue is that&#xA;element which would be removed by a call to {@link #remove() } or&#xA;{@link #poll()}.  In a FIFO queue, all new elements are inserted at&#xA;the &lt;em> tail&lt;/em> of the queue. Other kinds of queues may use&#xA;different placement rules.  Every &lt;tt>Queue&lt;/tt> implementation&#xA;must specify its ordering properties.&#xA;&#xA;&lt;p>The {@link #offer offer} method inserts an element if possible,&#xA;otherwise returning &lt;tt>false&lt;/tt>.  This differs from the {@link&#xA;java.util.Collection#add Collection.add} method, which can fail to&#xA;add an element only by throwing an unchecked exception.  The&#xA;&lt;tt>offer&lt;/tt> method is designed for use when failure is a normal,&#xA;rather than exceptional occurrence, for example, in fixed-capacity&#xA;(or &quot;bounded&quot;) queues.&#xA;&#xA;&lt;p>The {@link #remove()} and {@link #poll()} methods remove and&#xA;return the head of the queue.&#xA;Exactly which element is removed from the queue is a&#xA;function of the queue's ordering policy, which differs from&#xA;implementation to implementation. The &lt;tt>remove()&lt;/tt> and&#xA;&lt;tt>poll()&lt;/tt> methods differ only in their behavior when the&#xA;queue is empty: the &lt;tt>remove()&lt;/tt> method throws an exception,&#xA;while the &lt;tt>poll()&lt;/tt> method returns &lt;tt>null&lt;/tt>.&#xA;&#xA;&lt;p>The {@link #element()} and {@link #peek()} methods return, but do&#xA;not remove, the head of the queue.&#xA;&#xA;&lt;p>The &lt;tt>Queue&lt;/tt> interface does not define the &lt;i>blocking queue&#xA;methods&lt;/i>, which are common in concurrent programming.  These methods,&#xA;which wait for elements to appear or for space to become available, are&#xA;defined in the {@link java.util.concurrent.BlockingQueue} interface, which&#xA;extends this interface.&#xA;&#xA;&lt;p>&lt;tt>Queue&lt;/tt> implementations generally do not allow insertion&#xA;of &lt;tt>null&lt;/tt> elements, although some implementations, such as&#xA;{@link LinkedList}, do not prohibit insertion of &lt;tt>null&lt;/tt>.&#xA;Even in the implementations that permit it, &lt;tt>null&lt;/tt> should&#xA;not be inserted into a &lt;tt>Queue&lt;/tt>, as &lt;tt>null&lt;/tt> is also&#xA;used as a special return value by the &lt;tt>poll&lt;/tt> method to&#xA;indicate that the queue contains no elements.&#xA;&#xA;&lt;p>&lt;tt>Queue&lt;/tt> implementations generally do not define&#xA;element-based versions of methods &lt;tt>equals&lt;/tt> and&#xA;&lt;tt>hashCode&lt;/tt> but instead inherit the identity based versions&#xA;from class &lt;tt>Object&lt;/tt>, because element-based equality is not&#xA;always well-defined for queues with the same elements but different&#xA;ordering properties.&#xA;&#xA;&#xA;&lt;p>This interface is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@see java.util.Collection&#xA;@see LinkedList&#xA;@see PriorityQueue&#xA;@see java.util.concurrent.LinkedBlockingQueue&#xA;@see java.util.concurrent.BlockingQueue&#xA;@see java.util.concurrent.ArrayBlockingQueue&#xA;@see java.util.concurrent.LinkedBlockingQueue&#xA;@see java.util.concurrent.PriorityBlockingQueue&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;E> the type of elements held in this collection&#xA;" annotatedElement="0cc81863-581e-4c69-b5cf-ace9f5fa633b"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="7cd01050-d015-4d0a-a3b3-a99a7c45f874" name="" parameter="fc245dea-47b4-4652-b13d-4a8744ca00fc">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="fc245dea-47b4-4652-b13d-4a8744ca00fc" parameteredElement="4b00c21a-15d1-4c60-860f-13eafdfd423b">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="4b00c21a-15d1-4c60-860f-13eafdfd423b" name="E" templateParameter="fc245dea-47b4-4652-b13d-4a8744ca00fc"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="10e796db-9c98-45af-8ad2-0572fd5f1aff" isSubstitutable="true" general="f2ecd2a3-8039-41dd-a004-e978e2a488aa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="cc619ae9-6c8c-489a-9ce6-1b655c22186e" name="NoSuchElementException">
            <ownedComment xmi:id="952ccce5-ed63-4b79-8c10-e4d7c2d5e70d" body="Thrown by the &lt;code>nextElement&lt;/code> method of an&#xA;&lt;code>Enumeration&lt;/code> to indicate that there are no more&#xA;elements in the enumeration.&#xA;&#xA;@author  unascribed&#xA;@version 1.21, 12/19/03&#xA;@see     java.util.Enumeration&#xA;@see     java.util.Enumeration#nextElement()&#xA;@since   JDK1.0&#xA;" annotatedElement="cc619ae9-6c8c-489a-9ce6-1b655c22186e"/>
            <generalization xmi:id="47143ff1-4e05-46f7-be13-d5135d64fd7e" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3c541554-73ad-4012-a159-589e555a585c" name="TreeSet" clientDependency="4e57471b-f557-40f4-a845-1c7fc83b54ea 30011d69-b3ab-4d47-be2e-a2bc86235a72 11cf8183-289a-4e15-9b26-08cedcb7d52d">
            <ownedComment xmi:id="492c23e2-965b-4b24-8a8e-f0a42deee140" body="This class implements the &lt;tt>Set&lt;/tt> interface, backed by a&#xA;&lt;tt>TreeMap&lt;/tt> instance.  This class guarantees that the sorted set will&#xA;be in ascending element order, sorted according to the &lt;i>natural order&lt;/i>&#xA;of the elements (see &lt;tt>Comparable&lt;/tt>), or by the comparator provided at&#xA;set creation time, depending on which constructor is used.&lt;p>&#xA;&#xA;This implementation provides guaranteed log(n) time cost for the basic&#xA;operations (&lt;tt>add&lt;/tt>, &lt;tt>remove&lt;/tt> and &lt;tt>contains&lt;/tt>).&lt;p>&#xA;&#xA;Note that the ordering maintained by a set (whether or not an explicit&#xA;comparator is provided) must be &lt;i>consistent with equals&lt;/i> if it is to&#xA;correctly implement the &lt;tt>Set&lt;/tt> interface.  (See &lt;tt>Comparable&lt;/tt>&#xA;or &lt;tt>Comparator&lt;/tt> for a precise definition of &lt;i>consistent with&#xA;equals&lt;/i>.)  This is so because the &lt;tt>Set&lt;/tt> interface is defined in&#xA;terms of the &lt;tt>equals&lt;/tt> operation, but a &lt;tt>TreeSet&lt;/tt> instance&#xA;performs all key comparisons using its &lt;tt>compareTo&lt;/tt> (or&#xA;&lt;tt>compare&lt;/tt>) method, so two keys that are deemed equal by this method&#xA;are, from the standpoint of the set, equal.  The behavior of a set&#xA;&lt;i>is&lt;/i> well-defined even if its ordering is inconsistent with equals; it&#xA;just fails to obey the general contract of the &lt;tt>Set&lt;/tt> interface.&lt;p>&#xA;&#xA;&lt;b>Note that this implementation is not synchronized.&lt;/b> If multiple&#xA;threads access a set concurrently, and at least one of the threads modifies&#xA;the set, it &lt;i>must&lt;/i> be synchronized externally.  This is typically&#xA;accomplished by synchronizing on some object that naturally encapsulates&#xA;the set.  If no such object exists, the set should be &quot;wrapped&quot; using the&#xA;&lt;tt>Collections.synchronizedSet&lt;/tt> method.  This is best done at creation&#xA;time, to prevent accidental unsynchronized access to the set: &lt;pre>&#xA;SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));&#xA;&lt;/pre>&lt;p>&#xA;&#xA;The Iterators returned by this class's &lt;tt>iterator&lt;/tt> method are&#xA;&lt;i>fail-fast&lt;/i>: if the set is modified at any time after the iterator is&#xA;created, in any way except through the iterator's own &lt;tt>remove&lt;/tt>&#xA;method, the iterator will throw a &lt;tt>ConcurrentModificationException&lt;/tt>.&#xA;Thus, in the face of concurrent modification, the iterator fails quickly&#xA;and cleanly, rather than risking arbitrary, non-deterministic behavior at&#xA;an undetermined time in the future.&#xA;&#xA;&lt;p>Note that the fail-fast behavior of an iterator cannot be guaranteed&#xA;as it is, generally speaking, impossible to make any hard guarantees in the&#xA;presence of unsynchronized concurrent modification.  Fail-fast iterators&#xA;throw &lt;tt>ConcurrentModificationException&lt;/tt> on a best-effort basis.&#xA;Therefore, it would be wrong to write a program that depended on this&#xA;exception for its correctness:   &lt;i>the fail-fast behavior of iterators&#xA;should be used only to detect bugs.&lt;/i>&lt;p>&#xA;&#xA;This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.32, 12/19/03&#xA;@see&#x9;    Collection&#xA;@see&#x9;    Set&#xA;@see&#x9;    HashSet&#xA;@see     Comparable&#xA;@see     Comparator&#xA;@see&#x9;    Collections#synchronizedSortedSet(SortedSet)&#xA;@see&#x9;    TreeMap&#xA;@since   1.2&#xA;" annotatedElement="3c541554-73ad-4012-a159-589e555a585c"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="f7e3d278-ec7b-4fa0-9a57-8b6f6f84ab31" name="" parameter="a56e8cad-e3d4-409a-80f5-0b9a2f900772">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="a56e8cad-e3d4-409a-80f5-0b9a2f900772" parameteredElement="4b82012a-d048-482b-b263-27a284563365">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="4b82012a-d048-482b-b263-27a284563365" name="E" templateParameter="a56e8cad-e3d4-409a-80f5-0b9a2f900772"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="e04b1447-59dc-4bb4-95c9-8689d04dc72a" isSubstitutable="true" general="366a6b71-c7a9-4b22-95d5-74091ce96f5b"/>
            <interfaceRealization xmi:id="30011d69-b3ab-4d47-be2e-a2bc86235a72" name="" supplier="8f0b159d-1699-480f-949b-5de4e0916ac2" client="3c541554-73ad-4012-a159-589e555a585c" contract="8f0b159d-1699-480f-949b-5de4e0916ac2"/>
            <interfaceRealization xmi:id="11cf8183-289a-4e15-9b26-08cedcb7d52d" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="3c541554-73ad-4012-a159-589e555a585c" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="4e57471b-f557-40f4-a845-1c7fc83b54ea" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="3c541554-73ad-4012-a159-589e555a585c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ee1f825a-207c-4688-b11d-b912fac766e1" name="IllegalFormatConversionException">
            <ownedComment xmi:id="01081a06-a4cd-471f-9daa-3963b6177441" body="Unchecked exception thrown when the argument corresponding to the format&#xA;specifier is of an incompatible type.&#xA;&#xA;&lt;p> Unless otherwise specified, passing a &lt;tt>null&lt;/tt> argument to any&#xA;method or constructor in this class will cause a {@link&#xA;NullPointerException} to be thrown.&#xA;&#xA;@version &#x9;1.3, 05/05/04&#xA;@since 1.5&#xA;" annotatedElement="ee1f825a-207c-4688-b11d-b912fac766e1"/>
            <generalization xmi:id="b8cc8c3b-96c1-46fe-a398-8997984111d2" isSubstitutable="true" general="615b003b-a7bd-4b48-ba53-15e2ad73fd34"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="42641463-6c49-4d1d-9887-7dd9028506e2" name="HashIterator&lt;V>">
            <templateBinding xmi:id="a5648318-731d-4eb2-91b6-1f9f34a46587" signature="5bf2c9be-3da9-4abb-879a-cd9f7d570041">
              <parameterSubstitution xmi:id="30dd09a0-4860-498a-b8ff-687d4e2aa54a" formal="8d329d03-ffda-4a1f-9dcd-d32d0f9bf4fd" actual="da460b87-fd1d-4c41-acd4-09517a7d4c65"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8d12879d-774f-443c-bf65-2e16510aee65" name="LinkedHashIterator&lt;K>">
            <templateBinding xmi:id="2894f8fc-d6ab-4e6c-b946-efdf9f82eb6f" signature="4c079565-0789-4bf1-9e25-049f5e6a76ab">
              <parameterSubstitution xmi:id="1f06eb90-7e53-49fe-92b8-de5c92d0968f" formal="e5247458-b71e-471a-aa50-e982ba010250" actual="053c10be-a937-4d45-bc60-78eccf63004c"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="828973fc-496f-4657-b9bf-49e1a59ea1d5" name="PrivateEntryIterator&lt;K>">
            <templateBinding xmi:id="15606e6c-d3f3-4e07-ab30-e00778651709" signature="d3b3fe15-6155-4eda-a308-89f7d8f408a4">
              <parameterSubstitution xmi:id="8ad92ef5-2fcc-4844-bdcb-385fe1fdf559" formal="c59750f5-d765-4382-90ab-8167ab831fc9" actual="68d6e098-1aef-4959-983f-efa9d7f08216"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1be2b815-6950-45ad-b5fb-5be8eb844c60" name="HashIterator&lt;V>">
            <templateBinding xmi:id="39b58ee7-6256-4fa5-a64e-060dfbe63a0b" signature="677cb0bc-87fb-4737-9b5e-39b2c262fcc6">
              <parameterSubstitution xmi:id="9b03fca0-1642-47a4-83c2-a74ff39a1ece" formal="72df0f7b-e9b3-413b-9c16-e63dde3abe0a" actual="c5ebed38-a09a-46bc-92d2-6bafde00c4d4"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6f91e685-b288-4de9-b5df-6990769b6969" name="CurrencyData" visibility="package"/>
          <packagedElement xmi:type="uml:Interface" xmi:id="329872e3-8fdd-4f5a-9229-28884b051e42" name="Comparator&lt;Comparable&lt;Object>>">
            <templateBinding xmi:id="e0e94ed5-95ea-423f-bbcb-8414d47fc0c5" signature="5ca0174c-f6a2-499c-8047-b28b014e167d">
              <parameterSubstitution xmi:id="dd2ab310-26b5-4bd8-9729-a968bdecbb40" formal="778d8bc4-7722-4223-9041-c33432cd4640" actual="e118f426-a5a9-4150-8969-e9a80d67a153"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="a0c1f50d-9223-47cb-bf1f-a2ff40f1e6ac" name="SortedSet" isAbstract="true">
            <ownedComment xmi:id="4b7043b2-faf3-437d-b020-bb051e3fbf6e" body="A set that further guarantees that its iterator will traverse the set in&#xA;ascending element order, sorted according to the &lt;i>natural ordering&lt;/i> of&#xA;its elements (see Comparable), or by a Comparator provided at sorted set&#xA;creation time.  Several additional operations are provided to take&#xA;advantage of the ordering.  (This interface is the set analogue of&#xA;SortedMap.)&lt;p>&#xA;&#xA;All elements inserted into an sorted set must implement the Comparable&#xA;interface (or be accepted by the specified Comparator).  Furthermore, all&#xA;such elements must be &lt;i>mutually comparable&lt;/i>: &lt;tt>e1.compareTo(e2)&lt;/tt>&#xA;(or &lt;tt>comparator.compare(e1, e2)&lt;/tt>) must not throw a&#xA;&lt;tt>ClassCastException&lt;/tt> for any elements &lt;tt>e1&lt;/tt> and &lt;tt>e2&lt;/tt> in&#xA;the sorted set.  Attempts to violate this restriction will cause the&#xA;offending method or constructor invocation to throw a&#xA;&lt;tt>ClassCastException&lt;/tt>.&lt;p>&#xA;&#xA;Note that the ordering maintained by a sorted set (whether or not an&#xA;explicit comparator is provided) must be &lt;i>consistent with equals&lt;/i> if&#xA;the sorted set is to correctly implement the &lt;tt>Set&lt;/tt> interface.  (See&#xA;the &lt;tt>Comparable&lt;/tt> interface or &lt;tt>Comparator&lt;/tt> interface for a&#xA;precise definition of &lt;i>consistent with equals&lt;/i>.)  This is so because&#xA;the &lt;tt>Set&lt;/tt> interface is defined in terms of the &lt;tt>equals&lt;/tt>&#xA;operation, but a sorted set performs all element comparisons using its&#xA;&lt;tt>compareTo&lt;/tt> (or &lt;tt>compare&lt;/tt>) method, so two elements that are&#xA;deemed equal by this method are, from the standpoint of the sorted set,&#xA;equal.  The behavior of a sorted set &lt;i>is&lt;/i> well-defined even if its&#xA;ordering is inconsistent with equals; it just fails to obey the general&#xA;contract of the &lt;tt>Set&lt;/tt> interface.&lt;p>&#xA;&#xA;All general-purpose sorted set implementation classes should provide four&#xA;&quot;standard&quot; constructors: 1) A void (no arguments) constructor, which&#xA;creates an empty sorted set sorted according to the &lt;i>natural order&lt;/i> of&#xA;its elements.  2) A constructor with a single argument of type&#xA;&lt;tt>Comparator&lt;/tt>, which creates an empty sorted set sorted according to&#xA;the specified comparator.  3) A constructor with a single argument of type&#xA;&lt;tt>Collection&lt;/tt>, which creates a new sorted set with the same elements&#xA;as its argument, sorted according to the elements' natural ordering.  4) A&#xA;constructor with a single argument of type &lt;tt>SortedSet&lt;/tt>, which&#xA;creates a new sorted set with the same elements and the same ordering as&#xA;the input sorted set.  There is no way to enforce this recommendation (as&#xA;interfaces cannot contain constructors) but the JDK implementation (the&#xA;&lt;tt>TreeSet&lt;/tt> class) complies.&lt;p>&#xA;&#xA;This interface is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.24, 06/28/04&#xA;@see Set&#xA;@see TreeSet&#xA;@see SortedMap&#xA;@see Collection&#xA;@see Comparable&#xA;@see Comparator&#xA;@see java.lang.ClassCastException&#xA;@since 1.2&#xA;" annotatedElement="a0c1f50d-9223-47cb-bf1f-a2ff40f1e6ac"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="ff11d768-6e05-4715-b0c5-8f7cff7f34b1" name="" parameter="11934889-d883-43b5-8e46-05814c3a9f2d">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="11934889-d883-43b5-8e46-05814c3a9f2d" parameteredElement="da31b824-94ae-413d-8ac6-6cfd90c01e8c">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="da31b824-94ae-413d-8ac6-6cfd90c01e8c" name="E" templateParameter="11934889-d883-43b5-8e46-05814c3a9f2d"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="5ca15c7d-d148-4115-bb29-9f8f108d28dd" isSubstitutable="true" general="baa392ca-bff3-4d7d-b407-489a8610c855"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="66f22d5f-389b-4eb1-852a-78904751a116" name="Date" clientDependency="f167527e-a829-488a-9863-8e2c10b93cb5 ddc89115-13db-4da8-9e33-cdab67e73c80 cd6e6ce5-02b1-4b5a-80e3-4f982b14ee8b">
            <ownedComment xmi:id="43bc62bd-25b2-498c-bccd-f9b7ebf873f6" body="The class &lt;code>Date&lt;/code> represents a specific instant&#xA;in time, with millisecond precision.&#xA;&lt;p>&#xA;Prior to JDK&amp;nbsp;1.1, the class &lt;code>Date&lt;/code> had two additional&#xA;functions.  It allowed the interpretation of dates as year, month, day, hour,&#xA;minute, and second values.  It also allowed the formatting and parsing&#xA;of date strings.  Unfortunately, the API for these functions was not&#xA;amenable to internationalization.  As of JDK&amp;nbsp;1.1, the&#xA;&lt;code>Calendar&lt;/code> class should be used to convert between dates and time&#xA;fields and the &lt;code>DateFormat&lt;/code> class should be used to format and&#xA;parse date strings.&#xA;The corresponding methods in &lt;code>Date&lt;/code> are deprecated.&#xA;&lt;p>&#xA;Although the &lt;code>Date&lt;/code> class is intended to reflect&#xA;coordinated universal time (UTC), it may not do so exactly,&#xA;depending on the host environment of the Java Virtual Machine.&#xA;Nearly all modern operating systems assume that 1&amp;nbsp;day&amp;nbsp;=&#xA;24&amp;nbsp;&amp;times;&amp;nbsp;60&amp;nbsp;&amp;times;&amp;nbsp;60&amp;nbsp;= 86400 seconds&#xA;in all cases. In UTC, however, about once every year or two there&#xA;is an extra second, called a &quot;leap second.&quot; The leap&#xA;second is always added as the last second of the day, and always&#xA;on December 31 or June 30. For example, the last minute of the&#xA;year 1995 was 61 seconds long, thanks to an added leap second.&#xA;Most computer clocks are not accurate enough to be able to reflect&#xA;the leap-second distinction.&#xA;&lt;p>&#xA;Some computer standards are defined in terms of Greenwich mean&#xA;time (GMT), which is equivalent to universal time (UT).  GMT is&#xA;the &quot;civil&quot; name for the standard; UT is the&#xA;&quot;scientific&quot; name for the same standard. The&#xA;distinction between UTC and UT is that UTC is based on an atomic&#xA;clock and UT is based on astronomical observations, which for all&#xA;practical purposes is an invisibly fine hair to split. Because the&#xA;earth's rotation is not uniform (it slows down and speeds up&#xA;in complicated ways), UT does not always flow uniformly. Leap&#xA;seconds are introduced as needed into UTC so as to keep UTC within&#xA;0.9 seconds of UT1, which is a version of UT with certain&#xA;corrections applied. There are other time and date systems as&#xA;well; for example, the time scale used by the satellite-based&#xA;global positioning system (GPS) is synchronized to UTC but is&#xA;&lt;i>not&lt;/i> adjusted for leap seconds. An interesting source of&#xA;further information is the U.S. Naval Observatory, particularly&#xA;the Directorate of Time at:&#xA;&lt;blockquote>&lt;pre>&#xA;&lt;a href=http://tycho.usno.navy.mil>http://tycho.usno.navy.mil&lt;/a>&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;and their definitions of &quot;Systems of Time&quot; at:&#xA;&lt;blockquote>&lt;pre>&#xA;&lt;a href=http://tycho.usno.navy.mil/systime.html>http://tycho.usno.navy.mil/systime.html&lt;/a>&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;In all methods of class &lt;code>Date&lt;/code> that accept or return&#xA;year, month, date, hours, minutes, and seconds values, the&#xA;following representations are used:&#xA;&lt;ul>&#xA;&lt;li>A year &lt;i>y&lt;/i> is represented by the integer&#xA;&lt;i>y&lt;/i>&amp;nbsp;&lt;code>-&amp;nbsp;1900&lt;/code>.&#xA;&lt;li>A month is represented by an integer from 0 to 11; 0 is January,&#xA;1 is February, and so forth; thus 11 is December.&#xA;&lt;li>A date (day of month) is represented by an integer from 1 to 31&#xA;in the usual manner.&#xA;&lt;li>An hour is represented by an integer from 0 to 23. Thus, the hour&#xA;from midnight to 1 a.m. is hour 0, and the hour from noon to 1&#xA;p.m. is hour 12.&#xA;&lt;li>A minute is represented by an integer from 0 to 59 in the usual manner.&#xA;&lt;li>A second is represented by an integer from 0 to 61; the values 60 and&#xA;61 occur only for leap seconds and even then only in Java&#xA;implementations that actually track leap seconds correctly. Because&#xA;of the manner in which leap seconds are currently introduced, it is&#xA;extremely unlikely that two leap seconds will occur in the same&#xA;minute, but this specification follows the date and time conventions&#xA;for ISO C.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;In all cases, arguments given to methods for these purposes need&#xA;not fall within the indicated ranges; for example, a date may be&#xA;specified as January 32 and is interpreted as meaning February 1.&#xA;&#xA;@author  James Gosling&#xA;@author  Arthur van Hoff&#xA;@author  Alan Liu&#xA;@version 1.80, 05/18/04&#xA;@see     java.text.DateFormat&#xA;@see     java.util.Calendar&#xA;@see     java.util.TimeZone&#xA;@since   JDK1.0&#xA;" annotatedElement="66f22d5f-389b-4eb1-852a-78904751a116"/>
            <interfaceRealization xmi:id="f167527e-a829-488a-9863-8e2c10b93cb5" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="66f22d5f-389b-4eb1-852a-78904751a116" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="ddc89115-13db-4da8-9e33-cdab67e73c80" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="66f22d5f-389b-4eb1-852a-78904751a116" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="cd6e6ce5-02b1-4b5a-80e3-4f982b14ee8b" name="" supplier="f76a7162-3c3f-4523-974b-3a692b2908c5" client="66f22d5f-389b-4eb1-852a-78904751a116" contract="f76a7162-3c3f-4523-974b-3a692b2908c5"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="88389119-17f9-48a7-b04b-69612d2f3e5c" name="Iterator&lt;Object>">
            <templateBinding xmi:id="47e54a4a-74ed-4fe7-95fd-be3aa51b01d8" signature="0f8c6981-4608-4e07-a119-f77e4e17cb2d">
              <parameterSubstitution xmi:id="ad8c87a8-b1f4-4a44-9aea-62f91486e316" formal="3b71f5d7-d328-40b6-8dcc-6484e179fd5e" actual="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="aacc598e-b958-4650-92ff-42b0caf1811e" name="TreeMap" clientDependency="23ef5359-ed32-4964-b3e8-7369a406e3dc fd72a467-9131-44c3-8e05-fa2705b36629 70a95cc6-9976-41b3-b1df-e1ca2be4ab95">
            <ownedComment xmi:id="5ab7fae7-2fc8-451b-b7d2-2e44e0680d95" body="Red-Black tree based implementation of the &lt;tt>SortedMap&lt;/tt> interface.&#xA;This class guarantees that the map will be in ascending key order, sorted&#xA;according to the &lt;i>natural order&lt;/i> for the key's class (see&#xA;&lt;tt>Comparable&lt;/tt>), or by the comparator provided at creation time,&#xA;depending on which constructor is used.&lt;p>&#xA;&#xA;This implementation provides guaranteed log(n) time cost for the&#xA;&lt;tt>containsKey&lt;/tt>, &lt;tt>get&lt;/tt>, &lt;tt>put&lt;/tt> and &lt;tt>remove&lt;/tt>&#xA;operations.  Algorithms are adaptations of those in Cormen, Leiserson, and&#xA;Rivest's &lt;I>Introduction to Algorithms&lt;/I>.&lt;p>&#xA;&#xA;Note that the ordering maintained by a sorted map (whether or not an&#xA;explicit comparator is provided) must be &lt;i>consistent with equals&lt;/i> if&#xA;this sorted map is to correctly implement the &lt;tt>Map&lt;/tt> interface.  (See&#xA;&lt;tt>Comparable&lt;/tt> or &lt;tt>Comparator&lt;/tt> for a precise definition of&#xA;&lt;i>consistent with equals&lt;/i>.)  This is so because the &lt;tt>Map&lt;/tt>&#xA;interface is defined in terms of the equals operation, but a map performs&#xA;all key comparisons using its &lt;tt>compareTo&lt;/tt> (or &lt;tt>compare&lt;/tt>)&#xA;method, so two keys that are deemed equal by this method are, from the&#xA;standpoint of the sorted map, equal.  The behavior of a sorted map&#xA;&lt;i>is&lt;/i> well-defined even if its ordering is inconsistent with equals; it&#xA;just fails to obey the general contract of the &lt;tt>Map&lt;/tt> interface.&lt;p>&#xA;&#xA;&lt;b>Note that this implementation is not synchronized.&lt;/b> If multiple&#xA;threads access a map concurrently, and at least one of the threads modifies&#xA;the map structurally, it &lt;i>must&lt;/i> be synchronized externally.  (A&#xA;structural modification is any operation that adds or deletes one or more&#xA;mappings; merely changing the value associated with an existing key is not&#xA;a structural modification.)  This is typically accomplished by&#xA;synchronizing on some object that naturally encapsulates the map.  If no&#xA;such object exists, the map should be &quot;wrapped&quot; using the&#xA;&lt;tt>Collections.synchronizedMap&lt;/tt> method.  This is best done at creation&#xA;time, to prevent accidental unsynchronized access to the map:&#xA;&lt;pre>&#xA;Map m = Collections.synchronizedMap(new TreeMap(...));&#xA;&lt;/pre>&lt;p>&#xA;&#xA;The iterators returned by all of this class's &quot;collection view methods&quot; are&#xA;&lt;i>fail-fast&lt;/i>: if the map is structurally modified at any time after the&#xA;iterator is created, in any way except through the iterator's own&#xA;&lt;tt>remove&lt;/tt> or &lt;tt>add&lt;/tt> methods, the iterator throws a&#xA;&lt;tt>ConcurrentModificationException&lt;/tt>.  Thus, in the face of concurrent&#xA;modification, the iterator fails quickly and cleanly, rather than risking&#xA;arbitrary, non-deterministic behavior at an undetermined time in the&#xA;future.&#xA;&#xA;&lt;p>Note that the fail-fast behavior of an iterator cannot be guaranteed&#xA;as it is, generally speaking, impossible to make any hard guarantees in the&#xA;presence of unsynchronized concurrent modification.  Fail-fast iterators&#xA;throw &lt;tt>ConcurrentModificationException&lt;/tt> on a best-effort basis.&#xA;Therefore, it would be wrong to write a program that depended on this&#xA;exception for its correctness:   &lt;i>the fail-fast behavior of iterators&#xA;should be used only to detect bugs.&lt;/i>&lt;p>&#xA;&#xA;This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch and Doug Lea&#xA;@version 1.65, 02/19/04&#xA;@see Map&#xA;@see HashMap&#xA;@see Hashtable&#xA;@see Comparable&#xA;@see Comparator&#xA;@see Collection&#xA;@see Collections#synchronizedMap(Map)&#xA;@since 1.2&#xA;" annotatedElement="aacc598e-b958-4650-92ff-42b0caf1811e"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="f96e44ae-24fe-43e6-9b9a-95953f07eaa8" name="" parameter="2acb71a2-0fd6-4930-8c44-6241dfd97793 88209585-a05c-4039-a913-6b87080cc2bc">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="2acb71a2-0fd6-4930-8c44-6241dfd97793" parameteredElement="68d6e098-1aef-4959-983f-efa9d7f08216">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="68d6e098-1aef-4959-983f-efa9d7f08216" name="K" templateParameter="2acb71a2-0fd6-4930-8c44-6241dfd97793"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="88209585-a05c-4039-a913-6b87080cc2bc" parameteredElement="ddfce40f-0dea-4c6c-9202-7ca8cbd89af8">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="ddfce40f-0dea-4c6c-9202-7ca8cbd89af8" name="V" templateParameter="88209585-a05c-4039-a913-6b87080cc2bc"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="81f5d985-8f06-4244-a57e-aced48ec7ada" isSubstitutable="true" general="7aeba934-44c6-42f4-9082-79695a7c74c4"/>
            <interfaceRealization xmi:id="23ef5359-ed32-4964-b3e8-7369a406e3dc" name="" supplier="5cfc5135-5649-495f-8f1e-26de7fb7bc4d" client="aacc598e-b958-4650-92ff-42b0caf1811e" contract="5cfc5135-5649-495f-8f1e-26de7fb7bc4d"/>
            <interfaceRealization xmi:id="70a95cc6-9976-41b3-b1df-e1ca2be4ab95" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="aacc598e-b958-4650-92ff-42b0caf1811e" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="fd72a467-9131-44c3-8e05-fa2705b36629" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="aacc598e-b958-4650-92ff-42b0caf1811e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="4bda16be-528d-4650-829a-8241007aaed3" name="SubMap" visibility="private" clientDependency="8a5b5ea3-aeb6-40e2-8fda-f5c328c8cc8c 39ce685a-badc-4a5b-9c64-6758a1de44c1">
              <generalization xmi:id="fc514167-4eca-4999-8424-6c0a93055dc7" isSubstitutable="true" general="7aeba934-44c6-42f4-9082-79695a7c74c4"/>
              <interfaceRealization xmi:id="39ce685a-badc-4a5b-9c64-6758a1de44c1" name="" supplier="5cfc5135-5649-495f-8f1e-26de7fb7bc4d" client="4bda16be-528d-4650-829a-8241007aaed3" contract="5cfc5135-5649-495f-8f1e-26de7fb7bc4d"/>
              <interfaceRealization xmi:id="8a5b5ea3-aeb6-40e2-8fda-f5c328c8cc8c" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4bda16be-528d-4650-829a-8241007aaed3" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="bb0df9e1-55e1-4043-ba54-1654d2d9c970" name="EntrySetView" visibility="private">
                <generalization xmi:id="2a04d894-d5fd-4733-9cf8-5320f05a65ec" isSubstitutable="true" general="01481a34-3b75-4493-84ca-4519f1a2e4fa"/>
              </nestedClassifier>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="5ed3e8d4-91ac-436e-b235-cbf529835e8f" name="EntryIterator" visibility="private">
              <generalization xmi:id="5ece3ec0-9ff3-4200-acc7-e58ec36e5a95" isSubstitutable="true" general="83980325-f97b-436c-9d86-e7e7e6939a60"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="d59b2450-4641-43a3-82d5-66e76424a9c5" name="KeyIterator" visibility="private">
              <generalization xmi:id="a75fa98b-bf56-4e97-a126-771285756ba5" isSubstitutable="true" general="828973fc-496f-4657-b9bf-49e1a59ea1d5"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="74528691-900a-4076-a3a2-8f82729ad63b" name="ValueIterator" visibility="private">
              <generalization xmi:id="ec56fea1-dd18-48cf-8ce0-478c1af10183" isSubstitutable="true" general="4a88c391-5956-4a97-b4c5-c778f75f157e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="4730858f-56f4-4c68-a873-b311b41b37b0" name="SubMapEntryIterator" visibility="private">
              <generalization xmi:id="18d50995-9605-499d-9f26-fb7dd350b769" isSubstitutable="true" general="83980325-f97b-436c-9d86-e7e7e6939a60"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="f84495b9-91de-4b43-89ee-a7c915ab5c4f" name="Entry" visibility="package" clientDependency="96fb4785-d9bd-4b82-8869-b4e62a9f4d05">
              <ownedComment xmi:id="c6100a61-c7ba-4266-857d-464ae0b3e795" body="Node in the Tree.  Doubles as a means to pass key-value pairs back to&#xA;user (see Map.Entry).&#xA;" annotatedElement="f84495b9-91de-4b43-89ee-a7c915ab5c4f"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="d6316489-6872-4511-9e29-d447bd0c4f68" name="" parameter="6134ac70-59dc-49cd-a18f-95fb2bead45f da97dbe9-2cc9-4061-87e5-51cb5bb0828e">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="6134ac70-59dc-49cd-a18f-95fb2bead45f" parameteredElement="57344de7-21bd-4bec-bcb3-d0d03c94b76b">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="57344de7-21bd-4bec-bcb3-d0d03c94b76b" name="K" templateParameter="6134ac70-59dc-49cd-a18f-95fb2bead45f"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="da97dbe9-2cc9-4061-87e5-51cb5bb0828e" parameteredElement="032313fe-0901-40d7-b3e3-eadda814d60c">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="032313fe-0901-40d7-b3e3-eadda814d60c" name="V" templateParameter="da97dbe9-2cc9-4061-87e5-51cb5bb0828e"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="96fb4785-d9bd-4b82-8869-b4e62a9f4d05" name="" supplier="5bebc1fb-871c-4596-8648-6ad46faeacab" client="f84495b9-91de-4b43-89ee-a7c915ab5c4f" contract="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ec50bfbe-27f5-436e-b0ef-597a7975f6a2" name="PrivateEntryIterator" visibility="private" clientDependency="f2dd534a-4979-4e74-ba2f-51492f850245" isAbstract="true">
              <ownedComment xmi:id="013dbf83-2cdc-4d16-aa1c-0aab72da8a62" body="TreeMap Iterator.&#xA;" annotatedElement="ec50bfbe-27f5-436e-b0ef-597a7975f6a2"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="d3b3fe15-6155-4eda-a308-89f7d8f408a4" name="" parameter="c59750f5-d765-4382-90ab-8167ab831fc9">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="c59750f5-d765-4382-90ab-8167ab831fc9" parameteredElement="dcf5d96c-56be-4166-bf8f-ecb355f10ab6">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="dcf5d96c-56be-4166-bf8f-ecb355f10ab6" name="T" templateParameter="c59750f5-d765-4382-90ab-8167ab831fc9"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="f2dd534a-4979-4e74-ba2f-51492f850245" name="" supplier="15581cb3-f33d-4deb-9456-fe83f0817c37" client="ec50bfbe-27f5-436e-b0ef-597a7975f6a2" contract="15581cb3-f33d-4deb-9456-fe83f0817c37"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="600b6552-d0a3-48c5-8af5-2e6235d2211d" name="MissingResourceException">
            <ownedComment xmi:id="7f429ba3-8c45-4182-8260-22b5ce022bb1" body="Signals that a resource is missing.&#xA;@see java.lang.Exception&#xA;@see ResourceBundle&#xA;@version     1.16, 12/19/03&#xA;@author      Mark Davis&#xA;@since       JDK1.1&#xA;" annotatedElement="600b6552-d0a3-48c5-8af5-2e6235d2211d"/>
            <generalization xmi:id="05782cbb-4287-4fc7-bdee-c5c5034e8633" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="de16684e-69fa-4465-bde4-82eea2873220" name="HashIterator&lt;Entry&lt;K, V>>">
            <templateBinding xmi:id="2c403e87-75c4-40c6-a64e-f950688936f4" signature="677cb0bc-87fb-4737-9b5e-39b2c262fcc6">
              <parameterSubstitution xmi:id="a59cb54c-e11b-4c13-a21d-72e513b94c01" formal="72df0f7b-e9b3-413b-9c16-e63dde3abe0a" actual="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e2439af1-573c-4d28-b5b3-5b73b5c9e64b" name="AbstractSet&lt;Object>">
            <templateBinding xmi:id="a8e8f732-cd90-4948-865e-e6e2bff0828f" signature="77607dee-756d-445e-96f4-9b3b4e6fb80b">
              <parameterSubstitution xmi:id="89bea1de-ea6c-408b-952e-c133e8e3d7cc" formal="1c9b3942-53c2-4539-853b-a9aae2736fa2" actual="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="401062e2-18c7-4e0e-91d0-8111f17f526b" name="EnumMapIterator&lt;Entry&lt;K, V>>">
            <templateBinding xmi:id="fe3155c1-e43a-42e1-bc19-188230ec4956" signature="150e524f-7dee-4b7d-b793-886a51284c29">
              <parameterSubstitution xmi:id="113f8517-1d9f-4a07-bd20-baa6f15c9be1" formal="fc0ff6cd-6d3d-4473-bce8-82bf97987257" actual="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ec29d9fd-f66a-4a01-a246-04b974e8c332" name="AbstractCollection&lt;E>">
            <templateBinding xmi:id="5c8c87e3-76ed-46d0-8fbe-8b7211c0d93f" signature="d64b29f5-bca8-49c3-8271-3097b690c222">
              <parameterSubstitution xmi:id="7e852416-452e-4665-a276-a70017c57869" formal="2794615a-0f57-4cbc-82eb-10061cb9e375" actual="5ca5474a-595e-4c8a-832a-d4a49fa5138c"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7682818a-d322-4b2e-8cd4-90ffdf49869f" name="IllegalFormatPrecisionException">
            <ownedComment xmi:id="687bce51-1265-470a-a4e4-17836c0a935b" body="Unchecked exception thrown when the precision is a negative value other than&#xA;&lt;tt>-1&lt;/tt>, the conversion does not support a precision, or the value is&#xA;otherwise unsupported.&#xA;&#xA;@version &#x9;1.4, 06/07/04&#xA;@since 1.5&#xA;" annotatedElement="7682818a-d322-4b2e-8cd4-90ffdf49869f"/>
            <generalization xmi:id="2bb06954-8e2a-427f-8d5e-32c5822b9918" isSubstitutable="true" general="615b003b-a7bd-4b48-ba53-15e2ad73fd34"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7e9d3e75-5f65-4023-864a-40b1867da1e6" name="SubList&lt;E>">
            <templateBinding xmi:id="b9f90e91-6d82-4c44-aa98-189c8fcd8449" signature="780267f3-55ab-45b6-89e9-1143c500ab1e">
              <parameterSubstitution xmi:id="20088174-70ce-4710-93cf-469b0bebdaec" formal="373557d7-97c2-4a83-8366-5621b3e7c381" actual="0adb7c5e-2ffe-4a72-9415-fe0a2c9c820c"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="a9bb4bd7-88a8-45fe-9d17-2892204cd67b" name="ListIterator" isAbstract="true">
            <ownedComment xmi:id="f2722f76-776d-4812-ad9c-08032825d4de" body="An iterator for lists that allows the programmer&#xA;to traverse the list in either direction, modify&#xA;the list during iteration, and obtain the iterator's&#xA;current position in the list. A &lt;TT>ListIterator&lt;/TT>&#xA;has no current element; its &lt;I>cursor position&lt;/I> always&#xA;lies between the element that would be returned by a call&#xA;to &lt;TT>previous()&lt;/TT> and the element that would be&#xA;returned by a call to &lt;TT>next()&lt;/TT>. In a list of&#xA;length &lt;TT>n&lt;/TT>, there are &lt;TT>n+1&lt;/TT> valid&#xA;index values, from &lt;TT>0&lt;/TT> to &lt;TT>n&lt;/TT>, inclusive.&#xA;&lt;PRE>&#xA;&#xA;Element(0)   Element(1)   Element(2)   ... Element(n)&#xA;^            ^            ^            ^               ^&#xA;Index: 0            1            2            3               n+1&#xA;&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;Note that the {@link #remove} and {@link #set(Object)} methods are&#xA;&lt;i>not&lt;/i> defined in terms of the cursor position;  they are defined to&#xA;operate on the last element returned by a call to {@link #next} or {@link&#xA;#previous()}.&#xA;&lt;P>&#xA;This interface is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.23, 12/19/03&#xA;@see Collection&#xA;@see List&#xA;@see Iterator&#xA;@see Enumeration&#xA;@since   1.2&#xA;" annotatedElement="a9bb4bd7-88a8-45fe-9d17-2892204cd67b"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="07f07769-94bd-4c3c-88a2-9d24128c92c6" name="" parameter="8cf5f9f8-07ce-4ffa-84b0-94b9c208492b">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="8cf5f9f8-07ce-4ffa-84b0-94b9c208492b" parameteredElement="4f92f6cb-6026-4111-b6b8-7eb53ba8f2f9">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="4f92f6cb-6026-4111-b6b8-7eb53ba8f2f9" name="E" templateParameter="8cf5f9f8-07ce-4ffa-84b0-94b9c208492b"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="e161017f-80d4-4e5f-8896-58507c948d51" isSubstitutable="true" general="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="18193b0c-b68c-4a5e-ba9a-01ccc68917e6" name="ArrayList" clientDependency="4c2a99e9-2ef5-4fe7-bf03-175e2c751687 018c4d32-9f48-43d9-a746-cde1f44720a4 0acd2a0e-b947-45c9-83d2-30a10e7680b5 6712e245-b4c1-4465-a116-34547de7b857">
            <ownedComment xmi:id="af715125-2272-4b9f-b13e-8407f75b1ad4" body="Resizable-array implementation of the &lt;tt>List&lt;/tt> interface.  Implements&#xA;all optional list operations, and permits all elements, including&#xA;&lt;tt>null&lt;/tt>.  In addition to implementing the &lt;tt>List&lt;/tt> interface,&#xA;this class provides methods to manipulate the size of the array that is&#xA;used internally to store the list.  (This class is roughly equivalent to&#xA;&lt;tt>Vector&lt;/tt>, except that it is unsynchronized.)&lt;p>&#xA;&#xA;The &lt;tt>size&lt;/tt>, &lt;tt>isEmpty&lt;/tt>, &lt;tt>get&lt;/tt>, &lt;tt>set&lt;/tt>,&#xA;&lt;tt>iterator&lt;/tt>, and &lt;tt>listIterator&lt;/tt> operations run in constant&#xA;time.  The &lt;tt>add&lt;/tt> operation runs in &lt;i>amortized constant time&lt;/i>,&#xA;that is, adding n elements requires O(n) time.  All of the other operations&#xA;run in linear time (roughly speaking).  The constant factor is low compared&#xA;to that for the &lt;tt>LinkedList&lt;/tt> implementation.&lt;p>&#xA;&#xA;Each &lt;tt>ArrayList&lt;/tt> instance has a &lt;i>capacity&lt;/i>.  The capacity is&#xA;the size of the array used to store the elements in the list.  It is always&#xA;at least as large as the list size.  As elements are added to an ArrayList,&#xA;its capacity grows automatically.  The details of the growth policy are not&#xA;specified beyond the fact that adding an element has constant amortized&#xA;time cost.&lt;p>&#xA;&#xA;An application can increase the capacity of an &lt;tt>ArrayList&lt;/tt> instance&#xA;before adding a large number of elements using the &lt;tt>ensureCapacity&lt;/tt>&#xA;operation.  This may reduce the amount of incremental reallocation.&lt;p>&#xA;&#xA;&lt;strong>Note that this implementation is not synchronized.&lt;/strong> If&#xA;multiple threads access an &lt;tt>ArrayList&lt;/tt> instance concurrently, and at&#xA;least one of the threads modifies the list structurally, it &lt;i>must&lt;/i> be&#xA;synchronized externally.  (A structural modification is any operation that&#xA;adds or deletes one or more elements, or explicitly resizes the backing&#xA;array; merely setting the value of an element is not a structural&#xA;modification.)  This is typically accomplished by synchronizing on some&#xA;object that naturally encapsulates the list.  If no such object exists, the&#xA;list should be &quot;wrapped&quot; using the &lt;tt>Collections.synchronizedList&lt;/tt>&#xA;method.  This is best done at creation time, to prevent accidental&#xA;unsynchronized access to the list:&#xA;&lt;pre>&#xA;List list = Collections.synchronizedList(new ArrayList(...));&#xA;&lt;/pre>&lt;p>&#xA;&#xA;The iterators returned by this class's &lt;tt>iterator&lt;/tt> and&#xA;&lt;tt>listIterator&lt;/tt> methods are &lt;i>fail-fast&lt;/i>: if list is structurally&#xA;modified at any time after the iterator is created, in any way except&#xA;through the iterator's own remove or add methods, the iterator will throw a&#xA;ConcurrentModificationException.  Thus, in the face of concurrent&#xA;modification, the iterator fails quickly and cleanly, rather than risking&#xA;arbitrary, non-deterministic behavior at an undetermined time in the&#xA;future.&lt;p>&#xA;&#xA;Note that the fail-fast behavior of an iterator cannot be guaranteed&#xA;as it is, generally speaking, impossible to make any hard guarantees in the&#xA;presence of unsynchronized concurrent modification.  Fail-fast iterators&#xA;throw &lt;tt>ConcurrentModificationException&lt;/tt> on a best-effort basis.&#xA;Therefore, it would be wrong to write a program that depended on this&#xA;exception for its correctness: &lt;i>the fail-fast behavior of iterators&#xA;should be used only to detect bugs.&lt;/i>&lt;p>&#xA;&#xA;This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@author  Neal Gafter&#xA;@version 1.47, 12/19/03&#xA;@see&#x9;    Collection&#xA;@see&#x9;    List&#xA;@see&#x9;    LinkedList&#xA;@see&#x9;    Vector&#xA;@see&#x9;    Collections#synchronizedList(List)&#xA;@since   1.2&#xA;" annotatedElement="18193b0c-b68c-4a5e-ba9a-01ccc68917e6"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="e3aef34a-ec1b-41d7-99c0-d89d511ba8a5" name="" parameter="c58d8d34-5a4c-4b67-9862-1390b6189484">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="c58d8d34-5a4c-4b67-9862-1390b6189484" parameteredElement="3362d582-3e64-49ac-9eec-e7368b953211">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="3362d582-3e64-49ac-9eec-e7368b953211" name="E" templateParameter="c58d8d34-5a4c-4b67-9862-1390b6189484"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="03ce875d-2dac-4fd5-830c-6609ad1fa6c9" isSubstitutable="true" general="ee758153-f931-43ca-bcea-40b9d95c713b"/>
            <interfaceRealization xmi:id="4c2a99e9-2ef5-4fe7-bf03-175e2c751687" name="" supplier="18dc6102-a040-4ae1-aefe-698abc18de28" client="18193b0c-b68c-4a5e-ba9a-01ccc68917e6" contract="18dc6102-a040-4ae1-aefe-698abc18de28"/>
            <interfaceRealization xmi:id="0acd2a0e-b947-45c9-83d2-30a10e7680b5" name="" supplier="29add607-d540-4560-b2b3-2e3c9d7f8dd2" client="18193b0c-b68c-4a5e-ba9a-01ccc68917e6" contract="29add607-d540-4560-b2b3-2e3c9d7f8dd2"/>
            <interfaceRealization xmi:id="6712e245-b4c1-4465-a116-34547de7b857" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="18193b0c-b68c-4a5e-ba9a-01ccc68917e6" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="018c4d32-9f48-43d9-a746-cde1f44720a4" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="18193b0c-b68c-4a5e-ba9a-01ccc68917e6" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="98411b27-4371-4ec2-bc44-d88236f06e02" name="EnumMapIterator&lt;V>">
            <templateBinding xmi:id="087fae52-3a0c-4043-9135-77c237549f9a" signature="150e524f-7dee-4b7d-b793-886a51284c29">
              <parameterSubstitution xmi:id="825c78ed-c51d-4ce1-80cb-f59e452186f8" formal="fc0ff6cd-6d3d-4473-bce8-82bf97987257" actual="26b6c8b6-c70e-48b5-84d1-02f0bbef16c1"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7514b377-7173-409f-848d-40b75e749004" name="Timer">
            <ownedComment xmi:id="e937a928-af60-40a9-9919-21588ff1260f" body="A facility for threads to schedule tasks for future execution in a&#xA;background thread.  Tasks may be scheduled for one-time execution, or for&#xA;repeated execution at regular intervals.&#xA;&#xA;&lt;p>Corresponding to each &lt;tt>Timer&lt;/tt> object is a single background&#xA;thread that is used to execute all of the timer's tasks, sequentially.&#xA;Timer tasks should complete quickly.  If a timer task takes excessive time&#xA;to complete, it &quot;hogs&quot; the timer's task execution thread.  This can, in&#xA;turn, delay the execution of subsequent tasks, which may &quot;bunch up&quot; and&#xA;execute in rapid succession when (and if) the offending task finally&#xA;completes.&#xA;&#xA;&lt;p>After the last live reference to a &lt;tt>Timer&lt;/tt> object goes away&#xA;&lt;i>and&lt;/i> all outstanding tasks have completed execution, the timer's task&#xA;execution thread terminates gracefully (and becomes subject to garbage&#xA;collection).  However, this can take arbitrarily long to occur.  By&#xA;default, the task execution thread does not run as a &lt;i>daemon thread&lt;/i>,&#xA;so it is capable of keeping an application from terminating.  If a caller&#xA;wants to terminate a timer's task execution thread rapidly, the caller&#xA;should invoke the timer's &lt;tt>cancel&lt;/tt> method.&#xA;&#xA;&lt;p>If the timer's task execution thread terminates unexpectedly, for&#xA;example, because its &lt;tt>stop&lt;/tt> method is invoked, any further&#xA;attempt to schedule a task on the timer will result in an&#xA;&lt;tt>IllegalStateException&lt;/tt>, as if the timer's &lt;tt>cancel&lt;/tt>&#xA;method had been invoked.&#xA;&#xA;&lt;p>This class is thread-safe: multiple threads can share a single&#xA;&lt;tt>Timer&lt;/tt> object without the need for external synchronization.&#xA;&#xA;&lt;p>This class does &lt;i>not&lt;/i> offer real-time guarantees: it schedules&#xA;tasks using the &lt;tt>Object.wait(long)&lt;/tt> method.&#xA;&#xA;&lt;p>Implementation note: This class scales to large numbers of concurrently&#xA;scheduled tasks (thousands should present no problem).  Internally,&#xA;it uses a binary heap to represent its task queue, so the cost to schedule&#xA;a task is O(log n), where n is the number of concurrently scheduled tasks.&#xA;&#xA;&lt;p>Implementation note: All constructors start a timer thread.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.17, 04/12/04&#xA;@see     TimerTask&#xA;@see     Object#wait(long)&#xA;@since   1.3&#xA;" annotatedElement="7514b377-7173-409f-848d-40b75e749004"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="cb8957a3-88ce-424a-874e-fe550df6a59e" name="HashIterator&lt;K>">
            <templateBinding xmi:id="2fcd2393-888c-4773-b5fb-387d51e124ff" signature="677cb0bc-87fb-4737-9b5e-39b2c262fcc6">
              <parameterSubstitution xmi:id="708ac342-14ac-46d6-bf67-dd09dfd8daab" formal="72df0f7b-e9b3-413b-9c16-e63dde3abe0a" actual="114d2aed-8b64-42ba-a60d-1f9c42abf085"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="423d4d2d-9b40-40ee-b18f-9a9ca576b2ab" name="Observable">
            <ownedComment xmi:id="ed1258bc-b5fb-418f-b3fd-72e618c80cb2" body="This class represents an observable object, or &quot;data&quot;&#xA;in the model-view paradigm. It can be subclassed to represent an&#xA;object that the application wants to have observed.&#xA;&lt;p>&#xA;An observable object can have one or more observers. An observer&#xA;may be any object that implements interface &lt;tt>Observer&lt;/tt>. After an&#xA;observable instance changes, an application calling the&#xA;&lt;code>Observable&lt;/code>'s &lt;code>notifyObservers&lt;/code> method&#xA;causes all of its observers to be notified of the change by a call&#xA;to their &lt;code>update&lt;/code> method.&#xA;&lt;p>&#xA;The order in which notifications will be delivered is unspecified.&#xA;The default implementation provided in the Observable class will&#xA;notify Observers in the order in which they registered interest, but&#xA;subclasses may change this order, use no guaranteed order, deliver&#xA;notifications on separate threads, or may guarantee that their&#xA;subclass follows this order, as they choose.&#xA;&lt;p>&#xA;Note that this notification mechanism is has nothing to do with threads&#xA;and is completely separate from the &lt;tt>wait&lt;/tt> and &lt;tt>notify&lt;/tt>&#xA;mechanism of class &lt;tt>Object&lt;/tt>.&#xA;&lt;p>&#xA;When an observable object is newly created, its set of observers is&#xA;empty. Two observers are considered the same if and only if the&#xA;&lt;tt>equals&lt;/tt> method returns true for them.&#xA;&#xA;@author  Chris Warth&#xA;@version 1.38, 01/12/04&#xA;@see     java.util.Observable#notifyObservers()&#xA;@see     java.util.Observable#notifyObservers(java.lang.Object)&#xA;@see     java.util.Observer&#xA;@see     java.util.Observer#update(java.util.Observable, java.lang.Object)&#xA;@since   JDK1.0&#xA;" annotatedElement="423d4d2d-9b40-40ee-b18f-9a9ca576b2ab"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ee2ccf38-54f5-4a29-afa7-dd4226c529b8" name="JumboEnumSet" visibility="package">
            <ownedComment xmi:id="3950b043-c901-490c-afbd-56ee0ae45285" body="Private implementation class for EnumSet, for &quot;jumbo&quot; enum types&#xA;(i.e., those with more than 64 elements).&#xA;&#xA;@author Josh Bloch&#xA;@since 1.5&#xA;@serial exclude&#xA;" annotatedElement="ee2ccf38-54f5-4a29-afa7-dd4226c529b8"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="4e0a440b-9b1e-4d23-b8f5-609bb7a7b600" name="" parameter="8cf8a53b-6cc0-480d-9611-9b02f3cd495b">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="8cf8a53b-6cc0-480d-9611-9b02f3cd495b" parameteredElement="b4678774-33d3-49b2-bd1e-e43970c50d5c" constrainingClassifier="8d507840-0689-43a1-af5d-92da8e7ac7e4">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="b4678774-33d3-49b2-bd1e-e43970c50d5c" name="E" templateParameter="8cf8a53b-6cc0-480d-9611-9b02f3cd495b"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="5e569d1b-15a1-4359-8797-24a3c0dd6ec1" isSubstitutable="true" general="9ad8d964-4efc-4340-b37c-fe6533573abe"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="731b14e9-6ad2-44e2-932f-de4d386f4509" name="EnumSetIterator" visibility="private" clientDependency="40a5922d-bbd2-421e-95a4-783ee074afbe">
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="c6057504-83c3-414f-a064-0a01bac88c4b" name="" parameter="c46909fa-43ba-44d9-835d-6eb2bb39d0fb">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="c46909fa-43ba-44d9-835d-6eb2bb39d0fb" parameteredElement="e3a0b8f7-f7ee-4a1f-9ea9-66dfb547652a" constrainingClassifier="8d507840-0689-43a1-af5d-92da8e7ac7e4">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="e3a0b8f7-f7ee-4a1f-9ea9-66dfb547652a" name="E" templateParameter="c46909fa-43ba-44d9-835d-6eb2bb39d0fb"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="40a5922d-bbd2-421e-95a4-783ee074afbe" name="" supplier="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f" client="731b14e9-6ad2-44e2-932f-de4d386f4509" contract="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0b72ae5a-6f72-4e38-a87b-ff60c2bf8d48" name="Collections">
            <ownedComment xmi:id="62dbb7c8-9f39-4d6d-9d9a-596f2b26b50f" body="This class consists exclusively of static methods that operate on or return&#xA;collections.  It contains polymorphic algorithms that operate on&#xA;collections, &quot;wrappers&quot;, which return a new collection backed by a&#xA;specified collection, and a few other odds and ends.&#xA;&#xA;&lt;p>The methods of this class all throw a &lt;tt>NullPointerException&lt;/tt>&#xA;if the collections or class objects provided to them are null.&#xA;&#xA;&lt;p>The documentation for the polymorphic algorithms contained in this class&#xA;generally includes a brief description of the &lt;i>implementation&lt;/i>.  Such&#xA;descriptions should be regarded as &lt;i>implementation notes&lt;/i>, rather than&#xA;parts of the &lt;i>specification&lt;/i>.  Implementors should feel free to&#xA;substitute other algorithms, so long as the specification itself is adhered&#xA;to.  (For example, the algorithm used by &lt;tt>sort&lt;/tt> does not have to be&#xA;a mergesort, but it does have to be &lt;i>stable&lt;/i>.)&#xA;&#xA;&lt;p>The &quot;destructive&quot; algorithms contained in this class, that is, the&#xA;algorithms that modify the collection on which they operate, are specified&#xA;to throw &lt;tt>UnsupportedOperationException&lt;/tt> if the collection does not&#xA;support the appropriate mutation primitive(s), such as the &lt;tt>set&lt;/tt>&#xA;method.  These algorithms may, but are not required to, throw this&#xA;exception if an invocation would have no effect on the collection.  For&#xA;example, invoking the &lt;tt>sort&lt;/tt> method on an unmodifiable list that is&#xA;already sorted may or may not throw &lt;tt>UnsupportedOperationException&lt;/tt>.&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@author  Neal Gafter&#xA;@version 1.89, 07/28/04&#xA;@see&#x9;    Collection&#xA;@see&#x9;    Set&#xA;@see&#x9;    List&#xA;@see&#x9;    Map&#xA;@since   1.2&#xA;" annotatedElement="0b72ae5a-6f72-4e38-a87b-ff60c2bf8d48"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="26f4af07-264b-46ec-aa2c-4f63ca85a045" name="UnmodifiableCollection" visibility="package" clientDependency="9dde8ed5-2f2a-47a3-bce1-0df46bf86c29 2e361997-ca86-40b6-a03e-7dcae413eba9">
              <ownedComment xmi:id="2699df9b-8697-4d65-8cea-5f3949be622d" body="@serial include&#xA;" annotatedElement="26f4af07-264b-46ec-aa2c-4f63ca85a045"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="929b14cc-f46d-4baf-8e8e-2fa25991930c" name="" parameter="0e6c63ce-e338-4546-ba33-c6783b8e02bc">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="0e6c63ce-e338-4546-ba33-c6783b8e02bc" parameteredElement="d60430b0-902c-4631-b22d-6397e3a68a2b">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="d60430b0-902c-4631-b22d-6397e3a68a2b" name="E" templateParameter="0e6c63ce-e338-4546-ba33-c6783b8e02bc"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="9dde8ed5-2f2a-47a3-bce1-0df46bf86c29" name="" supplier="f2ecd2a3-8039-41dd-a004-e978e2a488aa" client="26f4af07-264b-46ec-aa2c-4f63ca85a045" contract="f2ecd2a3-8039-41dd-a004-e978e2a488aa"/>
              <interfaceRealization xmi:id="2e361997-ca86-40b6-a03e-7dcae413eba9" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="26f4af07-264b-46ec-aa2c-4f63ca85a045" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ac096129-5327-41b3-be44-e0173b959774" name="UnmodifiableSet" visibility="package" clientDependency="e257963f-d04d-4389-8333-50cf5346b764 df07cdf6-cd13-4024-bb89-1871eeef8db2">
              <ownedComment xmi:id="8c62881d-bb9e-4042-8a65-898fe18dc804" body="@serial include&#xA;" annotatedElement="ac096129-5327-41b3-be44-e0173b959774"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="8db58ba8-402e-442b-9ad2-8d6abd1b871d" name="" parameter="21f29049-8774-432f-9f90-528482b25557">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="21f29049-8774-432f-9f90-528482b25557" parameteredElement="0726ea0b-b9c0-432e-a09f-b4ed7a51be2a">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="0726ea0b-b9c0-432e-a09f-b4ed7a51be2a" name="E" templateParameter="21f29049-8774-432f-9f90-528482b25557"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="e54ba86f-2c83-4596-adec-eafef89a7043" isSubstitutable="true" general="8ab392e3-9e74-4d89-b2f5-b170c02d13e6"/>
              <interfaceRealization xmi:id="df07cdf6-cd13-4024-bb89-1871eeef8db2" name="" supplier="baa392ca-bff3-4d7d-b407-489a8610c855" client="ac096129-5327-41b3-be44-e0173b959774" contract="baa392ca-bff3-4d7d-b407-489a8610c855"/>
              <interfaceRealization xmi:id="e257963f-d04d-4389-8333-50cf5346b764" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ac096129-5327-41b3-be44-e0173b959774" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a4ad668d-7a81-4ef9-b1d9-5d39a9308143" name="UnmodifiableSortedSet" visibility="package" clientDependency="3472c149-b2df-4f21-a8fb-c7aadde46140 cca11a87-72fa-4d42-b8ee-b7b26e304267">
              <ownedComment xmi:id="db566a61-d16d-48f9-848d-c961253d3a72" body="@serial include&#xA;" annotatedElement="a4ad668d-7a81-4ef9-b1d9-5d39a9308143"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="5d6fe2ee-4460-4f43-9eac-b622956f1bd7" name="" parameter="918f24d7-8fa7-4198-a267-c84c6e96470d">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="918f24d7-8fa7-4198-a267-c84c6e96470d" parameteredElement="25c13eb7-e4ee-462c-8671-5bcfbf133da3">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="25c13eb7-e4ee-462c-8671-5bcfbf133da3" name="E" templateParameter="918f24d7-8fa7-4198-a267-c84c6e96470d"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="033b31d9-df8e-4952-8179-982711c81409" isSubstitutable="true" general="be44abbb-db62-43c6-9f76-682e3433ddef"/>
              <interfaceRealization xmi:id="3472c149-b2df-4f21-a8fb-c7aadde46140" name="" supplier="8f0b159d-1699-480f-949b-5de4e0916ac2" client="a4ad668d-7a81-4ef9-b1d9-5d39a9308143" contract="8f0b159d-1699-480f-949b-5de4e0916ac2"/>
              <interfaceRealization xmi:id="cca11a87-72fa-4d42-b8ee-b7b26e304267" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="a4ad668d-7a81-4ef9-b1d9-5d39a9308143" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="f8d6a8b2-8396-4b6c-acd7-9ce6f3fa0322" name="UnmodifiableList" visibility="package" clientDependency="0e37a0dd-aa1f-41c8-bd0a-e47974067c30">
              <ownedComment xmi:id="58e7351d-76ed-4b21-90fb-98efb62051e3" body="@serial include&#xA;" annotatedElement="f8d6a8b2-8396-4b6c-acd7-9ce6f3fa0322"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="aef94a6b-a8ad-4b4a-bf38-3a662d71d860" name="" parameter="68640416-b685-43b4-8244-824dbadbe291">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="68640416-b685-43b4-8244-824dbadbe291" parameteredElement="7799ffb1-f09b-4822-ab37-4a0f5d723827">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="7799ffb1-f09b-4822-ab37-4a0f5d723827" name="E" templateParameter="68640416-b685-43b4-8244-824dbadbe291"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="d967fa80-91a7-46de-bf9c-2dcab70cb0b8" isSubstitutable="true" general="8ab392e3-9e74-4d89-b2f5-b170c02d13e6"/>
              <interfaceRealization xmi:id="0e37a0dd-aa1f-41c8-bd0a-e47974067c30" name="" supplier="18dc6102-a040-4ae1-aefe-698abc18de28" client="f8d6a8b2-8396-4b6c-acd7-9ce6f3fa0322" contract="18dc6102-a040-4ae1-aefe-698abc18de28"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="6495b811-bdca-4d33-87c5-cfc704a941de" name="UnmodifiableRandomAccessList" visibility="package" clientDependency="1ed4fa37-b23d-4f81-88dc-6228049c2dbd">
              <ownedComment xmi:id="a84240f3-5b5c-4bc0-9ca8-51cf67fa6bb7" body="@serial include&#xA;" annotatedElement="6495b811-bdca-4d33-87c5-cfc704a941de"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="06042948-853f-43b6-bf7f-36c40d2587c1" name="" parameter="47773056-b71d-46df-bc5f-e4554b8b6df0">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="47773056-b71d-46df-bc5f-e4554b8b6df0" parameteredElement="4721260c-6317-4c75-8d72-2cc31fcb4581">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="4721260c-6317-4c75-8d72-2cc31fcb4581" name="E" templateParameter="47773056-b71d-46df-bc5f-e4554b8b6df0"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="b8e8c971-e107-4358-9a81-81fad7e771b4" isSubstitutable="true" general="afe51c31-bb81-4bc0-bef2-70b0adab40db"/>
              <interfaceRealization xmi:id="1ed4fa37-b23d-4f81-88dc-6228049c2dbd" name="" supplier="29add607-d540-4560-b2b3-2e3c9d7f8dd2" client="6495b811-bdca-4d33-87c5-cfc704a941de" contract="29add607-d540-4560-b2b3-2e3c9d7f8dd2"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="9552e173-04d8-4770-97c6-10c7682dfa2c" name="UnmodifiableMap" visibility="private" clientDependency="9f2aea00-0602-4f22-8d1c-f26165a8608e 06309aa5-3225-4530-85f5-6f8f32a6a2ba">
              <ownedComment xmi:id="338238b8-4953-4be2-8702-4446d916f576" body="@serial include&#xA;" annotatedElement="9552e173-04d8-4770-97c6-10c7682dfa2c"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="927c71e8-66b7-466a-af25-d1fd5b91c442" name="" parameter="cdf04a92-f595-4da5-ac7a-d642e2492e7f 0abac655-a6d9-4170-b989-cb4966875539">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="cdf04a92-f595-4da5-ac7a-d642e2492e7f" parameteredElement="8a7a3f6a-0fe2-45e6-b631-5e7bb0462dd5">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="8a7a3f6a-0fe2-45e6-b631-5e7bb0462dd5" name="K" templateParameter="cdf04a92-f595-4da5-ac7a-d642e2492e7f"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="0abac655-a6d9-4170-b989-cb4966875539" parameteredElement="af34ae65-9922-40ee-846a-779a83d3a717">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="af34ae65-9922-40ee-846a-779a83d3a717" name="V" templateParameter="0abac655-a6d9-4170-b989-cb4966875539"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="9f2aea00-0602-4f22-8d1c-f26165a8608e" name="" supplier="b5eaa913-ac40-4b35-bf06-e3638ddc059a" client="9552e173-04d8-4770-97c6-10c7682dfa2c" contract="b5eaa913-ac40-4b35-bf06-e3638ddc059a"/>
              <interfaceRealization xmi:id="06309aa5-3225-4530-85f5-6f8f32a6a2ba" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="9552e173-04d8-4770-97c6-10c7682dfa2c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="500591cc-a13f-49f4-9742-92ea3316b105" name="UnmodifiableEntrySet" visibility="package">
                <ownedComment xmi:id="2f8cb88e-3712-4cc6-8655-bef8e3d1fd72" body="We need this class in addition to UnmodifiableSet as&#xA;Map.Entries themselves permit modification of the backing Map&#xA;via their setValue operation.  This class is subtle: there are&#xA;many possible attacks that must be thwarted.&#xA;&#xA;@serial include&#xA;" annotatedElement="500591cc-a13f-49f4-9742-92ea3316b105"/>
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="387314bd-c078-42b6-be58-51d2592ee02c" name="" parameter="8771e305-2734-4188-b601-f566696be90c 846e5259-e11b-4211-8450-c3035379eaf7">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="8771e305-2734-4188-b601-f566696be90c" parameteredElement="532034e9-9cc2-473c-a520-5297224be00b">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="532034e9-9cc2-473c-a520-5297224be00b" name="K" templateParameter="8771e305-2734-4188-b601-f566696be90c"/>
                  </ownedParameter>
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="846e5259-e11b-4211-8450-c3035379eaf7" parameteredElement="55f9288b-8258-402f-99f4-3411854d4222">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="55f9288b-8258-402f-99f4-3411854d4222" name="V" templateParameter="846e5259-e11b-4211-8450-c3035379eaf7"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <generalization xmi:id="7e9157da-6c5c-425c-8b0a-483642daa582" isSubstitutable="true" general="d47ed060-e1d6-4597-9add-8a4b5af7b152"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="8f6c429d-88c6-456c-8b5c-042f1b00ed14" name="UnmodifiableEntry" visibility="private" clientDependency="249ec500-2b5e-4cf1-b5f1-e5023ef3626a">
                  <ownedComment xmi:id="2c87ffef-cdae-4deb-aa6a-3de7b8e7b738" body="This &quot;wrapper class&quot; serves two purposes: it prevents&#xA;the client from modifying the backing Map, by short-circuiting&#xA;the setValue method, and it protects the backing Map against&#xA;an ill-behaved Map.Entry that attempts to modify another&#xA;Map Entry when asked to perform an equality check.&#xA;" annotatedElement="8f6c429d-88c6-456c-8b5c-042f1b00ed14"/>
                  <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="42f8cfbe-7bf4-4bcf-b6e4-657eb46bd9cb" name="" parameter="350bc680-c92f-47ca-90ff-4ddff817a232 9d6bc39f-9b04-4d6f-ae53-da95a26a3b79">
                    <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="350bc680-c92f-47ca-90ff-4ddff817a232" parameteredElement="da8e4312-5ed2-4937-aa0c-481f053e8ee0">
                      <ownedParameteredElement xmi:type="uml:Class" xmi:id="da8e4312-5ed2-4937-aa0c-481f053e8ee0" name="K" templateParameter="350bc680-c92f-47ca-90ff-4ddff817a232"/>
                    </ownedParameter>
                    <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="9d6bc39f-9b04-4d6f-ae53-da95a26a3b79" parameteredElement="d1623bbe-e474-44f4-80ad-970de707569c">
                      <ownedParameteredElement xmi:type="uml:Class" xmi:id="d1623bbe-e474-44f4-80ad-970de707569c" name="V" templateParameter="9d6bc39f-9b04-4d6f-ae53-da95a26a3b79"/>
                    </ownedParameter>
                  </ownedTemplateSignature>
                  <interfaceRealization xmi:id="249ec500-2b5e-4cf1-b5f1-e5023ef3626a" name="" supplier="5bebc1fb-871c-4596-8648-6ad46faeacab" client="8f6c429d-88c6-456c-8b5c-042f1b00ed14" contract="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
                </nestedClassifier>
              </nestedClassifier>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="9995031b-8217-4af3-a8b6-b4af3840ce08" name="UnmodifiableSortedMap" visibility="package" clientDependency="7ca93310-8d75-484f-92b1-8d7f4a87aa9e 7325fefe-14df-467e-8328-5535b227416f">
              <ownedComment xmi:id="b6b5c6bb-6960-44e0-945e-6576c1f7701b" body="@serial include&#xA;" annotatedElement="9995031b-8217-4af3-a8b6-b4af3840ce08"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="b55347f6-9b87-4662-8b57-3e9f90a83ae8" name="" parameter="b6027d5b-7216-4a93-84f5-c29dcdf2844a 0db17797-d298-4fda-ba04-d656b81d5dbf">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="b6027d5b-7216-4a93-84f5-c29dcdf2844a" parameteredElement="c9b1c39f-1814-4592-92d8-85d432058e9d">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="c9b1c39f-1814-4592-92d8-85d432058e9d" name="K" templateParameter="b6027d5b-7216-4a93-84f5-c29dcdf2844a"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="0db17797-d298-4fda-ba04-d656b81d5dbf" parameteredElement="75ebb440-6b0e-4e24-ab2f-ac2881a42f4f">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="75ebb440-6b0e-4e24-ab2f-ac2881a42f4f" name="V" templateParameter="0db17797-d298-4fda-ba04-d656b81d5dbf"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="25269a3f-1b4e-455b-ae64-7c4762a7a451" isSubstitutable="true" general="62eedb88-3f85-49f1-87a0-dc45d81efd9e"/>
              <interfaceRealization xmi:id="7ca93310-8d75-484f-92b1-8d7f4a87aa9e" name="" supplier="5cfc5135-5649-495f-8f1e-26de7fb7bc4d" client="9995031b-8217-4af3-a8b6-b4af3840ce08" contract="5cfc5135-5649-495f-8f1e-26de7fb7bc4d"/>
              <interfaceRealization xmi:id="7325fefe-14df-467e-8328-5535b227416f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="9995031b-8217-4af3-a8b6-b4af3840ce08" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="fb3ba2e1-0a49-4eed-bc12-e60c18eaf487" name="SynchronizedCollection" visibility="package" clientDependency="30597bc8-a3fa-40fb-99d8-e5606167c85d 1fb237c8-d2e5-4bb5-b518-632c9794f4d6">
              <ownedComment xmi:id="c14eb111-e829-48cd-a692-8880e31dd47e" body="@serial include&#xA;" annotatedElement="fb3ba2e1-0a49-4eed-bc12-e60c18eaf487"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="b16eb85e-21c6-4d84-a691-e11d9914d7da" name="" parameter="b288c2ed-c541-45ca-89a5-6de0c263e348">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="b288c2ed-c541-45ca-89a5-6de0c263e348" parameteredElement="c4113dc6-823c-4577-ac5f-10cfb5a6673a">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="c4113dc6-823c-4577-ac5f-10cfb5a6673a" name="E" templateParameter="b288c2ed-c541-45ca-89a5-6de0c263e348"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="30597bc8-a3fa-40fb-99d8-e5606167c85d" name="" supplier="f2ecd2a3-8039-41dd-a004-e978e2a488aa" client="fb3ba2e1-0a49-4eed-bc12-e60c18eaf487" contract="f2ecd2a3-8039-41dd-a004-e978e2a488aa"/>
              <interfaceRealization xmi:id="1fb237c8-d2e5-4bb5-b518-632c9794f4d6" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="fb3ba2e1-0a49-4eed-bc12-e60c18eaf487" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="18446be2-5e5b-4d64-9a4a-94a53cc8ed7f" name="SynchronizedSet" visibility="package" clientDependency="a7949c6f-53f2-4edc-b9a3-5b74b5ef5620">
              <ownedComment xmi:id="e2f931cc-0969-42f6-968c-d101408b750f" body="@serial include&#xA;" annotatedElement="18446be2-5e5b-4d64-9a4a-94a53cc8ed7f"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="ac70e4b0-05c8-45ac-834a-3c351bb0b9a8" name="" parameter="5dd2fb91-29a8-450d-8fee-b5ed714883c2">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="5dd2fb91-29a8-450d-8fee-b5ed714883c2" parameteredElement="48970e5d-b79d-4bd9-901c-391d2c2394f4">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="48970e5d-b79d-4bd9-901c-391d2c2394f4" name="E" templateParameter="5dd2fb91-29a8-450d-8fee-b5ed714883c2"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="05563260-9418-43c9-9b6f-a30aeb8fa221" isSubstitutable="true" general="a785d4b8-5e5b-4095-ac03-7c1c8ed7e8b3"/>
              <interfaceRealization xmi:id="a7949c6f-53f2-4edc-b9a3-5b74b5ef5620" name="" supplier="baa392ca-bff3-4d7d-b407-489a8610c855" client="18446be2-5e5b-4d64-9a4a-94a53cc8ed7f" contract="baa392ca-bff3-4d7d-b407-489a8610c855"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ce6d014a-b500-4909-822b-747dab08d164" name="SynchronizedSortedSet" visibility="package" clientDependency="1086fd66-b9f1-4b2d-a0b9-aebc9ca0d7f7">
              <ownedComment xmi:id="b2a23c22-1284-498d-b516-dbf69f31a670" body="@serial include&#xA;" annotatedElement="ce6d014a-b500-4909-822b-747dab08d164"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="c29faa99-2981-4a3b-afd6-918d4136644a" name="" parameter="afb7e445-64fa-4db3-8ca0-e336b7ef2d5a">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="afb7e445-64fa-4db3-8ca0-e336b7ef2d5a" parameteredElement="96195437-5f58-4b3e-982f-1ad3335f173f">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="96195437-5f58-4b3e-982f-1ad3335f173f" name="E" templateParameter="afb7e445-64fa-4db3-8ca0-e336b7ef2d5a"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="f421c8ce-cb48-4db0-a35a-8bb2314ba608" isSubstitutable="true" general="631b8805-2210-45c5-a6fe-f0b25ba4c750"/>
              <interfaceRealization xmi:id="1086fd66-b9f1-4b2d-a0b9-aebc9ca0d7f7" name="" supplier="8f0b159d-1699-480f-949b-5de4e0916ac2" client="ce6d014a-b500-4909-822b-747dab08d164" contract="8f0b159d-1699-480f-949b-5de4e0916ac2"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="102a7b0a-a864-4128-aec1-9a59724d3eb6" name="SynchronizedList" visibility="package" clientDependency="94d85dba-1321-42af-b77e-4c513b5eff8c">
              <ownedComment xmi:id="4f887877-21c5-417c-91e6-69d1ddf9eb9b" body="@serial include&#xA;" annotatedElement="102a7b0a-a864-4128-aec1-9a59724d3eb6"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="a1d49a69-de1c-473d-a476-8efa76aca1f4" name="" parameter="06ed4895-8a7b-42ec-9f84-9a95d627d1c6">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="06ed4895-8a7b-42ec-9f84-9a95d627d1c6" parameteredElement="bcc3e3b8-dffa-445d-8edd-5f18ad0e3b80">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="bcc3e3b8-dffa-445d-8edd-5f18ad0e3b80" name="E" templateParameter="06ed4895-8a7b-42ec-9f84-9a95d627d1c6"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="64046b86-b551-46ce-9af0-d33917972e3d" isSubstitutable="true" general="a785d4b8-5e5b-4095-ac03-7c1c8ed7e8b3"/>
              <interfaceRealization xmi:id="94d85dba-1321-42af-b77e-4c513b5eff8c" name="" supplier="18dc6102-a040-4ae1-aefe-698abc18de28" client="102a7b0a-a864-4128-aec1-9a59724d3eb6" contract="18dc6102-a040-4ae1-aefe-698abc18de28"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="5c626519-7995-44f7-8ce6-160dcb841485" name="SynchronizedRandomAccessList" visibility="package" clientDependency="fbc69d21-6f8d-45f6-b2a5-0ed2ec082236">
              <ownedComment xmi:id="67ee38d5-fc72-4808-8be3-2d614a045ce4" body="@serial include&#xA;" annotatedElement="5c626519-7995-44f7-8ce6-160dcb841485"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="c47c5f94-f160-41f1-b2d1-3f326ab3bfd5" name="" parameter="a0d21862-c087-4b63-b1d6-1a478d7e8899">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="a0d21862-c087-4b63-b1d6-1a478d7e8899" parameteredElement="668ce3cd-134b-4ea5-9669-d314728e6cb2">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="668ce3cd-134b-4ea5-9669-d314728e6cb2" name="E" templateParameter="a0d21862-c087-4b63-b1d6-1a478d7e8899"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="0dd1a417-4b9e-4aed-835c-8f4bc01dc0cb" isSubstitutable="true" general="3ee30361-a9cb-4c3e-a8f6-3b75f53d3714"/>
              <interfaceRealization xmi:id="fbc69d21-6f8d-45f6-b2a5-0ed2ec082236" name="" supplier="29add607-d540-4560-b2b3-2e3c9d7f8dd2" client="5c626519-7995-44f7-8ce6-160dcb841485" contract="29add607-d540-4560-b2b3-2e3c9d7f8dd2"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ef58423d-3da9-4cb5-aad0-f83f1d5066b8" name="SynchronizedMap" visibility="private" clientDependency="c1a7bd8a-6565-4670-8fd1-3da837039949 a44c2f99-d324-4ce5-8ac2-836dc7555958">
              <ownedComment xmi:id="bd785e1c-9a41-4d34-9730-d1fd9b7f33a7" body="@serial include&#xA;" annotatedElement="ef58423d-3da9-4cb5-aad0-f83f1d5066b8"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="2832bd8d-9d23-452e-ad2f-aa90604384ce" name="" parameter="49af18cc-c027-495a-8c03-335654564b9d 753c3bff-67f5-4b79-ac13-e585116d0fe6">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="49af18cc-c027-495a-8c03-335654564b9d" parameteredElement="fe91c6ef-ad38-42fe-a014-2a05d20e9d20">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="fe91c6ef-ad38-42fe-a014-2a05d20e9d20" name="K" templateParameter="49af18cc-c027-495a-8c03-335654564b9d"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="753c3bff-67f5-4b79-ac13-e585116d0fe6" parameteredElement="b81407f2-b1f9-4013-a812-6e22d85190e4">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="b81407f2-b1f9-4013-a812-6e22d85190e4" name="V" templateParameter="753c3bff-67f5-4b79-ac13-e585116d0fe6"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="a44c2f99-d324-4ce5-8ac2-836dc7555958" name="" supplier="b5eaa913-ac40-4b35-bf06-e3638ddc059a" client="ef58423d-3da9-4cb5-aad0-f83f1d5066b8" contract="b5eaa913-ac40-4b35-bf06-e3638ddc059a"/>
              <interfaceRealization xmi:id="c1a7bd8a-6565-4670-8fd1-3da837039949" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ef58423d-3da9-4cb5-aad0-f83f1d5066b8" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="283fe7ce-6e89-41ea-a5a8-ee644078a97d" name="SynchronizedSortedMap" visibility="package" clientDependency="03cba3c7-1ec0-44f6-9be2-a87323b472d5">
              <ownedComment xmi:id="161f480b-d8b5-4419-99b1-057cbd8787bf" body="@serial include&#xA;" annotatedElement="283fe7ce-6e89-41ea-a5a8-ee644078a97d"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="05ba61a3-50d5-4882-a784-b45a7003158e" name="" parameter="17d19bff-9179-466b-801f-0764323fe9b6 b744cb55-eac7-4bbc-ac5a-aca680059181">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="17d19bff-9179-466b-801f-0764323fe9b6" parameteredElement="c955f574-4912-4417-89e1-dde77e1641a6">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="c955f574-4912-4417-89e1-dde77e1641a6" name="K" templateParameter="17d19bff-9179-466b-801f-0764323fe9b6"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="b744cb55-eac7-4bbc-ac5a-aca680059181" parameteredElement="7901f3fd-9b8e-4c36-9cd7-2113e4cb4882">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="7901f3fd-9b8e-4c36-9cd7-2113e4cb4882" name="V" templateParameter="b744cb55-eac7-4bbc-ac5a-aca680059181"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="6703e729-30b7-43a9-a43f-d186c35ce95f" isSubstitutable="true" general="b129e16d-0d3c-4043-a43b-a5f99de52331"/>
              <interfaceRealization xmi:id="03cba3c7-1ec0-44f6-9be2-a87323b472d5" name="" supplier="5cfc5135-5649-495f-8f1e-26de7fb7bc4d" client="283fe7ce-6e89-41ea-a5a8-ee644078a97d" contract="5cfc5135-5649-495f-8f1e-26de7fb7bc4d"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="bff83254-5939-4df4-a1ae-bf715677fd08" name="EmptySet" visibility="private" clientDependency="ebe5764f-a19b-4169-95b3-c8b01ae3a318">
              <ownedComment xmi:id="f396005b-7f9b-4a8f-846e-1ae0a7070999" body="@serial include&#xA;" annotatedElement="bff83254-5939-4df4-a1ae-bf715677fd08"/>
              <generalization xmi:id="52251c0c-f48c-4383-9b89-146e1559a466" isSubstitutable="true" general="e2439af1-573c-4d28-b5b3-5b73b5c9e64b"/>
              <interfaceRealization xmi:id="ebe5764f-a19b-4169-95b3-c8b01ae3a318" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="bff83254-5939-4df4-a1ae-bf715677fd08" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="6dfabc89-56a3-4a65-b450-d47f97f19b80" name="EmptyList" visibility="private" clientDependency="8505c86d-da86-44e0-8b62-7d85765f19fc 126c1a83-5edc-49e0-8d08-fffe79191c45">
              <ownedComment xmi:id="59583341-955e-4b36-ab98-74c014a5c295" body="@serial include&#xA;" annotatedElement="6dfabc89-56a3-4a65-b450-d47f97f19b80"/>
              <generalization xmi:id="49aca5c5-b03c-4a69-a1e7-12f01c1afc43" isSubstitutable="true" general="79c13599-0880-4e2b-957f-c08f90f04993"/>
              <interfaceRealization xmi:id="126c1a83-5edc-49e0-8d08-fffe79191c45" name="" supplier="29add607-d540-4560-b2b3-2e3c9d7f8dd2" client="6dfabc89-56a3-4a65-b450-d47f97f19b80" contract="29add607-d540-4560-b2b3-2e3c9d7f8dd2"/>
              <interfaceRealization xmi:id="8505c86d-da86-44e0-8b62-7d85765f19fc" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="6dfabc89-56a3-4a65-b450-d47f97f19b80" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8106b0b4-a245-4552-92ed-47b7e7b8329c" name="EmptyMap" visibility="private" clientDependency="e4e2596f-52fa-448e-a51f-519c0a1dd28c">
              <generalization xmi:id="bbbfef72-ae49-46d4-a910-013081327a17" isSubstitutable="true" general="ccccb4f4-615a-4880-9e4c-0021ac5929bb"/>
              <interfaceRealization xmi:id="e4e2596f-52fa-448e-a51f-519c0a1dd28c" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="8106b0b4-a245-4552-92ed-47b7e7b8329c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="37728cf8-ad38-4ee9-bab0-67a56c4d1924" name="SingletonSet" visibility="private" clientDependency="8e2c96cd-b290-48e7-b3f9-b81ecd31ca82">
              <ownedComment xmi:id="c81cd780-a488-4000-a190-5aab6e6b28d5" body="@serial include&#xA;" annotatedElement="37728cf8-ad38-4ee9-bab0-67a56c4d1924"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="1d29685f-98cb-45e1-8316-2ac84e06063d" name="" parameter="4ea8abc9-a963-4650-8a38-89dee04f1302">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="4ea8abc9-a963-4650-8a38-89dee04f1302" parameteredElement="fd4dcc3b-9e8f-434d-abf9-c05b1546254f">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="fd4dcc3b-9e8f-434d-abf9-c05b1546254f" name="E" templateParameter="4ea8abc9-a963-4650-8a38-89dee04f1302"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="10262790-8dbc-4240-b659-66489f38f67d" isSubstitutable="true" general="366a6b71-c7a9-4b22-95d5-74091ce96f5b"/>
              <interfaceRealization xmi:id="8e2c96cd-b290-48e7-b3f9-b81ecd31ca82" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="37728cf8-ad38-4ee9-bab0-67a56c4d1924" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="709de264-faa1-4381-b56a-8ad29d3c6af0" name="SingletonList" visibility="private" clientDependency="95344f2f-3bd1-4689-a419-69f6492c1004 0173b85a-332d-4810-b47d-cba51fc61bd3">
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="0c92bb95-667e-4004-ba00-3760079a3094" name="" parameter="8aa91ba5-3375-44ae-8af5-c6bbe624701e">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="8aa91ba5-3375-44ae-8af5-c6bbe624701e" parameteredElement="499d9efe-9dc4-4c3e-8be9-3b73336b116e">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="499d9efe-9dc4-4c3e-8be9-3b73336b116e" name="E" templateParameter="8aa91ba5-3375-44ae-8af5-c6bbe624701e"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="be7e21da-b3b9-44c1-944f-c60c26269803" isSubstitutable="true" general="ee758153-f931-43ca-bcea-40b9d95c713b"/>
              <interfaceRealization xmi:id="95344f2f-3bd1-4689-a419-69f6492c1004" name="" supplier="29add607-d540-4560-b2b3-2e3c9d7f8dd2" client="709de264-faa1-4381-b56a-8ad29d3c6af0" contract="29add607-d540-4560-b2b3-2e3c9d7f8dd2"/>
              <interfaceRealization xmi:id="0173b85a-332d-4810-b47d-cba51fc61bd3" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="709de264-faa1-4381-b56a-8ad29d3c6af0" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8106d5bb-fb55-4883-a8d2-1b0bcacd0c3c" name="SingletonMap" visibility="private" clientDependency="83014d52-536a-4c74-a6e2-d3d6b5fa0dc8">
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="61f06047-a0da-4546-a448-75ef0227da28" name="" parameter="b1eb32eb-f1ec-4847-b2b8-7a1a76160838 3d2747a2-bead-4f1c-b55f-5ca9a1188560">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="b1eb32eb-f1ec-4847-b2b8-7a1a76160838" parameteredElement="1f093dcc-fafa-4f84-9015-d3571c76e658">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="1f093dcc-fafa-4f84-9015-d3571c76e658" name="K" templateParameter="b1eb32eb-f1ec-4847-b2b8-7a1a76160838"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="3d2747a2-bead-4f1c-b55f-5ca9a1188560" parameteredElement="9cc8bab5-7181-4770-9ac8-5ed689cd4cb0">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="9cc8bab5-7181-4770-9ac8-5ed689cd4cb0" name="V" templateParameter="3d2747a2-bead-4f1c-b55f-5ca9a1188560"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="bf9f6db2-3873-4449-92a8-ede07c3a5abe" isSubstitutable="true" general="7aeba934-44c6-42f4-9082-79695a7c74c4"/>
              <interfaceRealization xmi:id="83014d52-536a-4c74-a6e2-d3d6b5fa0dc8" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="8106d5bb-fb55-4883-a8d2-1b0bcacd0c3c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0e5df146-56ae-42cb-9919-c2b0fddfe8cd" name="ImmutableEntry" visibility="private" clientDependency="5b2a69cf-3e4c-4c8e-82d1-14489f8ab258">
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="15937eea-c9dd-46cf-afe3-8662d4618360" name="" parameter="847b3887-1373-4323-9047-a861144ac7e9 838a4d16-329e-40b9-99f0-181209b1b89a">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="847b3887-1373-4323-9047-a861144ac7e9" parameteredElement="5b644a0b-60e0-4b30-96be-5ddde49a6873">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="5b644a0b-60e0-4b30-96be-5ddde49a6873" name="K" templateParameter="847b3887-1373-4323-9047-a861144ac7e9"/>
                  </ownedParameter>
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="838a4d16-329e-40b9-99f0-181209b1b89a" parameteredElement="211160e8-fb92-46d4-bdf4-9e0d340e1b90">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="211160e8-fb92-46d4-bdf4-9e0d340e1b90" name="V" templateParameter="838a4d16-329e-40b9-99f0-181209b1b89a"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <interfaceRealization xmi:id="5b2a69cf-3e4c-4c8e-82d1-14489f8ab258" name="" supplier="5bebc1fb-871c-4596-8648-6ad46faeacab" client="0e5df146-56ae-42cb-9919-c2b0fddfe8cd" contract="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
              </nestedClassifier>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="0e181815-3adb-45f5-bd92-b2a940f3381b" name="CopiesList" visibility="private" clientDependency="14bfc056-21eb-4945-8d23-4c5e3e3e7f13 0b4b233a-d06f-4ea9-a809-c306e6b5df6b">
              <ownedComment xmi:id="3c9aa8d9-7726-402d-b576-4aeb3499a4b1" body="@serial include&#xA;" annotatedElement="0e181815-3adb-45f5-bd92-b2a940f3381b"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="9b7871d8-8437-4b59-8969-f1efe6fc6cc1" name="" parameter="4659e7a6-5d05-474b-a345-16824b719ef5">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="4659e7a6-5d05-474b-a345-16824b719ef5" parameteredElement="6d97c6ee-6510-4d7f-81db-1bcc2ff397b0">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="6d97c6ee-6510-4d7f-81db-1bcc2ff397b0" name="E" templateParameter="4659e7a6-5d05-474b-a345-16824b719ef5"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="6fda13c3-30de-48da-8c9c-a3ab1d518549" isSubstitutable="true" general="ee758153-f931-43ca-bcea-40b9d95c713b"/>
              <interfaceRealization xmi:id="14bfc056-21eb-4945-8d23-4c5e3e3e7f13" name="" supplier="29add607-d540-4560-b2b3-2e3c9d7f8dd2" client="0e181815-3adb-45f5-bd92-b2a940f3381b" contract="29add607-d540-4560-b2b3-2e3c9d7f8dd2"/>
              <interfaceRealization xmi:id="0b4b233a-d06f-4ea9-a809-c306e6b5df6b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0e181815-3adb-45f5-bd92-b2a940f3381b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="9a1541a9-1f0b-4482-92df-7d8b27e1952a" name="ReverseComparator" visibility="private" clientDependency="fb432be8-079d-4f4b-8263-eaa9340f8fd8 f0ecda45-5ee4-4316-9e3f-a592c85f69ed">
              <ownedComment xmi:id="59716e0b-6a89-46a7-ac2a-ccc457123b00" body="@serial include&#xA;" annotatedElement="9a1541a9-1f0b-4482-92df-7d8b27e1952a"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="a457158f-9dfb-4117-b454-fc029a445240" name="" parameter="86dd519e-7d94-4604-8346-e1309b75f074">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="86dd519e-7d94-4604-8346-e1309b75f074" parameteredElement="419f05ae-ce06-4a37-985e-fc6fe3812caa">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="419f05ae-ce06-4a37-985e-fc6fe3812caa" name="T" templateParameter="86dd519e-7d94-4604-8346-e1309b75f074"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="fb432be8-079d-4f4b-8263-eaa9340f8fd8" name="" supplier="329872e3-8fdd-4f5a-9229-28884b051e42" client="9a1541a9-1f0b-4482-92df-7d8b27e1952a" contract="329872e3-8fdd-4f5a-9229-28884b051e42"/>
              <interfaceRealization xmi:id="f0ecda45-5ee4-4316-9e3f-a592c85f69ed" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="9a1541a9-1f0b-4482-92df-7d8b27e1952a" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Interface" xmi:id="426f5468-3efe-490e-9622-ce33f05bd228" name="SelfComparable" visibility="private" isAbstract="true">
              <generalization xmi:id="864d431f-8b78-4b85-9f48-4d7726dd92cb" isSubstitutable="true" general="c269f8de-99eb-4278-a5f7-97ff69356e65"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ee5a55c7-3013-48a4-b1b1-5654a851888a" name="CheckedCollection" visibility="package" clientDependency="67c25cf0-c517-4153-9c68-244b18d0121e cb3048fe-94cd-4b12-b573-e98439060a02">
              <ownedComment xmi:id="93fbe9c9-8c9f-42b1-8d82-5e61ff99087f" body="@serial include&#xA;" annotatedElement="ee5a55c7-3013-48a4-b1b1-5654a851888a"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="dc876114-b385-4755-bd99-777106d48376" name="" parameter="3068fb49-da95-44f5-a7f3-ef45165a3c86">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="3068fb49-da95-44f5-a7f3-ef45165a3c86" parameteredElement="1bb38c95-f9d2-4b53-9cdb-08a84b18c603">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="1bb38c95-f9d2-4b53-9cdb-08a84b18c603" name="E" templateParameter="3068fb49-da95-44f5-a7f3-ef45165a3c86"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="67c25cf0-c517-4153-9c68-244b18d0121e" name="" supplier="f2ecd2a3-8039-41dd-a004-e978e2a488aa" client="ee5a55c7-3013-48a4-b1b1-5654a851888a" contract="f2ecd2a3-8039-41dd-a004-e978e2a488aa"/>
              <interfaceRealization xmi:id="cb3048fe-94cd-4b12-b573-e98439060a02" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ee5a55c7-3013-48a4-b1b1-5654a851888a" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="1da19d53-94e6-4758-8765-f03c5161339d" name="CheckedSet" visibility="package" clientDependency="ec0fdedf-6536-44d1-8401-5bcabea44245 a4644cae-99f1-4af7-95c6-4dabd6210e4f">
              <ownedComment xmi:id="b305c32a-ecb1-428a-9a8b-04b3c4b0abf5" body="@serial include&#xA;" annotatedElement="1da19d53-94e6-4758-8765-f03c5161339d"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="b83c8ab2-5a16-4cf3-a8b1-913fb699b9a8" name="" parameter="361cf61f-fcb7-403a-b55b-ee2ba30fc2a9">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="361cf61f-fcb7-403a-b55b-ee2ba30fc2a9" parameteredElement="ac3a01de-2fcc-4602-bc20-58bf756625eb">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="ac3a01de-2fcc-4602-bc20-58bf756625eb" name="E" templateParameter="361cf61f-fcb7-403a-b55b-ee2ba30fc2a9"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="3fb0d470-cfb9-4444-b8ab-481317bbfa33" isSubstitutable="true" general="c566d0d5-9da7-4d88-8612-c4e25f1ef62b"/>
              <interfaceRealization xmi:id="ec0fdedf-6536-44d1-8401-5bcabea44245" name="" supplier="baa392ca-bff3-4d7d-b407-489a8610c855" client="1da19d53-94e6-4758-8765-f03c5161339d" contract="baa392ca-bff3-4d7d-b407-489a8610c855"/>
              <interfaceRealization xmi:id="a4644cae-99f1-4af7-95c6-4dabd6210e4f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="1da19d53-94e6-4758-8765-f03c5161339d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="fc323ac3-ffb6-466e-b189-e12e53288319" name="CheckedSortedSet" visibility="package" clientDependency="0991b570-d128-40ef-a54c-5f76cd276565 8f8bc5aa-1fb9-443f-afd7-0d9ecef72fa4">
              <ownedComment xmi:id="507e3acf-9969-4d96-9bc6-ca47c3d7a7d7" body="@serial include&#xA;" annotatedElement="fc323ac3-ffb6-466e-b189-e12e53288319"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="82287107-9a68-4019-9a00-da81490a7e56" name="" parameter="56aedd04-db9a-4586-b8c1-07d0a1e0f1de">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="56aedd04-db9a-4586-b8c1-07d0a1e0f1de" parameteredElement="712dfe24-60e1-4fd0-8def-e41e627ca897">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="712dfe24-60e1-4fd0-8def-e41e627ca897" name="E" templateParameter="56aedd04-db9a-4586-b8c1-07d0a1e0f1de"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="b3b0ecfb-b8bf-41c2-89f3-64fa22d3a063" isSubstitutable="true" general="293b2529-d730-4c11-9509-024820048ce3"/>
              <interfaceRealization xmi:id="8f8bc5aa-1fb9-443f-afd7-0d9ecef72fa4" name="" supplier="8f0b159d-1699-480f-949b-5de4e0916ac2" client="fc323ac3-ffb6-466e-b189-e12e53288319" contract="8f0b159d-1699-480f-949b-5de4e0916ac2"/>
              <interfaceRealization xmi:id="0991b570-d128-40ef-a54c-5f76cd276565" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="fc323ac3-ffb6-466e-b189-e12e53288319" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="74e20cac-51f7-4911-a98f-da2920a5f7b2" name="CheckedList" visibility="package" clientDependency="18c5d664-20b6-4063-891c-e085511cb937">
              <ownedComment xmi:id="6bc8ab5d-f8a9-4a3f-ab32-34a2729cb3fd" body="@serial include&#xA;" annotatedElement="74e20cac-51f7-4911-a98f-da2920a5f7b2"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="841dd6d2-3e10-400a-9904-576e5a00ec00" name="" parameter="cfbcdc95-ece9-4c57-acd3-d18a6f3b2027">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="cfbcdc95-ece9-4c57-acd3-d18a6f3b2027" parameteredElement="8a34bdd4-9184-4023-8d0a-34ae6fe395a8">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="8a34bdd4-9184-4023-8d0a-34ae6fe395a8" name="E" templateParameter="cfbcdc95-ece9-4c57-acd3-d18a6f3b2027"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="a6448e2b-b793-4d7d-86c2-8b2d26b5d5f5" isSubstitutable="true" general="c566d0d5-9da7-4d88-8612-c4e25f1ef62b"/>
              <interfaceRealization xmi:id="18c5d664-20b6-4063-891c-e085511cb937" name="" supplier="18dc6102-a040-4ae1-aefe-698abc18de28" client="74e20cac-51f7-4911-a98f-da2920a5f7b2" contract="18dc6102-a040-4ae1-aefe-698abc18de28"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ebd0ff6d-0cdb-4c42-a316-9291254c4991" name="CheckedRandomAccessList" visibility="package" clientDependency="26595073-b50c-4df7-b367-07fea52f91e9">
              <ownedComment xmi:id="da34de02-caca-4efa-bdd8-bc2d90e3c54c" body="@serial include&#xA;" annotatedElement="ebd0ff6d-0cdb-4c42-a316-9291254c4991"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="817eab8c-ea96-4fdc-b257-9f3663d66d9f" name="" parameter="79784b2a-29ed-4906-9db5-d0d529550173">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="79784b2a-29ed-4906-9db5-d0d529550173" parameteredElement="e3f7699d-d191-4c56-b5b0-254252b178d9">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="e3f7699d-d191-4c56-b5b0-254252b178d9" name="E" templateParameter="79784b2a-29ed-4906-9db5-d0d529550173"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="a1d31b47-a10f-459f-b89f-a6e3f48e9d92" isSubstitutable="true" general="2333b373-056e-41a1-8382-9789ac6f6d46"/>
              <interfaceRealization xmi:id="26595073-b50c-4df7-b367-07fea52f91e9" name="" supplier="29add607-d540-4560-b2b3-2e3c9d7f8dd2" client="ebd0ff6d-0cdb-4c42-a316-9291254c4991" contract="29add607-d540-4560-b2b3-2e3c9d7f8dd2"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="18736376-497a-49b5-8995-31099ec23bde" name="CheckedMap" visibility="private" clientDependency="ccccb889-3597-4d8b-990f-7c6a25c3666c 5b044345-130d-4261-9aad-f99d64195232">
              <ownedComment xmi:id="6fcb9dc7-ac4d-48fd-bc4c-a3a62c2cde15" body="@serial include&#xA;" annotatedElement="18736376-497a-49b5-8995-31099ec23bde"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="e35192cc-b7c6-452d-bc9e-abad63363d55" name="" parameter="931bbfca-e1ea-4704-ab8d-b67c9ec8dafa 3ddeb5c1-6b5f-40c0-90d4-e37ef141e419">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="931bbfca-e1ea-4704-ab8d-b67c9ec8dafa" parameteredElement="0220c9b4-b07f-40a3-9c5d-a1e0bd6ede70">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="0220c9b4-b07f-40a3-9c5d-a1e0bd6ede70" name="K" templateParameter="931bbfca-e1ea-4704-ab8d-b67c9ec8dafa"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="3ddeb5c1-6b5f-40c0-90d4-e37ef141e419" parameteredElement="70660874-0d80-46c0-bcaa-8c9da9c25234">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="70660874-0d80-46c0-bcaa-8c9da9c25234" name="V" templateParameter="3ddeb5c1-6b5f-40c0-90d4-e37ef141e419"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="ccccb889-3597-4d8b-990f-7c6a25c3666c" name="" supplier="b5eaa913-ac40-4b35-bf06-e3638ddc059a" client="18736376-497a-49b5-8995-31099ec23bde" contract="b5eaa913-ac40-4b35-bf06-e3638ddc059a"/>
              <interfaceRealization xmi:id="5b044345-130d-4261-9aad-f99d64195232" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="18736376-497a-49b5-8995-31099ec23bde" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="31a6c618-d6c4-4e9a-a4c6-a6fe51e13915" name="CheckedEntrySet" visibility="package" clientDependency="1503165f-acdd-4874-afcf-6853df2f099a">
                <ownedComment xmi:id="cc67c1b4-cbe6-4e5d-8dd5-de438f520eea" body="We need this class in addition to CheckedSet as Map.Entry permits&#xA;modification of the backing Map via the setValue operation.  This&#xA;class is subtle: there are many possible attacks that must be&#xA;thwarted.&#xA;&#xA;@serial exclude&#xA;" annotatedElement="31a6c618-d6c4-4e9a-a4c6-a6fe51e13915"/>
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="8866e17a-c141-4988-aaef-6ebdf5b3179b" name="" parameter="e69a2e0d-7ee0-418c-91cc-2fa51eb61a1f 91d8815d-93fe-4739-b313-5751d619c82e">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="e69a2e0d-7ee0-418c-91cc-2fa51eb61a1f" parameteredElement="a2d3908c-5a18-4d29-bb46-7328120c7632">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="a2d3908c-5a18-4d29-bb46-7328120c7632" name="K" templateParameter="e69a2e0d-7ee0-418c-91cc-2fa51eb61a1f"/>
                  </ownedParameter>
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="91d8815d-93fe-4739-b313-5751d619c82e" parameteredElement="296f0a83-d79e-48b3-a651-75ef40a1dd8b">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="296f0a83-d79e-48b3-a651-75ef40a1dd8b" name="V" templateParameter="91d8815d-93fe-4739-b313-5751d619c82e"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <interfaceRealization xmi:id="1503165f-acdd-4874-afcf-6853df2f099a" name="" supplier="361bda5b-3a43-42fb-9855-7bd70110c0e3" client="31a6c618-d6c4-4e9a-a4c6-a6fe51e13915" contract="361bda5b-3a43-42fb-9855-7bd70110c0e3"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="06dd2fb3-0513-4ded-8724-97178805b8f5" name="CheckedEntry" visibility="private" clientDependency="99c0657d-dd9b-4708-bcd5-d59b77adb8d4">
                  <ownedComment xmi:id="d5310aeb-941c-478d-a437-645af9641281" body="This &quot;wrapper class&quot; serves two purposes: it prevents&#xA;the client from modifying the backing Map, by short-circuiting&#xA;the setValue method, and it protects the backing Map against&#xA;an ill-behaved Map.Entry that attempts to modify another&#xA;Map Entry when asked to perform an equality check.&#xA;" annotatedElement="06dd2fb3-0513-4ded-8724-97178805b8f5"/>
                  <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="36ca8397-410a-4f58-a514-c05bcd92cfec" name="" parameter="9b71174e-08f9-4d72-ba62-01f54a5b2ead e6536a19-a481-4bce-a991-919b7ceed22e">
                    <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="9b71174e-08f9-4d72-ba62-01f54a5b2ead" parameteredElement="1b9c07be-2fa4-48fd-947e-c3a8b36f1550">
                      <ownedParameteredElement xmi:type="uml:Class" xmi:id="1b9c07be-2fa4-48fd-947e-c3a8b36f1550" name="K" templateParameter="9b71174e-08f9-4d72-ba62-01f54a5b2ead"/>
                    </ownedParameter>
                    <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="e6536a19-a481-4bce-a991-919b7ceed22e" parameteredElement="314061ae-81d0-494f-a87f-ead7beb64422">
                      <ownedParameteredElement xmi:type="uml:Class" xmi:id="314061ae-81d0-494f-a87f-ead7beb64422" name="V" templateParameter="e6536a19-a481-4bce-a991-919b7ceed22e"/>
                    </ownedParameter>
                  </ownedTemplateSignature>
                  <interfaceRealization xmi:id="99c0657d-dd9b-4708-bcd5-d59b77adb8d4" name="" supplier="5bebc1fb-871c-4596-8648-6ad46faeacab" client="06dd2fb3-0513-4ded-8724-97178805b8f5" contract="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
                </nestedClassifier>
              </nestedClassifier>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a8548513-ddbc-458a-bd95-d57c89f8bfd3" name="CheckedSortedMap" visibility="package" clientDependency="e6eeba4e-125b-4ad8-ba5b-c48d4c517027 a87b22f9-17fb-4df4-afde-ee5dada17d93">
              <ownedComment xmi:id="22a97c39-54fb-4f2c-9c6f-8e92b2f48d88" body="@serial include&#xA;" annotatedElement="a8548513-ddbc-458a-bd95-d57c89f8bfd3"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="01ecee2d-7437-4099-a333-c1bc201fb333" name="" parameter="ded26b9c-f0f8-4ebc-864c-efd732280ca7 8c22dc74-d573-4282-a241-52f0bbc12a9b">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="ded26b9c-f0f8-4ebc-864c-efd732280ca7" parameteredElement="6dd4cda7-ca5f-48ed-958f-89b7cacd398f">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="6dd4cda7-ca5f-48ed-958f-89b7cacd398f" name="K" templateParameter="ded26b9c-f0f8-4ebc-864c-efd732280ca7"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="8c22dc74-d573-4282-a241-52f0bbc12a9b" parameteredElement="3f035456-ed9a-45bc-a5e5-dafa55a531a4">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="3f035456-ed9a-45bc-a5e5-dafa55a531a4" name="V" templateParameter="8c22dc74-d573-4282-a241-52f0bbc12a9b"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="fe9d1327-5b0d-42ce-b41b-8df2674b9a01" isSubstitutable="true" general="f60b2757-c2ef-46b3-94ca-bf0fc089dccb"/>
              <interfaceRealization xmi:id="e6eeba4e-125b-4ad8-ba5b-c48d4c517027" name="" supplier="5cfc5135-5649-495f-8f1e-26de7fb7bc4d" client="a8548513-ddbc-458a-bd95-d57c89f8bfd3" contract="5cfc5135-5649-495f-8f1e-26de7fb7bc4d"/>
              <interfaceRealization xmi:id="a87b22f9-17fb-4df4-afde-ee5dada17d93" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="a8548513-ddbc-458a-bd95-d57c89f8bfd3" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="0d15dd25-0211-42cb-984e-e32b8cbbee02" name="ReverseComparator2" visibility="private" clientDependency="3f488aa4-5edf-4866-b11e-27eddbec26ad ecb8043d-38c3-4f8d-99eb-18930d8f92e4">
              <ownedComment xmi:id="a447c5ef-5d18-4d0a-9e0b-4be441cb0956" body="@serial include&#xA;" annotatedElement="0d15dd25-0211-42cb-984e-e32b8cbbee02"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="e5ba1b0a-ed9a-4273-8958-b99b599f5928" name="" parameter="aa6dd5ed-79ee-41bd-a7f1-e2abe353e277">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="aa6dd5ed-79ee-41bd-a7f1-e2abe353e277" parameteredElement="a92a62c1-c404-4c7c-913c-150b50ab0fa7">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="a92a62c1-c404-4c7c-913c-150b50ab0fa7" name="T" templateParameter="aa6dd5ed-79ee-41bd-a7f1-e2abe353e277"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="ecb8043d-38c3-4f8d-99eb-18930d8f92e4" name="" supplier="6624b707-c6e5-4fa4-999b-5663ae09b542" client="0d15dd25-0211-42cb-984e-e32b8cbbee02" contract="6624b707-c6e5-4fa4-999b-5663ae09b542"/>
              <interfaceRealization xmi:id="3f488aa4-5edf-4866-b11e-27eddbec26ad" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0d15dd25-0211-42cb-984e-e32b8cbbee02" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f7346c90-fee3-443d-92c0-6e4a5b8a5ba8" name="AbstractSequentialList&lt;E>">
            <templateBinding xmi:id="3dbabec3-932e-4ff5-b754-2c915d3f2c4f" signature="853617a7-536b-40e5-9f86-cef924471c47">
              <parameterSubstitution xmi:id="2c991eca-ec54-4f5e-bee5-c2caea2c2726" formal="fcfd725f-80b9-457c-a851-0b9177838344" actual="7dc2427b-29fb-46f9-93b2-562c0bbc470c"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f463b677-2e80-4c1d-bf48-9ef10a4baa5b" name="LinkedHashIterator&lt;V>">
            <templateBinding xmi:id="23e69b08-62ca-455d-a2e0-5d9f648218a6" signature="4c079565-0789-4bf1-9e25-049f5e6a76ab">
              <parameterSubstitution xmi:id="a51d4f28-a519-49ab-9213-0b4d98060be4" formal="e5247458-b71e-471a-aa50-e982ba010250" actual="10312efa-b452-4305-a7fd-934812e1b484"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="29add607-d540-4560-b2b3-2e3c9d7f8dd2" name="RandomAccess" isAbstract="true">
            <ownedComment xmi:id="3791e12a-c65b-4b29-8cf0-878994fc248b" body="Marker interface used by &lt;tt>List&lt;/tt> implementations to indicate that&#xA;they support fast (generally constant time) random access.  The primary&#xA;purpose of this interface is to allow generic algorithms to alter their&#xA;behavior to provide good performance when applied to either random or&#xA;sequential access lists.&#xA;&#xA;&lt;p>The best algorithms for manipulating random access lists (such as&#xA;&lt;tt>ArrayList&lt;/tt>) can produce quadratic behavior when applied to&#xA;sequential access lists (such as &lt;tt>LinkedList&lt;/tt>).  Generic list&#xA;algorithms are encouraged to check whether the given list is an&#xA;&lt;tt>instanceof&lt;/tt> this interface before applying an algorithm that would&#xA;provide poor performance if it were applied to a sequential access list,&#xA;and to alter their behavior if necessary to guarantee acceptable&#xA;performance.&#xA;&#xA;&lt;p>It is recognized that the distinction between random and sequential&#xA;access is often fuzzy.  For example, some &lt;tt>List&lt;/tt> implementations&#xA;provide asymptotically linear access times if they get huge, but constant&#xA;access times in practice.  Such a &lt;tt>List&lt;/tt> implementation&#xA;should generally implement this interface.  As a rule of thumb, a&#xA;&lt;tt>List&lt;/tt> implementation should implement this interface if,&#xA;for typical instances of the class, this loop:&#xA;&lt;pre>&#xA;for (int i=0, n=list.size(); i &lt; n; i++)&#xA;list.get(i);&#xA;&lt;/pre>&#xA;runs faster than this loop:&#xA;&lt;pre>&#xA;for (Iterator i=list.iterator(); i.hasNext(); )&#xA;i.next();&#xA;&lt;/pre>&#xA;&#xA;&lt;p>This interface is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;" annotatedElement="29add607-d540-4560-b2b3-2e3c9d7f8dd2"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="f2eff0aa-4782-4945-bb4a-e4f7c4ce97c3" name="Iterable&lt;E>">
            <templateBinding xmi:id="8ff9182e-2fb5-4f8b-9fce-bb7f80aebc0f" signature="6db7ba27-1c8d-4f80-8ed1-fb826decd825">
              <parameterSubstitution xmi:id="f93126eb-8b5f-479c-b1d6-4e96228aba84" formal="737d747f-bb77-4db4-bbf7-83553b63e68e" actual="dd13a4ba-7cc9-4a25-95ac-44407ae32180"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="361bda5b-3a43-42fb-9855-7bd70110c0e3" name="Set&lt;Entry&lt;K, V>>">
            <templateBinding xmi:id="b927446f-2eef-41ac-b04b-faea1582ded5" signature="001703e6-ec1e-4603-87c0-aef2f0d224ba">
              <parameterSubstitution xmi:id="c4d58cb7-bd05-4dc8-9b58-c37f6a4d0e83" formal="e5280fa0-76af-45bb-b215-be3f2107b566" actual="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d47ed060-e1d6-4597-9add-8a4b5af7b152" name="UnmodifiableSet&lt;Entry&lt;K, V>>">
            <templateBinding xmi:id="685a8968-41a1-4fb2-975f-52caffba36bc" signature="8db58ba8-402e-442b-9ad2-8d6abd1b871d">
              <parameterSubstitution xmi:id="3fe8df64-8e93-4ba9-b202-addf48d0ba8a" formal="21f29049-8774-432f-9f90-528482b25557" actual="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8b8800a4-6232-444f-9fb8-30f910b005c9" name="Currency" clientDependency="91ff3ad7-3820-4522-8963-a08908e37758" isLeaf="true">
            <ownedComment xmi:id="c4dfd137-ef4a-45c5-80cc-a4a200eba713" body="Represents a currency. Currencies are identified by their ISO 4217 currency&#xA;codes. See the&#xA;&lt;a href=&quot;http://www.bsi-global.com/iso4217currency&quot;>&#xA;ISO 4217 maintenance agency&lt;/a> for more information, including a table of&#xA;currency codes.&#xA;&lt;p>&#xA;The class is designed so that there's never more than one&#xA;&lt;code>Currency&lt;/code> instance for any given currency. Therefore, there's&#xA;no public constructor. You obtain a &lt;code>Currency&lt;/code> instance using&#xA;the &lt;code>getInstance&lt;/code> methods.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="8b8800a4-6232-444f-9fb8-30f910b005c9"/>
            <interfaceRealization xmi:id="91ff3ad7-3820-4522-8963-a08908e37758" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="8b8800a4-6232-444f-9fb8-30f910b005c9" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="fc8c4f27-1bc3-4bb6-9c57-74c2e8a8de51" name="EventListenerProxy" clientDependency="edc1f609-d969-4525-88cc-192ddbb040ae" isAbstract="true">
            <ownedComment xmi:id="5f876f3a-46a3-4915-96ef-4ac2cbabbedf" body="An abstract wrapper class for an EventListener class which associates a set&#xA;of additional parameters with the listener. Subclasses must provide the&#xA;storage and accessor methods for the additional arguments or parameters.&#xA;&#xA;Subclasses of EventListenerProxy may be returned by getListeners() methods&#xA;as a way of associating named properties with their listeners.&#xA;&#xA;For example, a Bean which supports named properties would have a two&#xA;argument method signature for adding a PropertyChangeListener for a&#xA;property:&#xA;&#xA;public void addPropertyChangeListener(String propertyName,&#xA;PropertyChangeListener listener);&#xA;&#xA;If the Bean also implemented the zero argument get listener method:&#xA;&#xA;public PropertyChangeListener[] getPropertyChangeListeners();&#xA;&#xA;then the array may contain inner PropertyChangeListeners which are also&#xA;PropertyChangeListenerProxy objects.&#xA;&#xA;If the calling method is interested in retrieving the named property then it&#xA;would have to test the element to see if it is a proxy class.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="fc8c4f27-1bc3-4bb6-9c57-74c2e8a8de51"/>
            <interfaceRealization xmi:id="edc1f609-d969-4525-88cc-192ddbb040ae" name="" supplier="4a082587-0c9e-4fc6-950d-861bfb398882" client="fc8c4f27-1bc3-4bb6-9c57-74c2e8a8de51" contract="4a082587-0c9e-4fc6-950d-861bfb398882"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b129e16d-0d3c-4043-a43b-a5f99de52331" name="SynchronizedMap&lt;K, V>">
            <templateBinding xmi:id="13354878-e8e7-4157-a2da-6491e56556ff" signature="2832bd8d-9d23-452e-ad2f-aa90604384ce">
              <parameterSubstitution xmi:id="fd507791-5290-4190-92d3-fb16b4150afa" formal="49af18cc-c027-495a-8c03-335654564b9d" actual="c955f574-4912-4417-89e1-dde77e1641a6"/>
              <parameterSubstitution xmi:id="4b91f425-9e2e-4856-9f16-9de66095f55d" formal="753c3bff-67f5-4b79-ac13-e585116d0fe6" actual="7901f3fd-9b8e-4c36-9cd7-2113e4cb4882"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="2133b8bd-b2af-4a7a-accb-e371068aaf2b" name="Enumeration&lt;T>">
            <templateBinding xmi:id="08ec8e60-8355-43a1-9f1d-e758076730ff" signature="521c8bf5-b0b1-4a86-820c-0614950913b8">
              <parameterSubstitution xmi:id="22e11c80-2d45-4a01-a6b0-67ad980bb710" formal="0dc15cf5-0f68-454b-a4d7-227d89f2d0c5" actual="76246df7-5c94-4f52-b45a-198baf728223"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="28e226d8-d83d-42bb-a073-26d417db5f4c" name="BitSet" clientDependency="aa337f46-2bac-4762-ba8c-4db4634bff6f d8c442be-0fa0-471b-8801-d10c5068a6c5">
            <ownedComment xmi:id="ac809068-0552-44b6-8b17-6be94eba3895" body="This class implements a vector of bits that grows as needed. Each&#xA;component of the bit set has a &lt;code>boolean&lt;/code> value. The&#xA;bits of a &lt;code>BitSet&lt;/code> are indexed by nonnegative integers.&#xA;Individual indexed bits can be examined, set, or cleared. One&#xA;&lt;code>BitSet&lt;/code> may be used to modify the contents of another&#xA;&lt;code>BitSet&lt;/code> through logical AND, logical inclusive OR, and&#xA;logical exclusive OR operations.&#xA;&lt;p>&#xA;By default, all bits in the set initially have the value&#xA;&lt;code>false&lt;/code>.&#xA;&lt;p>&#xA;Every bit set has a current size, which is the number of bits&#xA;of space currently in use by the bit set. Note that the size is&#xA;related to the implementation of a bit set, so it may change with&#xA;implementation. The length of a bit set relates to logical length&#xA;of a bit set and is defined independently of implementation.&#xA;&lt;p>&#xA;Unless otherwise noted, passing a null parameter to any of the&#xA;methods in a &lt;code>BitSet&lt;/code> will result in a&#xA;&lt;code>NullPointerException&lt;/code>.&#xA;&#xA;A &lt;code>BitSet&lt;/code> is not safe for multithreaded use without&#xA;external synchronization.&#xA;&#xA;@author  Arthur van Hoff&#xA;@author  Michael McCloskey&#xA;@version 1.60, 02/19/04&#xA;@since   JDK1.0&#xA;" annotatedElement="28e226d8-d83d-42bb-a073-26d417db5f4c"/>
            <interfaceRealization xmi:id="aa337f46-2bac-4762-ba8c-4db4634bff6f" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="28e226d8-d83d-42bb-a073-26d417db5f4c" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="d8c442be-0fa0-471b-8801-d10c5068a6c5" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="28e226d8-d83d-42bb-a073-26d417db5f4c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3ee30361-a9cb-4c3e-a8f6-3b75f53d3714" name="SynchronizedList&lt;E>">
            <templateBinding xmi:id="709df126-73b5-48cd-bb2c-68fa615e1860" signature="a1d49a69-de1c-473d-a476-8efa76aca1f4">
              <parameterSubstitution xmi:id="6ebe25bb-3822-4f98-832f-2f1e554d43e7" formal="06ed4895-8a7b-42ec-9f84-9a95d627d1c6" actual="668ce3cd-134b-4ea5-9669-d314728e6cb2"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d9945d13-2c71-40ef-92d7-af521893cdbf" name="AbstractMap" clientDependency="ce02b6da-2792-4f00-a14d-c9edc580fb9f" isAbstract="true">
            <ownedComment xmi:id="b398d327-5bf9-49e3-9324-25f8be192847" body="This class provides a skeletal implementation of the &lt;tt>Map&lt;/tt>&#xA;interface, to minimize the effort required to implement this interface. &lt;p>&#xA;&#xA;To implement an unmodifiable map, the programmer needs only to extend this&#xA;class and provide an implementation for the &lt;tt>entrySet&lt;/tt> method, which&#xA;returns a set-view of the map's mappings.  Typically, the returned set&#xA;will, in turn, be implemented atop &lt;tt>AbstractSet&lt;/tt>.  This set should&#xA;not support the &lt;tt>add&lt;/tt> or &lt;tt>remove&lt;/tt> methods, and its iterator&#xA;should not support the &lt;tt>remove&lt;/tt> method.&lt;p>&#xA;&#xA;To implement a modifiable map, the programmer must additionally override&#xA;this class's &lt;tt>put&lt;/tt> method (which otherwise throws an&#xA;&lt;tt>UnsupportedOperationException&lt;/tt>), and the iterator returned by&#xA;&lt;tt>entrySet().iterator()&lt;/tt> must additionally implement its&#xA;&lt;tt>remove&lt;/tt> method.&lt;p>&#xA;&#xA;The programmer should generally provide a void (no argument) and map&#xA;constructor, as per the recommendation in the &lt;tt>Map&lt;/tt> interface&#xA;specification.&lt;p>&#xA;&#xA;The documentation for each non-abstract methods in this class describes its&#xA;implementation in detail.  Each of these methods may be overridden if the&#xA;map being implemented admits a more efficient implementation.&lt;p>&#xA;&#xA;This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@author  Neal Gafter&#xA;@version 1.42, 02/19/04&#xA;@see Map&#xA;@see Collection&#xA;@since 1.2&#xA;" annotatedElement="d9945d13-2c71-40ef-92d7-af521893cdbf"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="e1c0c6b1-bc5b-4c0b-a842-1dee570bfb72" name="" parameter="5678fbfd-3b73-4f2d-9754-00fc4fbc970f 7b16f894-dca4-4787-b2f9-4a01749f8a12">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="5678fbfd-3b73-4f2d-9754-00fc4fbc970f" parameteredElement="059004da-d4bb-4e53-addb-03f828e6b6d3">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="059004da-d4bb-4e53-addb-03f828e6b6d3" name="K" templateParameter="5678fbfd-3b73-4f2d-9754-00fc4fbc970f"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="7b16f894-dca4-4787-b2f9-4a01749f8a12" parameteredElement="c5fca896-9d8e-4986-bbd2-3d9ac9a03d5e">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="c5fca896-9d8e-4986-bbd2-3d9ac9a03d5e" name="V" templateParameter="7b16f894-dca4-4787-b2f9-4a01749f8a12"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <interfaceRealization xmi:id="ce02b6da-2792-4f00-a14d-c9edc580fb9f" name="" supplier="b5eaa913-ac40-4b35-bf06-e3638ddc059a" client="d9945d13-2c71-40ef-92d7-af521893cdbf" contract="b5eaa913-ac40-4b35-bf06-e3638ddc059a"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="51f71785-1b65-4901-b324-ec5c58b2c180" name="SimpleEntry" visibility="package" clientDependency="2968c817-61f9-49de-b06d-d5d427c3a1af">
              <ownedComment xmi:id="7445cae4-e133-4d55-a05c-e05a5238b099" body="This should be made public as soon as possible.  It greatly simplifies&#xA;the task of implementing Map.&#xA;" annotatedElement="51f71785-1b65-4901-b324-ec5c58b2c180"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="0a53970d-f5f0-48d2-87e2-7e5e609737b1" name="" parameter="8d7dc8d6-c501-409a-bea4-b7eda663d7c7 1f07d1f0-ac02-496f-b568-01ce90c84683">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="8d7dc8d6-c501-409a-bea4-b7eda663d7c7" parameteredElement="9c92a463-fec8-4eac-aeb6-dfd1d5ace4f6">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="9c92a463-fec8-4eac-aeb6-dfd1d5ace4f6" name="K" templateParameter="8d7dc8d6-c501-409a-bea4-b7eda663d7c7"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="1f07d1f0-ac02-496f-b568-01ce90c84683" parameteredElement="f3d55cb6-527e-4f8b-851e-da213ae766df">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="f3d55cb6-527e-4f8b-851e-da213ae766df" name="V" templateParameter="1f07d1f0-ac02-496f-b568-01ce90c84683"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="2968c817-61f9-49de-b06d-d5d427c3a1af" name="" supplier="5bebc1fb-871c-4596-8648-6ad46faeacab" client="51f71785-1b65-4901-b324-ec5c58b2c180" contract="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="fedb18d9-33b8-49f5-9af2-3a0b21aa514e" name="Hashtable" clientDependency="9b410dfd-e45f-426a-96ad-e3181ff81378 d7d52176-4398-4a08-95a3-14bb128d7f88 45c20d26-22fd-402c-a356-9e6ead8b5878">
            <ownedComment xmi:id="4e822686-14e9-4cc1-a779-e29414e87bb8" body="This class implements a hashtable, which maps keys to values. Any&#xA;non-&lt;code>null&lt;/code> object can be used as a key or as a value. &lt;p>&#xA;&#xA;To successfully store and retrieve objects from a hashtable, the&#xA;objects used as keys must implement the &lt;code>hashCode&lt;/code>&#xA;method and the &lt;code>equals&lt;/code> method. &lt;p>&#xA;&#xA;An instance of &lt;code>Hashtable&lt;/code> has two parameters that affect its&#xA;performance: &lt;i>initial capacity&lt;/i> and &lt;i>load factor&lt;/i>.  The&#xA;&lt;i>capacity&lt;/i> is the number of &lt;i>buckets&lt;/i> in the hash table, and the&#xA;&lt;i>initial capacity&lt;/i> is simply the capacity at the time the hash table&#xA;is created.  Note that the hash table is &lt;i>open&lt;/i>: in the case of a &quot;hash&#xA;collision&quot;, a single bucket stores multiple entries, which must be searched&#xA;sequentially.  The &lt;i>load factor&lt;/i> is a measure of how full the hash&#xA;table is allowed to get before its capacity is automatically increased.&#xA;The initial capacity and load factor parameters are merely hints to&#xA;the implementation.  The exact details as to when and whether the rehash&#xA;method is invoked are implementation-dependent.&lt;p>&#xA;&#xA;Generally, the default load factor (.75) offers a good tradeoff between&#xA;time and space costs.  Higher values decrease the space overhead but&#xA;increase the time cost to look up an entry (which is reflected in most&#xA;&lt;tt>Hashtable&lt;/tt> operations, including &lt;tt>get&lt;/tt> and &lt;tt>put&lt;/tt>).&lt;p>&#xA;&#xA;The initial capacity controls a tradeoff between wasted space and the&#xA;need for &lt;code>rehash&lt;/code> operations, which are time-consuming.&#xA;No &lt;code>rehash&lt;/code> operations will &lt;i>ever&lt;/i> occur if the initial&#xA;capacity is greater than the maximum number of entries the&#xA;&lt;tt>Hashtable&lt;/tt> will contain divided by its load factor.  However,&#xA;setting the initial capacity too high can waste space.&lt;p>&#xA;&#xA;If many entries are to be made into a &lt;code>Hashtable&lt;/code>,&#xA;creating it with a sufficiently large capacity may allow the&#xA;entries to be inserted more efficiently than letting it perform&#xA;automatic rehashing as needed to grow the table. &lt;p>&#xA;&#xA;This example creates a hashtable of numbers. It uses the names of&#xA;the numbers as keys:&#xA;&lt;p>&lt;blockquote>&lt;pre>&#xA;Hashtable numbers = new Hashtable();&#xA;numbers.put(&quot;one&quot;, new Integer(1));&#xA;numbers.put(&quot;two&quot;, new Integer(2));&#xA;numbers.put(&quot;three&quot;, new Integer(3));&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;To retrieve a number, use the following code:&#xA;&lt;p>&lt;blockquote>&lt;pre>&#xA;Integer n = (Integer)numbers.get(&quot;two&quot;);&#xA;if (n != null) {&#xA;System.out.println(&quot;two = &quot; + n);&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;As of the Java 2 platform v1.2, this class has been retrofitted to&#xA;implement Map, so that it becomes a part of Java's collection framework.&#xA;Unlike the new collection implementations, Hashtable is synchronized.&lt;p>&#xA;&#xA;The Iterators returned by the iterator and listIterator methods&#xA;of the Collections returned by all of Hashtable's &quot;collection view methods&quot;&#xA;are &lt;em>fail-fast&lt;/em>: if the Hashtable is structurally modified&#xA;at any time after the Iterator is created, in any way except through the&#xA;Iterator's own remove or add methods, the Iterator will throw a&#xA;ConcurrentModificationException.  Thus, in the face of concurrent&#xA;modification, the Iterator fails quickly and cleanly, rather than risking&#xA;arbitrary, non-deterministic behavior at an undetermined time in the future.&#xA;The Enumerations returned by Hashtable's keys and values methods are&#xA;&lt;em>not&lt;/em> fail-fast.&#xA;&#xA;&lt;p>Note that the fail-fast behavior of an iterator cannot be guaranteed&#xA;as it is, generally speaking, impossible to make any hard guarantees in the&#xA;presence of unsynchronized concurrent modification.  Fail-fast iterators&#xA;throw &lt;tt>ConcurrentModificationException&lt;/tt> on a best-effort basis.&#xA;Therefore, it would be wrong to write a program that depended on this&#xA;exception for its correctness: &lt;i>the fail-fast behavior of iterators&#xA;should be used only to detect bugs.&lt;/i>&lt;p>&#xA;&#xA;This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Arthur van Hoff&#xA;@author  Josh Bloch&#xA;@author  Neal Gafter&#xA;@version 1.105, 12/19/03&#xA;@see     Object#equals(java.lang.Object)&#xA;@see     Object#hashCode()&#xA;@see     Hashtable#rehash()&#xA;@see     Collection&#xA;@see&#x9;    Map&#xA;@see&#x9;    HashMap&#xA;@see&#x9;    TreeMap&#xA;@since JDK1.0&#xA;" annotatedElement="fedb18d9-33b8-49f5-9af2-3a0b21aa514e"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="38dfbd17-3345-474d-88ef-bf79caf28156" name="" parameter="eeb4e7cb-76c6-4170-bc8f-720a3b2f69a4 94536dda-5157-4349-9148-3546ca5f9897">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="eeb4e7cb-76c6-4170-bc8f-720a3b2f69a4" parameteredElement="f177f706-df27-4fd8-8fe2-6c1f13d71bf5">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="f177f706-df27-4fd8-8fe2-6c1f13d71bf5" name="K" templateParameter="eeb4e7cb-76c6-4170-bc8f-720a3b2f69a4"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="94536dda-5157-4349-9148-3546ca5f9897" parameteredElement="99f29e81-5250-4d3b-8c08-28bc3c23bc7d">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="99f29e81-5250-4d3b-8c08-28bc3c23bc7d" name="V" templateParameter="94536dda-5157-4349-9148-3546ca5f9897"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="7e905cc5-5a94-4680-af6b-b821abb31acf" isSubstitutable="true" general="3d95a3eb-99bf-48fe-90e5-14c3a41975d8"/>
            <interfaceRealization xmi:id="9b410dfd-e45f-426a-96ad-e3181ff81378" name="" supplier="b5eaa913-ac40-4b35-bf06-e3638ddc059a" client="fedb18d9-33b8-49f5-9af2-3a0b21aa514e" contract="b5eaa913-ac40-4b35-bf06-e3638ddc059a"/>
            <interfaceRealization xmi:id="45c20d26-22fd-402c-a356-9e6ead8b5878" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="fedb18d9-33b8-49f5-9af2-3a0b21aa514e" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="d7d52176-4398-4a08-95a3-14bb128d7f88" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="fedb18d9-33b8-49f5-9af2-3a0b21aa514e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="af330547-2b93-4e2c-a036-d7e297278835" name="KeySet" visibility="private">
              <generalization xmi:id="1675aba2-92ca-41b4-bfd5-6730c3306701" isSubstitutable="true" general="d8e4bb4a-fea6-4600-8da2-311416fd86f2"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="57b3654e-be25-4ca8-8be4-8ea78c2b792c" name="EntrySet" visibility="private">
              <generalization xmi:id="e350fc90-f353-498d-b293-d47a9349e7f4" isSubstitutable="true" general="a44e7a8f-24fa-45cd-b665-af0b7a72a836"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ae832612-0d76-4b84-be29-527400b2f491" name="ValueCollection" visibility="private">
              <generalization xmi:id="947003d3-c762-4954-898d-1c95b94c5a6d" isSubstitutable="true" general="831cb79b-21c0-4203-9962-b2cebddd4105"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="88a60a91-b206-4331-a547-6e9b1d87257a" name="Entry" visibility="private" clientDependency="9d5f1092-597a-4c1b-85db-6383a4958e79">
              <ownedComment xmi:id="05f6f9ec-db03-4394-832a-f2b3956440f0" body="Hashtable collision list.&#xA;" annotatedElement="88a60a91-b206-4331-a547-6e9b1d87257a"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="505be018-f236-4304-8ac8-a0fdddbac921" name="" parameter="669823c5-d059-4a19-aac5-b21acfeeda9b 3673662f-2310-419f-bd54-521f9d9fff79">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="669823c5-d059-4a19-aac5-b21acfeeda9b" parameteredElement="77fc9976-1a10-4603-adc3-1c5310020763">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="77fc9976-1a10-4603-adc3-1c5310020763" name="K" templateParameter="669823c5-d059-4a19-aac5-b21acfeeda9b"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="3673662f-2310-419f-bd54-521f9d9fff79" parameteredElement="22075c4a-b189-48f5-b4ea-5311002c3f80">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="22075c4a-b189-48f5-b4ea-5311002c3f80" name="V" templateParameter="3673662f-2310-419f-bd54-521f9d9fff79"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="9d5f1092-597a-4c1b-85db-6383a4958e79" name="" supplier="5bebc1fb-871c-4596-8648-6ad46faeacab" client="88a60a91-b206-4331-a547-6e9b1d87257a" contract="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c011049d-91e7-4f99-bd22-b5ebe761d1f8" name="Enumerator" visibility="private" clientDependency="c98b1270-1b20-48d6-911f-6d12a27563f3 c4bf441c-d9f5-418e-9b38-1dc53e2a2f6e">
              <ownedComment xmi:id="00186fb9-ce06-4819-a691-eac7d78e90d1" body="A hashtable enumerator class.  This class implements both the&#xA;Enumeration and Iterator interfaces, but individual instances&#xA;can be created with the Iterator methods disabled.  This is necessary&#xA;to avoid unintentionally increasing the capabilities granted a user&#xA;by passing an Enumeration.&#xA;" annotatedElement="c011049d-91e7-4f99-bd22-b5ebe761d1f8"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="0f03fbb5-8858-45f6-9561-916d8de88dfd" name="" parameter="e45fba54-38ab-4e1b-a0e1-700be51af824">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="e45fba54-38ab-4e1b-a0e1-700be51af824" parameteredElement="76246df7-5c94-4f52-b45a-198baf728223">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="76246df7-5c94-4f52-b45a-198baf728223" name="T" templateParameter="e45fba54-38ab-4e1b-a0e1-700be51af824"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="c98b1270-1b20-48d6-911f-6d12a27563f3" name="" supplier="2133b8bd-b2af-4a7a-accb-e371068aaf2b" client="c011049d-91e7-4f99-bd22-b5ebe761d1f8" contract="2133b8bd-b2af-4a7a-accb-e371068aaf2b"/>
              <interfaceRealization xmi:id="c4bf441c-d9f5-418e-9b38-1dc53e2a2f6e" name="" supplier="15581cb3-f33d-4deb-9456-fe83f0817c37" client="c011049d-91e7-4f99-bd22-b5ebe761d1f8" contract="15581cb3-f33d-4deb-9456-fe83f0817c37"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="d11a306b-fc4f-4b94-b2fd-f2becfebdf7b" name="EmptyEnumerator" visibility="private" clientDependency="b606628e-c18e-41f9-90d5-b5fe59b5a809">
              <ownedComment xmi:id="78654ed8-5308-44ea-bb17-6fbc23a37c7c" body="A hashtable enumerator class for empty hash tables, specializes&#xA;the general Enumerator&#xA;" annotatedElement="d11a306b-fc4f-4b94-b2fd-f2becfebdf7b"/>
              <interfaceRealization xmi:id="b606628e-c18e-41f9-90d5-b5fe59b5a809" name="" supplier="ae48c0db-9bd1-4cc3-a19c-b4aacc62eb41" client="d11a306b-fc4f-4b94-b2fd-f2becfebdf7b" contract="ae48c0db-9bd1-4cc3-a19c-b4aacc62eb41"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="b18b58ed-b3ff-42ad-8668-d9381dee4415" name="EmptyIterator" visibility="private" clientDependency="64f4f188-1715-4f26-8c6b-4003fa558ee4">
              <ownedComment xmi:id="514dc7c6-cc50-4c26-9367-820bb04f0e8a" body="A hashtable iterator class for empty hash tables&#xA;" annotatedElement="b18b58ed-b3ff-42ad-8668-d9381dee4415"/>
              <interfaceRealization xmi:id="64f4f188-1715-4f26-8c6b-4003fa558ee4" name="" supplier="88389119-17f9-48a7-b04b-69612d2f3e5c" client="b18b58ed-b3ff-42ad-8668-d9381dee4415" contract="88389119-17f9-48a7-b04b-69612d2f3e5c"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="461f3d21-adfb-42a3-895b-1c9e2203b2d3" name="AbstractSequentialList" isAbstract="true">
            <ownedComment xmi:id="73034719-dee3-47be-82cb-5664f3f90610" body="This class provides a skeletal implementation of the &lt;tt>List&lt;/tt>&#xA;interface to minimize the effort required to implement this interface&#xA;backed by a &quot;sequential access&quot; data store (such as a linked list).  For&#xA;random access data (such as an array), &lt;tt>AbstractList&lt;/tt> should be used&#xA;in preference to this class.&lt;p>&#xA;&#xA;This class is the opposite of the &lt;tt>AbstractList&lt;/tt> class in the sense&#xA;that it implements the &quot;random access&quot; methods (&lt;tt>get(int index)&lt;/tt>,&#xA;&lt;tt>set(int index, Object element)&lt;/tt>, &lt;tt>set(int index, Object&#xA;element)&lt;/tt>, &lt;tt>add(int index, Object element)&lt;/tt> and &lt;tt>remove(int&#xA;index)&lt;/tt>) on top of the list's list iterator, instead of the other way&#xA;around.&lt;p>&#xA;&#xA;To implement a list the programmer needs only to extend this class and&#xA;provide implementations for the &lt;tt>listIterator&lt;/tt> and &lt;tt>size&lt;/tt>&#xA;methods.  For an unmodifiable list, the programmer need only implement the&#xA;list iterator's &lt;tt>hasNext&lt;/tt>, &lt;tt>next&lt;/tt>, &lt;tt>hasPrevious&lt;/tt>,&#xA;&lt;tt>previous&lt;/tt> and &lt;tt>index&lt;/tt> methods.&lt;p>&#xA;&#xA;For a modifiable list the programmer should additionally implement the list&#xA;iterator's &lt;tt>set&lt;/tt> method.  For a variable-size list the programmer&#xA;should additionally implement the list iterator's &lt;tt>remove&lt;/tt> and&#xA;&lt;tt>add&lt;/tt> methods.&lt;p>&#xA;&#xA;The programmer should generally provide a void (no argument) and collection&#xA;constructor, as per the recommendation in the &lt;tt>Collection&lt;/tt> interface&#xA;specification.&lt;p>&#xA;&#xA;This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@author  Neal Gafter&#xA;@version 1.33, 02/19/04&#xA;@see Collection&#xA;@see List&#xA;@see AbstractList&#xA;@see AbstractCollection&#xA;@since 1.2&#xA;" annotatedElement="461f3d21-adfb-42a3-895b-1c9e2203b2d3"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="853617a7-536b-40e5-9f86-cef924471c47" name="" parameter="fcfd725f-80b9-457c-a851-0b9177838344">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="fcfd725f-80b9-457c-a851-0b9177838344" parameteredElement="f1d4bdfe-0cf4-4c96-afc2-81f2e8b97f67">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="f1d4bdfe-0cf4-4c96-afc2-81f2e8b97f67" name="E" templateParameter="fcfd725f-80b9-457c-a851-0b9177838344"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="9749cf53-403c-4d27-b7d6-f821e08dc315" isSubstitutable="true" general="ee758153-f931-43ca-bcea-40b9d95c713b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8b46a51b-03a5-4619-b205-f35664263634" name="Vector&lt;E>">
            <templateBinding xmi:id="4a1ddb17-c92c-46e4-ad14-406d6bb12df3" signature="5fde8259-7e7b-4ce9-8ce1-0678abda8179">
              <parameterSubstitution xmi:id="1a245606-c87c-429f-9f40-6b064e70be60" formal="55da36f1-9274-4068-a71d-08f9e1c2c732" actual="0641e269-1add-412e-a324-64a1662109f6"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="c269f8de-99eb-4278-a5f7-97ff69356e65" name="Comparable&lt;SelfComparable>">
            <templateBinding xmi:id="d76393e4-82a5-4aa4-bdce-3cd38d7d2bd0" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="93f39153-f4f7-4cf5-bc8a-016d6222e6a7" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="426f5468-3efe-490e-9622-ce33f05bd228"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="fabf08d1-474d-4386-b7db-bf4f12ca2395" name="Stack">
            <ownedComment xmi:id="a408b48b-6936-4de7-836b-222f3fbf236e" body="The &lt;code>Stack&lt;/code> class represents a last-in-first-out&#xA;(LIFO) stack of objects. It extends class &lt;tt>Vector&lt;/tt> with five&#xA;operations that allow a vector to be treated as a stack. The usual&#xA;&lt;tt>push&lt;/tt> and &lt;tt>pop&lt;/tt> operations are provided, as well as a&#xA;method to &lt;tt>peek&lt;/tt> at the top item on the stack, a method to test&#xA;for whether the stack is &lt;tt>empty&lt;/tt>, and a method to &lt;tt>search&lt;/tt>&#xA;the stack for an item and discover how far it is from the top.&#xA;&lt;p>&#xA;When a stack is first created, it contains no items.&#xA;&#xA;@author  Jonathan Payne&#xA;@version 1.28, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="fabf08d1-474d-4386-b7db-bf4f12ca2395"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="b084a9e2-8368-48f1-8b60-fb0f12a622b8" name="" parameter="f6fc67b2-fba7-4fde-979d-efcd55d330d2">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="f6fc67b2-fba7-4fde-979d-efcd55d330d2" parameteredElement="0641e269-1add-412e-a324-64a1662109f6">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="0641e269-1add-412e-a324-64a1662109f6" name="E" templateParameter="f6fc67b2-fba7-4fde-979d-efcd55d330d2"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="43e6f2af-0937-4894-b2d7-950683113537" isSubstitutable="true" general="8b46a51b-03a5-4619-b205-f35664263634"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="245b2fb7-9336-4bfd-83ce-b9739a1782ab" name="Dictionary" isAbstract="true">
            <ownedComment xmi:id="cda54468-2ab0-436c-8b9e-f96b33ea80ee" body="The &lt;code>Dictionary&lt;/code> class is the abstract parent of any&#xA;class, such as &lt;code>Hashtable&lt;/code>, which maps keys to values.&#xA;Every key and every value is an object. In any one &lt;tt>Dictionary&lt;/tt>&#xA;object, every key is associated with at most one value. Given a&#xA;&lt;tt>Dictionary&lt;/tt> and a key, the associated element can be looked up.&#xA;Any non-&lt;code>null&lt;/code> object can be used as a key and as a value.&#xA;&lt;p>&#xA;As a rule, the &lt;code>equals&lt;/code> method should be used by&#xA;implementations of this class to decide if two keys are the same.&#xA;&lt;p>&#xA;&lt;strong>NOTE: This class is obsolete.  New implementations should&#xA;implement the Map interface, rather than extending this class.&lt;/strong>&#xA;&#xA;@author  unascribed&#xA;@version 1.23, 01/12/04&#xA;@see&#x9;    java.util.Map&#xA;@see     java.lang.Object#equals(java.lang.Object)&#xA;@see     java.lang.Object#hashCode()&#xA;@see     java.util.Hashtable&#xA;@since   JDK1.0&#xA;" annotatedElement="245b2fb7-9336-4bfd-83ce-b9739a1782ab"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="fc5aaeae-b39c-4af2-8b89-420ca799c644" name="" parameter="8b053dc8-20a5-4344-a3a9-21b7c076a556 f53af2f2-4cb1-4671-bc45-768a7499dcff">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="8b053dc8-20a5-4344-a3a9-21b7c076a556" parameteredElement="beb726d0-37cc-4c63-b5dd-d0d347488f95">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="beb726d0-37cc-4c63-b5dd-d0d347488f95" name="K" templateParameter="8b053dc8-20a5-4344-a3a9-21b7c076a556"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="f53af2f2-4cb1-4671-bc45-768a7499dcff" parameteredElement="075db515-ee4f-41bc-be95-9f64da47d9f2">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="075db515-ee4f-41bc-be95-9f64da47d9f2" name="V" templateParameter="f53af2f2-4cb1-4671-bc45-768a7499dcff"/>
              </ownedParameter>
            </ownedTemplateSignature>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f5c1416e-71c0-452c-9881-a12875b472ba" name="UnknownFormatFlagsException">
            <ownedComment xmi:id="a786ae6a-b4e1-42b1-9995-1eb6a5f37954" body="Unchecked exception thrown when an unknown flag is given.&#xA;&#xA;&lt;p> Unless otherwise specified, passing a &lt;tt>null&lt;/tt> argument to any&#xA;method or constructor in this class will cause a {@link&#xA;NullPointerException} to be thrown.&#xA;&#xA;@version &#x9;1.2, 12/19/03&#xA;@since 1.5&#xA;" annotatedElement="f5c1416e-71c0-452c-9881-a12875b472ba"/>
            <generalization xmi:id="2ed67a80-9016-48bc-a888-5940eb2c1082" isSubstitutable="true" general="615b003b-a7bd-4b48-ba53-15e2ad73fd34"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a0b21c44-4806-4725-9446-97297f030aff" name="SimpleTimeZone">
            <ownedComment xmi:id="daa44484-5563-4b0f-847f-cab8020b5a6b" body="&lt;code>SimpleTimeZone&lt;/code> is a concrete subclass of &lt;code>TimeZone&lt;/code>&#xA;that represents a time zone for use with a Gregorian calendar.&#xA;The class holds an offset from GMT, called &lt;em>raw offset&lt;/em>, and start&#xA;and end rules for a daylight saving time schedule.  Since it only holds&#xA;single values for each, it cannot handle historical changes in the offset&#xA;from GMT and the daylight saving schedule, except that the {@link&#xA;#setStartYear setStartYear} method can specify the year when the daylight&#xA;saving time schedule starts in effect.&#xA;&lt;p>&#xA;To construct a &lt;code>SimpleTimeZone&lt;/code> with a daylight saving time&#xA;schedule, the schedule can be described with a set of rules,&#xA;&lt;em>start-rule&lt;/em> and &lt;em>end-rule&lt;/em>. A day when daylight saving time&#xA;starts or ends is specified by a combination of &lt;em>month&lt;/em>,&#xA;&lt;em>day-of-month&lt;/em>, and &lt;em>day-of-week&lt;/em> values. The &lt;em>month&lt;/em>&#xA;value is represented by a Calendar {@link Calendar#MONTH MONTH} field&#xA;value, such as {@link Calendar#MARCH}. The &lt;em>day-of-week&lt;/em> value is&#xA;represented by a Calendar {@link Calendar#DAY_OF_WEEK DAY_OF_WEEK} value,&#xA;such as {@link Calendar#SUNDAY SUNDAY}. The meanings of value combinations&#xA;are as follows.&#xA;&#xA;&lt;ul>&#xA;&lt;li>&lt;b>Exact day of month&lt;/b>&lt;br>&#xA;To specify an exact day of month, set the &lt;em>month&lt;/em> and&#xA;&lt;em>day-of-month&lt;/em> to an exact value, and &lt;em>day-of-week&lt;/em> to zero. For&#xA;example, to specify March 1, set the &lt;em>month&lt;/em> to {@link Calendar#MARCH&#xA;MARCH}, &lt;em>day-of-month&lt;/em> to 1, and &lt;em>day-of-week&lt;/em> to 0.&lt;/li>&#xA;&#xA;&lt;li>&lt;b>Day of week on or after day of month&lt;/b>&lt;br>&#xA;To specify a day of week on or after an exact day of month, set the&#xA;&lt;em>month&lt;/em> to an exact month value, &lt;em>day-of-month&lt;/em> to the day on&#xA;or after which the rule is applied, and &lt;em>day-of-week&lt;/em> to a negative {@link&#xA;Calendar#DAY_OF_WEEK DAY_OF_WEEK} field value. For example, to specify the&#xA;second Sunday of April, set &lt;em>month&lt;/em> to {@link Calendar#APRIL APRIL},&#xA;&lt;em>day-of-month&lt;/em> to 8, and &lt;em>day-of-week&lt;/em> to &lt;code>-&lt;/code>{@link&#xA;Calendar#SUNDAY SUNDAY}.&lt;/li>&#xA;&#xA;&lt;li>&lt;b>Day of week on or before day of month&lt;/b>&lt;br>&#xA;To specify a day of the week on or before an exact day of the month, set&#xA;&lt;em>day-of-month&lt;/em> and &lt;em>day-of-week&lt;/em> to a negative value. For&#xA;example, to specify the last Wednesday on or before the 21st of March, set&#xA;&lt;em>month&lt;/em> to {@link Calendar#MARCH MARCH}, &lt;em>day-of-month&lt;/em> is -21&#xA;and &lt;em>day-of-week&lt;/em> is &lt;code>-&lt;/code>{@link Calendar#WEDNESDAY WEDNESDAY}. &lt;/li>&#xA;&#xA;&lt;li>&lt;b>Last day-of-week of month&lt;/b>&lt;br>&#xA;To specify, the last day-of-week of the month, set &lt;em>day-of-week&lt;/em> to a&#xA;{@link Calendar#DAY_OF_WEEK DAY_OF_WEEK} value and &lt;em>day-of-month&lt;/em> to&#xA;-1. For example, to specify the last Sunday of October, set &lt;em>month&lt;/em>&#xA;to {@link Calendar#OCTOBER OCTOBER}, &lt;em>day-of-week&lt;/em> to {@link&#xA;Calendar#SUNDAY SUNDAY} and &lt;em>day-of-month&lt;/em> to -1.  &lt;/li>&#xA;&#xA;&lt;/ul>&#xA;The time of the day at which daylight saving time starts or ends is&#xA;specified by a millisecond value within the day. There are three kinds of&#xA;&lt;em>mode&lt;/em>s to specify the time: {@link #WALL_TIME}, {@link&#xA;#STANDARD_TIME} and {@link #UTC_TIME}. For example, if daylight&#xA;saving time ends&#xA;at 2:00 am in the wall clock time, it can be specified by 7200000&#xA;milliseconds in the {@link #WALL_TIME} mode. In this case, the wall clock time&#xA;for an &lt;em>end-rule&lt;/em> means the same thing as the daylight time.&#xA;&lt;p>&#xA;The following are examples of parameters for constructing time zone objects.&#xA;&lt;pre>&lt;code>&#xA;Base GMT offset: -8:00&#xA;DST starts:      at 2:00am in standard time&#xA;on the first Sunday in April&#xA;DST ends:        at 2:00am in daylight time&#xA;on the last Sunday in October&#xA;Save:            1 hour&#xA;SimpleTimeZone(-28800000,&#xA;&quot;America/Los_Angeles&quot;,&#xA;Calendar.APRIL, 1, -Calendar.SUNDAY,&#xA;7200000,&#xA;Calendar.OCTOBER, -1, Calendar.SUNDAY,&#xA;7200000,&#xA;3600000)&#xA;&#xA;Base GMT offset: +1:00&#xA;DST starts:      at 1:00am in UTC time&#xA;on the last Sunday in March&#xA;DST ends:        at 1:00am in UTC time&#xA;on the last Sunday in October&#xA;Save:            1 hour&#xA;SimpleTimeZone(3600000,&#xA;&quot;Europe/Paris&quot;,&#xA;Calendar.MARCH, -1, Calendar.SUNDAY,&#xA;3600000, SimpleTimeZone.UTC_TIME,&#xA;Calendar.OCTOBER, -1, Calendar.SUNDAY,&#xA;3600000, SimpleTimeZone.UTC_TIME,&#xA;3600000)&#xA;&lt;/code>&lt;/pre>&#xA;These parameter rules are also applicable to the set rule methods, such as&#xA;&lt;code>setStartRule&lt;/code>.&#xA;&#xA;@since 1.1&#xA;@see      Calendar&#xA;@see      GregorianCalendar&#xA;@see      TimeZone&#xA;@version  1.49 01/12/04&#xA;@author   David Goldsmith, Mark Davis, Chen-Lieh Huang, Alan Liu&#xA;" annotatedElement="a0b21c44-4806-4725-9446-97297f030aff"/>
            <generalization xmi:id="d7f341df-e8aa-4129-8273-088d4692f317" isSubstitutable="true" general="c7838e49-9ba0-42bf-a9da-a0405e6fcbf0"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="364dd697-4be8-4639-b83f-416a724119b4" name="Set" isAbstract="true">
            <ownedComment xmi:id="0b3028fa-e0ab-4fba-8d6b-b5e268f939ac" body="A collection that contains no duplicate elements.  More formally, sets&#xA;contain no pair of elements &lt;code>e1&lt;/code> and &lt;code>e2&lt;/code> such that&#xA;&lt;code>e1.equals(e2)&lt;/code>, and at most one null element.  As implied by&#xA;its name, this interface models the mathematical &lt;i>set&lt;/i> abstraction.&lt;p>&#xA;&#xA;The &lt;tt>Set&lt;/tt> interface places additional stipulations, beyond those&#xA;inherited from the &lt;tt>Collection&lt;/tt> interface, on the contracts of all&#xA;constructors and on the contracts of the &lt;tt>add&lt;/tt>, &lt;tt>equals&lt;/tt> and&#xA;&lt;tt>hashCode&lt;/tt> methods.  Declarations for other inherited methods are&#xA;also included here for convenience.  (The specifications accompanying these&#xA;declarations have been tailored to the &lt;tt>Set&lt;/tt> interface, but they do&#xA;not contain any additional stipulations.)&lt;p>&#xA;&#xA;The additional stipulation on constructors is, not surprisingly,&#xA;that all constructors must create a set that contains no duplicate elements&#xA;(as defined above).&lt;p>&#xA;&#xA;Note: Great care must be exercised if mutable objects are used as set&#xA;elements.  The behavior of a set is not specified if the value of an object&#xA;is changed in a manner that affects equals comparisons while the object is&#xA;an element in the set.  A special case of this prohibition is that it is&#xA;not permissible for a set to contain itself as an element.&#xA;&#xA;&lt;p>Some set implementations have restrictions on the elements that&#xA;they may contain.  For example, some implementations prohibit null elements,&#xA;and some have restrictions on the types of their elements.  Attempting to&#xA;add an ineligible element throws an unchecked exception, typically&#xA;&lt;tt>NullPointerException&lt;/tt> or &lt;tt>ClassCastException&lt;/tt>.  Attempting&#xA;to query the presence of an ineligible element may throw an exception,&#xA;or it may simply return false; some implementations will exhibit the former&#xA;behavior and some will exhibit the latter.  More generally, attempting an&#xA;operation on an ineligible element whose completion would not result in&#xA;the insertion of an ineligible element into the set may throw an&#xA;exception or it may succeed, at the option of the implementation.&#xA;Such exceptions are marked as &quot;optional&quot; in the specification for this&#xA;interface.&#xA;&#xA;&lt;p>This interface is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@author  Neal Gafter&#xA;@version 1.35, 02/19/04&#xA;@see Collection&#xA;@see List&#xA;@see SortedSet&#xA;@see HashSet&#xA;@see TreeSet&#xA;@see AbstractSet&#xA;@see Collections#singleton(java.lang.Object)&#xA;@see Collections#EMPTY_SET&#xA;@since 1.2&#xA;" annotatedElement="364dd697-4be8-4639-b83f-416a724119b4"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="001703e6-ec1e-4603-87c0-aef2f0d224ba" name="" parameter="e5280fa0-76af-45bb-b215-be3f2107b566">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="e5280fa0-76af-45bb-b215-be3f2107b566" parameteredElement="65212fcc-1c70-4271-9c88-29cd69d01067">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="65212fcc-1c70-4271-9c88-29cd69d01067" name="E" templateParameter="e5280fa0-76af-45bb-b215-be3f2107b566"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="03ca8084-a846-43dd-aa36-9cc8338973bd" isSubstitutable="true" general="f2ecd2a3-8039-41dd-a004-e978e2a488aa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c65d4df3-90fb-4c43-be7a-4dc89b9edc6c" name="UnknownFormatConversionException">
            <ownedComment xmi:id="2d4774e9-b9a9-4c5d-ad01-d284c2f3e765" body="Unchecked exception thrown when an unknown conversion is given.&#xA;&#xA;&lt;p> Unless otherwise specified, passing a &lt;tt>null&lt;/tt> argument to&#xA;any method or constructor in this class will cause a {@link&#xA;NullPointerException} to be thrown.&#xA;&#xA;@version &#x9;1.3, 06/07/04&#xA;@since 1.5&#xA;" annotatedElement="c65d4df3-90fb-4c43-be7a-4dc89b9edc6c"/>
            <generalization xmi:id="d640e02c-06b7-4d58-8335-e6de5a8c2c3e" isSubstitutable="true" general="615b003b-a7bd-4b48-ba53-15e2ad73fd34"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c6f4e001-7d6a-4ace-963b-e5d60b08d784" name="FormatFlagsConversionMismatchException">
            <ownedComment xmi:id="47d20089-0847-479a-a446-fa62bed19918" body="Unchecked exception thrown when a conversion and flag are incompatible.&#xA;&#xA;&lt;p> Unless otherwise specified, passing a &lt;tt>null&lt;/tt> argument to any&#xA;method or constructor in this class will cause a {@link&#xA;NullPointerException} to be thrown.&#xA;&#xA;@version &#x9;1.2, 12/19/03&#xA;@since 1.5&#xA;" annotatedElement="c6f4e001-7d6a-4ace-963b-e5d60b08d784"/>
            <generalization xmi:id="cfb91cd0-0255-4743-90bc-6be7adbd65dc" isSubstitutable="true" general="615b003b-a7bd-4b48-ba53-15e2ad73fd34"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f613cc96-2956-4018-9a57-c2dfb19f4898" name="ListResourceBundle" isAbstract="true">
            <ownedComment xmi:id="8b646ed6-a49c-48cd-aa54-0d169f864b89" body="&lt;code>ListResourceBundle&lt;/code> is an abstract subclass of&#xA;&lt;code>ResourceBundle&lt;/code> that manages resources for a locale&#xA;in a convenient and easy to use list. See &lt;code>ResourceBundle&lt;/code> for&#xA;more information about resource bundles in general.&#xA;&#xA;&lt;P>&#xA;Subclasses must override &lt;code>getContents&lt;/code> and provide an array,&#xA;where each item in the array is a pair of objects.&#xA;The first element of each pair is the key, which must be a&#xA;&lt;code>String&lt;/code>, and the second element is the value associated with&#xA;that key.&#xA;&#xA;&lt;p>&#xA;The following &lt;a name=&quot;sample&quot;>example&lt;/a> shows two members of a resource&#xA;bundle family with the base name &quot;MyResources&quot;.&#xA;&quot;MyResources&quot; is the default member of the bundle family, and&#xA;&quot;MyResources_fr&quot; is the French member.&#xA;These members are based on &lt;code>ListResourceBundle&lt;/code>&#xA;(a related &lt;a href=&quot;PropertyResourceBundle.html#sample&quot;>example&lt;/a> shows&#xA;how you can add a bundle to this family that's based on a properties file).&#xA;The keys in this example are of the form &quot;s1&quot; etc. The actual&#xA;keys are entirely up to your choice, so long as they are the same as&#xA;the keys you use in your program to retrieve the objects from the bundle.&#xA;Keys are case-sensitive.&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;&#xA;public class MyResources extends ListResourceBundle {&#xA;public Object[][] getContents() {&#xA;return contents;&#xA;}&#xA;static final Object[][] contents = {&#xA;LOCALIZE THIS&#xA;{&quot;s1&quot;, &quot;The disk \&quot;{1}\&quot; contains {0}.&quot;},  // MessageFormat pattern&#xA;{&quot;s2&quot;, &quot;1&quot;},                               // location of {0} in pattern&#xA;{&quot;s3&quot;, &quot;My Disk&quot;},                         // sample disk name&#xA;{&quot;s4&quot;, &quot;no files&quot;},                        // first ChoiceFormat choice&#xA;{&quot;s5&quot;, &quot;one file&quot;},                        // second ChoiceFormat choice&#xA;{&quot;s6&quot;, &quot;{0,number} files&quot;},                // third ChoiceFormat choice&#xA;{&quot;s7&quot;, &quot;3 Mar 96&quot;},                        // sample date&#xA;{&quot;s8&quot;, new Dimension(1,5)}                 // real object, not just string&#xA;END OF MATERIAL TO LOCALIZE&#xA;};&#xA;}&#xA;&#xA;public class MyResources_fr extends ListResourceBundle {&#xA;public Object[][] getContents() {&#xA;return contents;&#xA;}&#xA;static final Object[][] contents = {&#xA;LOCALIZE THIS&#xA;{&quot;s1&quot;, &quot;Le disque \&quot;{1}\&quot; {0}.&quot;},          // MessageFormat pattern&#xA;{&quot;s2&quot;, &quot;1&quot;},                               // location of {0} in pattern&#xA;{&quot;s3&quot;, &quot;Mon disque&quot;},                      // sample disk name&#xA;{&quot;s4&quot;, &quot;ne contient pas de fichiers&quot;},     // first ChoiceFormat choice&#xA;{&quot;s5&quot;, &quot;contient un fichier&quot;},             // second ChoiceFormat choice&#xA;{&quot;s6&quot;, &quot;contient {0,number} fichiers&quot;},    // third ChoiceFormat choice&#xA;{&quot;s7&quot;, &quot;3 mars 1996&quot;},                     // sample date&#xA;{&quot;s8&quot;, new Dimension(1,3)}                 // real object, not just string&#xA;END OF MATERIAL TO LOCALIZE&#xA;};&#xA;}&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;@see ResourceBundle&#xA;@see PropertyResourceBundle&#xA;@since JDK1.1&#xA;" annotatedElement="f613cc96-2956-4018-9a57-c2dfb19f4898"/>
            <generalization xmi:id="2a9525f1-b08a-4e27-9ebb-4d9308547c75" isSubstitutable="true" general="3aeb4cea-0b5b-4219-98a6-a1e99d5405db"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3d95a3eb-99bf-48fe-90e5-14c3a41975d8" name="Dictionary&lt;K, V>">
            <templateBinding xmi:id="a6c8c676-f26c-4e0d-a7df-24fefd8b1885" signature="fc5aaeae-b39c-4af2-8b89-420ca799c644">
              <parameterSubstitution xmi:id="b92a08cd-8cb5-4a22-beef-612fd1e5b608" formal="8b053dc8-20a5-4344-a3a9-21b7c076a556" actual="f177f706-df27-4fd8-8fe2-6c1f13d71bf5"/>
              <parameterSubstitution xmi:id="39075ffe-8c3d-4ba9-873c-7720ced53170" formal="f53af2f2-4cb1-4671-bc45-768a7499dcff" actual="99f29e81-5250-4d3b-8c08-28bc3c23bc7d"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="631b8805-2210-45c5-a6fe-f0b25ba4c750" name="SynchronizedSet&lt;E>">
            <templateBinding xmi:id="caa81d90-cbd1-4376-b3fa-5f40edc7713b" signature="ac70e4b0-05c8-45ac-834a-3c351bb0b9a8">
              <parameterSubstitution xmi:id="332ed072-5620-4b26-a5e3-91db6ad86a94" formal="5dd2fb91-29a8-450d-8fee-b5ed714883c2" actual="96195437-5f58-4b3e-982f-1ad3335f173f"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="bb993fb0-a8db-48d9-882e-0443ae75bf7c" name="FormatterClosedException">
            <ownedComment xmi:id="367b5315-2da1-40e2-921e-21c67d454171" body="Unchecked exception thrown when the formatter has been closed.&#xA;&#xA;&lt;p> Unless otherwise specified, passing a &lt;tt>null&lt;/tt> argument to any&#xA;method or constructor in this class will cause a {@link&#xA;NullPointerException} to be thrown.&#xA;&#xA;@version &#x9;1.2, 12/19/03&#xA;@since 1.5&#xA;" annotatedElement="bb993fb0-a8db-48d9-882e-0443ae75bf7c"/>
            <generalization xmi:id="8e5ecf3e-6014-4258-ada7-f1cf79ea2dc4" isSubstitutable="true" general="f9e1d07d-a558-48c5-a45e-01540d385078"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6bf2568d-dd6b-410b-b39e-578f3c68abf7" name="AbstractQueue" clientDependency="ccb6e6e8-d119-471f-8b4f-286c8e30f8d7" isAbstract="true">
            <ownedComment xmi:id="114d6606-bf7e-4eac-84c0-1731833354be" body="This class provides skeletal implementations of some {@link Queue}&#xA;operations. The implementations in this class are appropriate when&#xA;the base implementation does &lt;em>not&lt;/em> allow &lt;tt>null&lt;/tt>&#xA;elements.  Methods {@link #add add}, {@link #remove remove}, and&#xA;{@link #element element} are based on {@link #offer offer}, {@link&#xA;#poll poll}, and {@link #peek peek}, respectively but throw&#xA;exceptions instead of indicating failure via &lt;tt>false&lt;/tt> or&#xA;&lt;tt>null&lt;/tt> returns.&#xA;&#xA;&lt;p> A &lt;tt>Queue&lt;/tt> implementation that extends this class must&#xA;minimally define a method {@link Queue#offer} which does not permit&#xA;insertion of &lt;tt>null&lt;/tt> elements, along with methods {@link&#xA;Queue#peek}, {@link Queue#poll}, {@link Collection#size}, and a&#xA;{@link Collection#iterator} supporting {@link&#xA;Iterator#remove}. Typically, additional methods will be overridden&#xA;as well. If these requirements cannot be met, consider instead&#xA;subclassing {@link AbstractCollection}.&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@since 1.5&#xA;@author Doug Lea&#xA;@param &lt;E> the type of elements held in this collection&#xA;" annotatedElement="6bf2568d-dd6b-410b-b39e-578f3c68abf7"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="2d2a86b4-5feb-4f77-be97-e8ad8bbb5c9e" name="" parameter="4102986b-eb8a-4a6d-9295-7b6f1ff8a9f1">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="4102986b-eb8a-4a6d-9295-7b6f1ff8a9f1" parameteredElement="915bd4b8-c4f7-42cb-8bda-46d9deec32de">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="915bd4b8-c4f7-42cb-8bda-46d9deec32de" name="E" templateParameter="4102986b-eb8a-4a6d-9295-7b6f1ff8a9f1"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="ff3a3f66-c335-4a58-9376-da96acd701c4" isSubstitutable="true" general="ec29d9fd-f66a-4a01-a246-04b974e8c332"/>
            <interfaceRealization xmi:id="ccb6e6e8-d119-471f-8b4f-286c8e30f8d7" name="" supplier="b9722b17-296e-4891-893c-daddd8d91c74" client="6bf2568d-dd6b-410b-b39e-578f3c68abf7" contract="b9722b17-296e-4891-893c-daddd8d91c74"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="79c13599-0880-4e2b-957f-c08f90f04993" name="AbstractList&lt;Object>">
            <templateBinding xmi:id="079e4f02-0d38-4592-983c-2202a8cc6168" signature="644f38f8-9f74-4a51-b690-c537f6da35cc">
              <parameterSubstitution xmi:id="e6eae380-35c5-45d3-8368-0633d9159bc2" formal="23b58bd8-95d6-4436-97e9-b49cfc2bf205" actual="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="5c8be023-a7d4-447b-a037-131dacd98aad" name="logging">
            <packagedElement xmi:type="uml:Class" xmi:id="06993af7-83f3-4d90-b33e-77eda8b99f57" name="Handler" isAbstract="true">
              <ownedComment xmi:id="2775df5d-3df3-4830-89c0-cebe21b19fa5" body="A &lt;tt>Handler&lt;/tt> object takes log messages from a &lt;tt>Logger&lt;/tt> and&#xA;exports them.  It might for example, write them to a console&#xA;or write them to a file, or send them to a network logging service,&#xA;or forward them to an OS log, or whatever.&#xA;&lt;p>&#xA;A &lt;tt>Handler&lt;/tt> can be disabled by doing a &lt;tt>setLevel(Level.OFF)&lt;/tt>&#xA;and can  be re-enabled by doing a &lt;tt>setLevel&lt;/tt> with an appropriate level.&#xA;&lt;p>&#xA;&lt;tt>Handler&lt;/tt> classes typically use &lt;tt>LogManager&lt;/tt> properties to set&#xA;default values for the &lt;tt>Handler&lt;/tt>'s &lt;tt>Filter&lt;/tt>, &lt;tt>Formatter&lt;/tt>,&#xA;and &lt;tt>Level&lt;/tt>.  See the specific documentation for each concrete&#xA;&lt;tt>Handler&lt;/tt> class.&#xA;&#xA;&#xA;@version 1.17, 01/12/04&#xA;@since 1.4&#xA;" annotatedElement="06993af7-83f3-4d90-b33e-77eda8b99f57"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="726317d9-3c5b-48a9-8189-c735838504ad" name="ErrorManager">
              <ownedComment xmi:id="1251c7cf-742a-4ddc-be5c-874ad114bf15" body="ErrorManager objects can be attached to Handlers to process&#xA;any error that occur on a Handler during Logging.&#xA;&lt;p>&#xA;When processing logging output, if a Handler encounters problems&#xA;then rather than throwing an Exception back to the issuer of&#xA;the logging call (who is unlikely to be interested) the Handler&#xA;should call its associated ErrorManager.&#xA;" annotatedElement="726317d9-3c5b-48a9-8189-c735838504ad"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="137d3814-2c4c-4272-b8a2-1916f7c08b1c" name="FileHandler">
              <ownedComment xmi:id="636e3137-1ebb-453c-9f95-3fde22580af8" body="Simple file logging &lt;tt>Handler&lt;/tt>.&#xA;&lt;p>&#xA;The &lt;tt>FileHandler&lt;/tt> can either write to a specified file,&#xA;or it can write to a rotating set of files.&#xA;&lt;p>&#xA;For a rotating set of files, as each file reaches a given size&#xA;limit, it is closed, rotated out, and a new file opened.&#xA;Successively older files are named by adding &quot;0&quot;, &quot;1&quot;, &quot;2&quot;,&#xA;etc into the base filename.&#xA;&lt;p>&#xA;By default buffering is enabled in the IO libraries but each log&#xA;record is flushed out when it is complete.&#xA;&lt;p>&#xA;By default the &lt;tt>XMLFormatter&lt;/tt> class is used for formatting.&#xA;&lt;p>&#xA;&lt;b>Configuration:&lt;/b>&#xA;By default each &lt;tt>FileHandler&lt;/tt> is initialized using the following&#xA;&lt;tt>LogManager&lt;/tt> configuration properties.  If properties are not defined&#xA;(or have invalid values) then the specified default values are used.&#xA;&lt;ul>&#xA;&lt;li>   java.util.logging.FileHandler.level&#xA;specifies the default level for the &lt;tt>Handler&lt;/tt>&#xA;(defaults to &lt;tt>Level.ALL&lt;/tt>).&#xA;&lt;li>   java.util.logging.FileHandler.filter&#xA;specifies the name of a &lt;tt>Filter&lt;/tt> class to use&#xA;(defaults to no &lt;tt>Filter&lt;/tt>).&#xA;&lt;li>   java.util.logging.FileHandler.formatter&#xA;specifies the name of a &lt;/tt>Formatter&lt;/tt> class to use&#xA;(defaults to &lt;tt>java.util.logging.XMLFormatter&lt;/tt>)&#xA;&lt;li>   java.util.logging.FileHandler.encoding&#xA;the name of the character set encoding to use (defaults to&#xA;the default platform encoding).&#xA;&lt;li>   java.util.logging.FileHandler.limit&#xA;specifies an approximate maximum amount to write (in bytes)&#xA;to any one file.  If this is zero, then there is no limit.&#xA;(Defaults to no limit).&#xA;&lt;li>   java.util.logging.FileHandler.count&#xA;specifies how many output files to cycle through (defaults to 1).&#xA;&lt;li>   java.util.logging.FileHandler.pattern&#xA;specifies a pattern for generating the output file name.  See&#xA;below for details. (Defaults to &quot;%h/java%u.log&quot;).&#xA;&lt;li>   java.util.logging.FileHandler.append&#xA;specifies whether the FileHandler should append onto&#xA;any existing files (defaults to false).&#xA;&lt;/ul>&#xA;&lt;p>&#xA;&lt;p>&#xA;A pattern consists of a string that includes the following special&#xA;components that will be replaced at runtime:&#xA;&lt;ul>&#xA;&lt;li>    &quot;/&quot;    the local pathname separator&#xA;&lt;li>     &quot;%t&quot;   the system temporary directory&#xA;&lt;li>     &quot;%h&quot;   the value of the &quot;user.home&quot; system property&#xA;&lt;li>     &quot;%g&quot;   the generation number to distinguish rotated logs&#xA;&lt;li>     &quot;%u&quot;   a unique number to resolve conflicts&#xA;&lt;li>     &quot;%%&quot;   translates to a single percent sign &quot;%&quot;&#xA;&lt;/ul>&#xA;If no &quot;%g&quot; field has been specified and the file count is greater&#xA;than one, then the generation number will be added to the end of&#xA;the generated filename, after a dot.&#xA;&lt;p>&#xA;Thus for example a pattern of &quot;%t/java%g.log&quot; with a count of 2&#xA;would typically cause log files to be written on Solaris to&#xA;var/tmp/java0.log and /var/tmp/java1.log whereas on Windows 95 they&#xA;would be typically written to C:\TEMP\java0.log and C:\TEMP\java1.log&#xA;&lt;p>&#xA;Generation numbers follow the sequence 0, 1, 2, etc.&#xA;&lt;p>&#xA;Normally the &quot;%u&quot; unique field is set to 0.  However, if the &lt;tt>FileHandler&lt;/tt>&#xA;tries to open the filename and finds the file is currently in use by&#xA;another process it will increment the unique number field and try&#xA;again.  This will be repeated until &lt;tt>FileHandler&lt;/tt> finds a file name that&#xA;is  not currently in use. If there is a conflict and no &quot;%u&quot; field has&#xA;been specified, it will be added at the end of the filename after a dot.&#xA;(This will be after any automatically added generation number.)&#xA;&lt;p>&#xA;Thus if three processes were all trying to log to fred%u.%g.txt then&#xA;they  might end up using fred0.0.txt, fred1.0.txt, fred2.0.txt as&#xA;the first file in their rotating sequences.&#xA;&lt;p>&#xA;Note that the use of unique ids to avoid conflicts is only guaranteed&#xA;to work reliably when using a local disk file system.&#xA;&#xA;@version 1.34, 04/05/04&#xA;@since 1.4&#xA;" annotatedElement="137d3814-2c4c-4272-b8a2-1916f7c08b1c"/>
              <generalization xmi:id="2b174a4b-7a9a-4315-9f59-6b2247a24d45" isSubstitutable="true" general="17cd7c29-2720-40d8-aa57-244768011ab0"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0435870a-d84d-4396-ac2b-603034967117" name="MeteredStream" visibility="private">
                <generalization xmi:id="9ef9ef27-759f-40d5-90ef-928128c0f442" isSubstitutable="true" general="23f94159-dc57-40a7-86d8-db17a349aa48"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="02fa3d61-83f4-4815-b6d3-8a5f94d9cd7e" name="InitializationErrorManager" visibility="private">
                <generalization xmi:id="7cb99d2b-90bd-4e24-8272-c953bcf1e0a8" isSubstitutable="true" general="726317d9-3c5b-48a9-8189-c735838504ad"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="79e9454e-271c-406a-8468-ef9c1501d0d4" name="LogManager">
              <ownedComment xmi:id="2677d8d4-affa-4fc8-b97f-c5c49bb5e39a" body="There is a single global LogManager object that is used to&#xA;maintain a set of shared state about Loggers and log services.&#xA;&lt;p>&#xA;This LogManager object:&#xA;&lt;ul>&#xA;&lt;li> Manages a hierarchical namespace of Logger objects.  All&#xA;named Loggers are stored in this namespace.&#xA;&lt;li> Manages a set of logging control properties.  These are&#xA;simple key-value pairs that can be used by Handlers and&#xA;other logging objects to configure themselves.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;The global LogManager object can be retrieved using LogManager.getLogManager().&#xA;The LogManager object is created during class initialization and&#xA;cannot subsequently be changed.&#xA;&lt;p>&#xA;At startup the LogManager class is located using the&#xA;java.util.logging.manager system property.&#xA;&lt;p>&#xA;By default, the LogManager reads its initial configuration from&#xA;a properties file &quot;lib/logging.properties&quot; in the JRE directory.&#xA;If you edit that property file you can change the default logging&#xA;configuration for all uses of that JRE.&#xA;&lt;p>&#xA;In addition, the LogManager uses two optional system properties that&#xA;allow more control over reading the initial configuration:&#xA;&lt;ul>&#xA;&lt;li>&quot;java.util.logging.config.class&quot;&#xA;&lt;li>&quot;java.util.logging.config.file&quot;&#xA;&lt;/ul>&#xA;These two properties may be set via the Preferences API, or as&#xA;command line property definitions to the &quot;java&quot; command, or as&#xA;system property definitions passed to JNI_CreateJavaVM.&#xA;&lt;p>&#xA;If the &quot;java.util.logging.config.class&quot; property is set, then the&#xA;property value is treated as a class name.  The given class will be&#xA;loaded, an object will be instantiated, and that object's constructor&#xA;is responsible for reading in the initial configuration.  (That object&#xA;may use other system properties to control its configuration.)  The&#xA;alternate configuration class can use &lt;tt>readConfiguration(InputStream)&lt;/tt>&#xA;to define properties in the LogManager.&#xA;&lt;p>&#xA;If &quot;java.util.logging.config.class&quot; property is &lt;b>not&lt;/b> set,&#xA;then the &quot;java.util.logging.config.file&quot; system property can be used&#xA;to specify a properties file (in java.util.Properties format). The&#xA;initial logging configuration will be read from this file.&#xA;&lt;p>&#xA;If neither of these properties is defined then, as described&#xA;above, the LogManager will read its initial configuration from&#xA;a properties file &quot;lib/logging.properties&quot; in the JRE directory.&#xA;&lt;p>&#xA;The properties for loggers and Handlers will have names starting&#xA;with the dot-separated name for the handler or logger.&#xA;&lt;p>&#xA;The global logging properties may include:&#xA;&lt;ul>&#xA;&lt;li>A property &quot;handlers&quot;.  This defines a whitespace separated&#xA;list of class names for handler classes to load and register as&#xA;handlers on the root Logger (the Logger named &quot;&quot;).  Each class&#xA;name must be for a Handler class which has a default constructor.&#xA;Note that these Handlers may be created lazily, when they are&#xA;first used.&#xA;&#xA;&lt;li>A property &quot;&lt;logger>.handlers&quot;. This defines a whitespace or&#xA;comma separated list of class names for handlers classes to&#xA;load and register as handlers to the specified logger. Each class&#xA;name must be for a Handler class which has a default constructor.&#xA;Note that these Handlers may be created lazily, when they are&#xA;first used.&#xA;&#xA;&lt;li>A property &quot;&lt;logger>.useParentHandlers&quot;. This defines a boolean&#xA;value. By default every logger calls its parent in addition to&#xA;handling the logging message itself, this often result in messages&#xA;being handled by the root logger as well. When setting this property&#xA;to false a Handler needs to be configured for this logger otherwise&#xA;no logging messages are delivered.&#xA;&#xA;&lt;li>A property &quot;config&quot;.  This property is intended to allow&#xA;arbitrary configuration code to be run.  The property defines a&#xA;whitespace separated list of class names.  A new instance will be&#xA;created for each named class.  The default constructor of each class&#xA;may execute arbitrary code to update the logging configuration, such as&#xA;setting logger levels, adding handlers, adding filters, etc.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;Note that all classes loaded during LogManager configuration are&#xA;first searched on the system class path before any user class path.&#xA;That includes the LogManager class, any config classes, and any&#xA;handler classes.&#xA;&lt;p>&#xA;Loggers are organized into a naming hierarchy based on their&#xA;dot separated names.  Thus &quot;a.b.c&quot; is a child of &quot;a.b&quot;, but&#xA;&quot;a.b1&quot; and a.b2&quot; are peers.&#xA;&lt;p>&#xA;All properties whose names end with &quot;.level&quot; are assumed to define&#xA;log levels for Loggers.  Thus &quot;foo.level&quot; defines a log level for&#xA;the logger called &quot;foo&quot; and (recursively) for any of its children&#xA;in the naming hierarchy.  Log Levels are applied in the order they&#xA;are defined in the properties file.  Thus level settings for child&#xA;nodes in the tree should come after settings for their parents.&#xA;The property name &quot;.level&quot; can be used to set the level for the&#xA;root of the tree.&#xA;&lt;p>&#xA;All methods on the LogManager object are multi-thread safe.&#xA;&#xA;@version 1.46, 06/07/04&#xA;@since 1.4&#xA;" annotatedElement="79e9454e-271c-406a-8468-ef9c1501d0d4"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="a76cb731-6681-4dcf-9587-b63b037e68a1" name="Cleaner" visibility="private">
                <generalization xmi:id="be34c86a-13d3-4442-b53f-7d7afe32740d" isSubstitutable="true" general="c9830202-c9c4-48c6-a18c-376520128934"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="7aa6f823-a034-44a1-b9ca-9c41163965f0" name="LogNode" visibility="private"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="3ba6b49c-a6bf-446e-9a25-13b08d7787aa" name="RootLogger" visibility="private">
                <generalization xmi:id="ea562afd-9087-4902-ae30-51edc99e4021" isSubstitutable="true" general="623c57a2-1105-42e0-8ba5-66f9a943d1d0"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5d548f87-abcf-4aa4-a538-99d25ce8ab97" name="Logging" visibility="package" clientDependency="943a6ae1-73a9-4c13-b842-98d37b934c1d">
              <ownedComment xmi:id="ca234062-4599-45b1-b478-e676e02e0835" body="Logging is the implementation class of LoggingMXBean.&#xA;&#xA;The &lt;tt>LoggingMXBean&lt;/tt> interface provides a standard&#xA;method for management access to the individual&#xA;java.util.Logger objects available at runtime.&#xA;&#xA;@author Ron Mann&#xA;@author Mandy Chung&#xA;@version 1.5, 04/18/04&#xA;@since 1.5&#xA;&#xA;@see javax.management&#xA;@see java.util.Logger&#xA;@see java.util.LogManager&#xA;" annotatedElement="5d548f87-abcf-4aa4-a538-99d25ce8ab97"/>
              <interfaceRealization xmi:id="943a6ae1-73a9-4c13-b842-98d37b934c1d" name="" supplier="3ad534ae-7794-4701-a66b-b9c8922e106e" client="5d548f87-abcf-4aa4-a538-99d25ce8ab97" contract="3ad534ae-7794-4701-a66b-b9c8922e106e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f311e550-0fcf-4658-91a0-9cc3093adc67" name="LogRecord" clientDependency="19147312-fdaf-4773-8a30-35b014b185aa">
              <ownedComment xmi:id="16059a1b-4243-4221-a92d-da891c8c9a64" body="LogRecord objects are used to pass logging requests between&#xA;the logging framework and individual log Handlers.&#xA;&lt;p>&#xA;When a LogRecord is passed into the logging framework it&#xA;logically belongs to the framework and should no longer be&#xA;used or updated by the client application.&#xA;&lt;p>&#xA;Note that if the client application has not specified an&#xA;explicit source method name and source class name, then the&#xA;LogRecord class will infer them automatically when they are&#xA;first accessed (due to a call on getSourceMethodName or&#xA;getSourceClassName) by analyzing the call stack.  Therefore,&#xA;if a logging Handler wants to pass off a LogRecord to another&#xA;thread, or to transmit it over RMI, and if it wishes to subsequently&#xA;obtain method name or class name information it should call&#xA;one of getSourceClassName or getSourceMethodName to force&#xA;the values to be filled in.&#xA;&lt;p>&#xA;&lt;b> Serialization notes:&lt;/b>&#xA;&lt;ul>&#xA;&lt;li>The LogRecord class is serializable.&#xA;&#xA;&lt;li> Because objects in the parameters array may not be serializable,&#xA;during serialization all objects in the parameters array are&#xA;written as the corresponding Strings (using Object.toString).&#xA;&#xA;&lt;li> The ResourceBundle is not transmitted as part of the serialized&#xA;form, but the resource bundle name is, and the recipient object's&#xA;readObject method will attempt to locate a suitable resource bundle.&#xA;&#xA;&lt;/ul>&#xA;&#xA;@version 1.23, 01/12/04&#xA;@since 1.4&#xA;" annotatedElement="f311e550-0fcf-4658-91a0-9cc3093adc67"/>
              <interfaceRealization xmi:id="19147312-fdaf-4773-8a30-35b014b185aa" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f311e550-0fcf-4658-91a0-9cc3093adc67" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="95c38fbb-ceb0-4798-8e96-d3b5c5d567c3" name="ConsoleHandler">
              <ownedComment xmi:id="3f099167-3cfe-45d0-8c88-940931b106d6" body="This &lt;tt>Handler&lt;/tt> publishes log records to &lt;tt>System.err&lt;/tt>.&#xA;By default the &lt;tt>SimpleFormatter&lt;/tt> is used to generate brief summaries.&#xA;&lt;p>&#xA;&lt;b>Configuration:&lt;/b>&#xA;By default each &lt;tt>ConsoleHandler&lt;/tt> is initialized using the following&#xA;&lt;tt>LogManager&lt;/tt> configuration properties.  If properties are not defined&#xA;(or have invalid values) then the specified default values are used.&#xA;&lt;ul>&#xA;&lt;li>   java.util.logging.ConsoleHandler.level&#xA;specifies the default level for the &lt;tt>Handler&lt;/tt>&#xA;(defaults to &lt;tt>Level.INFO&lt;/tt>).&#xA;&lt;li>   java.util.logging.ConsoleHandler.filter&#xA;specifies the name of a &lt;tt>Filter&lt;/tt> class to use&#xA;(defaults to no &lt;tt>Filter&lt;/tt>).&#xA;&lt;li>   java.util.logging.ConsoleHandler.formatter&#xA;specifies the name of a &lt;tt>Formatter&lt;/tt> class to use&#xA;(defaults to &lt;tt>java.util.logging.SimpleFormatter&lt;/tt>).&#xA;&lt;li>   java.util.logging.ConsoleHandler.encoding&#xA;the name of the character set encoding to use (defaults to&#xA;the default platform encoding).&#xA;&lt;/ul>&#xA;&lt;p>&#xA;@version 1.12, 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="95c38fbb-ceb0-4798-8e96-d3b5c5d567c3"/>
              <generalization xmi:id="774b1986-b6f8-4929-b3bf-b71e79f44e4f" isSubstitutable="true" general="17cd7c29-2720-40d8-aa57-244768011ab0"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="3ad534ae-7794-4701-a66b-b9c8922e106e" name="LoggingMXBean" isAbstract="true">
              <ownedComment xmi:id="fe9a5f97-cae2-45d0-be0f-4f6ba4be8310" body="The management interface for the logging facility.&#xA;&#xA;&lt;p>There is a single global instance of the &lt;tt>LoggingMXBean&lt;/tt>.&#xA;This instance is an&#xA;&lt;a href=&quot;ManagementFactory.html#MXBean&quot;>MXBean&lt;/a>&#xA;can be obtained by calling&#xA;the {@link LogManager#getLoggingMXBean} method or from the&#xA;{@link java.lang.management.ManagementFactory#getPlatformMBeanServer&#xA;platform &lt;tt>MBeanServer&lt;/tt>} method.&#xA;&#xA;&lt;p>The {@link javax.management.ObjectName ObjectName} for uniquely&#xA;identifying the &lt;tt>LoggingMXBean&lt;/tt> within an MBeanServer is:&#xA;&lt;blockquote>&#xA;{@link LogManager#LOGGING_MXBEAN_NAME&#xA;&lt;tt>java.util.logging:type=Logging&lt;/tt>}&#xA;&lt;/blockquote>&#xA;&#xA;@see java.lang.management.ManagementFactory&#xA;&#xA;@author  Ron Mann&#xA;@author  Mandy Chung&#xA;@version 1.7, 04/20/04&#xA;@since   1.5&#xA;&#xA;" annotatedElement="3ad534ae-7794-4701-a66b-b9c8922e106e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="623c57a2-1105-42e0-8ba5-66f9a943d1d0" name="Logger">
              <ownedComment xmi:id="aca82fb5-cda0-4902-9b01-b36fb485a642" body="A Logger object is used to log messages for a specific&#xA;system or application component.  Loggers are normally named,&#xA;using a hierarchical dot-separated namespace.  Logger names&#xA;can be arbitrary strings, but they should normally be based on&#xA;the package name or class name of the logged component, such&#xA;as java.net or javax.swing.  In addition it is possible to create&#xA;&quot;anonymous&quot; Loggers that are not stored in the Logger namespace.&#xA;&lt;p>&#xA;Logger objects may be obtained by calls on one of the getLogger&#xA;factory methods.  These will either create a new Logger or&#xA;return a suitable existing Logger.&#xA;&lt;p>&#xA;Logging messages will be forwarded to registered Handler&#xA;objects, which can forward the messages to a variety of&#xA;destinations, including consoles, files, OS logs, etc.&#xA;&lt;p>&#xA;Each Logger keeps track of a &quot;parent&quot; Logger, which is its&#xA;nearest existing ancestor in the Logger namespace.&#xA;&lt;p>&#xA;Each Logger has a &quot;Level&quot; associated with it.  This reflects&#xA;a minimum Level that this logger cares about.  If a Logger's&#xA;level is set to &lt;tt>null&lt;/tt>, then its effective level is inherited&#xA;from its parent, which may in turn obtain it recursively from its&#xA;parent, and so on up the tree.&#xA;&lt;p>&#xA;The log level can be configured based on the properties from the&#xA;logging configuration file, as described in the description&#xA;of the LogManager class.  However it may also be dynamically changed&#xA;by calls on the Logger.setLevel method.  If a logger's level is&#xA;changed the change may also affect child loggers, since any child&#xA;logger that has &lt;tt>null&lt;/tt> as its level will inherit its&#xA;effective level from its parent.&#xA;&lt;p>&#xA;On each logging call the Logger initially performs a cheap&#xA;check of the request level (e.g. SEVERE or FINE) against the&#xA;effective log level of the logger.  If the request level is&#xA;lower than the log level, the logging call returns immediately.&#xA;&lt;p>&#xA;After passing this initial (cheap) test, the Logger will allocate&#xA;a LogRecord to describe the logging message.  It will then call a&#xA;Filter (if present) to do a more detailed check on whether the&#xA;record should be published.  If that passes it will then publish&#xA;the LogRecord to its output Handlers.  By default, loggers also&#xA;publish to their parent's Handlers, recursively up the tree.&#xA;&lt;p>&#xA;Each Logger may have a ResourceBundle name associated with it.&#xA;The named bundle will be used for localizing logging messages.&#xA;If a Logger does not have its own ResourceBundle name, then&#xA;it will inherit the ResourceBundle name from its parent,&#xA;recursively up the tree.&#xA;&lt;p>&#xA;Most of the logger output methods take a &quot;msg&quot; argument.  This&#xA;msg argument may be either a raw value or a localization key.&#xA;During formatting, if the logger has (or inherits) a localization&#xA;ResourceBundle and if the ResourceBundle has a mapping for the msg&#xA;string, then the msg string is replaced by the localized value.&#xA;Otherwise the original msg string is used.  Typically, formatters use&#xA;java.text.MessageFormat style formatting to format parameters, so&#xA;for example a format string &quot;{0} {1}&quot; would format two parameters&#xA;as strings.&#xA;&lt;p>&#xA;When mapping ResourceBundle names to ResourceBundles, the Logger&#xA;will first try to use the Thread's ContextClassLoader.  If that&#xA;is null it will try the SystemClassLoader instead.  As a temporary&#xA;transition feature in the initial implementation, if the Logger is&#xA;unable to locate a ResourceBundle from the ContextClassLoader or&#xA;SystemClassLoader the Logger will also search up the class stack&#xA;and use successive calling ClassLoaders to try to locate a ResourceBundle.&#xA;(This call stack search is to allow containers to transition to&#xA;using ContextClassLoaders and is likely to be removed in future&#xA;versions.)&#xA;&lt;p>&#xA;Formatting (including localization) is the responsibility of&#xA;the output Handler, which will typically call a Formatter.&#xA;&lt;p>&#xA;Note that formatting need not occur synchronously.  It may be delayed&#xA;until a LogRecord is actually written to an external sink.&#xA;&lt;p>&#xA;The logging methods are grouped in five main categories:&#xA;&lt;ul>&#xA;&lt;li>&lt;p>&#xA;There are a set of &quot;log&quot; methods that take a log level, a message&#xA;string, and optionally some parameters to the message string.&#xA;&lt;li>&lt;p>&#xA;There are a set of &quot;logp&quot; methods (for &quot;log precise&quot;) that are&#xA;like the &quot;log&quot; methods, but also take an explicit source class name&#xA;and method name.&#xA;&lt;li>&lt;p>&#xA;There are a set of &quot;logrb&quot; method (for &quot;log with resource bundle&quot;)&#xA;that are like the &quot;logp&quot; method, but also take an explicit resource&#xA;bundle name for use in localizing the log message.&#xA;&lt;li>&lt;p>&#xA;There are convenience methods for tracing method entries (the&#xA;&quot;entering&quot; methods), method returns (the &quot;exiting&quot; methods) and&#xA;throwing exceptions (the &quot;throwing&quot; methods).&#xA;&lt;li>&lt;p>&#xA;Finally, there are a set of convenience methods for use in the&#xA;very simplest cases, when a developer simply wants to log a&#xA;simple string at a given log level.  These methods are named&#xA;after the standard Level names (&quot;severe&quot;, &quot;warning&quot;, &quot;info&quot;, etc.)&#xA;and take a single argument, a message string.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;For the methods that do not take an explicit source name and&#xA;method name, the Logging framework will make a &quot;best effort&quot;&#xA;to determine which class and method called into the logging method.&#xA;However, it is important to realize that this automatically inferred&#xA;information may only be approximate (or may even be quite wrong!).&#xA;Virtual machines are allowed to do extensive optimizations when&#xA;JITing and may entirely remove stack frames, making it impossible&#xA;to reliably locate the calling class and method.&#xA;&lt;P>&#xA;All methods on Logger are multi-thread safe.&#xA;&lt;p>&#xA;&lt;b>Subclassing Information:&lt;/b> Note that a LogManager class may&#xA;provide its own implementation of named Loggers for any point in&#xA;the namespace.  Therefore, any subclasses of Logger (unless they&#xA;are implemented in conjunction with a new LogManager class) should&#xA;take care to obtain a Logger instance from the LogManager class and&#xA;should delegate operations such as &quot;isLoggable&quot; and &quot;log(LogRecord)&quot;&#xA;to that instance.  Note that in order to intercept all logging&#xA;output, subclasses need only override the log(LogRecord) method.&#xA;All the other logging methods are implemented as calls on this&#xA;log(LogRecord) method.&#xA;&#xA;@version 1.45, 02/24/04&#xA;@since 1.4&#xA;" annotatedElement="623c57a2-1105-42e0-8ba5-66f9a943d1d0"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2ba90c03-8eea-458c-b2c3-b5406cfb4dbf" name="MemoryHandler">
              <ownedComment xmi:id="8f4ec1c7-edca-43d3-8fef-683926bb4b04" body="&lt;tt>Handler&lt;/tt> that buffers requests in a circular buffer in memory.&#xA;&lt;p>&#xA;Normally this &lt;tt>Handler&lt;/tt> simply stores incoming &lt;tt>LogRecords&lt;/tt>&#xA;into its memory buffer and discards earlier records.  This buffering&#xA;is very cheap and avoids formatting costs.  On certain trigger&#xA;conditions, the &lt;tt>MemoryHandler&lt;/tt> will push out its current buffer&#xA;contents to a target &lt;tt>Handler&lt;/tt>, which will typically publish&#xA;them to the outside world.&#xA;&lt;p>&#xA;There are three main models for triggering a push of the buffer:&#xA;&lt;ul>&#xA;&lt;li>&#xA;An incoming &lt;tt>LogRecord&lt;/tt> has a type that is greater than&#xA;a pre-defined level, the &lt;tt>pushLevel&lt;/tt>.&#xA;&lt;li>&#xA;An external class calls the &lt;tt>push&lt;/tt> method explicitly.&#xA;&lt;li>&#xA;A subclass overrides the &lt;tt>log&lt;/tt> method and scans each incoming&#xA;&lt;tt>LogRecord&lt;/tt> and calls &lt;tt>push&lt;/tt> if a record matches some&#xA;desired criteria.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;&lt;b>Configuration:&lt;/b>&#xA;By default each &lt;tt>MemoryHandler&lt;/tt> is initialized using the following&#xA;LogManager configuration properties.  If properties are not defined&#xA;(or have invalid values) then the specified default values are used.&#xA;If no default value is defined then a RuntimeException is thrown.&#xA;&lt;ul>&#xA;&lt;li>   java.util.logging.MemoryHandler.level&#xA;specifies the level for the &lt;tt>Handler&lt;/tt>&#xA;(defaults to &lt;tt>Level.ALL&lt;/tt>).&#xA;&lt;li>   java.util.logging.MemoryHandler.filter&#xA;specifies the name of a &lt;tt>Filter&lt;/tt> class to use&#xA;(defaults to no &lt;tt>Filter&lt;/tt>).&#xA;&lt;li>   java.util.logging.MemoryHandler.size&#xA;defines the buffer size (defaults to 1000).&#xA;&lt;li>   java.util.logging.MemoryHandler.push&#xA;defines the &lt;tt>pushLevel&lt;/tt> (defaults to &lt;tt>level.SEVERE&lt;/tt>).&#xA;&lt;li>   java.util.logging.MemoryHandler.target&#xA;specifies the name of the target &lt;tt>Handler &lt;/tt> class.&#xA;(no default).&#xA;&lt;/ul>&#xA;&#xA;@version 1.24, 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="2ba90c03-8eea-458c-b2c3-b5406cfb4dbf"/>
              <generalization xmi:id="d32e8944-46aa-4a07-8aff-d9339a69c38d" isSubstitutable="true" general="06993af7-83f3-4d90-b33e-77eda8b99f57"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2a3fb0f6-5f23-4d47-b9dc-2411fd6035a1" name="SimpleFormatter">
              <ownedComment xmi:id="febfb3af-4d44-4204-9041-afbdac868a77" body="Print a brief summary of the LogRecord in a human readable&#xA;format.  The summary will typically be 1 or 2 lines.&#xA;&#xA;@version 1.14, 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="2a3fb0f6-5f23-4d47-b9dc-2411fd6035a1"/>
              <generalization xmi:id="f2df8eb7-a1d2-429a-b98e-0d4ae9ba998e" isSubstitutable="true" general="858c5ec3-df5d-4c7c-b2a7-0f2148f20672"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="17cd7c29-2720-40d8-aa57-244768011ab0" name="StreamHandler">
              <ownedComment xmi:id="6b41f54a-59fc-49b4-a902-04caa13072dc" body="Stream based logging &lt;tt>Handler&lt;/tt>.&#xA;&lt;p>&#xA;This is primarily intended as a base class or support class to&#xA;be used in implementing other logging &lt;tt>Handlers&lt;/tt>.&#xA;&lt;p>&#xA;&lt;tt>LogRecords&lt;/tt> are published to a given &lt;tt>java.io.OutputStream&lt;/tt>.&#xA;&lt;p>&#xA;&lt;b>Configuration:&lt;/b>&#xA;By default each &lt;tt>StreamHandler&lt;/tt> is initialized using the following&#xA;&lt;tt>LogManager&lt;/tt> configuration properties.  If properties are not defined&#xA;(or have invalid values) then the specified default values are used.&#xA;&lt;ul>&#xA;&lt;li>   java.util.logging.StreamHandler.level&#xA;specifies the default level for the &lt;tt>Handler&lt;/tt>&#xA;(defaults to &lt;tt>Level.INFO&lt;/tt>).&#xA;&lt;li>   java.util.logging.StreamHandler.filter&#xA;specifies the name of a &lt;tt>Filter&lt;/tt> class to use&#xA;(defaults to no &lt;tt>Filter&lt;/tt>).&#xA;&lt;li>   java.util.logging.StreamHandler.formatter&#xA;specifies the name of a &lt;tt>Formatter&lt;/tt> class to use&#xA;(defaults to &lt;tt>java.util.logging.SimpleFormatter&lt;/tt>).&#xA;&lt;li>   java.util.logging.StreamHandler.encoding&#xA;the name of the character set encoding to use (defaults to&#xA;the default platform encoding).&#xA;&lt;/ul>&#xA;&#xA;@version 1.18, 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="17cd7c29-2720-40d8-aa57-244768011ab0"/>
              <generalization xmi:id="1cad5e63-b61f-4d4c-8cd9-0db93e303a51" isSubstitutable="true" general="06993af7-83f3-4d90-b33e-77eda8b99f57"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="88c1bd4d-cd51-4c63-8e3d-70e41d04ee83" name="LoggingPermission" isLeaf="true">
              <ownedComment xmi:id="c9382fb6-3663-4fb1-9d5c-55fc57cd9d58" body="The permission which the SecurityManager will check when code&#xA;that is running with a SecurityManager calls one of the logging&#xA;control methods (such as Logger.setLevel).&#xA;&lt;p>&#xA;Currently there is only one named LoggingPermission.  This is &quot;control&quot;&#xA;and it grants the ability to control the logging configuration, for&#xA;example by adding or removing Handlers, by adding or removing Filters,&#xA;or by changing logging levels.&#xA;&lt;p>&#xA;Programmers do not normally create LoggingPermission objects directly.&#xA;Instead they are created by the security policy code based on reading&#xA;the security policy file.&#xA;&#xA;&#xA;@version 1.9, 12/19/03&#xA;@since 1.4&#xA;@see java.security.BasicPermission&#xA;@see java.security.Permission&#xA;@see java.security.Permissions&#xA;@see java.security.PermissionCollection&#xA;@see java.lang.SecurityManager&#xA;&#xA;" annotatedElement="88c1bd4d-cd51-4c63-8e3d-70e41d04ee83"/>
              <generalization xmi:id="4ca04b49-669d-4924-80dd-7dfd4f346904" isSubstitutable="true" general="4831e368-c670-40b4-87bd-a8a910a528fa"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b7844e40-1888-42da-a26d-b7dbd0283ca3" name="Level" clientDependency="f3fd6f08-3341-4274-8bcc-59354d48adc5">
              <ownedComment xmi:id="0292db30-25da-4dd3-9441-880a138315ff" body="The Level class defines a set of standard logging levels that&#xA;can be used to control logging output.  The logging Level objects&#xA;are ordered and are specified by ordered integers.  Enabling logging&#xA;at a given level also enables logging at all higher levels.&#xA;&lt;p>&#xA;Clients should normally use the predefined Level constants such&#xA;as Level.SEVERE.&#xA;&lt;p>&#xA;The levels in descending order are:&#xA;&lt;ul>&#xA;&lt;li>SEVERE (highest value)&#xA;&lt;li>WARNING&#xA;&lt;li>INFO&#xA;&lt;li>CONFIG&#xA;&lt;li>FINE&#xA;&lt;li>FINER&#xA;&lt;li>FINEST  (lowest value)&#xA;&lt;/ul>&#xA;In addition there is a level OFF that can be used to turn&#xA;off logging, and a level ALL that can be used to enable&#xA;logging of all messages.&#xA;&lt;p>&#xA;It is possible for third parties to define additional logging&#xA;levels by subclassing Level.  In such cases subclasses should&#xA;take care to chose unique integer level values and to ensure that&#xA;they maintain the Object uniqueness property across serialization&#xA;by defining a suitable readResolve method.&#xA;&#xA;@version 1.19, 02/25/04&#xA;@since 1.4&#xA;" annotatedElement="b7844e40-1888-42da-a26d-b7dbd0283ca3"/>
              <interfaceRealization xmi:id="f3fd6f08-3341-4274-8bcc-59354d48adc5" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="b7844e40-1888-42da-a26d-b7dbd0283ca3" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9ed6d19a-b0e4-4b10-ba61-c644fecd9166" name="SocketHandler">
              <ownedComment xmi:id="05283d83-c865-4f2a-9448-a1f86500ff6c" body="Simple network logging &lt;tt>Handler&lt;/tt>.&#xA;&lt;p>&#xA;&lt;tt>LogRecords&lt;/tt> are published to a network stream connection.  By default&#xA;the &lt;tt>XMLFormatter&lt;/tt> class is used for formatting.&#xA;&lt;p>&#xA;&lt;b>Configuration:&lt;/b>&#xA;By default each &lt;tt>SocketHandler&lt;/tt> is initialized using the following&#xA;&lt;tt>LogManager&lt;/tt> configuration properties.  If properties are not defined&#xA;(or have invalid values) then the specified default values are used.&#xA;&lt;ul>&#xA;&lt;li>   java.util.logging.SocketHandler.level&#xA;specifies the default level for the &lt;tt>Handler&lt;/tt>&#xA;(defaults to &lt;tt>Level.ALL&lt;/tt>).&#xA;&lt;li>   java.util.logging.SocketHandler.filter&#xA;specifies the name of a &lt;tt>Filter&lt;/tt> class to use&#xA;(defaults to no &lt;tt>Filter&lt;/tt>).&#xA;&lt;li>   java.util.logging.SocketHandler.formatter&#xA;specifies the name of a &lt;tt>Formatter&lt;/tt> class to use&#xA;(defaults to &lt;tt>java.util.logging.XMLFormatter&lt;/tt>).&#xA;&lt;li>   java.util.logging.SocketHandler.encoding&#xA;the name of the character set encoding to use (defaults to&#xA;the default platform encoding).&#xA;&lt;li>   java.util.logging.SocketHandler.host&#xA;specifies the target host name to connect to (no default).&#xA;&lt;li>   java.util.logging.SocketHandler.port&#xA;specifies the target TCP port to use (no default).&#xA;&lt;/ul>&#xA;&lt;p>&#xA;The output IO stream is buffered, but is flushed after each&#xA;&lt;tt>LogRecord&lt;/tt> is written.&#xA;&#xA;@version 1.18, 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="9ed6d19a-b0e4-4b10-ba61-c644fecd9166"/>
              <generalization xmi:id="db0d9bc3-e41c-430a-9f75-a6d2b0b79643" isSubstitutable="true" general="17cd7c29-2720-40d8-aa57-244768011ab0"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="858c5ec3-df5d-4c7c-b2a7-0f2148f20672" name="Formatter" isAbstract="true">
              <ownedComment xmi:id="b06c5893-21ba-4e50-ab6a-36866abc2857" body="A Formatter provides support for formatting LogRecords.&#xA;&lt;p>&#xA;Typically each logging Handler will have a Formatter associated&#xA;with it.  The Formatter takes a LogRecord and converts it to&#xA;a string.&#xA;&lt;p>&#xA;Some formatters (such as the XMLFormatter) need to wrap head&#xA;and tail strings around a set of formatted records. The getHeader&#xA;and getTail methods can be used to obtain these strings.&#xA;&#xA;@version 1.16, 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="858c5ec3-df5d-4c7c-b2a7-0f2148f20672"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a56968dc-345d-4cbd-95c7-2658c2af4e95" name="XMLFormatter">
              <ownedComment xmi:id="3d7a9295-08f4-4e0d-b769-64200302f61e" body="Format a LogRecord into a standard XML format.&#xA;&lt;p>&#xA;The DTD specification is provided as Appendix A to the&#xA;Java Logging APIs specification.&#xA;&lt;p>&#xA;The XMLFormatter can be used with arbitrary character encodings,&#xA;but it is recommended that it normally be used with UTF-8.  The&#xA;character encoding can be set on the output Handler.&#xA;&#xA;@version 1.24, 01/12/04&#xA;@since 1.4&#xA;" annotatedElement="a56968dc-345d-4cbd-95c7-2658c2af4e95"/>
              <generalization xmi:id="f5747951-9c99-43db-ad16-1920d3a9b1ef" isSubstitutable="true" general="858c5ec3-df5d-4c7c-b2a7-0f2148f20672"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="0d94b093-326f-4b67-80c7-013766097d27" name="Filter" isAbstract="true">
              <ownedComment xmi:id="5e2d0154-79a9-4636-a38e-333b28e633c3" body="A Filter can be used to provide fine grain control over&#xA;what is logged, beyond the control provided by log levels.&#xA;&lt;p>&#xA;Each Logger and each Handler can have a filter associated with it.&#xA;The Logger or Handler will call the isLoggable method to check&#xA;if a given LogRecord should be published.  If isLoggable returns&#xA;false, the LogRecord will be discarded.&#xA;&#xA;@version 1.5, 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="0d94b093-326f-4b67-80c7-013766097d27"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="a04a021e-c6c6-4300-9efe-16f89c3bfab1" name="Collection" isAbstract="true">
            <ownedComment xmi:id="19605b2f-1cf5-4876-b6e6-dcaa8cedc485" body="The root interface in the &lt;i>collection hierarchy&lt;/i>.  A collection&#xA;represents a group of objects, known as its &lt;i>elements&lt;/i>.  Some&#xA;collections allow duplicate elements and others do not.  Some are ordered&#xA;and others unordered.  The JDK does not provide any &lt;i>direct&lt;/i>&#xA;implementations of this interface: it provides implementations of more&#xA;specific subinterfaces like &lt;tt>Set&lt;/tt> and &lt;tt>List&lt;/tt>.  This interface&#xA;is typically used to pass collections around and manipulate them where&#xA;maximum generality is desired.&#xA;&#xA;&lt;p>&lt;i>Bags&lt;/i> or &lt;i>multisets&lt;/i> (unordered collections that may contain&#xA;duplicate elements) should implement this interface directly.&#xA;&#xA;&lt;p>All general-purpose &lt;tt>Collection&lt;/tt> implementation classes (which&#xA;typically implement &lt;tt>Collection&lt;/tt> indirectly through one of its&#xA;subinterfaces) should provide two &quot;standard&quot; constructors: a void (no&#xA;arguments) constructor, which creates an empty collection, and a&#xA;constructor with a single argument of type &lt;tt>Collection&lt;/tt>, which&#xA;creates a new collection with the same elements as its argument.  In&#xA;effect, the latter constructor allows the user to copy any collection,&#xA;producing an equivalent collection of the desired implementation type.&#xA;There is no way to enforce this convention (as interfaces cannot contain&#xA;constructors) but all of the general-purpose &lt;tt>Collection&lt;/tt>&#xA;implementations in the Java platform libraries comply.&#xA;&#xA;&lt;p>The &quot;destructive&quot; methods contained in this interface, that is, the&#xA;methods that modify the collection on which they operate, are specified to&#xA;throw &lt;tt>UnsupportedOperationException&lt;/tt> if this collection does not&#xA;support the operation.  If this is the case, these methods may, but are not&#xA;required to, throw an &lt;tt>UnsupportedOperationException&lt;/tt> if the&#xA;invocation would have no effect on the collection.  For example, invoking&#xA;the {@link #addAll(Collection)} method on an unmodifiable collection may,&#xA;but is not required to, throw the exception if the collection to be added&#xA;is empty.&#xA;&#xA;&lt;p>Some collection implementations have restrictions on the elements that&#xA;they may contain.  For example, some implementations prohibit null elements,&#xA;and some have restrictions on the types of their elements.  Attempting to&#xA;add an ineligible element throws an unchecked exception, typically&#xA;&lt;tt>NullPointerException&lt;/tt> or &lt;tt>ClassCastException&lt;/tt>.  Attempting&#xA;to query the presence of an ineligible element may throw an exception,&#xA;or it may simply return false; some implementations will exhibit the former&#xA;behavior and some will exhibit the latter.  More generally, attempting an&#xA;operation on an ineligible element whose completion would not result in&#xA;the insertion of an ineligible element into the collection may throw an&#xA;exception or it may succeed, at the option of the implementation.&#xA;Such exceptions are marked as &quot;optional&quot; in the specification for this&#xA;interface.&#xA;&#xA;&lt;p>This interface is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;&lt;p>Many methods in Collections Framework interfaces are defined in&#xA;terms of the {@link Object#equals(Object) equals} method.  For example,&#xA;the specification for the {@link #contains(Object) contains(Object o)}&#xA;method says: &quot;returns &lt;tt>true&lt;/tt> if and only if this collection&#xA;contains at least one element &lt;tt>e&lt;/tt> such that&#xA;&lt;tt>(o==null ? e==null : o.equals(e))&lt;/tt>.&quot;  This specification should&#xA;&lt;i>not&lt;/i> be construed to imply that invoking &lt;tt>Collection.contains&lt;/tt>&#xA;with a non-null argument &lt;tt>o&lt;/tt> will cause &lt;tt>o.equals(e)&lt;/tt> to be&#xA;invoked for any element &lt;tt>e&lt;/tt>.  Implementations are free to implement&#xA;optimizations whereby the &lt;tt>equals&lt;/tt> invocation is avoided, for&#xA;example, by first comparing the hash codes of the two elements.  (The&#xA;{@link Object#hashCode()} specification guarantees that two objects with&#xA;unequal hash codes cannot be equal.)  More generally, implementations of&#xA;the various Collections Framework interfaces are free to take advantage of&#xA;the specified behavior of underlying {@link Object} methods wherever the&#xA;implementor deems it appropriate.&#xA;&#xA;@author  Josh Bloch&#xA;@author  Neal Gafter&#xA;@version 1.49, 06/28/04&#xA;@see&#x9;    Set&#xA;@see&#x9;    List&#xA;@see&#x9;    Map&#xA;@see&#x9;    SortedSet&#xA;@see&#x9;    SortedMap&#xA;@see&#x9;    HashSet&#xA;@see&#x9;    TreeSet&#xA;@see&#x9;    ArrayList&#xA;@see&#x9;    LinkedList&#xA;@see&#x9;    Vector&#xA;@see     Collections&#xA;@see&#x9;    Arrays&#xA;@see&#x9;    AbstractCollection&#xA;@since 1.2&#xA;" annotatedElement="a04a021e-c6c6-4300-9efe-16f89c3bfab1"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="86a822c7-1195-499c-91ef-c489596e713b" name="" parameter="588367f0-9bc8-4d52-aa5c-b86f797fc889">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="588367f0-9bc8-4d52-aa5c-b86f797fc889" parameteredElement="dd13a4ba-7cc9-4a25-95ac-44407ae32180">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="dd13a4ba-7cc9-4a25-95ac-44407ae32180" name="E" templateParameter="588367f0-9bc8-4d52-aa5c-b86f797fc889"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="dffa3010-1e15-4857-bbb4-140428c155e1" isSubstitutable="true" general="f2eff0aa-4782-4945-bb4a-e4f7c4ce97c3"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="32039b30-5f37-4895-b302-b6075d436dab" name="HashSet&lt;E>">
            <templateBinding xmi:id="010d33ec-56a8-4666-9a85-07a7ab003648" signature="af53f731-06b5-4c72-89b7-0d926e6ae0ed">
              <parameterSubstitution xmi:id="4700cd45-8359-471b-8fbe-f4713815f0d1" formal="2085b14e-400b-4bfa-9b43-1c1d57af47fe" actual="2205ecb0-fdd3-4d48-a2fb-00eeb09cda7d"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c7838e49-9ba0-42bf-a9da-a0405e6fcbf0" name="TimeZone" clientDependency="122780cf-eb16-4534-8d51-ef6ad2b78c48 55a71d4c-1432-41a1-9645-fcf72a472f63" isAbstract="true">
            <ownedComment xmi:id="f6228b23-92e3-444f-9488-fdf385a9844a" body="&lt;code>TimeZone&lt;/code> represents a time zone offset, and also figures out daylight&#xA;savings.&#xA;&#xA;&lt;p>&#xA;Typically, you get a &lt;code>TimeZone&lt;/code> using &lt;code>getDefault&lt;/code>&#xA;which creates a &lt;code>TimeZone&lt;/code> based on the time zone where the program&#xA;is running. For example, for a program running in Japan, &lt;code>getDefault&lt;/code>&#xA;creates a &lt;code>TimeZone&lt;/code> object based on Japanese Standard Time.&#xA;&#xA;&lt;p>&#xA;You can also get a &lt;code>TimeZone&lt;/code> using &lt;code>getTimeZone&lt;/code>&#xA;along with a time zone ID. For instance, the time zone ID for the&#xA;U.S. Pacific Time zone is &quot;America/Los_Angeles&quot;. So, you can get a&#xA;U.S. Pacific Time &lt;code>TimeZone&lt;/code> object with:&#xA;&lt;blockquote>&lt;pre>&#xA;TimeZone tz = TimeZone.getTimeZone(&quot;America/Los_Angeles&quot;);&#xA;&lt;/pre>&lt;/blockquote>&#xA;You can use the &lt;code>getAvailableIDs&lt;/code> method to iterate through&#xA;all the supported time zone IDs. You can then choose a&#xA;supported ID to get a &lt;code>TimeZone&lt;/code>.&#xA;If the time zone you want is not represented by one of the&#xA;supported IDs, then a custom time zone ID can be specified to&#xA;produce a TimeZone. The syntax of a custom time zone ID is:&#xA;&#xA;&lt;blockquote>&lt;pre>&#xA;&lt;a name=&quot;CustomID&quot;>&lt;i>CustomID:&lt;/i>&lt;/a>&#xA;&lt;code>GMT&lt;/code> &lt;i>Sign&lt;/i> &lt;i>Hours&lt;/i> &lt;code>:&lt;/code> &lt;i>Minutes&lt;/i>&#xA;&lt;code>GMT&lt;/code> &lt;i>Sign&lt;/i> &lt;i>Hours&lt;/i> &lt;i>Minutes&lt;/i>&#xA;&lt;code>GMT&lt;/code> &lt;i>Sign&lt;/i> &lt;i>Hours&lt;/i>&#xA;&lt;i>Sign:&lt;/i> one of&#xA;&lt;code>+ -&lt;/code>&#xA;&lt;i>Hours:&lt;/i>&#xA;&lt;i>Digit&lt;/i>&#xA;&lt;i>Digit&lt;/i> &lt;i>Digit&lt;/i>&#xA;&lt;i>Minutes:&lt;/i>&#xA;&lt;i>Digit&lt;/i> &lt;i>Digit&lt;/i>&#xA;&lt;i>Digit:&lt;/i> one of&#xA;&lt;code>0 1 2 3 4 5 6 7 8 9&lt;/code>&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;&lt;i>Hours&lt;/i> must be between 0 to 23 and &lt;i>Minutes&lt;/i> must be&#xA;between 00 to 59.  For example, &quot;GMT+10&quot; and &quot;GMT+0010&quot; mean ten&#xA;hours and ten minutes ahead of GMT, respectively.&#xA;&lt;p>&#xA;The format is locale independent and digits must be taken from the&#xA;Basic Latin block of the Unicode standard. No daylight saving time&#xA;transition schedule can be specified with a custom time zone ID. If&#xA;the specified string doesn't match the syntax, &lt;code>&quot;GMT&quot;&lt;/code>&#xA;is used.&#xA;&lt;p>&#xA;When creating a &lt;code>TimeZone&lt;/code>, the specified custom time&#xA;zone ID is normalized in the following syntax:&#xA;&lt;blockquote>&lt;pre>&#xA;&lt;a name=&quot;NormalizedCustomID&quot;>&lt;i>NormalizedCustomID:&lt;/i>&lt;/a>&#xA;&lt;code>GMT&lt;/code> &lt;i>Sign&lt;/i> &lt;i>TwoDigitHours&lt;/i> &lt;code>:&lt;/code> &lt;i>Minutes&lt;/i>&#xA;&lt;i>Sign:&lt;/i> one of&#xA;&lt;code>+ -&lt;/code>&#xA;&lt;i>TwoDigitHours:&lt;/i>&#xA;&lt;i>Digit&lt;/i> &lt;i>Digit&lt;/i>&#xA;&lt;i>Minutes:&lt;/i>&#xA;&lt;i>Digit&lt;/i> &lt;i>Digit&lt;/i>&#xA;&lt;i>Digit:&lt;/i> one of&#xA;&lt;code>0 1 2 3 4 5 6 7 8 9&lt;/code>&#xA;&lt;/pre>&lt;/blockquote>&#xA;For example, TimeZone.getTimeZone(&quot;GMT-8&quot;).getID() returns &quot;GMT-08:00&quot;.&#xA;&#xA;&lt;h4>Three-letter time zone IDs&lt;/h4>&#xA;&#xA;For compatibility with JDK 1.1.x, some other three-letter time zone IDs&#xA;(such as &quot;PST&quot;, &quot;CTT&quot;, &quot;AST&quot;) are also supported. However, &lt;strong>their&#xA;use is deprecated&lt;/strong> because the same abbreviation is often used&#xA;for multiple time zones (for example, &quot;CST&quot; could be U.S. &quot;Central Standard&#xA;Time&quot; and &quot;China Standard Time&quot;), and the Java platform can then only&#xA;recognize one of them.&#xA;&#xA;&#xA;@see          Calendar&#xA;@see          GregorianCalendar&#xA;@see          SimpleTimeZone&#xA;@version      1.68 01/12/04&#xA;@author       Mark Davis, David Goldsmith, Chen-Lieh Huang, Alan Liu&#xA;@since        JDK1.1&#xA;" annotatedElement="c7838e49-9ba0-42bf-a9da-a0405e6fcbf0"/>
            <interfaceRealization xmi:id="55a71d4c-1432-41a1-9645-fcf72a472f63" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="c7838e49-9ba0-42bf-a9da-a0405e6fcbf0" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="122780cf-eb16-4534-8d51-ef6ad2b78c48" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="c7838e49-9ba0-42bf-a9da-a0405e6fcbf0" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="9e9adaa7-1ac1-4cd9-89db-7b98e385abf9" name="Enumeration" isAbstract="true">
            <ownedComment xmi:id="0d0a5481-b0d5-48a9-b120-2a99ccf81047" body="An object that implements the Enumeration interface generates a&#xA;series of elements, one at a time. Successive calls to the&#xA;&lt;code>nextElement&lt;/code> method return successive elements of the&#xA;series.&#xA;&lt;p>&#xA;For example, to print all elements of a vector &lt;i>v&lt;/i>:&#xA;&lt;blockquote>&lt;pre>&#xA;for (Enumeration e = v.elements() ; e.hasMoreElements() ;) {&#xA;System.out.println(e.nextElement());&lt;br>&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&#xA;&lt;p>&#xA;Methods are provided to enumerate through the elements of a&#xA;vector, the keys of a hashtable, and the values in a hashtable.&#xA;Enumerations are also used to specify the input streams to a&#xA;&lt;code>SequenceInputStream&lt;/code>.&#xA;&lt;p>&#xA;NOTE: The functionality of this interface is duplicated by the Iterator&#xA;interface.  In addition, Iterator adds an optional remove operation, and&#xA;has shorter method names.  New implementations should consider using&#xA;Iterator in preference to Enumeration.&#xA;&#xA;@see     java.util.Iterator&#xA;@see     java.io.SequenceInputStream&#xA;@see     java.util.Enumeration#nextElement()&#xA;@see     java.util.Hashtable&#xA;@see     java.util.Hashtable#elements()&#xA;@see     java.util.Hashtable#keys()&#xA;@see     java.util.Vector&#xA;@see     java.util.Vector#elements()&#xA;&#xA;@author  Lee Boynton&#xA;@version 1.22, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="9e9adaa7-1ac1-4cd9-89db-7b98e385abf9"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="521c8bf5-b0b1-4a86-820c-0614950913b8" name="" parameter="0dc15cf5-0f68-454b-a4d7-227d89f2d0c5">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="0dc15cf5-0f68-454b-a4d7-227d89f2d0c5" parameteredElement="f398dd91-8a3f-410f-96d0-2355ff59102e">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="f398dd91-8a3f-410f-96d0-2355ff59102e" name="E" templateParameter="0dc15cf5-0f68-454b-a4d7-227d89f2d0c5"/>
              </ownedParameter>
            </ownedTemplateSignature>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="be44abbb-db62-43c6-9f76-682e3433ddef" name="UnmodifiableSet&lt;E>">
            <templateBinding xmi:id="a7ce8bb3-2c9b-4d24-b75d-420c5592233a" signature="8db58ba8-402e-442b-9ad2-8d6abd1b871d">
              <parameterSubstitution xmi:id="a53017db-d6c6-4d51-a16b-b933d3793a98" formal="21f29049-8774-432f-9f90-528482b25557" actual="25c13eb7-e4ee-462c-8671-5bcfbf133da3"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="576aed4e-c860-4bd9-a55e-82213b8bf77b" name="HashSet" clientDependency="7e2bf3bf-9de0-4fd2-ab3d-9713b375c619 b6e26600-5f64-4ae0-8b13-8f1c85c4fd25 9c316f86-0b63-44db-9614-30cd2ec3dd48">
            <ownedComment xmi:id="25daf89a-c22b-4f70-bcf2-6cd44721a77c" body="This class implements the &lt;tt>Set&lt;/tt> interface, backed by a hash table&#xA;(actually a &lt;tt>HashMap&lt;/tt> instance).  It makes no guarantees as to the&#xA;iteration order of the set; in particular, it does not guarantee that the&#xA;order will remain constant over time.  This class permits the &lt;tt>null&lt;/tt>&#xA;element.&lt;p>&#xA;&#xA;This class offers constant time performance for the basic operations&#xA;(&lt;tt>add&lt;/tt>, &lt;tt>remove&lt;/tt>, &lt;tt>contains&lt;/tt> and &lt;tt>size&lt;/tt>),&#xA;assuming the hash function disperses the elements properly among the&#xA;buckets.  Iterating over this set requires time proportional to the sum of&#xA;the &lt;tt>HashSet&lt;/tt> instance's size (the number of elements) plus the&#xA;&quot;capacity&quot; of the backing &lt;tt>HashMap&lt;/tt> instance (the number of&#xA;buckets).  Thus, it's very important not to set the initial capacity too&#xA;high (or the load factor too low) if iteration performance is important.&lt;p>&#xA;&#xA;&lt;b>Note that this implementation is not synchronized.&lt;/b> If multiple&#xA;threads access a set concurrently, and at least one of the threads modifies&#xA;the set, it &lt;i>must&lt;/i> be synchronized externally.  This is typically&#xA;accomplished by synchronizing on some object that naturally encapsulates&#xA;the set.  If no such object exists, the set should be &quot;wrapped&quot; using the&#xA;&lt;tt>Collections.synchronizedSet&lt;/tt> method.  This is best done at creation&#xA;time, to prevent accidental unsynchronized access to the &lt;tt>HashSet&lt;/tt>&#xA;instance:&#xA;&#xA;&lt;pre>&#xA;Set s = Collections.synchronizedSet(new HashSet(...));&#xA;&lt;/pre>&lt;p>&#xA;&#xA;The iterators returned by this class's &lt;tt>iterator&lt;/tt> method are&#xA;&lt;i>fail-fast&lt;/i>: if the set is modified at any time after the iterator is&#xA;created, in any way except through the iterator's own &lt;tt>remove&lt;/tt>&#xA;method, the Iterator throws a &lt;tt>ConcurrentModificationException&lt;/tt>.&#xA;Thus, in the face of concurrent modification, the iterator fails quickly&#xA;and cleanly, rather than risking arbitrary, non-deterministic behavior at&#xA;an undetermined time in the future.&#xA;&#xA;&lt;p>Note that the fail-fast behavior of an iterator cannot be guaranteed&#xA;as it is, generally speaking, impossible to make any hard guarantees in the&#xA;presence of unsynchronized concurrent modification.  Fail-fast iterators&#xA;throw &lt;tt>ConcurrentModificationException&lt;/tt> on a best-effort basis.&#xA;Therefore, it would be wrong to write a program that depended on this&#xA;exception for its correctness: &lt;i>the fail-fast behavior of iterators&#xA;should be used only to detect bugs.&lt;/i>&lt;p>&#xA;&#xA;This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@author  Neal Gafter&#xA;@version 1.33, 12/19/03&#xA;@see&#x9;    Collection&#xA;@see&#x9;    Set&#xA;@see&#x9;    TreeSet&#xA;@see&#x9;    Collections#synchronizedSet(Set)&#xA;@see&#x9;    HashMap&#xA;@since   1.2&#xA;" annotatedElement="576aed4e-c860-4bd9-a55e-82213b8bf77b"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="af53f731-06b5-4c72-89b7-0d926e6ae0ed" name="" parameter="2085b14e-400b-4bfa-9b43-1c1d57af47fe">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="2085b14e-400b-4bfa-9b43-1c1d57af47fe" parameteredElement="996c6540-7bff-4484-ba89-f2e60de3d30c">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="996c6540-7bff-4484-ba89-f2e60de3d30c" name="E" templateParameter="2085b14e-400b-4bfa-9b43-1c1d57af47fe"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="d4edc0f2-6830-4c39-bca3-95119dcab824" isSubstitutable="true" general="366a6b71-c7a9-4b22-95d5-74091ce96f5b"/>
            <interfaceRealization xmi:id="9c316f86-0b63-44db-9614-30cd2ec3dd48" name="" supplier="baa392ca-bff3-4d7d-b407-489a8610c855" client="576aed4e-c860-4bd9-a55e-82213b8bf77b" contract="baa392ca-bff3-4d7d-b407-489a8610c855"/>
            <interfaceRealization xmi:id="7e2bf3bf-9de0-4fd2-ab3d-9713b375c619" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="576aed4e-c860-4bd9-a55e-82213b8bf77b" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="b6e26600-5f64-4ae0-8b13-8f1c85c4fd25" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="576aed4e-c860-4bd9-a55e-82213b8bf77b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="afe51c31-bb81-4bc0-bef2-70b0adab40db" name="UnmodifiableList&lt;E>">
            <templateBinding xmi:id="863658db-e92f-498a-a0ff-ad8e8f1b6c8a" signature="aef94a6b-a8ad-4b4a-bf38-3a662d71d860">
              <parameterSubstitution xmi:id="2d7512cc-988b-4620-8470-3220aef3e4b2" formal="68640416-b685-43b4-8244-824dbadbe291" actual="4721260c-6317-4c75-8d72-2cc31fcb4581"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="16208a27-5dc1-4bb6-8f33-2ff9d104bf1d" name="Comparator" isAbstract="true">
            <ownedComment xmi:id="beffcca0-988f-477e-ae90-b7da67030f5f" body="A comparison function, which imposes a &lt;i>total ordering&lt;/i> on some&#xA;collection of objects.  Comparators can be passed to a sort method (such as&#xA;&lt;tt>Collections.sort&lt;/tt>) to allow precise control over the sort order.&#xA;Comparators can also be used to control the order of certain data&#xA;structures (such as &lt;tt>TreeSet&lt;/tt> or &lt;tt>TreeMap&lt;/tt>).&lt;p>&#xA;&#xA;The ordering imposed by a Comparator &lt;tt>c&lt;/tt> on a set of elements&#xA;&lt;tt>S&lt;/tt> is said to be &lt;i>consistent with equals&lt;/i> if and only if&#xA;&lt;tt>(compare((Object)e1, (Object)e2)==0)&lt;/tt> has the same boolean value as&#xA;&lt;tt>e1.equals((Object)e2)&lt;/tt> for every &lt;tt>e1&lt;/tt> and &lt;tt>e2&lt;/tt> in&#xA;&lt;tt>S&lt;/tt>.&lt;p>&#xA;&#xA;Caution should be exercised when using a comparator capable of imposing an&#xA;ordering inconsistent with equals to order a sorted set (or sorted map).&#xA;Suppose a sorted set (or sorted map) with an explicit Comparator &lt;tt>c&lt;/tt>&#xA;is used with elements (or keys) drawn from a set &lt;tt>S&lt;/tt>.  If the&#xA;ordering imposed by &lt;tt>c&lt;/tt> on &lt;tt>S&lt;/tt> is inconsistent with equals,&#xA;the sorted set (or sorted map) will behave &quot;strangely.&quot;  In particular the&#xA;sorted set (or sorted map) will violate the general contract for set (or&#xA;map), which is defined in terms of &lt;tt>equals&lt;/tt>.&lt;p>&#xA;&#xA;For example, if one adds two keys &lt;tt>a&lt;/tt> and &lt;tt>b&lt;/tt> such that&#xA;&lt;tt>(a.equals((Object)b) &amp;&amp; c.compare((Object)a, (Object)b) != 0)&lt;/tt> to a&#xA;sorted set with comparator &lt;tt>c&lt;/tt>, the second &lt;tt>add&lt;/tt> operation&#xA;will return false (and the size of the sorted set will not increase)&#xA;because &lt;tt>a&lt;/tt> and &lt;tt>b&lt;/tt> are equivalent from the sorted set's&#xA;perspective.&lt;p>&#xA;&#xA;Note: It is generally a good idea for comparators to implement&#xA;&lt;tt>java.io.Serializable&lt;/tt>, as they may be used as ordering methods in&#xA;serializable data structures (like &lt;tt>TreeSet&lt;/tt>, &lt;tt>TreeMap&lt;/tt>).  In&#xA;order for the data structure to serialize successfully, the comparator (if&#xA;provided) must implement &lt;tt>Serializable&lt;/tt>.&lt;p>&#xA;&#xA;For the mathematically inclined, the &lt;i>relation&lt;/i> that defines&#xA;the &lt;i>total order&lt;/i> that a given comparator &lt;tt>c&lt;/tt> imposes on a&#xA;given set of objects &lt;tt>S&lt;/tt> is:&lt;pre>&#xA;{(x, y) such that c.compare((Object)x, (Object)y) &lt;= 0}.&#xA;&lt;/pre> The &lt;i>quotient&lt;/i> for this total order is:&lt;pre>&#xA;{(x, y) such that c.compare((Object)x, (Object)y) == 0}.&#xA;&lt;/pre>&#xA;&#xA;It follows immediately from the contract for &lt;tt>compare&lt;/tt> that the&#xA;quotient is an &lt;i>equivalence relation&lt;/i> on &lt;tt>S&lt;/tt>, and that the&#xA;natural ordering is a &lt;i>total order&lt;/i> on &lt;tt>S&lt;/tt>.  When we say that&#xA;the ordering imposed by &lt;tt>c&lt;/tt> on &lt;tt>S&lt;/tt> is &lt;i>consistent with&#xA;equals&lt;/i>, we mean that the quotient for the natural ordering is the&#xA;equivalence relation defined by the objects' &lt;tt>equals(Object)&lt;/tt>&#xA;method(s):&lt;pre>&#xA;{(x, y) such that x.equals((Object)y)}.&#xA;&lt;/pre>&lt;p>&#xA;&#xA;This interface is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@author  Neal Gafter&#xA;@version 1.22, 12/19/03&#xA;@see Comparable&#xA;@see Arrays#sort(Object[], Comparator)&#xA;@see TreeMap&#xA;@see TreeSet&#xA;@see SortedMap&#xA;@see SortedSet&#xA;@see java.io.Serializable&#xA;@since 1.2&#xA;" annotatedElement="16208a27-5dc1-4bb6-8f33-2ff9d104bf1d"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="5ca0174c-f6a2-499c-8047-b28b014e167d" name="" parameter="778d8bc4-7722-4223-9041-c33432cd4640">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="778d8bc4-7722-4223-9041-c33432cd4640" parameteredElement="a6c295b1-c601-40de-8410-4f85520c2579">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="a6c295b1-c601-40de-8410-4f85520c2579" name="T" templateParameter="778d8bc4-7722-4223-9041-c33432cd4640"/>
              </ownedParameter>
            </ownedTemplateSignature>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="167fe9a9-9afb-46f2-8629-ffd4d1031dce" name="Map" isAbstract="true">
            <ownedComment xmi:id="01a114f5-68f7-4c86-8aab-262fb2eb623e" body="An object that maps keys to values.  A map cannot contain duplicate keys;&#xA;each key can map to at most one value.&#xA;&#xA;&lt;p>This interface takes the place of the &lt;tt>Dictionary&lt;/tt> class, which&#xA;was a totally abstract class rather than an interface.&#xA;&#xA;&lt;p>The &lt;tt>Map&lt;/tt> interface provides three &lt;i>collection views&lt;/i>, which&#xA;allow a map's contents to be viewed as a set of keys, collection of values,&#xA;or set of key-value mappings.  The &lt;i>order&lt;/i> of a map is defined as&#xA;the order in which the iterators on the map's collection views return their&#xA;elements.  Some map implementations, like the &lt;tt>TreeMap&lt;/tt> class, make&#xA;specific guarantees as to their order; others, like the &lt;tt>HashMap&lt;/tt>&#xA;class, do not.&#xA;&#xA;&lt;p>Note: great care must be exercised if mutable objects are used as map&#xA;keys.  The behavior of a map is not specified if the value of an object is&#xA;changed in a manner that affects equals comparisons while the object is a&#xA;key in the map.  A special case of this prohibition is that it is not&#xA;permissible for a map to contain itself as a key.  While it is permissible&#xA;for a map to contain itself as a value, extreme caution is advised: the&#xA;equals and hashCode methods are no longer well defined on a such a map.&#xA;&#xA;&lt;p>All general-purpose map implementation classes should provide two&#xA;&quot;standard&quot; constructors: a void (no arguments) constructor which creates an&#xA;empty map, and a constructor with a single argument of type &lt;tt>Map&lt;/tt>,&#xA;which creates a new map with the same key-value mappings as its argument.&#xA;In effect, the latter constructor allows the user to copy any map,&#xA;producing an equivalent map of the desired class.  There is no way to&#xA;enforce this recommendation (as interfaces cannot contain constructors) but&#xA;all of the general-purpose map implementations in the JDK comply.&#xA;&#xA;&lt;p>The &quot;destructive&quot; methods contained in this interface, that is, the&#xA;methods that modify the map on which they operate, are specified to throw&#xA;&lt;tt>UnsupportedOperationException&lt;/tt> if this map does not support the&#xA;operation.  If this is the case, these methods may, but are not required&#xA;to, throw an &lt;tt>UnsupportedOperationException&lt;/tt> if the invocation would&#xA;have no effect on the map.  For example, invoking the {@link #putAll(Map)}&#xA;method on an unmodifiable map may, but is not required to, throw the&#xA;exception if the map whose mappings are to be &quot;superimposed&quot; is empty.&#xA;&#xA;&lt;p>Some map implementations have restrictions on the keys and values they&#xA;may contain.  For example, some implementations prohibit null keys and&#xA;values, and some have restrictions on the types of their keys.  Attempting&#xA;to insert an ineligible key or value throws an unchecked exception,&#xA;typically &lt;tt>NullPointerException&lt;/tt> or &lt;tt>ClassCastException&lt;/tt>.&#xA;Attempting to query the presence of an ineligible key or value may throw an&#xA;exception, or it may simply return false; some implementations will exhibit&#xA;the former behavior and some will exhibit the latter.  More generally,&#xA;attempting an operation on an ineligible key or value whose completion&#xA;would not result in the insertion of an ineligible element into the map may&#xA;throw an exception or it may succeed, at the option of the implementation.&#xA;Such exceptions are marked as &quot;optional&quot; in the specification for this&#xA;interface.&#xA;&#xA;&lt;p>This interface is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;&lt;p>Many methods in Collections Framework interfaces are defined&#xA;in terms of the {@link Object#equals(Object) equals} method.  For&#xA;example, the specification for the {@link #containsKey(Object)&#xA;contains(Object key)} method says: &quot;returns &lt;tt>true&lt;/tt> if and&#xA;only if this map contain a mapping for a key &lt;tt>k&lt;/tt> such that&#xA;&lt;tt>(key==null ? k==null : key.equals(k))&lt;/tt>.&quot; This specification should&#xA;&lt;i>not&lt;/i> be construed to imply that invoking &lt;tt>Map.containsKey&lt;/tt>&#xA;with a non-null argument &lt;tt>key&lt;/tt> will cause &lt;tt>key.equals(k)&lt;/tt> to&#xA;be invoked for any key &lt;tt>k&lt;/tt>.  Implementations are free to&#xA;implement optimizations whereby the &lt;tt>equals&lt;/tt> invocation is avoided,&#xA;for example, by first comparing the hash codes of the two keys.  (The&#xA;{@link Object#hashCode()} specification guarantees that two objects with&#xA;unequal hash codes cannot be equal.)  More generally, implementations of&#xA;the various Collections Framework interfaces are free to take advantage of&#xA;the specified behavior of underlying {@link Object} methods wherever the&#xA;implementor deems it appropriate.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.48, 06/28/04&#xA;@see HashMap&#xA;@see TreeMap&#xA;@see Hashtable&#xA;@see SortedMap&#xA;@see Collection&#xA;@see Set&#xA;@since 1.2&#xA;" annotatedElement="167fe9a9-9afb-46f2-8629-ffd4d1031dce"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="6fa510d5-30ff-4915-9f85-f28c17685f05" name="" parameter="c51fa5e3-696f-4fba-aca1-bf27a9542c44 f697aee6-8b2e-4b17-abc4-4158aecc3c87">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="c51fa5e3-696f-4fba-aca1-bf27a9542c44" parameteredElement="6172fe71-12dc-4c65-b70b-99d23bc17690">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="6172fe71-12dc-4c65-b70b-99d23bc17690" name="K" templateParameter="c51fa5e3-696f-4fba-aca1-bf27a9542c44"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="f697aee6-8b2e-4b17-abc4-4158aecc3c87" parameteredElement="b03f362b-94ae-4848-9e7e-744ad8927196">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="b03f362b-94ae-4848-9e7e-744ad8927196" name="V" templateParameter="f697aee6-8b2e-4b17-abc4-4158aecc3c87"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <nestedClassifier xmi:type="uml:Interface" xmi:id="a2cdcc48-3430-4b6f-bc4f-d86c794149f7" name="Entry" isAbstract="true">
              <ownedComment xmi:id="30e54770-4403-4a98-9475-19ee23a4abdd" body="A map entry (key-value pair).  The &lt;tt>Map.entrySet&lt;/tt> method returns&#xA;a collection-view of the map, whose elements are of this class.  The&#xA;&lt;i>only&lt;/i> way to obtain a reference to a map entry is from the&#xA;iterator of this collection-view.  These &lt;tt>Map.Entry&lt;/tt> objects are&#xA;valid &lt;i>only&lt;/i> for the duration of the iteration; more formally,&#xA;the behavior of a map entry is undefined if the backing map has been&#xA;modified after the entry was returned by the iterator, except through&#xA;the &lt;tt>setValue&lt;/tt> operation on the map entry.&#xA;&#xA;@see Map#entrySet()&#xA;@since 1.2&#xA;" annotatedElement="a2cdcc48-3430-4b6f-bc4f-d86c794149f7"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="c4abf78f-6423-465b-bf94-6dc2ff811ea9" name="" parameter="bd3d42ed-ee2f-4c2f-b588-7514a056711e 3281fb22-58e6-4560-935d-a2b2d4f1ef82">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="bd3d42ed-ee2f-4c2f-b588-7514a056711e" parameteredElement="e477e639-f0c2-4159-9a24-ea9c4af078bb">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="e477e639-f0c2-4159-9a24-ea9c4af078bb" name="K" templateParameter="bd3d42ed-ee2f-4c2f-b588-7514a056711e"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="3281fb22-58e6-4560-935d-a2b2d4f1ef82" parameteredElement="29b3105c-40c2-47be-b413-da0d345b0e5e">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="29b3105c-40c2-47be-b413-da0d345b0e5e" name="V" templateParameter="3281fb22-58e6-4560-935d-a2b2d4f1ef82"/>
                </ownedParameter>
              </ownedTemplateSignature>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="ae48c0db-9bd1-4cc3-a19c-b4aacc62eb41" name="Enumeration&lt;Object>">
            <templateBinding xmi:id="d7b4e67b-fbd3-4555-9166-962001234c82" signature="521c8bf5-b0b1-4a86-820c-0614950913b8">
              <parameterSubstitution xmi:id="adc16b38-b427-4b1e-904e-2a29a329ae95" formal="0dc15cf5-0f68-454b-a4d7-227d89f2d0c5" actual="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ed68efdd-b255-442e-bd65-fd9e205d1e6f" name="LinkedHashMap" clientDependency="c23923d2-a303-404e-bc26-c8cd2df7a80e">
            <ownedComment xmi:id="110b312c-c8cf-46b3-a4f2-9080dab265ee" body="&lt;p>Hash table and linked list implementation of the &lt;tt>Map&lt;/tt> interface,&#xA;with predictable iteration order.  This implementation differs from&#xA;&lt;tt>HashMap&lt;/tt> in that it maintains a doubly-linked list running through&#xA;all of its entries.  This linked list defines the iteration ordering,&#xA;which is normally the order in which keys were inserted into the map&#xA;(&lt;i>insertion-order&lt;/i>).  Note that insertion order is not affected&#xA;if a key is &lt;i>re-inserted&lt;/i> into the map.  (A key &lt;tt>k&lt;/tt> is&#xA;reinserted into a map &lt;tt>m&lt;/tt> if &lt;tt>m.put(k, v)&lt;/tt> is invoked when&#xA;&lt;tt>m.containsKey(k)&lt;/tt> would return &lt;tt>true&lt;/tt> immediately prior to&#xA;the invocation.)&#xA;&#xA;&lt;p>This implementation spares its clients from the unspecified, generally&#xA;chaotic ordering provided by {@link HashMap} (and {@link Hashtable}),&#xA;without incurring the increased cost associated with {@link TreeMap}.  It&#xA;can be used to produce a copy of a map that has the same order as the&#xA;original, regardless of the original map's implementation:&#xA;&lt;pre>&#xA;void foo(Map m) {&#xA;Map copy = new LinkedHashMap(m);&#xA;...&#xA;}&#xA;&lt;/pre>&#xA;This technique is particularly useful if a module takes a map on input,&#xA;copies it, and later returns results whose order is determined by that of&#xA;the copy.  (Clients generally appreciate having things returned in the same&#xA;order they were presented.)&#xA;&#xA;&lt;p>A special {@link #LinkedHashMap(int,float,boolean) constructor} is&#xA;provided to create a linked hash map whose order of iteration is the order&#xA;in which its entries were last accessed, from least-recently accessed to&#xA;most-recently (&lt;i>access-order&lt;/i>).  This kind of map is well-suited to&#xA;building LRU caches.  Invoking the &lt;tt>put&lt;/tt> or &lt;tt>get&lt;/tt> method&#xA;results in an access to the corresponding entry (assuming it exists after&#xA;the invocation completes).  The &lt;tt>putAll&lt;/tt> method generates one entry&#xA;access for each mapping in the specified map, in the order that key-value&#xA;mappings are provided by the specified map's entry set iterator.  &lt;i>No&#xA;other methods generate entry accesses.&lt;/i> In particular, operations on&#xA;collection-views do &lt;i>not&lt;/i> affect the order of iteration of the backing&#xA;map.&#xA;&#xA;&lt;p>The {@link #removeEldestEntry(Map.Entry)} method may be overridden to&#xA;impose a policy for removing stale mappings automatically when new mappings&#xA;are added to the map.&#xA;&#xA;&lt;p>This class provides all of the optional &lt;tt>Map&lt;/tt> operations, and&#xA;permits null elements.  Like &lt;tt>HashMap&lt;/tt>, it provides constant-time&#xA;performance for the basic operations (&lt;tt>add&lt;/tt>, &lt;tt>contains&lt;/tt> and&#xA;&lt;tt>remove&lt;/tt>), assuming the hash function disperses elements&#xA;properly among the buckets.  Performance is likely to be just slightly&#xA;below that of &lt;tt>HashMap&lt;/tt>, due to the added expense of maintaining the&#xA;linked list, with one exception: Iteration over the collection-views&#xA;of a &lt;tt>LinkedHashMap&lt;/tt> requires time proportional to the &lt;i>size&lt;/i>&#xA;of the map, regardless of its capacity.  Iteration over a &lt;tt>HashMap&lt;/tt>&#xA;is likely to be more expensive, requiring time proportional to its&#xA;&lt;i>capacity&lt;/i>.&#xA;&#xA;&lt;p>A linked hash map has two parameters that affect its performance:&#xA;&lt;i>initial capacity&lt;/i> and &lt;i>load factor&lt;/i>.  They are defined precisely&#xA;as for &lt;tt>HashMap&lt;/tt>.  Note, however, that the penalty for choosing an&#xA;excessively high value for initial capacity is less severe for this class&#xA;than for &lt;tt>HashMap&lt;/tt>, as iteration times for this class are unaffected&#xA;by capacity.&#xA;&#xA;&lt;p>&lt;strong>Note that this implementation is not synchronized.&lt;/strong> If&#xA;multiple threads access a linked hash map concurrently, and at least&#xA;one of the threads modifies the map structurally, it &lt;em>must&lt;/em> be&#xA;synchronized externally.  This is typically accomplished by synchronizing&#xA;on some object that naturally encapsulates the map.  If no such object&#xA;exists, the map should be &quot;wrapped&quot; using the&#xA;&lt;tt>Collections.synchronizedMap&lt;/tt>method.  This is best done at creation&#xA;time, to prevent accidental unsynchronized access:&#xA;&lt;pre>&#xA;Map m = Collections.synchronizedMap(new LinkedHashMap(...));&#xA;&lt;/pre>&#xA;A structural modification is any operation that adds or deletes one or more&#xA;mappings or, in the case of access-ordered linked hash maps, affects&#xA;iteration order.  In insertion-ordered linked hash maps, merely changing&#xA;the value associated with a key that is already contained in the map is not&#xA;a structural modification.  &lt;strong>In access-ordered linked hash maps,&#xA;merely querying the map with &lt;tt>get&lt;/tt> is a structural&#xA;modification.&lt;/strong>)&#xA;&#xA;&lt;p>The iterators returned by the &lt;tt>iterator&lt;/tt> methods of the&#xA;collections returned by all of this class's collection view methods are&#xA;&lt;em>fail-fast&lt;/em>: if the map is structurally modified at any time after&#xA;the iterator is created, in any way except through the iterator's own&#xA;remove method, the iterator will throw a&#xA;&lt;tt>ConcurrentModificationException&lt;/tt>.  Thus, in the face of concurrent&#xA;modification, the Iterator fails quickly and cleanly, rather than risking&#xA;arbitrary, non-deterministic behavior at an undetermined time in the&#xA;future.&#xA;&#xA;&lt;p>Note that the fail-fast behavior of an iterator cannot be guaranteed&#xA;as it is, generally speaking, impossible to make any hard guarantees in the&#xA;presence of unsynchronized concurrent modification.  Fail-fast iterators&#xA;throw &lt;tt>ConcurrentModificationException&lt;/tt> on a best-effort basis.&#xA;Therefore, it would be wrong to write a program that depended on this&#xA;exception for its correctness:   &lt;i>the fail-fast behavior of iterators&#xA;should be used only to detect bugs.&lt;/i>&#xA;&#xA;&lt;p>This class is a member of the&#xA;&lt;a href=&quot;{@docRoot}/../guide/collections/index.html&quot;>&#xA;Java Collections Framework&lt;/a>.&#xA;&#xA;@author  Josh Bloch&#xA;@version 1.18, 02/19/04&#xA;@see     Object#hashCode()&#xA;@see     Collection&#xA;@see     Map&#xA;@see     HashMap&#xA;@see     TreeMap&#xA;@see     Hashtable&#xA;@since   JDK1.4&#xA;" annotatedElement="ed68efdd-b255-442e-bd65-fd9e205d1e6f"/>
            <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="4a89aa13-ae59-441e-850d-7a40ff217eeb" name="" parameter="fcf6b1f0-346d-409b-8cb6-a0885acadf1f 2d614aa0-c101-4e75-b873-7a14c2ccb6a8">
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="fcf6b1f0-346d-409b-8cb6-a0885acadf1f" parameteredElement="053c10be-a937-4d45-bc60-78eccf63004c">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="053c10be-a937-4d45-bc60-78eccf63004c" name="K" templateParameter="fcf6b1f0-346d-409b-8cb6-a0885acadf1f"/>
              </ownedParameter>
              <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="2d614aa0-c101-4e75-b873-7a14c2ccb6a8" parameteredElement="10312efa-b452-4305-a7fd-934812e1b484">
                <ownedParameteredElement xmi:type="uml:Class" xmi:id="10312efa-b452-4305-a7fd-934812e1b484" name="V" templateParameter="2d614aa0-c101-4e75-b873-7a14c2ccb6a8"/>
              </ownedParameter>
            </ownedTemplateSignature>
            <generalization xmi:id="b1116ae6-fbc5-4a87-a376-19abeeb64dec" isSubstitutable="true" general="727dcdb4-6dff-44f4-b232-f2e838f83d56"/>
            <interfaceRealization xmi:id="c23923d2-a303-404e-bc26-c8cd2df7a80e" name="" supplier="b5eaa913-ac40-4b35-bf06-e3638ddc059a" client="ed68efdd-b255-442e-bd65-fd9e205d1e6f" contract="b5eaa913-ac40-4b35-bf06-e3638ddc059a"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="6de2cce1-6bde-40ef-8d74-43ab9505462c" name="Entry" visibility="private">
              <ownedComment xmi:id="1f91df3d-04e0-42e7-8342-26e35e34adf0" body="LinkedHashMap entry.&#xA;" annotatedElement="6de2cce1-6bde-40ef-8d74-43ab9505462c"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="16cff9c0-228d-4c81-852b-a31d7d23bb9e" name="" parameter="5140a054-06c3-4f89-8cc9-05b15f3e82c0 f4493ac0-830b-4bc3-9a4d-f3d8d9815821">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="5140a054-06c3-4f89-8cc9-05b15f3e82c0" parameteredElement="060212e9-7a6f-4d42-b5f6-3b76c9820dd4">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="060212e9-7a6f-4d42-b5f6-3b76c9820dd4" name="K" templateParameter="5140a054-06c3-4f89-8cc9-05b15f3e82c0"/>
                </ownedParameter>
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="f4493ac0-830b-4bc3-9a4d-f3d8d9815821" parameteredElement="2a4cae87-a06b-46e1-8159-126238f0675d">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="2a4cae87-a06b-46e1-8159-126238f0675d" name="V" templateParameter="f4493ac0-830b-4bc3-9a4d-f3d8d9815821"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <generalization xmi:id="82c8f128-2009-4c04-81b5-f863e52479f7" isSubstitutable="true" general="cd06d5da-937c-422b-91f1-1169a2124be5"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="0ba2f5b0-a4e7-4500-a131-8d71edf3fdb3" name="LinkedHashIterator" visibility="private" clientDependency="fc588aa3-a61a-4527-a1da-90d7214912d0" isAbstract="true">
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="4c079565-0789-4bf1-9e25-049f5e6a76ab" name="" parameter="e5247458-b71e-471a-aa50-e982ba010250">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="e5247458-b71e-471a-aa50-e982ba010250" parameteredElement="9fe3e26c-e6c7-4d5c-bb70-b7d34cbd0d93">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="9fe3e26c-e6c7-4d5c-bb70-b7d34cbd0d93" name="T" templateParameter="e5247458-b71e-471a-aa50-e982ba010250"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="fc588aa3-a61a-4527-a1da-90d7214912d0" name="" supplier="15581cb3-f33d-4deb-9456-fe83f0817c37" client="0ba2f5b0-a4e7-4500-a131-8d71edf3fdb3" contract="15581cb3-f33d-4deb-9456-fe83f0817c37"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="2070abbb-1c2d-4696-9543-9897a310de04" name="KeyIterator" visibility="private">
              <generalization xmi:id="c725ac9d-e3cc-4dff-86ad-574178afc61d" isSubstitutable="true" general="8d12879d-774f-443c-bf65-2e16510aee65"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="53608761-9ea4-4920-835d-90fe4d29d132" name="ValueIterator" visibility="private">
              <generalization xmi:id="c79be819-2cd7-4452-a74e-7b585bc06871" isSubstitutable="true" general="f463b677-2e80-4c1d-bf48-9ef10a4baa5b"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="03629e99-c932-48ba-aa40-1a8ca493c436" name="EntryIterator" visibility="private">
              <generalization xmi:id="3aea3d5d-1919-4fc0-902b-61c9d88aae1e" isSubstitutable="true" general="d3ec4a2d-28e5-4594-9186-e05140c35ea5"/>
            </nestedClassifier>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="e699f53d-d3e3-4c0a-9c5a-c15d1e0eedaf" name="beans">
          <packagedElement xmi:type="uml:Interface" xmi:id="b548bd16-341a-4f73-88bd-d65014ec5997" name="PropertyChangeListener" isAbstract="true">
            <ownedComment xmi:id="45f3d03e-0ee6-4632-bf8c-6a49bd7a7058" body="A &quot;PropertyChange&quot; event gets fired whenever a bean changes a &quot;bound&quot;&#xA;property.  You can register a PropertyChangeListener with a source&#xA;bean so as to be notified of any bound property updates.&#xA;" annotatedElement="b548bd16-341a-4f73-88bd-d65014ec5997"/>
            <generalization xmi:id="4bed3713-01d4-4c66-a49f-cae3457b0fd0" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ef7933a3-a0ad-40b2-81e2-9420240567ac" name="java_lang_Class_PersistenceDelegate" visibility="package">
            <generalization xmi:id="2bee3034-55c4-4ac3-a82a-c4ab344e9e9f" isSubstitutable="true" general="6a43ee9c-3b32-4d11-8c9d-6691f71d9ee3"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="e61cee76-b8cb-4bf6-87ba-1ea3716e930e" name="VetoableChangeListener" isAbstract="true">
            <ownedComment xmi:id="1f4d468e-0fdd-4d71-88f4-2301eaeaf237" body="A VetoableChange event gets fired whenever a bean changes a &quot;constrained&quot;&#xA;property.  You can register a VetoableChangeListener with a source bean&#xA;so as to be notified of any constrained property updates.&#xA;" annotatedElement="e61cee76-b8cb-4bf6-87ba-1ea3716e930e"/>
            <generalization xmi:id="e48a67c6-6e93-447d-962a-46894f9b78e2" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8a59aef0-5a02-4b57-81aa-24a4870bfe30" name="ObjectInputStreamWithLoader" visibility="package">
            <ownedComment xmi:id="959c0977-ac03-4d77-80de-70134bd63427" body="This subclass of ObjectInputStream delegates loading of classes to&#xA;an existing ClassLoader.&#xA;" annotatedElement="8a59aef0-5a02-4b57-81aa-24a4870bfe30"/>
            <generalization xmi:id="81d22ea5-11ac-4502-8a8e-4165bd2d77f0" isSubstitutable="true" general="eca630bd-67e2-45fc-afac-de0b42be103a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="828169a9-be7f-44b9-b033-23b2e4edfcae" name="java_awt_Container_PersistenceDelegate" visibility="package">
            <generalization xmi:id="cd516a70-8c52-4c39-b502-3a451a002292" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="63c3a165-6565-42e7-9a0e-fc4e58183cfb" name="Customizer" isAbstract="true">
            <ownedComment xmi:id="3ea5f9fb-5c7d-4a45-a292-43f276ea645b" body="A customizer class provides a complete custom GUI for customizing&#xA;a target Java Bean.&#xA;&lt;P>&#xA;Each customizer should inherit from the java.awt.Component class so&#xA;it can be instantiated inside an AWT dialog or panel.&#xA;&lt;P>&#xA;Each customizer should have a null constructor.&#xA;" annotatedElement="63c3a165-6565-42e7-9a0e-fc4e58183cfb"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="078612c0-2cf1-4d3c-bfde-955692ab5d77" name="java_awt_MenuBar_PersistenceDelegate" visibility="package">
            <generalization xmi:id="197d3c7b-0e88-4c6a-b87f-9addc9d06828" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9283347c-d5d0-4b81-b2da-4c18d4460d03" name="PropertyChangeEvent">
            <ownedComment xmi:id="c0938db5-df8e-4b42-b85d-70ed4466e6a1" body="A &quot;PropertyChange&quot; event gets delivered whenever a bean changes a &quot;bound&quot;&#xA;or &quot;constrained&quot; property.  A PropertyChangeEvent object is sent as an&#xA;argument to the PropertyChangeListener and VetoableChangeListener methods.&#xA;&lt;P>&#xA;Normally PropertyChangeEvents are accompanied by the name and the old&#xA;and new value of the changed property.  If the new value is a primitive&#xA;type (such as int or boolean) it must be wrapped as the&#xA;corresponding java.lang.* Object type (such as Integer or Boolean).&#xA;&lt;P>&#xA;Null values may be provided for the old and the new values if their&#xA;true values are not known.&#xA;&lt;P>&#xA;An event source may send a null object as the name to indicate that an&#xA;arbitrary set of if its properties have changed.  In this case the&#xA;old and new values should also be null.&#xA;" annotatedElement="9283347c-d5d0-4b81-b2da-4c18d4460d03"/>
            <generalization xmi:id="cffc23dd-eda2-48ec-a669-413fc212d210" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6296287e-fff5-4c53-bc4d-06333147d93c" name="VetoableChangeSupport" clientDependency="53ef82a4-b421-4351-91b5-e0c187767080">
            <ownedComment xmi:id="21d0d238-dba2-4dec-b292-a506e1ff7ca1" body="This is a utility class that can be used by beans that support constrained&#xA;properties.  You can use an instance of this class as a member field&#xA;of your bean and delegate various work to it.&#xA;&#xA;This class is serializable.  When it is serialized it will save&#xA;(and restore) any listeners that are themselves serializable.  Any&#xA;non-serializable listeners will be skipped during serialization.&#xA;" annotatedElement="6296287e-fff5-4c53-bc4d-06333147d93c"/>
            <interfaceRealization xmi:id="53ef82a4-b421-4351-91b5-e0c187767080" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="6296287e-fff5-4c53-bc4d-06333147d93c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e8ca03ed-e0e9-4a0d-9224-94804304e5dc" name="javax_swing_JComponent_PersistenceDelegate" visibility="package"/>
          <packagedElement xmi:type="uml:Class" xmi:id="37d20ebe-c000-4ed6-8ab1-1ef81d68d7f0" name="StaticFieldsPersistenceDelegate" visibility="package">
            <generalization xmi:id="d88cbfd0-53b2-440f-b184-cf0241b901bd" isSubstitutable="true" general="6a43ee9c-3b32-4d11-8c9d-6691f71d9ee3"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7fd37de5-7079-476f-beda-44ee2b4cf6aa" name="PrimitivePersistenceDelegate" visibility="package">
            <generalization xmi:id="78fd144f-176b-45e2-a1fb-e60b88fc5656" isSubstitutable="true" general="6a43ee9c-3b32-4d11-8c9d-6691f71d9ee3"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="6ce42f8b-e4fa-4cc0-9354-76cc50b8fbda" name="ExceptionListener" isAbstract="true">
            <ownedComment xmi:id="c5d9772a-231b-4508-87e2-12b44e9e5143" body="An ExceptionListener is notified of internal exceptions.&#xA;&#xA;@since 1.4&#xA;&#xA;@version 1.6 12/19/03&#xA;@author Philip Milne&#xA;" annotatedElement="6ce42f8b-e4fa-4cc0-9354-76cc50b8fbda"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ffd9063d-91f8-4ec7-bb0e-1d1fbfdd3c4e" name="VetoableChangeListenerProxy" clientDependency="57f354b0-c789-4da7-ac16-9cb7bd2a9371">
            <ownedComment xmi:id="a8309a78-161a-4a70-b442-86ce953066e9" body="A class which extends the &lt;code>EventListenerProxy&lt;/code> specifically&#xA;for associating a &lt;code>VetoableChangeListener&lt;/code> with a &quot;constrained&quot;&#xA;property. Instances of this class can be added as a&#xA;&lt;code>VetoableChangeListener&lt;/code> to a bean which supports firing&#xA;VetoableChange events.&#xA;&lt;p>&#xA;If the object has a &lt;code>getVetoableChangeListeners()&lt;/code>&#xA;method then the array returned could be a mixture of&#xA;&lt;code>VetoableChangeListener&lt;/code> and&#xA;&lt;code>VetoableChangeListenerProxy&lt;/code> objects.&#xA;&lt;p>&#xA;@see java.util.EventListenerProxy&#xA;@see VetoableChangeListener&#xA;@see VetoableChangeSupport#getVetoableChangeListeners&#xA;@since 1.4&#xA;" annotatedElement="ffd9063d-91f8-4ec7-bb0e-1d1fbfdd3c4e"/>
            <generalization xmi:id="a6f3d185-a182-46e0-ade7-888753900780" isSubstitutable="true" general="fc8c4f27-1bc3-4bb6-9c57-74c2e8a8de51"/>
            <interfaceRealization xmi:id="57f354b0-c789-4da7-ac16-9cb7bd2a9371" name="" supplier="e61cee76-b8cb-4bf6-87ba-1ea3716e930e" client="ffd9063d-91f8-4ec7-bb0e-1d1fbfdd3c4e" contract="e61cee76-b8cb-4bf6-87ba-1ea3716e930e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e30c1138-752f-4370-9446-c5a75fa59f1a" name="MethodDescriptor">
            <ownedComment xmi:id="83846b06-1c77-40ae-b65f-fc3aee98d4ee" body="A MethodDescriptor describes a particular method that a Java Bean&#xA;supports for external access from other components.&#xA;" annotatedElement="e30c1138-752f-4370-9446-c5a75fa59f1a"/>
            <generalization xmi:id="d7f2f957-dd36-4f47-9992-409665fa2cee" isSubstitutable="true" general="15fda141-7c8e-462a-ab0e-2f39e964be75"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="c4c63e23-9f7d-4c0b-9d24-7db429b5ff77" name="DesignMode" isAbstract="true">
            <ownedComment xmi:id="00159678-40f4-4ec5-a049-5df9643f31e6" body="&lt;p>&#xA;This interface is intended to be implemented by, or delegated from, instances&#xA;of java.beans.beancontext.BeanContext, in order to propagate to its nested hierarchy&#xA;of java.beans.beancontext.BeanContextChild instances, the current &quot;designTime&quot; property.&#xA;&lt;p>&#xA;The JavaBeans specification defines the notion of design time as is a&#xA;mode in which JavaBeans instances should function during their composition&#xA;and customization in a interactive design, composition or construction tool,&#xA;as opposed to runtime when the JavaBean is part of an applet, application,&#xA;or other live Java executable abstraction.&#xA;&#xA;@author Laurence P. G. Cable&#xA;@version 1.14, 12/19/03&#xA;@since 1.2&#xA;&#xA;@see java.beans.beancontext.BeanContext&#xA;@see java.beans.beancontext.BeanContextChild&#xA;@see java.beans.beancontext.BeanContextMembershipListener&#xA;@see java.beans.PropertyChangeEvent&#xA;" annotatedElement="c4c63e23-9f7d-4c0b-9d24-7db429b5ff77"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6a43ee9c-3b32-4d11-8c9d-6691f71d9ee3" name="PersistenceDelegate" isAbstract="true">
            <ownedComment xmi:id="04a4a33d-95c8-4d67-8070-fb74922f5c76" body="The PersistenceDelegate class takes the responsibility&#xA;for expressing the state of an instance of a given class&#xA;in terms of the methods in the class's public API. Instead&#xA;of associating the responsibility of persistence with&#xA;the class itself as is done, for example, by the&#xA;&lt;code>readObject&lt;/code> and &lt;code>writeObject&lt;/code>&#xA;methods used by the &lt;code>ObjectOutputStream&lt;/code>, streams like&#xA;the &lt;code>XMLEncoder&lt;/code> which&#xA;use this delegation model can have their behavior controlled&#xA;independently of the classes themselves. Normally, the class&#xA;is the best place to put such information and conventions&#xA;can easily be expressed in this delegation scheme to do just that.&#xA;Sometimes however, it is the case that a minor problem&#xA;in a single class prevents an entire object graph from&#xA;being written and this can leave the application&#xA;developer with no recourse but to attempt to shadow&#xA;the problematic classes locally or use alternative&#xA;persistence techniques. In situations like these, the&#xA;delegation model gives a relatively clean mechanism for&#xA;the application developer to intervene in all parts of the&#xA;serialization process without requiring that modifications&#xA;be made to the implementation of classes which are not part&#xA;of the application itself.&#xA;&lt;p>&#xA;In addition to using a delegation model, this persistence&#xA;scheme differs from traditional serialization schemes&#xA;in requiring an analog of the &lt;code>writeObject&lt;/code>&#xA;method without a corresponding &lt;code>readObject&lt;/code>&#xA;method. The &lt;code>writeObject&lt;/code> analog encodes each&#xA;instance in terms of its public API and there is no need to&#xA;define a &lt;code>readObject&lt;/code> analog&#xA;since the procedure for reading the serialized form&#xA;is defined by the semantics of method invocation as laid&#xA;out in the Java Language Specification.&#xA;Breaking the dependency between &lt;code>writeObject&lt;/code>&#xA;and &lt;code>readObject&lt;/code> implementations, which may&#xA;change from version to version, is the key factor&#xA;in making the archives produced by this technique immune&#xA;to changes in the private implementations of the classes&#xA;to which they refer.&#xA;&lt;p>&#xA;A persistence delegate, may take control of all&#xA;aspects of the persistence of an object including:&#xA;&lt;ul>&#xA;&lt;li>&#xA;Deciding whether or not an instance can be mutated&#xA;into another instance of the same class.&#xA;&lt;li>&#xA;Instantiating the object, either by calling a&#xA;public constructor or a public factory method.&#xA;&lt;li>&#xA;Performing the initialization of the object.&#xA;&lt;/ul>&#xA;@see XMLEncoder&#xA;&#xA;@since 1.4&#xA;&#xA;@version 1.11 05/05/04&#xA;@author Philip Milne&#xA;" annotatedElement="6a43ee9c-3b32-4d11-8c9d-6691f71d9ee3"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="719ddd89-6740-4f75-9ed6-3e8970e4779b" name="ArrayPersistenceDelegate" visibility="package">
            <generalization xmi:id="7e1d7fae-16b8-4b95-9493-8cd4ba4c4ee9" isSubstitutable="true" general="6a43ee9c-3b32-4d11-8c9d-6691f71d9ee3"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="15fda141-7c8e-462a-ab0e-2f39e964be75" name="FeatureDescriptor">
            <ownedComment xmi:id="c18e1598-5e34-4e4a-8cc4-6cfa981d9fea" body="The FeatureDescriptor class is the common baseclass for PropertyDescriptor,&#xA;EventSetDescriptor, and MethodDescriptor, etc.&#xA;&lt;p>&#xA;It supports some common information that can be set and retrieved for&#xA;any of the introspection descriptors.&#xA;&lt;p>&#xA;In addition it provides an extension mechanism so that arbitrary&#xA;attribute/value pairs can be associated with a design feature.&#xA;" annotatedElement="15fda141-7c8e-462a-ab0e-2f39e964be75"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1740fb38-c1c9-4b66-9ca6-d97e42dfbabf" name="javax_swing_tree_DefaultMutableTreeNode_PersistenceDelegate" visibility="package">
            <generalization xmi:id="4dd2de5f-36aa-4feb-99b0-2aec2e3a4656" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="bd964b89-1074-41f4-ab3c-c287c9b00dff" name="IndexedPropertyChangeEvent">
            <ownedComment xmi:id="1adc2507-3360-4442-ac82-6e516765c873" body="An &quot;IndexedPropertyChange&quot; event gets delivered whenever a component that&#xA;conforms to the JavaBeans&lt;TM> specification (a &quot;bean&quot;) changes a bound&#xA;indexed property. This class is an extension of &lt;code>PropertyChangeEvent&lt;/code>&#xA;but contains the index of the property that has changed.&#xA;&lt;P>&#xA;Null values may be provided for the old and the new values if their&#xA;true values are not known.&#xA;&lt;P>&#xA;An event source may send a null object as the name to indicate that an&#xA;arbitrary set of if its properties have changed.  In this case the&#xA;old and new values should also be null.&#xA;&#xA;@version 1.4 12/19/03&#xA;@since 1.5&#xA;@author Mark Davidson&#xA;" annotatedElement="bd964b89-1074-41f4-ab3c-c287c9b00dff"/>
            <generalization xmi:id="9cfe7085-a265-4317-aeae-5afe7fa63041" isSubstitutable="true" general="9283347c-d5d0-4b81-b2da-4c18d4460d03"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1d765f23-1b44-4635-91f4-3c585de27308" name="java_awt_CardLayout_PersistenceDelegate" visibility="package">
            <generalization xmi:id="888673ab-7738-41d3-a5c1-71731b3f0b42" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="12d2716f-dfa7-4b5b-8c00-ebe316c2bfc5" name="java_util_AbstractList_PersistenceDelegate" visibility="package">
            <generalization xmi:id="c9e3bcea-4848-48e1-b443-69c9f5a22aca" isSubstitutable="true" general="8db15f29-a4b4-49e2-8c74-932749d34678"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="68cd78e8-a748-4fca-868e-15517c12f13c" name="Visibility" isAbstract="true">
            <ownedComment xmi:id="b671297d-548f-4a4f-95fd-b71561e5f63f" body="Under some circumstances a bean may be run on servers where a GUI&#xA;is not available.  This interface can be used to query a bean to&#xA;determine whether it absolutely needs a gui, and to advise the&#xA;bean whether a GUI is available.&#xA;&lt;p>&#xA;This interface is for expert developers, and is not needed&#xA;for normal simple beans.  To avoid confusing end-users we&#xA;avoid using getXXX setXXX design patterns for these methods.&#xA;" annotatedElement="68cd78e8-a748-4fca-868e-15517c12f13c"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="dddf9607-cff9-4160-8b06-46722462b414" name="IndexedPropertyDescriptor">
            <ownedComment xmi:id="3a4abc61-cb84-4a78-b846-4d8ef73afa29" body="An IndexedPropertyDescriptor describes a property that acts like an&#xA;array and has an indexed read and/or indexed write method to access&#xA;specific elements of the array.&#xA;&lt;p>&#xA;An indexed property may also provide simple non-indexed read and write&#xA;methods.  If these are present, they read and write arrays of the type&#xA;returned by the indexed read method.&#xA;" annotatedElement="dddf9607-cff9-4160-8b06-46722462b414"/>
            <generalization xmi:id="a61753ca-56d9-47bb-9080-c135550f7db1" isSubstitutable="true" general="766065b8-a724-4a46-89d1-29e838375bd5"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d7f8e5a4-ba90-4341-ae4e-e5831b8eba50" name="java_awt_Choice_PersistenceDelegate" visibility="package">
            <generalization xmi:id="ed5e35cf-6e2c-460f-9dd4-2be937e7de70" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0216e241-a1fb-4801-8ea4-26d2e59f0b4e" name="java_awt_MenuShortcut_PersistenceDelegate" visibility="package">
            <generalization xmi:id="71759103-9c06-451e-9941-1578ac59e066" isSubstitutable="true" general="6a43ee9c-3b32-4d11-8c9d-6691f71d9ee3"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="766065b8-a724-4a46-89d1-29e838375bd5" name="PropertyDescriptor">
            <ownedComment xmi:id="2b0dcee3-f359-4391-9396-ed42eb75fa78" body="A PropertyDescriptor describes one property that a Java Bean&#xA;exports via a pair of accessor methods.&#xA;" annotatedElement="766065b8-a724-4a46-89d1-29e838375bd5"/>
            <generalization xmi:id="71e1895e-294b-4f5f-8848-fe26e0c5c7c4" isSubstitutable="true" general="15fda141-7c8e-462a-ab0e-2f39e964be75"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="863e6123-64e7-4166-abcc-84c2c1ca0f1a" name="GenericBeanInfo" visibility="package">
            <ownedComment xmi:id="740a84af-fbfd-4950-a4be-2f36b7281c14" body="Package private implementation support class for Introspector's&#xA;internal use.&#xA;&lt;p>&#xA;Mostly this is used as a placeholder for the descriptors.&#xA;" annotatedElement="863e6123-64e7-4166-abcc-84c2c1ca0f1a"/>
            <generalization xmi:id="3fc55304-6cff-4e03-af62-0dfffa58d43f" isSubstitutable="true" general="3c2b4084-3068-4465-8958-c1ab23fc20db"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6b8baf33-b0c0-40d4-a487-1639bf7c844d" name="IdentityHashtable" visibility="package">
            <nestedClassifier xmi:type="uml:Class" xmi:id="a77bd9a8-d0ca-44ec-9a2e-8c932cb88963" name="InstanceWrapper" visibility="private"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="fe1f042a-29a6-4e20-983f-c7ac2e2ae86b" name="MetaData" visibility="package"/>
          <packagedElement xmi:type="uml:Class" xmi:id="4a374a6c-2202-4d1b-ae23-9e72c3d4c176" name="ParameterDescriptor">
            <ownedComment xmi:id="c7f4809e-f7b8-4390-b635-dec103df20d0" body="The ParameterDescriptor class allows bean implementors to provide&#xA;additional information on each of their parameters, beyond the&#xA;low level type information provided by the java.lang.reflect.Method&#xA;class.&#xA;&lt;p>&#xA;Currently all our state comes from the FeatureDescriptor base class.&#xA;" annotatedElement="4a374a6c-2202-4d1b-ae23-9e72c3d4c176"/>
            <generalization xmi:id="aed47ff8-1b77-479c-9487-6222e214749d" isSubstitutable="true" general="15fda141-7c8e-462a-ab0e-2f39e964be75"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b2555d2d-10e4-48bb-a9ba-7a60b0b20663" name="ReflectionUtils" visibility="package">
            <ownedComment xmi:id="df480f1d-a42f-4409-a938-1df0e4bcee74" body="A utility class for reflectively finding methods, constuctors and fields&#xA;using reflection.&#xA;" annotatedElement="b2555d2d-10e4-48bb-a9ba-7a60b0b20663"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="6822302d-bfd1-47f1-9757-a5a232a22930" name="Signature" visibility="private">
              <ownedComment xmi:id="32cc007b-2dc8-436f-9327-e2d40c4b7014" body="A class that represents the unique elements of a method that will be a&#xA;key in the method cache.&#xA;" annotatedElement="6822302d-bfd1-47f1-9757-a5a232a22930"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="21e9d0de-9735-4279-bc8b-bd5b38c0f638" name="XMLEncoder">
            <ownedComment xmi:id="e82a3ee4-d177-44c2-a438-b0e9c3cba90f" body="The &lt;code>XMLEncoder&lt;/code> class is a complementary alternative to&#xA;the &lt;code>ObjectOutputStream&lt;/code> and can used to generate&#xA;a textual representation of a &lt;em>JavaBean&lt;/em> in the same&#xA;way that the &lt;code>ObjectOutputStream&lt;/code> can&#xA;be used to create binary representation of &lt;code>Serializable&lt;/code>&#xA;objects. For example, the following fragment can be used to create&#xA;a textual representation the supplied &lt;em>JavaBean&lt;/em>&#xA;and all its properties:&#xA;&lt;pre>&#xA;XMLEncoder e = new XMLEncoder(&#xA;new BufferedOutputStream(&#xA;new FileOutputStream(&quot;Test.xml&quot;)));&#xA;e.writeObject(new JButton(&quot;Hello, world&quot;));&#xA;e.close();&#xA;&lt;/pre>&#xA;Despite the similarity of their APIs, the &lt;code>XMLEncoder&lt;/code>&#xA;class is exclusively designed for the purpose of archiving graphs&#xA;of &lt;em>JavaBean&lt;/em>s as textual representations of their public&#xA;properties. Like Java source files, documents written this way&#xA;have a natural immunity to changes in the implementations of the classes&#xA;involved. The &lt;code>ObjectOutputStream&lt;/code> continues to be recommended&#xA;for interprocess communication and general purpose serialization.&#xA;&lt;p>&#xA;The &lt;code>XMLEncoder&lt;/code> class provides a default denotation for&#xA;&lt;em>JavaBean&lt;/em>s in which they are represented as XML documents&#xA;complying with version 1.0 of the XML specification and the&#xA;UTF-8 character encoding of the Unicode/ISO 10646 character set.&#xA;The XML documents produced by the &lt;code>XMLEncoder&lt;/code> class are:&#xA;&lt;ul>&#xA;&lt;li>&#xA;&lt;em>Portable and version resilient&lt;/em>: they have no dependencies&#xA;on the private implementation of any class and so, like Java source&#xA;files, they may be exchanged between environments which may have&#xA;different versions of some of the classes and between VMs from&#xA;different vendors.&#xA;&lt;li>&#xA;&lt;em>Structurally compact&lt;/em>: The &lt;code>XMLEncoder&lt;/code> class&#xA;uses a &lt;em>redundancy elimination&lt;/em> algorithm internally so that the&#xA;default values of a Bean's properties are not written to the stream.&#xA;&lt;li>&#xA;&lt;em>Fault tolerant&lt;/em>: Non-structural errors in the file,&#xA;caused either by damage to the file or by API changes&#xA;made to classes in an archive remain localized&#xA;so that a reader can report the error and continue to load the parts&#xA;of the document which were not affected by the error.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;Below is an example of an XML archive containing&#xA;some user interface components from the &lt;em>swing&lt;/em> toolkit:&#xA;&lt;pre>&#xA;&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?>&#xA;&lt;java version=&quot;1.0&quot; class=&quot;java.beans.XMLDecoder&quot;>&#xA;&lt;object class=&quot;javax.swing.JFrame&quot;>&#xA;&lt;void property=&quot;name&quot;>&#xA;&lt;string>frame1&lt;/string>&#xA;&lt;/void>&#xA;&lt;void property=&quot;bounds&quot;>&#xA;&lt;object class=&quot;java.awt.Rectangle&quot;>&#xA;&lt;int>0&lt;/int>&#xA;&lt;int>0&lt;/int>&#xA;&lt;int>200&lt;/int>&#xA;&lt;int>200&lt;/int>&#xA;&lt;/object>&#xA;&lt;/void>&#xA;&lt;void property=&quot;contentPane&quot;>&#xA;&lt;void method=&quot;add&quot;>&#xA;&lt;object class=&quot;javax.swing.JButton&quot;>&#xA;&lt;void property=&quot;label&quot;>&#xA;&lt;string>Hello&lt;/string>&#xA;&lt;/void>&#xA;&lt;/object>&#xA;&lt;/void>&#xA;&lt;/void>&#xA;&lt;void property=&quot;visible&quot;>&#xA;&lt;boolean>true&lt;/boolean>&#xA;&lt;/void>&#xA;&lt;/object>&#xA;&lt;/java>&#xA;&lt;/pre>&#xA;The XML syntax uses the following conventions:&#xA;&lt;ul>&#xA;&lt;li>&#xA;Each element represents a method call.&#xA;&lt;li>&#xA;The &quot;object&quot; tag denotes an &lt;em>expression&lt;/em> whose value is&#xA;to be used as the argument to the enclosing element.&#xA;&lt;li>&#xA;The &quot;void&quot; tag denotes a &lt;em>statement&lt;/em> which will&#xA;be executed, but whose result will not be used as an&#xA;argument to the enclosing method.&#xA;&lt;li>&#xA;Elements which contain elements use those elements as arguments,&#xA;unless they have the tag: &quot;void&quot;.&#xA;&lt;li>&#xA;The name of the method is denoted by the &quot;method&quot; attribute.&#xA;&lt;li>&#xA;XML's standard &quot;id&quot; and &quot;idref&quot; attributes are used to make&#xA;references to previous expressions - so as to deal with&#xA;circularities in the object graph.&#xA;&lt;li>&#xA;The &quot;class&quot; attribute is used to specify the target of a static&#xA;method or constructor explicitly; its value being the fully&#xA;qualified name of the class.&#xA;&lt;li>&#xA;Elements with the &quot;void&quot; tag are executed using&#xA;the outer context as the target if no target is defined&#xA;by a &quot;class&quot; attribute.&#xA;&lt;li>&#xA;Java's String class is treated specially and is&#xA;written &lt;string>Hello, world&lt;/string> where&#xA;the characters of the string are converted to bytes&#xA;using the UTF-8 character encoding.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;Although all object graphs may be written using just these three&#xA;tags, the following definitions are included so that common&#xA;data structures can be expressed more concisely:&#xA;&lt;p>&#xA;&lt;ul>&#xA;&lt;li>&#xA;The default method name is &quot;new&quot;.&#xA;&lt;li>&#xA;A reference to a java class is written in the form&#xA;&lt;class>javax.swing.JButton&lt;/class>.&#xA;&lt;li>&#xA;Instances of the wrapper classes for Java's primitive types are written&#xA;using the name of the primitive type as the tag. For example, an&#xA;instance of the &lt;code>Integer&lt;/code> class could be written:&#xA;&lt;int>123&lt;/int>. Note that the &lt;code>XMLEncoder&lt;/code> class&#xA;uses Java's reflection package in which the conversion between&#xA;Java's primitive types and their associated &quot;wrapper classes&quot;&#xA;is handled internally. The API for the &lt;code>XMLEncoder&lt;/code> class&#xA;itself deals only with &lt;code>Object&lt;/code>s.&#xA;&lt;li>&#xA;In an element representing a nullary method whose name&#xA;starts with &quot;get&quot;, the &quot;method&quot; attribute is replaced&#xA;with a &quot;property&quot; attribute whose value is given by removing&#xA;the &quot;get&quot; prefix and decapitalizing the result.&#xA;&lt;li>&#xA;In an element representing a monadic method whose name&#xA;starts with &quot;set&quot;, the &quot;method&quot; attribute is replaced&#xA;with a &quot;property&quot; attribute whose value is given by removing&#xA;the &quot;set&quot; prefix and decapitalizing the result.&#xA;&lt;li>&#xA;In an element representing a method named &quot;get&quot; taking one&#xA;integer argument, the &quot;method&quot; attribute is replaced&#xA;with an &quot;index&quot; attribute whose value the value of the&#xA;first argument.&#xA;&lt;li>&#xA;In an element representing a method named &quot;set&quot; taking two arguments,&#xA;the first of which is an integer, the &quot;method&quot; attribute is replaced&#xA;with an &quot;index&quot; attribute whose value the value of the&#xA;first argument.&#xA;&lt;li>&#xA;A reference to an array is written using the &quot;array&quot;&#xA;tag. The &quot;class&quot; and &quot;length&quot; attributes specify the&#xA;sub-type of the array and its length respectively.&#xA;&lt;/ul>&#xA;&#xA;&lt;p>&#xA;For more information you might also want to check out&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/products/jfc/tsc/articles/persistence4&quot;>Using XMLEncoder&lt;/a>,&#xA;an article in &lt;em>The Swing Connection.&lt;/em>&#xA;@see XMLDecoder&#xA;@see java.io.ObjectOutputStream&#xA;&#xA;@since 1.4&#xA;&#xA;@version 1.33 12/19/03&#xA;@author Philip Milne&#xA;" annotatedElement="21e9d0de-9735-4279-bc8b-bd5b38c0f638"/>
            <generalization xmi:id="d2089a2b-fa6b-4b5a-ae6a-0a410718671b" isSubstitutable="true" general="1a18e185-f878-4221-a8a4-461e727c02e5"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c4b01c11-fc15-4423-a9c0-fcc44b197cc3" name="ValueData" visibility="private"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2023bd59-d4bc-4265-a87f-5055a7edd3ee" name="java_awt_List_PersistenceDelegate" visibility="package">
            <generalization xmi:id="99ca24f7-9c96-4b4e-872f-62bd56d53d96" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e956e1ae-ee17-4a96-89cb-2389df3d5950" name="ObjectHandler" visibility="package"/>
          <packagedElement xmi:type="uml:Class" xmi:id="8fb5b3dd-ea0e-4708-8b2e-9b6cc7bdb7c9" name="java_awt_SystemColor_PersistenceDelegate" visibility="package">
            <generalization xmi:id="ec501646-6a60-48e7-808c-f3ee2bdfddf3" isSubstitutable="true" general="37d20ebe-c000-4ed6-8ab1-1ef81d68d7f0"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2d378b8a-55b7-4f15-8674-815cf94b7b14" name="NullPersistenceDelegate" visibility="package">
            <generalization xmi:id="86e96d45-68cd-4dde-8c5f-770ae8b34dcc" isSubstitutable="true" general="6a43ee9c-3b32-4d11-8c9d-6691f71d9ee3"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="33b6e4f9-d225-480a-8ad4-68d2ae59b094" name="PropertyEditorManager">
            <ownedComment xmi:id="9c024906-b7b9-45b1-bd69-652a554d8bd8" body="The PropertyEditorManager can be used to locate a property editor for&#xA;any given type name.  This property editor must support the&#xA;java.beans.PropertyEditor interface for editing a given object.&#xA;&lt;P>&#xA;The PropertyEditorManager uses three techniques for locating an editor&#xA;for a given type.  First, it provides a registerEditor method to allow&#xA;an editor to be specifically registered for a given type.  Second it&#xA;tries to locate a suitable class by adding &quot;Editor&quot; to the full&#xA;qualified classname of the given type (e.g. &quot;foo.bah.FozEditor&quot;).&#xA;Finally it takes the simple classname (without the package name) adds&#xA;&quot;Editor&quot; to it and looks in a search-path of packages for a matching&#xA;class.&#xA;&lt;P>&#xA;So for an input class foo.bah.Fred, the PropertyEditorManager would&#xA;first look in its tables to see if an editor had been registered for&#xA;foo.bah.Fred and if so use that.  Then it will look for a&#xA;foo.bah.FredEditor class.  Then it will look for (say)&#xA;standardEditorsPackage.FredEditor class.&#xA;&lt;p>&#xA;Default PropertyEditors will be provided for the Java primitive types&#xA;&quot;boolean&quot;, &quot;byte&quot;, &quot;short&quot;, &quot;int&quot;, &quot;long&quot;, &quot;float&quot;, and &quot;double&quot;; and&#xA;for the classes java.lang.String. java.awt.Color, and java.awt.Font.&#xA;" annotatedElement="33b6e4f9-d225-480a-8ad4-68d2ae59b094"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="40d661ca-65c7-4cbc-b406-e8b5a30c44be" name="Statement">
            <ownedComment xmi:id="3e086e37-5b15-4574-b9d5-73ab5115caa8" body="A &lt;code>Statement&lt;/code> object represents a primitive statement&#xA;in which a single method is applied to a target and&#xA;a set of arguments - as in &lt;code>&quot;a.setFoo(b)&quot;&lt;/code>.&#xA;Note that where this example uses names&#xA;to denote the target and its argument, a statement&#xA;object does not require a name space and is constructed with&#xA;the values themselves.&#xA;The statement object associates the named method&#xA;with its environment as a simple set of values:&#xA;the target and an array of argument values.&#xA;&#xA;@since 1.4&#xA;&#xA;@version 1.29 12/19/03&#xA;@author Philip Milne&#xA;" annotatedElement="40d661ca-65c7-4cbc-b406-e8b5a30c44be"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ef23fae7-1685-4772-a1d5-4c26d277360c" name="PropertyEditorSupport" clientDependency="fc91ff50-c3cc-4553-ad00-82820528f655">
            <ownedComment xmi:id="3263ee16-c4c6-4fc1-98d2-6b09af521428" body="This is a support class to help build property editors.&#xA;&lt;p>&#xA;It can be used either as a base class or as a delagatee.&#xA;" annotatedElement="ef23fae7-1685-4772-a1d5-4c26d277360c"/>
            <interfaceRealization xmi:id="fc91ff50-c3cc-4553-ad00-82820528f655" name="" supplier="35276844-7f5c-47de-9682-3a6a5072b466" client="ef23fae7-1685-4772-a1d5-4c26d277360c" contract="35276844-7f5c-47de-9682-3a6a5072b466"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d8120faa-4737-40f1-9020-b4577dacdceb" name="javax_swing_JTabbedPane_PersistenceDelegate" visibility="package">
            <generalization xmi:id="27c50dcc-f263-48ba-bcdd-d3c087d99d2f" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7464a4e2-e448-4a44-bd0f-a162551688a9" name="javax_swing_DefaultComboBoxModel_PersistenceDelegate" visibility="package">
            <generalization xmi:id="32a9a9a5-4a43-4601-aca2-528aa0cd7a92" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="748bc78b-da48-43a5-a8f3-4490e0c14751" name="PropertyChangeSupport" clientDependency="b1840ab2-ca7b-40e6-aa8c-32cb17009590">
            <ownedComment xmi:id="49fe6419-9408-4ff3-8b26-0baeedf5f361" body="This is a utility class that can be used by beans that support bound&#xA;properties.  You can use an instance of this class as a member field&#xA;of your bean and delegate various work to it.&#xA;&#xA;This class is serializable.  When it is serialized it will save&#xA;(and restore) any listeners that are themselves serializable.  Any&#xA;non-serializable listeners will be skipped during serialization.&#xA;&#xA;" annotatedElement="748bc78b-da48-43a5-a8f3-4490e0c14751"/>
            <interfaceRealization xmi:id="b1840ab2-ca7b-40e6-aa8c-32cb17009590" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="748bc78b-da48-43a5-a8f3-4490e0c14751" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7a232452-7c9a-490b-929a-0a9cc4ca8d29" name="javax_swing_ToolTipManager_PersistenceDelegate" visibility="package">
            <generalization xmi:id="1a5fe732-cff2-4ece-9489-909ca13bdaf2" isSubstitutable="true" general="6a43ee9c-3b32-4d11-8c9d-6691f71d9ee3"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3c2b4084-3068-4465-8958-c1ab23fc20db" name="SimpleBeanInfo" clientDependency="ef30f11d-afd6-49c8-86f9-9b5f3dc0e366">
            <ownedComment xmi:id="9ab90082-b5f4-4bfa-89ff-3c31deefede9" body="This is a support class to make it easier for people to provide&#xA;BeanInfo classes.&#xA;&lt;p>&#xA;It defaults to providing &quot;noop&quot; information, and can be selectively&#xA;overriden to provide more explicit information on chosen topics.&#xA;When the introspector sees the &quot;noop&quot; values, it will apply low&#xA;level introspection and design patterns to automatically analyze&#xA;the target bean.&#xA;" annotatedElement="3c2b4084-3068-4465-8958-c1ab23fc20db"/>
            <interfaceRealization xmi:id="ef30f11d-afd6-49c8-86f9-9b5f3dc0e366" name="" supplier="cc6de683-fe37-4997-b78c-a802150b1568" client="3c2b4084-3068-4465-8958-c1ab23fc20db" contract="cc6de683-fe37-4997-b78c-a802150b1568"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5827a8b7-8288-41c8-946f-3584c821e357" name="java_util_Hashtable_PersistenceDelegate" visibility="package">
            <generalization xmi:id="960badcb-8c80-4eee-875e-4009ca6cf5d0" isSubstitutable="true" general="c0080735-1ba2-466c-b37a-730148eba9f7"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e19c71dd-3ba6-4d77-a550-502c8c1e19e7" name="Expression">
            <ownedComment xmi:id="26695719-7e13-48aa-8019-498b917d6b49" body="An &lt;code>Expression&lt;/code> object represents a primitive expression&#xA;in which a single method is applied to a target and a set of&#xA;arguments to return a result - as in &lt;code>&quot;a.getFoo()&quot;&lt;/code>.&#xA;&lt;p>&#xA;In addition to the properties of the super class, the&#xA;&lt;code>Expression&lt;/code> object provides a &lt;em>value&lt;/em> which&#xA;is the object returned when this expression is evaluated.&#xA;The return value is typically not provided by the caller and&#xA;is instead computed by dynamically finding the method and invoking&#xA;it when the first call to &lt;code>getValue&lt;/code> is made.&#xA;&#xA;@see #getValue&#xA;@see #setValue&#xA;&#xA;@since 1.4&#xA;&#xA;@version 1.3 11/15/00&#xA;@author Philip Milne&#xA;" annotatedElement="e19c71dd-3ba6-4d77-a550-502c8c1e19e7"/>
            <generalization xmi:id="56e399a6-240c-4a32-b23e-08d6583d7945" isSubstitutable="true" general="40d661ca-65c7-4cbc-b406-e8b5a30c44be"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="524d1362-b9c4-47ef-afda-438bda5a7ced" name="BeanDescriptor">
            <ownedComment xmi:id="6d63a1b9-9a63-43f6-b4f5-c3e8a0db4517" body="A BeanDescriptor provides global information about a &quot;bean&quot;,&#xA;including its Java class, its displayName, etc.&#xA;&lt;p>&#xA;This is one of the kinds of descriptor returned by a BeanInfo object,&#xA;which also returns descriptors for properties, method, and events.&#xA;" annotatedElement="524d1362-b9c4-47ef-afda-438bda5a7ced"/>
            <generalization xmi:id="badcb998-0bd5-4130-8cf8-5adc945af599" isSubstitutable="true" general="15fda141-7c8e-462a-ab0e-2f39e964be75"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="134f4a05-a210-4f21-b157-8fa52614aa2a" name="beancontext">
            <packagedElement xmi:type="uml:Class" xmi:id="beba0dea-518d-476d-b81d-3142d98cd0f3" name="BeanContextSupport" clientDependency="b10d53e3-07e5-4873-88e7-e71dc562e093 9c00fbe0-4238-4306-8cac-5733b03fd29f 5320f03e-6674-43cc-a31f-53607f8f6785 bc35d9e5-a136-4a84-a56e-4b7e9242411e">
              <ownedComment xmi:id="925f27e2-694e-43c9-b751-23ebb2f0c691" body="This helper class provides a utility implementation of the&#xA;java.beans.beancontext.BeanContext interface.&#xA;&lt;/p>&#xA;&lt;p>&#xA;Since this class directly implements the BeanContext interface, the class&#xA;can, and is intended to be used either by subclassing this implementation,&#xA;or via ad-hoc delegation of an instance of this class from another.&#xA;&lt;/p>&#xA;&#xA;@author Laurence P. G. Cable&#xA;@version 1.46, 01/13/03&#xA;@since 1.2&#xA;" annotatedElement="beba0dea-518d-476d-b81d-3142d98cd0f3"/>
              <generalization xmi:id="db54f3b3-dffc-4a08-8c66-07d50c38537a" isSubstitutable="true" general="b789d965-f9a5-473b-b133-d0caf112f70f"/>
              <interfaceRealization xmi:id="5320f03e-6674-43cc-a31f-53607f8f6785" name="" supplier="d0718931-dfbe-4b3e-a6e7-7293e9535504" client="beba0dea-518d-476d-b81d-3142d98cd0f3" contract="d0718931-dfbe-4b3e-a6e7-7293e9535504"/>
              <interfaceRealization xmi:id="9c00fbe0-4238-4306-8cac-5733b03fd29f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="beba0dea-518d-476d-b81d-3142d98cd0f3" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="bc35d9e5-a136-4a84-a56e-4b7e9242411e" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="beba0dea-518d-476d-b81d-3142d98cd0f3" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              <interfaceRealization xmi:id="b10d53e3-07e5-4873-88e7-e71dc562e093" name="" supplier="e61cee76-b8cb-4bf6-87ba-1ea3716e930e" client="beba0dea-518d-476d-b81d-3142d98cd0f3" contract="e61cee76-b8cb-4bf6-87ba-1ea3716e930e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="38e63bc4-5200-47f9-afbc-071d6dc9c35e" name="BCSIterator" visibility="protected" clientDependency="e932a75f-273b-48a5-a83f-5cdebab3ccdf" isLeaf="true">
                <ownedComment xmi:id="63503430-49ff-453f-a1a8-72b80325c5d9" body="protected final subclass that encapsulates an iterator but implements&#xA;a noop remove() method.&#xA;" annotatedElement="38e63bc4-5200-47f9-afbc-071d6dc9c35e"/>
                <interfaceRealization xmi:id="e932a75f-273b-48a5-a83f-5cdebab3ccdf" name="" supplier="68be2fb3-d9b5-43e8-ba81-15535e34b87a" client="38e63bc4-5200-47f9-afbc-071d6dc9c35e" contract="68be2fb3-d9b5-43e8-ba81-15535e34b87a"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="c4aaedb9-13cb-4547-ac4e-c1c13379989c" name="BCSChild" visibility="protected" clientDependency="d4150d6f-4e39-45f8-8c32-fd8605800ca8">
                <interfaceRealization xmi:id="d4150d6f-4e39-45f8-8c32-fd8605800ca8" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="c4aaedb9-13cb-4547-ac4e-c1c13379989c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b789d965-f9a5-473b-b133-d0caf112f70f" name="BeanContextChildSupport" clientDependency="62af4248-f528-492d-a78c-81a7f63f92b6 818ca46c-dd48-451a-aace-aaf4171ce9c7 208e3a0b-945a-4fcf-b4f2-d2238fbf9463">
              <ownedComment xmi:id="f12cd06f-d5ac-4bbe-92d6-1e43f13fa1be" body="&lt;p>&#xA;This is a general support class to provide support for implementing the&#xA;BeanContextChild protocol.&#xA;&#xA;This class may either be directly subclassed, or encapsulated and delegated&#xA;to in order to implement this interface for a given component.&#xA;&lt;/p>&#xA;&#xA;@author&#x9;Laurence P. G. Cable&#xA;@version&#x9;1.16, 03/04/04&#xA;@since&#x9;1.2&#xA;&#xA;@see&#x9;java.beans.beancontext.BeanContext&#xA;@see&#x9;java.beans.beancontext.BeanContextServices&#xA;@see&#x9;java.beans.beancontext.BeanContextChild&#xA;" annotatedElement="b789d965-f9a5-473b-b133-d0caf112f70f"/>
              <interfaceRealization xmi:id="208e3a0b-945a-4fcf-b4f2-d2238fbf9463" name="" supplier="4bee3929-bdd9-4435-a8c4-ca74892313f7" client="b789d965-f9a5-473b-b133-d0caf112f70f" contract="4bee3929-bdd9-4435-a8c4-ca74892313f7"/>
              <interfaceRealization xmi:id="62af4248-f528-492d-a78c-81a7f63f92b6" name="" supplier="e16f82a3-e106-4938-8674-8c26721a643e" client="b789d965-f9a5-473b-b133-d0caf112f70f" contract="e16f82a3-e106-4938-8674-8c26721a643e"/>
              <interfaceRealization xmi:id="818ca46c-dd48-451a-aace-aaf4171ce9c7" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="b789d965-f9a5-473b-b133-d0caf112f70f" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="e16f82a3-e106-4938-8674-8c26721a643e" name="BeanContextServicesListener" isAbstract="true">
              <ownedComment xmi:id="19f705c8-e106-4cb3-8949-5e83e8a3e070" body="The listener interface for receiving&#xA;&lt;code>BeanContextServiceAvailableEvent&lt;/code> objects.&#xA;A class that is interested in processing a&#xA;&lt;code>BeanContextServiceAvailableEvent&lt;/code> implements this interface.&#xA;" annotatedElement="e16f82a3-e106-4938-8674-8c26721a643e"/>
              <generalization xmi:id="77b9c124-9afb-41b9-af0b-c0fb96101254" isSubstitutable="true" general="0253727f-902d-44ab-b6dc-e1bc5fdf0604"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="323bf951-a074-4223-93db-47d4c76f6756" name="BeanContextServicesSupport" clientDependency="ab085c47-368d-4954-9db8-23132eaaf167">
              <ownedComment xmi:id="94222d77-8e2a-4a91-9e82-0bf509b3676e" body="&lt;p>&#xA;This helper class provides a utility implementation of the&#xA;java.beans.beancontext.BeanContextServices interface.&#xA;&lt;/p>&#xA;&lt;p>&#xA;Since this class directly implements the BeanContextServices interface,&#xA;the class can, and is intended to be used either by subclassing this&#xA;implementation, or via delegation of an instance of this class&#xA;from another through the BeanContextProxy interface.&#xA;&lt;/p>&#xA;&#xA;@author Laurence P. G. Cable&#xA;@version 1.23, 04/15/04&#xA;@since 1.2&#xA;" annotatedElement="323bf951-a074-4223-93db-47d4c76f6756"/>
              <generalization xmi:id="0cc8d4ad-caf9-40be-8115-5b55875f0d0e" isSubstitutable="true" general="beba0dea-518d-476d-b81d-3142d98cd0f3"/>
              <interfaceRealization xmi:id="ab085c47-368d-4954-9db8-23132eaaf167" name="" supplier="fc89b0d5-6688-4bcc-be0e-7b51990cdac1" client="323bf951-a074-4223-93db-47d4c76f6756" contract="fc89b0d5-6688-4bcc-be0e-7b51990cdac1"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="da2765be-9722-4d14-aaa1-41dcb0d99da8" name="BCSSChild" visibility="protected">
                <generalization xmi:id="9540610a-e9b6-4d80-b088-183b71cbcf96" isSubstitutable="true" general="c4aaedb9-13cb-4547-ac4e-c1c13379989c"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="bd2312d0-6042-43a2-a144-5a4a0374fb9b" name="BCSSCServiceClassRef" visibility="package"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="79ccc223-fde9-4daa-ac3a-417d4383f2ab" name="BCSSCServiceRef" visibility="package"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="a7caf1c9-3e65-446f-a627-00a61b695e44" name="BCSSServiceProvider" visibility="protected" clientDependency="c5fce11a-6430-4fcd-a45f-79b3e9bb0221">
                <ownedComment xmi:id="cba2606f-30da-402e-a1c0-2feea23da577" body="subclasses may subclass this nested class to add behaviors for&#xA;each BeanContextServicesProvider.&#xA;" annotatedElement="a7caf1c9-3e65-446f-a627-00a61b695e44"/>
                <interfaceRealization xmi:id="c5fce11a-6430-4fcd-a45f-79b3e9bb0221" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="a7caf1c9-3e65-446f-a627-00a61b695e44" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f07e097f-5314-48c6-aefc-634c65372a59" name="BCSSProxyServiceProvider" visibility="protected" clientDependency="2afad345-6bf9-40b4-bc22-0a8217eb4ba7 14c0afac-40d8-4206-aaab-7185cc2d4277">
                <interfaceRealization xmi:id="2afad345-6bf9-40b4-bc22-0a8217eb4ba7" name="" supplier="4fd0213f-0a8f-40ab-977c-571f48beb0c3" client="f07e097f-5314-48c6-aefc-634c65372a59" contract="4fd0213f-0a8f-40ab-977c-571f48beb0c3"/>
                <interfaceRealization xmi:id="14c0afac-40d8-4206-aaab-7185cc2d4277" name="" supplier="0253727f-902d-44ab-b6dc-e1bc5fdf0604" client="f07e097f-5314-48c6-aefc-634c65372a59" contract="0253727f-902d-44ab-b6dc-e1bc5fdf0604"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="b46d5b9a-696e-4461-b0c1-1febb482e9da" name="BeanContextMembershipListener" isAbstract="true">
              <ownedComment xmi:id="86067af6-d406-45ab-83be-df76aabd3778" body="&lt;p>&#xA;Compliant BeanContexts fire events on this interface when the state of&#xA;the membership of the BeanContext changes.&#xA;&lt;/p>&#xA;&#xA;@author&#x9;Laurence P. G. Cable&#xA;@version&#x9;1.12, 12/19/03&#xA;@since&#x9;1.2&#xA;@see&#x9;&#x9;java.beans.beancontext.BeanContext&#xA;" annotatedElement="b46d5b9a-696e-4461-b0c1-1febb482e9da"/>
              <generalization xmi:id="3fb0c23f-b983-4489-8c40-5a462c8dc172" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="59327750-a444-4234-9dd3-ba708f7e6785" name="BeanContextContainerProxy" isAbstract="true">
              <ownedComment xmi:id="54ce6277-7f23-4ea4-88c8-a866f7da0360" body="&lt;p>&#xA;This interface is implemented by BeanContexts' that have an AWT Container&#xA;associated with them.&#xA;&lt;/p>&#xA;&#xA;@author Laurence P. G. Cable&#xA;@version 1.10, 12/19/03&#xA;@since 1.2&#xA;&#xA;@see java.beans.beancontext.BeanContext&#xA;@see java.beans.beancontext.BeanContextSupport&#xA;" annotatedElement="59327750-a444-4234-9dd3-ba708f7e6785"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d8adbed1-d282-4e0f-b8ba-05cfc234ec83" name="BeanContextServiceRevokedEvent">
              <ownedComment xmi:id="cc2b8442-ebe2-4f26-9d4d-42215c812d1c" body="&lt;p>&#xA;This event type is used by the&#xA;&lt;code>BeanContextServiceRevokedListener&lt;/code> in order to&#xA;identify the service being revoked.&#xA;&lt;/p>&#xA;" annotatedElement="d8adbed1-d282-4e0f-b8ba-05cfc234ec83"/>
              <generalization xmi:id="0a292f7f-1459-448e-86c1-855ed7accf98" isSubstitutable="true" general="4859aa66-826c-4942-ae06-70e31773d448"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="4bee3929-bdd9-4435-a8c4-ca74892313f7" name="BeanContextChild" isAbstract="true">
              <ownedComment xmi:id="b4df4645-7448-49a0-b321-577f01518fcd" body="&lt;p>&#xA;JavaBeans wishing to be nested within, and obtain a reference to their&#xA;execution environment, or context, as defined by the BeanContext&#xA;sub-interface shall implement this interface.&#xA;&lt;/p>&#xA;&lt;p>&#xA;Conformant BeanContexts shall as a side effect of adding a BeanContextChild&#xA;object shall pass a reference to itself via the setBeanContext() method of&#xA;this interface.&#xA;&lt;/p>&#xA;&lt;p>&#xA;Note that a BeanContextChild may refuse a change in state by throwing&#xA;PropertyVetoedException in response.&#xA;&lt;/p>&#xA;&lt;p>&#xA;In order for persistence mechanisms to function properly on BeanContextChild&#xA;instances across a broad variety of scenarios, implementing classes of this&#xA;interface are required to define as transient, any or all fields, or&#xA;instance variables, that may contain, or represent, references to the&#xA;nesting BeanContext instance or other resources obtained&#xA;from the BeanContext via any unspecified mechanisms.&#xA;&lt;/p>&#xA;&#xA;@author&#x9;Laurence P. G. Cable&#xA;@version&#x9;1.20, 12/19/03&#xA;@since&#x9;1.2&#xA;&#xA;@see&#x9;java.beans.beancontext.BeanContext&#xA;@see&#x9;java.beans.PropertyChangeEvent&#xA;@see&#x9;java.beans.PropertyChangeListener&#xA;@see&#x9;java.beans.PropertyVetoEvent&#xA;@see&#x9;java.beans.PropertyVetoListener&#xA;@see&#x9;java.beans.PropertyVetoException&#xA;" annotatedElement="4bee3929-bdd9-4435-a8c4-ca74892313f7"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="96e7fdbe-ffa7-42e6-b7a1-baed50a413f9" name="BeanContextChildComponentProxy" isAbstract="true">
              <ownedComment xmi:id="ff0cafa9-adde-4d6f-86a0-48a76a3cfbea" body="&lt;p>&#xA;This interface is implemented by&#xA;&lt;code>BeanContextChildren&lt;/code> that have an AWT &lt;code>Component&lt;/code>&#xA;associated with them.&#xA;&lt;/p>&#xA;&#xA;@author Laurence P. G. Cable&#xA;@version 1.10, 12/19/03&#xA;@since 1.2&#xA;&#xA;@see java.beans.beancontext.BeanContext&#xA;@see java.beans.beancontext.BeanContextSupport&#xA;" annotatedElement="96e7fdbe-ffa7-42e6-b7a1-baed50a413f9"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d0d40d1f-a731-4a72-9cf6-92628f4449ef" name="BeanContextProxy" isAbstract="true">
              <ownedComment xmi:id="fa744697-68b0-418e-b331-a37283739b6f" body="&lt;p>&#xA;This interface is implemented by a JavaBean that does&#xA;not directly have a BeanContext(Child) associated with&#xA;it (via implementing that interface or a subinterface thereof),&#xA;but has a public BeanContext(Child) delegated from it.&#xA;For example, a subclass of java.awt.Container may have a BeanContext&#xA;associated with it that all Component children of that Container shall&#xA;be contained within.&#xA;&lt;/p>&#xA;&lt;p>&#xA;An Object may not implement this interface and the&#xA;BeanContextChild interface&#xA;(or any subinterfaces thereof) they are mutually exclusive.&#xA;&lt;/p>&#xA;&lt;p>&#xA;Callers of this interface shall examine the return type in order to&#xA;obtain a particular subinterface of BeanContextChild as follows:&#xA;&lt;code>&#xA;BeanContextChild bcc = o.getBeanContextProxy();&#xA;&#xA;if (bcc instanceof BeanContext) {&#xA;...&#xA;}&#xA;&lt;/code>&#xA;or&#xA;&lt;code>&#xA;BeanContextChild bcc = o.getBeanContextProxy();&#xA;BeanContext      bc  = null;&#xA;&#xA;try {&#xA;bc = (BeanContext)bcc;&#xA;} catch (ClassCastException cce) {&#xA;cast failed, bcc is not an instanceof BeanContext&#xA;}&#xA;&lt;/code>&#xA;&lt;/p>&#xA;&lt;p>&#xA;The return value is a constant for the lifetime of the implementing&#xA;instance&#xA;&lt;/p>&#xA;@author Laurence P. G. Cable&#xA;@version 1.11, 12/19/03&#xA;@since 1.2&#xA;&#xA;@see java.beans.beancontext.BeanContextChild&#xA;@see java.beans.beancontext.BeanContextChildSupport&#xA;" annotatedElement="d0d40d1f-a731-4a72-9cf6-92628f4449ef"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4859aa66-826c-4942-ae06-70e31773d448" name="BeanContextEvent" isAbstract="true">
              <ownedComment xmi:id="4239158a-8fa3-4b5e-aca6-f97ab4b655cc" body="&lt;p>&#xA;&lt;code>BeanContextEvent&lt;/code> is the abstract root event class&#xA;for all events emitted&#xA;from, and pertaining to the semantics of, a &lt;code>BeanContext&lt;/code>.&#xA;This class introduces a mechanism to allow the propagation of&#xA;&lt;code>BeanContextEvent&lt;/code> subclasses through a hierarchy of&#xA;&lt;code>BeanContext&lt;/code>s. The &lt;code>setPropagatedFrom()&lt;/code>&#xA;and &lt;code>getPropagatedFrom()&lt;/code> methods allow a&#xA;&lt;code>BeanContext&lt;/code> to identify itself as the source&#xA;of a propagated event.&#xA;&lt;/p>&#xA;&#xA;@author&#x9;Laurence P. G. Cable&#xA;@version&#x9;1.14, 12/19/03&#xA;@since&#x9;1.2&#xA;@see&#x9;&#x9;java.beans.beancontext.BeanContext&#xA;" annotatedElement="4859aa66-826c-4942-ae06-70e31773d448"/>
              <generalization xmi:id="e59630d0-acf2-4b48-81dd-a83e0754997d" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="10388e7b-1350-4c1c-abb1-97e0c49e196b" name="BeanContextMembershipEvent">
              <ownedComment xmi:id="a16f88d2-6949-437c-b909-ac11462d2b5b" body="A &lt;code>BeanContextMembershipEvent&lt;/code> encapsulates&#xA;the list of children added to, or removed from,&#xA;the membership of a particular &lt;code>BeanContext&lt;/code>.&#xA;An instance of this event is fired whenever a successful&#xA;add(), remove(), retainAll(), removeAll(), or clear() is&#xA;invoked on a given &lt;code>BeanContext&lt;/code> instance.&#xA;Objects interested in receiving events of this type must&#xA;implement the &lt;code>BeanContextMembershipListener&lt;/code>&#xA;interface, and must register their intent via the&#xA;&lt;code>BeanContext&lt;/code>'s&#xA;&lt;code>addBeanContextMembershipListener(BeanContextMembershipListener bcml)&#xA;&lt;/code> method.&#xA;&#xA;@author&#x9;Laurence P. G. Cable&#xA;@version&#x9;1.15&#xA;@since&#x9;1.2&#xA;@see&#x9;&#x9;java.beans.beancontext.BeanContext&#xA;@see&#x9;&#x9;java.beans.beancontext.BeanContextEvent&#xA;@see&#x9;&#x9;java.beans.beancontext.BeanContextMembershipListener&#xA;" annotatedElement="10388e7b-1350-4c1c-abb1-97e0c49e196b"/>
              <generalization xmi:id="5b24f1c8-4a83-454c-b7cb-21ba8085c1b4" isSubstitutable="true" general="4859aa66-826c-4942-ae06-70e31773d448"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="4fd0213f-0a8f-40ab-977c-571f48beb0c3" name="BeanContextServiceProvider" isAbstract="true">
              <ownedComment xmi:id="ff6b17e2-b3ad-41d5-8e6a-e9c548c4138d" body="&lt;p>&#xA;One of the primary functions of a BeanContext is to act a as rendezvous&#xA;between JavaBeans, and BeanContextServiceProviders.&#xA;&lt;/p>&#xA;&lt;p>&#xA;A JavaBean nested within a BeanContext, may ask that BeanContext to&#xA;provide an instance of a &quot;service&quot;, based upon a reference to a Java&#xA;Class object that represents that service.&#xA;&lt;/p>&#xA;&lt;p>&#xA;If such a service has been registered with the context, or one of its&#xA;nesting context's, in the case where a context delegate to its context&#xA;to satisfy a service request, then the BeanContextServiceProvider associated with&#xA;the service is asked to provide an instance of that service.&#xA;&lt;/p>&#xA;&lt;p>&#xA;The ServcieProvider may always return the same instance, or it may&#xA;construct a new instance for each request.&#xA;&lt;/p>&#xA;" annotatedElement="4fd0213f-0a8f-40ab-977c-571f48beb0c3"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ccd9801b-1c98-448e-95fd-2a005a233d98" name="BeanContextServiceAvailableEvent">
              <ownedComment xmi:id="35944cff-ad4f-4200-9e9f-cd64dd7655af" body="&lt;p>&#xA;This event type is used by the BeanContextServicesListener in order to&#xA;identify the service being registered.&#xA;&lt;/p>&#xA;" annotatedElement="ccd9801b-1c98-448e-95fd-2a005a233d98"/>
              <generalization xmi:id="4f7149e0-f698-4d7e-97fa-57eb4f6e0534" isSubstitutable="true" general="4859aa66-826c-4942-ae06-70e31773d448"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="fc89b0d5-6688-4bcc-be0e-7b51990cdac1" name="BeanContextServices" isAbstract="true">
              <ownedComment xmi:id="de9093a2-2d7b-4f8e-a7b9-7d13cafe8681" body="&lt;p>&#xA;The BeanContextServices interface provides a mechanism for a BeanContext&#xA;to expose generic &quot;services&quot; to the BeanContextChild objects within.&#xA;&lt;/p>&#xA;" annotatedElement="fc89b0d5-6688-4bcc-be0e-7b51990cdac1"/>
              <generalization xmi:id="477325f3-d9ca-4dc7-b4e4-a3d49a3e99e2" isSubstitutable="true" general="d0718931-dfbe-4b3e-a6e7-7293e9535504"/>
              <generalization xmi:id="faea7dbe-e867-4541-9af4-d32f02955c99" isSubstitutable="true" general="e16f82a3-e106-4938-8674-8c26721a643e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="1d526746-71d4-4944-a425-a99e67e4869c" name="BeanContextServiceProviderBeanInfo" isAbstract="true">
              <ownedComment xmi:id="9f9d1119-e6b9-4b2e-a674-8499622af13e" body="A BeanContextServiceProvider implementor who wishes to provide explicit&#xA;information about the services their bean may provide shall implement a&#xA;BeanInfo class that implements this BeanInfo subinterface and provides&#xA;explicit information about the methods, properties, events, etc, of their&#xA;services.&#xA;" annotatedElement="1d526746-71d4-4944-a425-a99e67e4869c"/>
              <generalization xmi:id="f256768e-0cad-4303-9a8e-cced5c02ba7c" isSubstitutable="true" general="cc6de683-fe37-4997-b78c-a802150b1568"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="0253727f-902d-44ab-b6dc-e1bc5fdf0604" name="BeanContextServiceRevokedListener" isAbstract="true">
              <ownedComment xmi:id="f8a9074b-6ca5-4f3c-96eb-d6a77f4253a3" body="The listener interface for receiving&#xA;&lt;code>BeanContextServiceRevokedEvent&lt;/code> objects. A class that is&#xA;interested in processing a &lt;code>BeanContextServiceRevokedEvent&lt;/code>&#xA;implements this interface.&#xA;" annotatedElement="0253727f-902d-44ab-b6dc-e1bc5fdf0604"/>
              <generalization xmi:id="24681c28-093c-4432-9ba6-6e014f94e3ea" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d0718931-dfbe-4b3e-a6e7-7293e9535504" name="BeanContext" isAbstract="true">
              <ownedComment xmi:id="72f4334e-2264-4b18-8ed8-137226ee3d94" body="&lt;p>&#xA;The BeanContext acts a logical hierarchical container for JavaBeans.&#xA;&lt;/p>&#xA;&#xA;@author Laurence P. G. Cable&#xA;@version 1.23, 12/19/03&#xA;@since 1.2&#xA;&#xA;@see java.beans.Beans&#xA;@see java.beans.beancontext.BeanContextChild&#xA;@see java.beans.beancontext.BeanContextMembershipListener&#xA;@see java.beans.PropertyChangeEvent&#xA;@see java.beans.VetoableChangeEvent&#xA;@see java.beans.DesignMode&#xA;@see java.beans.Visibility&#xA;@see java.util.Collection&#xA;" annotatedElement="d0718931-dfbe-4b3e-a6e7-7293e9535504"/>
              <generalization xmi:id="51d0c24c-add4-443a-98cd-876c8c57fcd4" isSubstitutable="true" general="4bee3929-bdd9-4435-a8c4-ca74892313f7"/>
              <generalization xmi:id="29cb23df-bba5-42ea-ab29-e9c1169c530d" isSubstitutable="true" general="a04a021e-c6c6-4300-9efe-16f89c3bfab1"/>
              <generalization xmi:id="3b4bcd8d-ea37-4979-8291-ec4b50918b74" isSubstitutable="true" general="c4c63e23-9f7d-4c0b-9d24-7db429b5ff77"/>
              <generalization xmi:id="3a8046f1-ef58-45fe-97c6-acbd2d441d5c" isSubstitutable="true" general="68cd78e8-a748-4fca-868e-15517c12f13c"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0489e429-5c76-4b23-87b7-6586b3ff7e64" name="java_lang_reflect_Field_PersistenceDelegate" visibility="package">
            <generalization xmi:id="2624390a-cf0c-4e89-9a5d-1aa53cb377d9" isSubstitutable="true" general="6a43ee9c-3b32-4d11-8c9d-6691f71d9ee3"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="48788573-e289-44ae-b8e9-44a49c9f2da9" name="java_util_AbstractMap_PersistenceDelegate" visibility="package">
            <generalization xmi:id="a28ea213-9fe2-4821-a8c8-bbef0cb08366" isSubstitutable="true" general="c0080735-1ba2-466c-b37a-730148eba9f7"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="984bd51e-5865-4d2e-9474-79d2b835c0ef" name="Introspector">
            <ownedComment xmi:id="86d4e580-6143-44ce-9ac9-c9ed75022af6" body="The Introspector class provides a standard way for tools to learn about&#xA;the properties, events, and methods supported by a target Java Bean.&#xA;&lt;p>&#xA;For each of those three kinds of information, the Introspector will&#xA;separately analyze the bean's class and superclasses looking for&#xA;either explicit or implicit information and use that information to&#xA;build a BeanInfo object that comprehensively describes the target bean.&#xA;&lt;p>&#xA;For each class &quot;Foo&quot;, explicit information may be available if there exists&#xA;a corresponding &quot;FooBeanInfo&quot; class that provides a non-null value when&#xA;queried for the information.   We first look for the BeanInfo class by&#xA;taking the full package-qualified name of the target bean class and&#xA;appending &quot;BeanInfo&quot; to form a new class name.  If this fails, then&#xA;we take the final classname component of this name, and look for that&#xA;class in each of the packages specified in the BeanInfo package search&#xA;path.&#xA;&lt;p>&#xA;Thus for a class such as &quot;sun.xyz.OurButton&quot; we would first look for a&#xA;BeanInfo class called &quot;sun.xyz.OurButtonBeanInfo&quot; and if that failed we'd&#xA;look in each package in the BeanInfo search path for an OurButtonBeanInfo&#xA;class.  With the default search path, this would mean looking for&#xA;&quot;sun.beans.infos.OurButtonBeanInfo&quot;.&#xA;&lt;p>&#xA;If a class provides explicit BeanInfo about itself then we add that to&#xA;the BeanInfo information we obtained from analyzing any derived classes,&#xA;but we regard the explicit information as being definitive for the current&#xA;class and its base classes, and do not proceed any further up the superclass&#xA;chain.&#xA;&lt;p>&#xA;If we don't find explicit BeanInfo on a class, we use low-level&#xA;reflection to study the methods of the class and apply standard design&#xA;patterns to identify property accessors, event sources, or public&#xA;methods.  We then proceed to analyze the class's superclass and add&#xA;in the information from it (and possibly on up the superclass chain).&#xA;&#xA;&lt;p>&#xA;Because the Introspector caches BeanInfo classes for better performance,&#xA;take care if you use it in an application that uses&#xA;multiple class loaders.&#xA;In general, when you destroy a &lt;code>ClassLoader&lt;/code>&#xA;that has been used to introspect classes,&#xA;you should use the&#xA;{@link #flushCaches &lt;code>Introspector.flushCaches&lt;/code>}&#xA;or&#xA;{@link #flushFromCaches &lt;code>Introspector.flushFromCaches&lt;/code>} method&#xA;to flush all of the introspected classes out of the cache.&#xA;&#xA;&lt;P>&#xA;For more information about introspection and design patterns, please&#xA;consult the&#xA;&lt;a href=&quot;http://java.sun.com/products/javabeans/docs/index.html&quot;>JavaBeans specification&lt;/a>.&#xA;" annotatedElement="984bd51e-5865-4d2e-9474-79d2b835c0ef"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="292609a8-fe93-42e0-8239-d1ba7a299aa9" name="java_beans_beancontext_BeanContextSupport_PersistenceDelegate" visibility="package">
            <generalization xmi:id="51fd27b1-5c4c-46ec-aa5c-9a7a81c98a8d" isSubstitutable="true" general="d2a017dd-73fa-446a-92f9-e532c0706fbe"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7c329630-607a-4a91-8d04-7d1ec04978fd" name="XMLDecoder">
            <ownedComment xmi:id="361a09a0-6ea4-49d9-9335-5a3e254d4646" body="The &lt;code>XMLDecoder&lt;/code> class is used to read XML documents&#xA;created using the &lt;code>XMLEncoder&lt;/code> and is used just like&#xA;the &lt;code>ObjectInputStream&lt;/code>. For example, one can use&#xA;the following fragment to read the first object defined&#xA;in an XML document written by the &lt;code>XMLEncoder&lt;/code>&#xA;class:&#xA;&lt;pre>&#xA;XMLDecoder d = new XMLDecoder(&#xA;new BufferedInputStream(&#xA;new FileInputStream(&quot;Test.xml&quot;)));&#xA;Object result = d.readObject();&#xA;d.close();&#xA;&lt;/pre>&#xA;&#xA;&lt;p>&#xA;For more information you might also want to check out&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/products/jfc/tsc/articles/persistence3&quot;>Long Term Persistence of JavaBeans Components: XML Schema&lt;/a>,&#xA;an article in &lt;em>The Swing Connection.&lt;/em>&#xA;@see XMLEncoder&#xA;@see java.io.ObjectInputStream&#xA;&#xA;@since 1.4&#xA;&#xA;@version 1.30 06/01/04&#xA;@author Philip Milne&#xA;" annotatedElement="7c329630-607a-4a91-8d04-7d1ec04978fd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="90a849a4-f1d7-494d-95b5-94e3037a8152" name="javax_swing_DefaultListModel_PersistenceDelegate" visibility="package">
            <generalization xmi:id="114a5521-b651-4136-b6e9-172340faf2b9" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="090e7882-c6f8-4af7-b66e-1b1e40f93702" name="IntrospectionException">
            <ownedComment xmi:id="b42626ca-66a5-4f4a-b157-11d0937979bd" body="Thrown when an exception happens during Introspection.&#xA;&lt;p>&#xA;Typical causes include not being able to map a string class name&#xA;to a Class object, not being able to resolve a string method name,&#xA;or specifying a method name that has the wrong type signature for&#xA;its intended use.&#xA;" annotatedElement="090e7882-c6f8-4af7-b66e-1b1e40f93702"/>
            <generalization xmi:id="ca19ebd5-4d28-453f-83fd-248fa6cf0fa8" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1a18e185-f878-4221-a8a4-461e727c02e5" name="Encoder">
            <ownedComment xmi:id="32d4333b-b73c-460e-b9a3-4fa6cdd6cbd6" body="An &lt;code>Encoder&lt;/code> is a class which can be used to create&#xA;files or streams that encode the state of a collection of&#xA;JavaBeans in terms of their public APIs. The &lt;code>Encoder&lt;/code>,&#xA;in conjunction with its persistence delegates, is responsible for&#xA;breaking the object graph down into a series of &lt;code>Statements&lt;/code>s&#xA;and &lt;code>Expression&lt;/code>s which can be used to create it.&#xA;A subclass typically provides a syntax for these expressions&#xA;using some human readable form - like Java source code or XML.&#xA;&#xA;@since 1.4&#xA;&#xA;@version 1.3 11/15/00&#xA;@author Philip Milne&#xA;" annotatedElement="1a18e185-f878-4221-a8a4-461e727c02e5"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="15be619d-21cb-4e24-8ca3-baae1c350518" name="PropertyVetoException">
            <ownedComment xmi:id="0d8c9fb9-2228-4cc9-980c-e5ddf2153899" body="A PropertyVetoException is thrown when a proposed change to a&#xA;property represents an unacceptable value.&#xA;" annotatedElement="15be619d-21cb-4e24-8ca3-baae1c350518"/>
            <generalization xmi:id="efec14bb-7bb4-4def-9b90-e8d332d93011" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4e5fd29e-4162-45ae-939e-b20e3aa56c1e" name="BeansAppletStub" visibility="package" clientDependency="531f7e58-8cd8-4704-aaef-48aeed58502b">
            <ownedComment xmi:id="2d88c97e-44fe-4d26-baa7-e411573519e3" body="Package private support class.  This provides an AppletStub&#xA;for beans which are applets.&#xA;" annotatedElement="4e5fd29e-4162-45ae-939e-b20e3aa56c1e"/>
            <interfaceRealization xmi:id="531f7e58-8cd8-4704-aaef-48aeed58502b" name="" supplier="ae477b1e-fc3c-4818-addf-77142b11d2ea" client="4e5fd29e-4162-45ae-939e-b20e3aa56c1e" contract="ae477b1e-fc3c-4818-addf-77142b11d2ea"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="98e622d8-9ee4-47d7-8094-38abc2e3ece4" name="java_lang_String_PersistenceDelegate" visibility="package">
            <generalization xmi:id="cb9148f5-a68f-439b-89d1-9b0a5866b80b" isSubstitutable="true" general="6a43ee9c-3b32-4d11-8c9d-6691f71d9ee3"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f3c6686c-d162-44df-a84a-79df63962250" name="ProxyPersistenceDelegate" visibility="package">
            <generalization xmi:id="f1c95908-cb7d-46aa-aad8-3ffb0651d0ff" isSubstitutable="true" general="6a43ee9c-3b32-4d11-8c9d-6691f71d9ee3"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ca596914-34f9-4a7f-8494-95e4a185a3c3" name="NameGenerator" visibility="package">
            <ownedComment xmi:id="9f25e3be-034f-4e5e-89cb-c991eeca75c7" body="A utility class which generates unique names for object instances.&#xA;The name will be a concatenation of the unqualified class name&#xA;and an instance number.&#xA;&lt;p>&#xA;For example, if the first object instance javax.swing.JButton&#xA;is passed into &lt;code>instanceName&lt;/code> then the returned&#xA;string identifier will be &quot;JButton0&quot;.&#xA;&#xA;@version 1.9 12/19/03&#xA;@author Philip Milne&#xA;" annotatedElement="ca596914-34f9-4a7f-8494-95e4a185a3c3"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="989dc77c-de41-499a-96ee-a6e3c35e8794" name="java_awt_Menu_PersistenceDelegate" visibility="package">
            <generalization xmi:id="2758e310-6a8f-4d34-a629-0adc976fe718" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ed1bfbb1-4be6-4f06-95c0-9df9c7c83480" name="java_awt_GridBagLayout_PersistenceDelegate" visibility="package">
            <generalization xmi:id="8a151e54-2c2a-4dba-a6c9-de3802ac52c3" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="247f0950-9094-44bd-9dea-8abdc214357c" name="java_awt_BorderLayout_PersistenceDelegate" visibility="package">
            <generalization xmi:id="acb01f22-e862-4f43-b442-fdd00a5d6644" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b2ac350b-d2a2-420e-9bdd-b32a05645b75" name="javax_swing_JFrame_PersistenceDelegate" visibility="package">
            <generalization xmi:id="05cfa2c7-f09b-4172-bbc0-2d01fdb68252" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="cc6de683-fe37-4997-b78c-a802150b1568" name="BeanInfo" isAbstract="true">
            <ownedComment xmi:id="4d2ffccf-d276-4715-a5d9-130125df1298" body="A bean implementor who wishes to provide explicit information about&#xA;their bean may provide a BeanInfo class that implements this BeanInfo&#xA;interface and provides explicit information about the methods,&#xA;properties, events, etc, of their  bean.&#xA;&lt;p>&#xA;A bean implementor doesn't need to provide a complete set of&#xA;explicit information.  You can pick and choose which information&#xA;you want to provide and the rest will be obtained by automatic&#xA;analysis using low-level reflection of the bean classes' methods&#xA;and applying standard design patterns.&#xA;&lt;p>&#xA;You get the opportunity to provide lots and lots of different&#xA;information as part of the various XyZDescriptor classes.  But&#xA;don't panic, you only really need to provide the minimal core&#xA;information required by the various constructors.&#xA;&lt;P>&#xA;See also the SimpleBeanInfo class which provides a convenient&#xA;&quot;noop&quot; base class for BeanInfo classes, which you can override&#xA;for those specific places where you want to return explicit info.&#xA;&lt;P>&#xA;To learn about all the behaviour of a bean see the Introspector class.&#xA;" annotatedElement="cc6de683-fe37-4997-b78c-a802150b1568"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b8b77e81-f169-4cee-9ab5-f0687168e4a7" name="BeansAppletContext" visibility="package" clientDependency="defd9d5c-9ad1-48e6-8175-833cdb653766">
            <ownedComment xmi:id="837e81f5-0cdd-4e6c-916d-aae86e79074f" body="Package private support class.  This provides a default AppletContext&#xA;for beans which are applets.&#xA;" annotatedElement="b8b77e81-f169-4cee-9ab5-f0687168e4a7"/>
            <interfaceRealization xmi:id="defd9d5c-9ad1-48e6-8175-833cdb653766" name="" supplier="3b4b5b2c-5595-4bdc-9d04-586b5abd5fd8" client="b8b77e81-f169-4cee-9ab5-f0687168e4a7" contract="3b4b5b2c-5595-4bdc-9d04-586b5abd5fd8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="658f2466-22fa-4b8c-ad52-182400669fe1" name="java_awt_Component_PersistenceDelegate" visibility="package">
            <generalization xmi:id="0b2363e5-01c0-449f-b0ab-e66849747fda" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a38c005b-2ef5-433c-81ee-74b8c7ccad2e" name="MutableExpression" visibility="package"/>
          <packagedElement xmi:type="uml:Interface" xmi:id="869d8c55-af34-40b3-b8d4-17072ae844b8" name="AppletInitializer" isAbstract="true">
            <ownedComment xmi:id="9f276858-0802-4785-9b30-e968ccab023e" body="&lt;p>&#xA;This interface is designed to work in collusion with java.beans.Beans.instantiate.&#xA;The interafce is intended to provide mechanism to allow the proper&#xA;initialization of JavaBeans that are also Applets, during their&#xA;instantiation by java.beans.Beans.instantiate().&#xA;&lt;/p>&#xA;&#xA;@see java.beans.Beans#instantiate&#xA;&#xA;@version 1.12, 12/19/03&#xA;@since 1.2&#xA;&#xA;" annotatedElement="869d8c55-af34-40b3-b8d4-17072ae844b8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c54e8904-a355-4fe5-a2fa-d10a2f7f53b5" name="java_lang_reflect_Method_PersistenceDelegate" visibility="package">
            <generalization xmi:id="630dbd78-e271-45f0-9d21-7e1c94f68e6b" isSubstitutable="true" general="6a43ee9c-3b32-4d11-8c9d-6691f71d9ee3"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c3e8161d-79bf-48e0-94f9-e28c3c676e4b" name="java_util_AbstractCollection_PersistenceDelegate" visibility="package">
            <generalization xmi:id="fa8f223d-d207-4996-ac1f-e49361d1f1ae" isSubstitutable="true" general="d2a017dd-73fa-446a-92f9-e532c0706fbe"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="35276844-7f5c-47de-9682-3a6a5072b466" name="PropertyEditor" isAbstract="true">
            <ownedComment xmi:id="8473e3d8-e6dc-49d8-bb70-af65327f0960" body="A PropertyEditor class provides support for GUIs that want to&#xA;allow users to edit a property value of a given type.&#xA;&lt;p>&#xA;PropertyEditor supports a variety of different kinds of ways of&#xA;displaying and updating property values.  Most PropertyEditors will&#xA;only need to support a subset of the different options available in&#xA;this API.&#xA;&lt;P>&#xA;Simple PropertyEditors may only support the getAsText and setAsText&#xA;methods and need not support (say) paintValue or getCustomEditor.  More&#xA;complex types may be unable to support getAsText and setAsText but will&#xA;instead support paintValue and getCustomEditor.&#xA;&lt;p>&#xA;Every propertyEditor must support one or more of the three simple&#xA;display styles.  Thus it can either (1) support isPaintable or (2)&#xA;both return a non-null String[] from getTags() and return a non-null&#xA;value from getAsText or (3) simply return a non-null String from&#xA;getAsText().&#xA;&lt;p>&#xA;Every property editor must support a call on setValue when the argument&#xA;object is of the type for which this is the corresponding propertyEditor.&#xA;In addition, each property editor must either support a custom editor,&#xA;or support setAsText.&#xA;&lt;p>&#xA;Each PropertyEditor should have a null constructor.&#xA;" annotatedElement="35276844-7f5c-47de-9682-3a6a5072b466"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d2a017dd-73fa-446a-92f9-e532c0706fbe" name="java_util_Collection_PersistenceDelegate" visibility="package">
            <generalization xmi:id="edf8c4e1-fa63-406c-a503-c9a6fb167969" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="32a14616-62ac-448b-8988-19ddfe7e0e79" name="java_awt_font_TextAttribute_PersistenceDelegate" visibility="package">
            <generalization xmi:id="aba8ba47-aa8e-4296-99d0-a989f2d8ee9f" isSubstitutable="true" general="37d20ebe-c000-4ed6-8ab1-1ef81d68d7f0"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6c558279-0b4e-49c0-b3b1-1d43c39c6ddf" name="EventHandler" clientDependency="5bdc01cd-44ea-45a3-b051-2aaa380ac756">
            <ownedComment xmi:id="238582fd-f5f1-472e-b462-314cd074a1e0" body="The &lt;code>EventHandler&lt;/code> class provides&#xA;support for dynamically generating event listeners whose methods&#xA;execute a simple statement involving an incoming event object&#xA;and a target object.&#xA;&lt;p>&#xA;The &lt;code>EventHandler&lt;/code> class is intended to be used by interactive tools, such as&#xA;application builders, that allow developers to make connections between&#xA;beans. Typically connections are made from a user interface bean&#xA;(the event &lt;em>source&lt;/em>)&#xA;to an application logic bean (the &lt;em>target&lt;/em>). The most effective&#xA;connections of this kind isolate the application logic from the user&#xA;interface.  For example, the &lt;code>EventHandler&lt;/code> for a&#xA;connection from a &lt;code>JCheckBox&lt;/code> to a method&#xA;that accepts a boolean value can deal with extracting the state&#xA;of the check box and passing it directly to the method so that&#xA;the method is isolated from the user interface layer.&#xA;&lt;p>&#xA;Inner classes are another, more general way to handle events from&#xA;user interfaces.  The &lt;code>EventHandler&lt;/code> class&#xA;handles only a subset of what is possible using inner&#xA;classes. However, &lt;code>EventHandler&lt;/code> works better&#xA;with the long-term persistence scheme than inner classes.&#xA;Also, using &lt;code>EventHandler&lt;/code> in large applications in&#xA;which the same interface is implemented many times can&#xA;reduce the disk and memory footprint of the application.&#xA;&lt;p>&#xA;The reason that listeners created with &lt;code>EventHandler&lt;/code>&#xA;have such a small&#xA;footprint is that the &lt;code>Proxy&lt;/code> class, on which&#xA;the &lt;code>EventHandler&lt;/code> relies, shares implementations&#xA;of identical&#xA;interfaces. For example, if you use&#xA;the &lt;code>EventHandler&lt;/code> &lt;code>create&lt;/code> methods to make&#xA;all the &lt;code>ActionListener&lt;/code>s in an application,&#xA;all the action listeners will be instances of a single class&#xA;(one created by the &lt;code>Proxy&lt;/code> class).&#xA;In general, listeners based on&#xA;the &lt;code>Proxy&lt;/code> class require one listener class&#xA;to be created per &lt;em>listener type&lt;/em> (interface),&#xA;whereas the inner class&#xA;approach requires one class to be created per &lt;em>listener&lt;/em>&#xA;(object that implements the interface).&#xA;&#xA;&lt;p>&#xA;You don't generally deal directly with &lt;code>EventHandler&lt;/code>&#xA;instances.&#xA;Instead, you use one of the &lt;code>EventHandler&lt;/code>&#xA;&lt;code>create&lt;/code> methods to create&#xA;an object that implements a given listener interface.&#xA;This listener object uses an &lt;code>EventHandler&lt;/code> object&#xA;behind the scenes to encapsulate information about the&#xA;event, the object to be sent a message when the event occurs,&#xA;the message (method) to be sent, and any argument&#xA;to the method.&#xA;The following section gives examples of how to create listener&#xA;objects using the &lt;code>create&lt;/code> methods.&#xA;&#xA;&lt;h2>Examples of Using EventHandler&lt;/h2>&#xA;&#xA;The simplest use of &lt;code>EventHandler&lt;/code> is to install&#xA;a listener that calls a method on the target object with no arguments.&#xA;In the following example we create an &lt;code>ActionListener&lt;/code>&#xA;that invokes the &lt;code>toFront&lt;/code> method on an instance&#xA;of &lt;code>javax.swing.JFrame&lt;/code>.&#xA;&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;myButton.addActionListener(&#xA;(ActionListener)EventHandler.create(ActionListener.class, frame, &quot;toFront&quot;));&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;When &lt;code>myButton&lt;/code> is pressed, the statement&#xA;&lt;code>frame.toFront()&lt;/code> will be executed.  One could get&#xA;the same effect, with some additional compile-time type safety,&#xA;by defining a new implementation of the &lt;code>ActionListener&lt;/code>&#xA;interface and adding an instance of it to the button:&#xA;&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;Equivalent code using an inner class instead of EventHandler.&#xA;myButton.addActionListener(new ActionListener() {&#xA;public void actionPerformed(ActionEvent e) {&#xA;frame.toFront();&#xA;}&#xA;});&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;The next simplest use of &lt;code>EventHandler&lt;/code> is&#xA;to extract a property value from the first argument&#xA;of the method in the listener interface (typically an event object)&#xA;and use it to set the value of a property in the target object.&#xA;In the following example we create an &lt;code>ActionListener&lt;/code> that&#xA;sets the &lt;code>nextFocusableComponent&lt;/code> property of the target&#xA;object to the value of the &quot;source&quot; property of the event.&#xA;&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;EventHandler.create(ActionListener.class, target, &quot;nextFocusableComponent&quot;, &quot;source&quot;)&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;This would correspond to the following inner class implementation:&#xA;&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;Equivalent code using an inner class instead of EventHandler.&#xA;new ActionListener() {&#xA;public void actionPerformed(ActionEvent e) {&#xA;button.setNextFocusableComponent((Component)e.getSource());&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;Probably the most common use of &lt;code>EventHandler&lt;/code>&#xA;is to extract a property value from the&#xA;&lt;em>source&lt;/em> of the event object and set this value as&#xA;the value of a property of the target object.&#xA;In the following example we create an &lt;code>ActionListener&lt;/code> that&#xA;sets the &quot;label&quot; property of the target&#xA;object to the value of the &quot;text&quot; property of the&#xA;source (the value of the &quot;source&quot; property) of the event.&#xA;&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;EventHandler.create(ActionListener.class, button, &quot;label&quot;, &quot;source.text&quot;)&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;This would correspond to the following inner class implementation:&#xA;&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;Equivalent code using an inner class instead of EventHandler.&#xA;new ActionListener {&#xA;public void actionPerformed(ActionEvent e) {&#xA;button.setLabel(((JTextField)e.getSource()).getText());&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;The event property may be be &quot;qualified&quot; with an arbitrary number&#xA;of property prefixes delimited with the &quot;.&quot; character. The &quot;qualifying&quot;&#xA;names that appear before the &quot;.&quot; characters are taken as the names of&#xA;properties that should be applied, left-most first, to&#xA;the event object.&#xA;&lt;p>&#xA;For example, the following action listener&#xA;&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;EventHandler.create(ActionListener.class, target, &quot;a&quot;, &quot;b.c.d&quot;)&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;might be written as the following inner class&#xA;(assuming all the properties had canonical getter methods and&#xA;returned the appropriate types):&#xA;&#xA;&lt;blockquote>&#xA;&lt;pre>&#xA;Equivalent code using an inner class instead of EventHandler.&#xA;new ActionListener {&#xA;public void actionPerformed(ActionEvent e) {&#xA;target.setA(e.getB().getC().isD());&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&lt;/blockquote>&#xA;&#xA;@see java.lang.reflect.Proxy&#xA;@see java.util.EventObject&#xA;&#xA;@since 1.4&#xA;&#xA;@author Mark Davidson&#xA;@author Philip Milne&#xA;@author Hans Muller&#xA;&#xA;@version 1.2 10/24/00&#xA;" annotatedElement="6c558279-0b4e-49c0-b3b1-1d43c39c6ddf"/>
            <interfaceRealization xmi:id="5bdc01cd-44ea-45a3-b051-2aaa380ac756" name="" supplier="db16cb55-6a36-40ec-b9b3-5607bf908b29" client="6c558279-0b4e-49c0-b3b1-1d43c39c6ddf" contract="db16cb55-6a36-40ec-b9b3-5607bf908b29"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="99b8c231-de77-4c24-acd0-3b59ac713d39" name="EventSetDescriptor">
            <ownedComment xmi:id="ad5649d4-5bb6-4856-ab41-d6873c44300e" body="An EventSetDescriptor describes a group of events that a given Java&#xA;bean fires.&#xA;&lt;P>&#xA;The given group of events are all delivered as method calls on a single&#xA;event listener interface, and an event listener object can be registered&#xA;via a call on a registration method supplied by the event source.&#xA;" annotatedElement="99b8c231-de77-4c24-acd0-3b59ac713d39"/>
            <generalization xmi:id="bd4201f6-c48d-42ab-bc59-ad05b5fee940" isSubstitutable="true" general="15fda141-7c8e-462a-ab0e-2f39e964be75"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9b7d1de3-32ba-4ecc-b745-ccfc305e98b8" name="javax_swing_JMenu_PersistenceDelegate" visibility="package">
            <generalization xmi:id="20bfec21-0352-4679-a857-9e52c27f1389" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8db15f29-a4b4-49e2-8c74-932749d34678" name="java_util_List_PersistenceDelegate" visibility="package">
            <generalization xmi:id="9bb1ff1b-8963-4ff5-96d9-e904f7093f4b" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="982f26f1-de89-43fe-bba9-8a7033eece83" name="Beans">
            <ownedComment xmi:id="474779fd-2676-40b5-bc4c-448b3ca5b3b8" body="This class provides some general purpose beans control methods.&#xA;" annotatedElement="982f26f1-de89-43fe-bba9-8a7033eece83"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c0080735-1ba2-466c-b37a-730148eba9f7" name="java_util_Map_PersistenceDelegate" visibility="package">
            <generalization xmi:id="d8e9aadc-3a6f-43be-989f-3f78bfd1aabb" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="816c8c9d-0313-484e-b458-0496f5e2e07e" name="javax_swing_Box_PersistenceDelegate" visibility="package">
            <generalization xmi:id="fcf774e3-f78e-4d41-ac72-722809c34cd7" isSubstitutable="true" general="24ac82dc-d404-474f-932a-2f87e75356f8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="100c6dad-757d-4a2d-983b-e3a992faa994" name="PropertyChangeListenerProxy" clientDependency="c85890ae-4b84-449b-bb75-ff28a3a02f93">
            <ownedComment xmi:id="e78aa8b4-fd2f-4915-a122-e93aec80f01d" body="A class which extends the &lt;code>EventListenerProxy&lt;/code> specifically&#xA;for adding a named &lt;code>PropertyChangeListener&lt;/code>. Instances of&#xA;this class can be added as &lt;code>PropertyChangeListener&lt;/code> to&#xA;an object.&#xA;&lt;p>&#xA;If the object has a &lt;code>getPropertyChangeListeners()&lt;/code>&#xA;method then the array returned could be a mixture of&#xA;&lt;code>PropertyChangeListener&lt;/code> and&#xA;&lt;code>PropertyChangeListenerProxy&lt;/code> objects.&#xA;&#xA;@see java.util.EventListenerProxy&#xA;@since 1.4&#xA;" annotatedElement="100c6dad-757d-4a2d-983b-e3a992faa994"/>
            <generalization xmi:id="db8dcbff-61f3-4003-a511-3ada5430f950" isSubstitutable="true" general="fc8c4f27-1bc3-4bb6-9c57-74c2e8a8de51"/>
            <interfaceRealization xmi:id="c85890ae-4b84-449b-bb75-ff28a3a02f93" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="100c6dad-757d-4a2d-983b-e3a992faa994" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="24ac82dc-d404-474f-932a-2f87e75356f8" name="DefaultPersistenceDelegate">
            <ownedComment xmi:id="59762461-dadf-4c0c-ba4d-d392e69f0825" body="The &lt;code>DefaultPersistenceDelegate&lt;/code> is a concrete implementation of&#xA;the abstract &lt;code>PersistenceDelegate&lt;/code> class and&#xA;is the delegate used by default for classes about&#xA;which no information is available. The &lt;code>DefaultPersistenceDelegate&lt;/code>&#xA;provides, version resilient, public API-based persistence for&#xA;classes that follow the JavaBeans conventions without any class specific&#xA;configuration.&#xA;&lt;p>&#xA;The key assumptions are that the class has a nullary constructor&#xA;and that its state is accurately represented by matching pairs&#xA;of &quot;setter&quot; and &quot;getter&quot; methods in the order they are returned&#xA;by the Introspector.&#xA;In addition to providing code-free persistence for JavaBeans,&#xA;the &lt;code>DefaultPersistenceDelegate&lt;/code> provides a convenient means&#xA;to effect persistent storage for classes that have a constructor&#xA;that, while not nullary, simply requires some property values&#xA;as arguments.&#xA;&#xA;@see #DefaultPersistenceDelegate(String[])&#xA;@see java.beans.Introspector&#xA;&#xA;@since 1.4&#xA;&#xA;@version 1.17 05/05/04&#xA;@author Philip Milne&#xA;" annotatedElement="24ac82dc-d404-474f-932a-2f87e75356f8"/>
            <generalization xmi:id="85cf1ed1-8af7-4f88-9bc9-e5f1470c6c64" isSubstitutable="true" general="6a43ee9c-3b32-4d11-8c9d-6691f71d9ee3"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="326194d6-628f-4c87-ad3a-e69e50abdabb" name="rmi">
          <packagedElement xmi:type="uml:Package" xmi:id="eb149c6b-d2f4-4da4-a39f-044f00afb801" name="dgc">
            <packagedElement xmi:type="uml:Class" xmi:id="f19df80a-10b5-4d85-9ecb-7e08776726c2" name="VMID" clientDependency="844fbaf8-e04a-426b-9db7-d644c9aaa33c" isLeaf="true">
              <ownedComment xmi:id="2fe97f74-e279-443a-9414-3d60bba71838" body="A VMID is a identifier that is unique across all Java virtual&#xA;machines.  VMIDs are used by the distributed garbage collector&#xA;to identify client VMs.&#xA;&#xA;@version&#x9;1.20, 05/18/04&#xA;@author&#x9;Ann Wollrath&#xA;@author&#x9;Peter Jones&#xA;" annotatedElement="f19df80a-10b5-4d85-9ecb-7e08776726c2"/>
              <interfaceRealization xmi:id="844fbaf8-e04a-426b-9db7-d644c9aaa33c" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f19df80a-10b5-4d85-9ecb-7e08776726c2" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="9830c77a-5e5a-4077-9535-e906fe198907" name="DGC" isAbstract="true">
              <ownedComment xmi:id="af9cec7a-568f-405d-acc6-e0550ba11737" body="The DGC abstraction is used for the server side of the distributed&#xA;garbage collection algorithm. This interface contains the two&#xA;methods: dirty and clean. A dirty call is made when a remote&#xA;reference is unmarshaled in a client (the client is indicated by&#xA;its VMID). A corresponding clean call is made when no more&#xA;references to the remote reference exist in the client. A failed&#xA;dirty call must schedule a strong clean call so that the call's&#xA;sequence number can be retained in order to detect future calls&#xA;received out of order by the distributed garbage collector.&#xA;&#xA;A reference to a remote object is leased for a period of time by&#xA;the client holding the reference. The lease period starts when the&#xA;dirty call is received. It is the client's responsibility to renew&#xA;the leases, by making additional dirty calls, on the remote&#xA;references it holds before such leases expire. If the client does&#xA;not renew the lease before it expires, the distributed garbage&#xA;collector assumes that the remote object is no longer referenced by&#xA;that client.&#xA;&#xA;@author Ann Wollrath&#xA;" annotatedElement="9830c77a-5e5a-4077-9535-e906fe198907"/>
              <generalization xmi:id="2d2cc485-a8aa-41a4-9f72-f3e1eb691d85" isSubstitutable="true" general="492277dc-22fc-4399-a309-a8a3b4e56fb6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c4183649-88e1-489c-9315-52f52f0c321c" name="Lease" clientDependency="affa4ffd-3cb4-4eec-824b-c480425df2eb" isLeaf="true">
              <ownedComment xmi:id="4ac6417c-d81e-424a-a522-394631a97278" body="A lease contains a unique VM identifier and a lease duration. A&#xA;Lease object is used to request and grant leases to remote object&#xA;references.&#xA;" annotatedElement="c4183649-88e1-489c-9315-52f52f0c321c"/>
              <interfaceRealization xmi:id="affa4ffd-3cb4-4eec-824b-c480425df2eb" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="c4183649-88e1-489c-9315-52f52f0c321c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="bb60e518-708f-4c40-bd8d-92c6cd859ae1" name="UnexpectedException">
            <ownedComment xmi:id="83842738-713c-4a71-9c2c-fe81e3047848" body="An &lt;code>UnexpectedException&lt;/code> is thrown if the client of a&#xA;remote method call receives, as a result of the call, a checked&#xA;exception that is not among the checked exception types declared in the&#xA;&lt;code>throws&lt;/code> clause of the method in the remote interface.&#xA;&#xA;@version 1.12, 12/19/03&#xA;@author  Roger Riggs&#xA;@since   JDK1.1&#xA;" annotatedElement="bb60e518-708f-4c40-bd8d-92c6cd859ae1"/>
            <generalization xmi:id="e12f4647-6202-4c13-b2ae-456ddc95a17a" isSubstitutable="true" general="517e9e16-9b01-417d-9842-1e44401e7654"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c0c47a9d-dc89-45b1-b35e-6ac71b261251" name="NotBoundException">
            <ownedComment xmi:id="88fb3ade-71d7-4937-8d84-2b721401cdae" body="A &lt;code>NotBoundException&lt;/code> is thrown if an attempt&#xA;is made to lookup or unbind in the registry a name that has&#xA;no associated binding.&#xA;&#xA;@version 1.12, 12/19/03&#xA;@since   JDK1.1&#xA;@author  Ann Wollrath&#xA;@author  Roger Riggs&#xA;@see     java.rmi.Naming#lookup(String)&#xA;@see     java.rmi.Naming#unbind(String)&#xA;@see     java.rmi.registry.Registry#lookup(String)&#xA;@see     java.rmi.registry.Registry#unbind(String)&#xA;" annotatedElement="c0c47a9d-dc89-45b1-b35e-6ac71b261251"/>
            <generalization xmi:id="f8e71d14-6445-4254-9eb9-0389cd98f9db" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="df4124ce-94c3-436e-a5a2-712fe2305067" name="ServerException">
            <ownedComment xmi:id="ac1be47d-d6db-4e38-aa0c-bca294bdc717" body="A &lt;code>ServerException&lt;/code> is thrown as a result of a remote method&#xA;invocation when a &lt;code>RemoteException&lt;/code> is thrown while processing&#xA;the invocation on the server, either while unmarshalling the arguments or&#xA;executing the remote method itself.&#xA;&#xA;A &lt;code>ServerException&lt;/code> instance contains the original&#xA;&lt;code>RemoteException&lt;/code> that occurred as its cause.&#xA;&#xA;@version 1.15, 12/19/03&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;" annotatedElement="df4124ce-94c3-436e-a5a2-712fe2305067"/>
            <generalization xmi:id="8d091a65-337d-4fa4-b84a-9a2816428103" isSubstitutable="true" general="517e9e16-9b01-417d-9842-1e44401e7654"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="29ab878e-5ef0-4c24-a0c0-a4cca7ab7442" name="AccessException">
            <ownedComment xmi:id="8c6c0b70-3c8e-40c7-9d9d-61724a2aa1eb" body="An &lt;code>AccessException&lt;/code> is thrown by certain methods of the&#xA;&lt;code>java.rmi.Naming&lt;/code> class (specifically &lt;code>bind&lt;/code>,&#xA;&lt;code>rebind&lt;/code>, and &lt;code>unbind&lt;/code>) and methods of the&#xA;&lt;code>java.rmi.activation.ActivationSystem&lt;/code> interface to&#xA;indicate that the caller does not have permission to perform the action&#xA;requested by the method call.  If the method was invoked from a non-local&#xA;host, then an &lt;code>AccessException&lt;/code> is thrown.&#xA;&#xA;@version 1.12, 12/19/03&#xA;@author  Ann Wollrath&#xA;@author  Roger Riggs&#xA;@since   JDK1.1&#xA;@see     java.rmi.Naming&#xA;@see     java.rmi.activation.ActivationSystem&#xA;" annotatedElement="29ab878e-5ef0-4c24-a0c0-a4cca7ab7442"/>
            <generalization xmi:id="aa481bdd-e7ac-4268-b9e3-a0ed653d5149" isSubstitutable="true" general="517e9e16-9b01-417d-9842-1e44401e7654"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="492277dc-22fc-4399-a309-a8a3b4e56fb6" name="Remote" isAbstract="true">
            <ownedComment xmi:id="353a1427-faa0-472f-8bf0-1fea26851b46" body="The &lt;code>Remote&lt;/code> interface serves to identify interfaces whose&#xA;methods may be invoked from a non-local virtual machine.  Any object that&#xA;is a remote object must directly or indirectly implement this interface.&#xA;Only those methods specified in a &quot;remote interface&quot;, an interface that&#xA;extends &lt;code>java.rmi.Remote&lt;/code> are available remotely.&#xA;&#xA;&lt;p>Implementation classes can implement any number of remote interfaces and&#xA;can extend other remote implementation classes.  RMI provides some&#xA;convenience classes that remote object implementations can extend which&#xA;facilitate remote object creation.  These classes are&#xA;&lt;code>java.rmi.server.UnicastRemoteObject&lt;/code> and&#xA;&lt;code>java.rmi.activation.Activatable&lt;/code>.&#xA;&#xA;&lt;p>For complete details on RMI, see the &lt;a&#xA;href=../../../guide/rmi/spec/rmiTOC.html>RMI Specification&lt;/a> which describes the RMI API and system.&#xA;&#xA;@version 1.15, 12/19/03&#xA;@since   JDK1.1&#xA;@author  Ann Wollrath&#xA;@see&#x9;    java.rmi.server.UnicastRemoteObject&#xA;@see     java.rmi.activation.Activatable&#xA;" annotatedElement="492277dc-22fc-4399-a309-a8a3b4e56fb6"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e18d0e46-1f87-43bf-b2c3-6968c7864809" name="ConnectIOException">
            <ownedComment xmi:id="308e4518-7231-46ed-a534-3afae518ef43" body="A &lt;code>ConnectIOException&lt;/code> is thrown if an&#xA;&lt;code>IOException&lt;/code> occurs while making a connection&#xA;to the remote host for a remote method call.&#xA;&#xA;@version 1.12, 12/19/03&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;" annotatedElement="e18d0e46-1f87-43bf-b2c3-6968c7864809"/>
            <generalization xmi:id="9d5025a0-0714-4667-a49a-310e028ae22c" isSubstitutable="true" general="517e9e16-9b01-417d-9842-1e44401e7654"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c760e82d-ac31-4b09-bb8c-882dcd2563ab" name="UnmarshalException">
            <ownedComment xmi:id="7e7918b7-fdb4-4f96-a69c-f8a38e31732a" body="An &lt;code>UnmarshalException&lt;/code> can be thrown while unmarshalling the&#xA;parameters or results of a remote method call if any of the following&#xA;conditions occur:&#xA;&lt;ul>&#xA;&lt;li> if an exception occurs while unmarshalling the call header&#xA;&lt;li> if the protocol for the return value is invalid&#xA;&lt;li> if a &lt;code>java.io.IOException&lt;/code> occurs unmarshalling&#xA;parameters (on the server side) or the return value (on the client side).&#xA;&lt;li> if a &lt;code>java.lang.ClassNotFoundException&lt;/code> occurs during&#xA;unmarshalling parameters or return values&#xA;&lt;li> if no skeleton can be loaded on the server-side; note that skeletons&#xA;are required in the 1.1 stub protocol, but not in the 1.2 stub protocol.&#xA;&lt;li> if the method hash is invalid (i.e., missing method).&#xA;&lt;li> if there is a failure to create a remote reference object for&#xA;a remote object's stub when it is unmarshalled.&#xA;&lt;/ul>&#xA;&#xA;@version 1.12, 12/19/03&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;" annotatedElement="c760e82d-ac31-4b09-bb8c-882dcd2563ab"/>
            <generalization xmi:id="418ead10-a6f9-4684-8b5a-cb8c3b002cf2" isSubstitutable="true" general="517e9e16-9b01-417d-9842-1e44401e7654"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="fbf93df8-f573-4c36-8ffc-6a3ecefe21e8" name="RMISecurityException">
            <ownedComment xmi:id="df4456fe-c205-41d9-a1d7-4ce53a36760f" body="An &lt;code>RMISecurityException&lt;/code> signals that a security exception&#xA;has occurred during the execution of one of&#xA;&lt;code>java.rmi.RMISecurityManager&lt;/code>'s methods.&#xA;&#xA;@version 1.16, 05/18/04&#xA;@author  Roger Riggs&#xA;@since   JDK1.1&#xA;@deprecated Use {@link java.lang.SecurityException} instead.&#xA;Application code should never directly reference this class, and&#xA;&lt;code>RMISecurityManager&lt;/code> no longer throws this subclass of&#xA;&lt;code>java.lang.SecurityException&lt;/code>.&#xA;" annotatedElement="fbf93df8-f573-4c36-8ffc-6a3ecefe21e8"/>
            <generalization xmi:id="f38de769-d00b-4b6a-85cd-7beebdb510f2" isSubstitutable="true" general="2cdf2d4e-57d3-44d3-8567-22c714490e9a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f616cead-81b2-4bf4-b567-50770a6e5742" name="UnknownHostException">
            <ownedComment xmi:id="088ea965-e035-48fc-b262-5ed1bda7ccc3" body="An &lt;code>UnknownHostException&lt;/code> is thrown if a&#xA;&lt;code>java.net.UnknownHostException&lt;/code> occurs while creating&#xA;a connection to the remote host for a remote method call.&#xA;&#xA;@version 1.13, 12/19/03&#xA;@since   JDK1.1&#xA;" annotatedElement="f616cead-81b2-4bf4-b567-50770a6e5742"/>
            <generalization xmi:id="87ecdfa7-66db-4a36-b43f-7a65996fc075" isSubstitutable="true" general="517e9e16-9b01-417d-9842-1e44401e7654"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="a5e989f1-4afd-4e08-b21a-1205e09c915a" name="registry">
            <packagedElement xmi:type="uml:Interface" xmi:id="96a9352a-f430-4516-97de-f1d4abdfbb96" name="Registry" isAbstract="true">
              <ownedComment xmi:id="ae7a79fc-502f-4eb6-bcde-3a734e2c8576" body="&lt;code>Registry&lt;/code> is a remote interface to a simple remote&#xA;object registry that provides methods for storing and retrieving&#xA;remote object references bound with arbitrary string names.  The&#xA;&lt;code>bind&lt;/code>, &lt;code>unbind&lt;/code>, and &lt;code>rebind&lt;/code>&#xA;methods are used to alter the name bindings in the registry, and&#xA;the &lt;code>lookup&lt;/code> and &lt;code>list&lt;/code> methods are used to&#xA;query the current name bindings.&#xA;&#xA;&lt;p>In its typical usage, a &lt;code>Registry&lt;/code> enables RMI client&#xA;bootstrapping: it provides a simple means for a client to obtain an&#xA;initial reference to a remote object.  Therefore, a registry's&#xA;remote object implementation is typically exported with a&#xA;well-known address, such as with a well-known {@link&#xA;java.rmi.server.ObjID#REGISTRY_ID ObjID} and TCP port number&#xA;(default is {@link #REGISTRY_PORT 1099}).&#xA;&#xA;&lt;p>The {@link LocateRegistry} class provides a programmatic API for&#xA;constructing a bootstrap reference to a &lt;code>Registry&lt;/code> at a&#xA;remote address (see the static &lt;code>getRegistry&lt;/code> methods)&#xA;and for creating and exporting a &lt;code>Registry&lt;/code> in the&#xA;current VM on a particular local address (see the static&#xA;&lt;code>createRegistry&lt;/code> methods).&#xA;&#xA;&lt;p>A &lt;code>Registry&lt;/code> implementation may choose to restrict&#xA;access to some or all of its methods (for example, methods that&#xA;mutate the registry's bindings may be restricted to calls&#xA;originating from the local host).  If a &lt;code>Registry&lt;/code>&#xA;method chooses to deny access for a given invocation, its&#xA;implementation may throw {@link java.rmi.AccessException}, which&#xA;(because it extends {@link java.rmi.RemoteException}) will be&#xA;wrapped in a {@link java.rmi.ServerException} when caught by a&#xA;remote client.&#xA;&#xA;&lt;p>The names used for bindings in a &lt;code>Registry&lt;/code> are pure&#xA;strings, not parsed.  A service which stores its remote reference&#xA;in a &lt;code>Registry&lt;/code> may wish to use a package name as a&#xA;prefix in the name binding to reduce the likelihood of name&#xA;collisions in the registry.&#xA;&#xA;@author&#x9;Ann Wollrath&#xA;@author&#x9;Peter Jones&#xA;@version&#x9;1.18, 03/12/19&#xA;@since&#x9;JDK1.1&#xA;@see&#x9;&#x9;LocateRegistry&#xA;" annotatedElement="96a9352a-f430-4516-97de-f1d4abdfbb96"/>
              <generalization xmi:id="70f21fad-0e98-4a8e-ad2c-a24adf85f2ea" isSubstitutable="true" general="492277dc-22fc-4399-a309-a8a3b4e56fb6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="61ea2ea6-90df-4466-90b1-324d7a56da52" name="RegistryHandler" isAbstract="true">
              <ownedComment xmi:id="4fa7583f-a89e-456f-b579-39b95e56cf8c" body="&lt;code>RegistryHandler&lt;/code> is an interface used internally by the RMI&#xA;runtime in previous implementation versions.  It should never be accessed&#xA;by application code.&#xA;&#xA;@version 1.14, 05/18/04&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;@deprecated no replacement&#xA;" annotatedElement="61ea2ea6-90df-4466-90b1-324d7a56da52"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="095d98c0-6fdc-4db7-9c4b-7b47bb35abf0" name="LocateRegistry" isLeaf="true">
              <ownedComment xmi:id="4c3cfc1c-fbfa-4985-8233-9844a0bccc8a" body="&lt;code>LocateRegistry&lt;/code> is used to obtain a reference to a bootstrap&#xA;remote object registry on a particular host (including the local host), or&#xA;to create a remote object registry that accepts calls on a specific port.&#xA;&#xA;&lt;p> Note that a &lt;code>getRegistry&lt;/code> call does not actually make a&#xA;connection to the remote host.  It simply creates a local reference to&#xA;the remote registry and will succeed even if no registry is running on&#xA;the remote host.  Therefore, a subsequent method invocation to a remote&#xA;registry returned as a result of this method may fail.&#xA;&#xA;@version 1.33, 12/19/03&#xA;@author  Ann Wollrath&#xA;@author  Peter Jones&#xA;@since   JDK1.1&#xA;@see     java.rmi.registry.Registry&#xA;" annotatedElement="095d98c0-6fdc-4db7-9c4b-7b47bb35abf0"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="517e9e16-9b01-417d-9842-1e44401e7654" name="RemoteException">
            <ownedComment xmi:id="685fcb19-90d4-4291-a7fd-023bb4b4e6dd" body="A &lt;code>RemoteException&lt;/code> is the common superclass for a number of&#xA;communication-related exceptions that may occur during the execution of a&#xA;remote method call.  Each method of a remote interface, an interface that&#xA;extends &lt;code>java.rmi.Remote&lt;/code>, must list&#xA;&lt;code>RemoteException&lt;/code> in its throws clause.&#xA;&#xA;&lt;p>As of release 1.4, this exception has been retrofitted to conform to&#xA;the general purpose exception-chaining mechanism.  The &quot;wrapped remote&#xA;exception&quot; that may be provided at construction time and accessed via&#xA;the public {@link #detail} field is now known as the &lt;i>cause&lt;/i>, and&#xA;may be accessed via the {@link Throwable#getCause()} method, as well as&#xA;the aforementioned &quot;legacy field.&quot;&#xA;&#xA;&lt;p>Invoking the method {@link Throwable#initCause(Throwable)} on an&#xA;instance of &lt;code>RemoteException&lt;/code> always throws {@link&#xA;IllegalStateException}.&#xA;&#xA;@version 1.24, 12/19/03&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;" annotatedElement="517e9e16-9b01-417d-9842-1e44401e7654"/>
            <generalization xmi:id="4b0cd507-d654-4ec6-968a-69d949961235" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6e9fc816-3915-4bf3-a3d3-c7d1b33b4ec8" name="Naming" isLeaf="true">
            <ownedComment xmi:id="07987266-9722-454b-aa44-2bc8a3beed3a" body="The &lt;code>Naming&lt;/code> class provides methods for storing and obtaining&#xA;references to remote objects in a remote object registry.  Each method of&#xA;the &lt;code>Naming&lt;/code> class takes as one of its arguments a name that&#xA;is a &lt;code>java.lang.String&lt;/code> in URL format (without the&#xA;scheme component) of the form:&#xA;&#xA;&lt;PRE>&#xA;host:port/name&#xA;&lt;/PRE>&#xA;&#xA;&lt;P>where &lt;code>host&lt;/code> is the host (remote or local) where the registry&#xA;is located, &lt;code>port&lt;/code> is the port number on which the registry&#xA;accepts calls, and where &lt;code>name&lt;/code> is a simple string uninterpreted&#xA;by the registry. Both &lt;code>host&lt;/code> and &lt;code>port&lt;/code> are optional.&#xA;If &lt;code>host&lt;/code> is omitted, the host defaults to the local host. If&#xA;&lt;code>port&lt;/code> is omitted, then the port defaults to 1099, the&#xA;&quot;well-known&quot; port that RMI's registry, &lt;code>rmiregistry&lt;/code>, uses.&#xA;&#xA;&lt;P>&lt;em>Binding&lt;/em> a name for a remote object is associating or&#xA;registering a name for a remote object that can be used at a later time to&#xA;look up that remote object.  A remote object can be associated with a name&#xA;using the &lt;code>Naming&lt;/code> class's &lt;code>bind&lt;/code> or&#xA;&lt;code>rebind&lt;/code> methods.&#xA;&#xA;&lt;P>Once a remote object is registered (bound) with the RMI registry on the&#xA;local host, callers on a remote (or local) host can lookup the remote&#xA;object by name, obtain its reference, and then invoke remote methods on the&#xA;object.  A registry may be shared by all servers running on a host or an&#xA;individual server process may create and use its own registry if desired&#xA;(see &lt;code>java.rmi.registry.LocateRegistry.createRegistry&lt;/code> method&#xA;for details).&#xA;&#xA;@version 1.13, 09/05/99&#xA;@author  Ann Wollrath&#xA;@author  Roger Riggs&#xA;@since   JDK1.1&#xA;@see     java.rmi.registry.Registry&#xA;@see     java.rmi.registry.LocateRegistry&#xA;@see     java.rmi.registry.LocateRegistry#createRegistry(int)&#xA;" annotatedElement="6e9fc816-3915-4bf3-a3d3-c7d1b33b4ec8"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="cd0f3649-fc2c-489e-9ae9-3a1bcc770ecf" name="ParsedNamingURL" visibility="private">
              <ownedComment xmi:id="4718ed9f-c57f-4536-8380-ee0d21baead8" body="Simple class to enable multiple URL return values.&#xA;" annotatedElement="cd0f3649-fc2c-489e-9ae9-3a1bcc770ecf"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="409f1db7-77d2-4738-ae98-a2494c11aea9" name="ConnectException">
            <ownedComment xmi:id="6c4955ac-ba83-4f7f-8a8e-c80a35c6f566" body="A &lt;code>ConnectException&lt;/code> is thrown if a connection is refused&#xA;to the remote host for a remote method call.&#xA;&#xA;@version 1.13, 12/19/03&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;" annotatedElement="409f1db7-77d2-4738-ae98-a2494c11aea9"/>
            <generalization xmi:id="54721a63-434e-42cd-9e42-897e0f180339" isSubstitutable="true" general="517e9e16-9b01-417d-9842-1e44401e7654"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d0353872-b9a0-46e1-bac4-52e710d8b8a6" name="ServerError">
            <ownedComment xmi:id="938afbdb-3e61-4c7a-9453-830d54c8173c" body="A &lt;code>ServerError&lt;/code> is thrown as a result of a remote method&#xA;invocation when an &lt;code>Error&lt;/code> is thrown while processing&#xA;the invocation on the server, either while unmarshalling the arguments,&#xA;executing the remote method itself, or marshalling the return value.&#xA;&#xA;A &lt;code>ServerError&lt;/code> instance contains the original&#xA;&lt;code>Error&lt;/code> that occurred as its cause.&#xA;&#xA;@version 1.13, 12/19/03&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;" annotatedElement="d0353872-b9a0-46e1-bac4-52e710d8b8a6"/>
            <generalization xmi:id="23992405-4e80-485d-856c-c01fc49d381f" isSubstitutable="true" general="517e9e16-9b01-417d-9842-1e44401e7654"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e28b80b7-736b-4901-8d8d-b1992360cbc1" name="RMISecurityManager">
            <ownedComment xmi:id="c741cc2f-ab62-4ca7-8705-34d5916945f9" body="A subclass of {@link SecurityManager} used by RMI applications that use&#xA;downloaded code.  RMI's class loader will not download any classes from&#xA;remote locations if no security manager has been set.&#xA;&lt;code>RMISecurityManager&lt;/code> does not apply to applets, which run&#xA;under the protection of their browser's security manager.&#xA;&#xA;&lt;code>RMISecurityManager&lt;/code> implements a policy that&#xA;is no different than the policy implemented by {@link SecurityManager}.&#xA;Therefore an RMI application should use the &lt;code>SecurityManager&lt;/code>&#xA;class or another application-specific &lt;code>SecurityManager&lt;/code>&#xA;implementation instead of this class.&#xA;&#xA;&lt;p>To use a &lt;code>SecurityManager&lt;/code> in your application, add&#xA;the following statement to your code (it needs to be executed before RMI&#xA;can download code from remote hosts, so it most likely needs to appear&#xA;in the &lt;code>main&lt;/code> method of your application):&#xA;&#xA;&lt;pre>&#xA;System.setSecurityManager(new SecurityManager());&#xA;&lt;/pre>&#xA;&#xA;@version 1.31, 12/19/03&#xA;@author  Roger Riggs&#xA;@author  Peter Jones&#xA;@since JDK1.1&#xA;" annotatedElement="e28b80b7-736b-4901-8d8d-b1992360cbc1"/>
            <generalization xmi:id="1d23ba2a-a701-4192-8e53-8bb5a2aa32cf" isSubstitutable="true" general="277f6fd8-34cc-4c64-b177-40b5ef6cd3d8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="0ed8a4c2-fbb1-4794-b058-db1555ea6a6b" name="server">
            <packagedElement xmi:type="uml:Class" xmi:id="f943eecc-74dc-4c6f-b137-33bc9b727499" name="ObjID" clientDependency="505e8a1e-6d16-4ab1-8567-047ece914006" isLeaf="true">
              <ownedComment xmi:id="ee06f7b2-d4ec-4841-8ec4-c9381fd2d2bf" body="An &lt;code>ObjID&lt;/code> is used to identify a remote object exported&#xA;to an RMI runtime.  When a remote object is exported, it is assigned&#xA;an object identifier either implicitly or explicitly, depending on&#xA;the API used to export.&#xA;&#xA;&lt;p>The {@link #ObjID()} constructor can be used to generate a unique&#xA;object identifier.  Such an &lt;code>ObjID&lt;/code> is unique over time&#xA;with respect to the host it is generated on.&#xA;&#xA;The {@link #ObjID(int)} constructor can be used to create a&#xA;&quot;well-known&quot; object identifier.  The scope of a well-known&#xA;&lt;code>ObjID&lt;/code> depends on the RMI runtime it is exported to.&#xA;&#xA;&lt;p>An &lt;code>ObjID&lt;/code> instance contains an object number (of type&#xA;&lt;code>long&lt;/code>) and an address space identifier (of type&#xA;{@link UID}).  In a unique &lt;code>ObjID&lt;/code>, the address space&#xA;identifier is unique with respect to a given host over time.  In a&#xA;well-known &lt;code>ObjID&lt;/code>, the address space identifier is&#xA;equivalent to one returned by invoking the {@link UID#UID(short)}&#xA;constructor with the value zero.&#xA;&#xA;&lt;p>If the system property &lt;code>java.rmi.server.randomIDs&lt;/code>&#xA;is defined to equal the string &lt;code>&quot;true&quot;&lt;/code> (case insensitive),&#xA;then the {@link #ObjID()} constructor will use a cryptographically&#xA;strong random number generator to choose the object number of the&#xA;returned &lt;code>ObjID&lt;/code>.&#xA;&#xA;@author&#x9;Ann Wollrath&#xA;@author&#x9;Peter Jones&#xA;@version&#x9;1.29, 03/12/19&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="f943eecc-74dc-4c6f-b137-33bc9b727499"/>
              <interfaceRealization xmi:id="505e8a1e-6d16-4ab1-8567-047ece914006" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f943eecc-74dc-4c6f-b137-33bc9b727499" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="5ceee29e-2fc4-4c1d-b28b-1bc0bc05eee2" name="InsecureRandom" visibility="private" isLeaf="true">
                <generalization xmi:id="dffc3cf6-4146-4a53-9f3e-fb84fc35949a" isSubstitutable="true" general="f866a8c6-9a8f-4eee-b100-ff87e5fdb430"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6c2319b7-a8bb-4e39-a0f8-763c1d430449" name="ServerNotActiveException">
              <ownedComment xmi:id="c0d623a9-c35e-42c1-b972-297569e592d4" body="An &lt;code>ServerNotActiveException&lt;/code> is an &lt;code>Exception&lt;/code>&#xA;thrown during a call to &lt;code>RemoteServer.getClientHost&lt;/code> if&#xA;the getClientHost method is called outside of servicing a remote&#xA;method call.&#xA;&#xA;@version 1.13, 12/19/03&#xA;@author  Roger Riggs&#xA;@since   JDK1.1&#xA;@see java.rmi.server.RemoteServer#getClientHost()&#xA;" annotatedElement="6c2319b7-a8bb-4e39-a0f8-763c1d430449"/>
              <generalization xmi:id="7f1ef442-59d8-401a-b3fd-f419b368563d" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d199c521-ca1f-45aa-a48e-aaa4117d4a90" name="RMIClassLoader">
              <ownedComment xmi:id="7a0ca260-48a0-4190-8ed9-3fe1f57bc8de" body="&lt;code>RMIClassLoader&lt;/code> comprises static methods to support&#xA;dynamic class loading with RMI.  Included are methods for loading&#xA;classes from a network location (one or more URLs) and obtaining&#xA;the location from which an existing class should be loaded by&#xA;remote parties.  These methods are used by the RMI runtime when&#xA;marshalling and unmarshalling classes contained in the arguments&#xA;and return values of remote method calls, and they also may be&#xA;invoked directly by applications in order to mimic RMI's dynamic&#xA;class loading behavior.&#xA;&#xA;&lt;p>The implementation of the following static methods&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>{@link #loadClass(URL,String)}&#xA;&lt;li>{@link #loadClass(String,String)}&#xA;&lt;li>{@link #loadClass(String,String,ClassLoader)}&#xA;&lt;li>{@link #loadProxyClass(String,String[],ClassLoader)}&#xA;&lt;li>{@link #getClassLoader(String)}&#xA;&lt;li>{@link #getClassAnnotation(Class)}&#xA;&#xA;&lt;/ul>&#xA;&#xA;is provided by an instance of {@link RMIClassLoaderSpi}, the&#xA;service provider interface for those methods.  When one of the&#xA;methods is invoked, its behavior is to delegate to a corresponding&#xA;method on the service provider instance.  The details of how each&#xA;method delegates to the provider instance is described in the&#xA;documentation for each particular method.&#xA;&#xA;&lt;p>The service provider instance is chosen as follows:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>If the system property&#xA;&lt;code>java.rmi.server.RMIClassLoaderSpi&lt;/code> is defined, then if&#xA;its value equals the string &lt;code>&quot;default&quot;&lt;/code>, the provider&#xA;instance will be the value returned by an invocation of the {@link&#xA;#getDefaultProviderInstance()} method, and for any other value, if&#xA;a class named with the value of the property can be loaded by the&#xA;system class loader (see {@link ClassLoader#getSystemClassLoader})&#xA;and that class is assignable to {@link RMIClassLoaderSpi} and has a&#xA;public no-argument constructor, then that constructor will be&#xA;invoked to create the provider instance.  If the property is&#xA;defined but any other of those conditions are not true, then an&#xA;unspecified &lt;code>Error&lt;/code> will be thrown to code that attempts&#xA;to use &lt;code>RMIClassLoader&lt;/code>, indicating the failure to&#xA;obtain a provider instance.&#xA;&#xA;&lt;li>If a resource named&#xA;&lt;code>META-INF/services/java.rmi.server.RMIClassLoaderSpi&lt;/code> is&#xA;visible to the system class loader, then the contents of that&#xA;resource are interpreted as a provider-configuration file, and the&#xA;first class name specified in that file is used as the provider&#xA;class name.  If a class with that name can be loaded by the system&#xA;class loader and that class is assignable to {@link&#xA;RMIClassLoaderSpi} and has a public no-argument constructor, then&#xA;that constructor will be invoked to create the provider instance.&#xA;If the resource is found but a provider cannot be instantiated as&#xA;described, then an unspecified &lt;code>Error&lt;/code> will be thrown to&#xA;code that attempts to use &lt;code>RMIClassLoader&lt;/code>, indicating&#xA;the failure to obtain a provider instance.&#xA;&#xA;&lt;li>Otherwise, the provider instance will be the value returned by&#xA;an invocation of the {@link #getDefaultProviderInstance()} method.&#xA;&#xA;&lt;/ul>&#xA;&#xA;@version&#x9;1.40, 04/05/18&#xA;@author&#x9;Ann Wollrath&#xA;@author&#x9;Peter Jones&#xA;@author&#x9;Laird Dornin&#xA;@see&#x9;&#x9;RMIClassLoaderSpi&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="d199c521-ca1f-45aa-a48e-aaa4117d4a90"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="82d0eaeb-fdcb-4fd2-97d5-f03fb0f76532" name="RemoteObjectInvocationHandler" clientDependency="407c8804-226d-45f5-8832-6358a9a4688d">
              <ownedComment xmi:id="ea294a8e-b036-4391-bbb5-d6b4a7d1bb80" body="An implementation of the &lt;code>InvocationHandler&lt;/code> interface for&#xA;use with Java Remote Method Invocation (Java RMI).  This invocation&#xA;handler can be used in conjunction with a dynamic proxy instance as a&#xA;replacement for a pregenerated stub class.&#xA;&#xA;&lt;p>Applications are not expected to use this class directly.  A remote&#xA;object exported to use a dynamic proxy with {@link UnicastRemoteObject}&#xA;or {@link Activatable} has an instance of this class as that proxy's&#xA;invocation handler.&#xA;&#xA;@version 1.3, 03/12/19&#xA;@author  Ann Wollrath&#xA;@since   1.5&#xA;" annotatedElement="82d0eaeb-fdcb-4fd2-97d5-f03fb0f76532"/>
              <generalization xmi:id="ced31328-5455-41ca-96d2-aabdb7aa4996" isSubstitutable="true" general="712a1eff-6076-491c-b5e5-9e317088d667"/>
              <interfaceRealization xmi:id="407c8804-226d-45f5-8832-6358a9a4688d" name="" supplier="db16cb55-6a36-40ec-b9b3-5607bf908b29" client="82d0eaeb-fdcb-4fd2-97d5-f03fb0f76532" contract="db16cb55-6a36-40ec-b9b3-5607bf908b29"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="fddf14c7-b975-46a7-957b-2f9ae23b6764" name="MethodToHash_Maps" visibility="private">
                <ownedComment xmi:id="2f11a590-7307-4a61-920b-c2b781fa3af0" body="A weak hash map, mapping classes to weak hash maps that map&#xA;method objects to method hashes.&#xA;" annotatedElement="fddf14c7-b975-46a7-957b-2f9ae23b6764"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="fce948d6-0252-4de0-b563-0113bdb9b3da" name="UnicastRemoteObject">
              <ownedComment xmi:id="9162b53f-ef16-4ecb-8bbd-ddd632c3f280" body="Used for exporting a remote object with JRMP and obtaining a stub&#xA;that communicates to the remote object.&#xA;&#xA;&lt;p>For the constructors and static &lt;code>exportObject&lt;/code> methods&#xA;below, the stub for a remote object being exported is obtained as&#xA;follows:&#xA;&#xA;&lt;p>&lt;ul>&#xA;&#xA;&lt;li>If the remote object is exported using the {@link&#xA;#exportObject(Remote) UnicastRemoteObject.exportObject(Remote)} method,&#xA;a stub class (typically pregenerated from the remote object's class&#xA;using the &lt;code>rmic&lt;/code> tool) is loaded and an instance of that stub&#xA;class is constructed as follows.&#xA;&lt;ul>&#xA;&#xA;&lt;li>A &quot;root class&quot; is determined as follows:  if the remote object's&#xA;class directly implements an interface that extends {@link Remote}, then&#xA;the remote object's class is the root class; otherwise, the root class is&#xA;the most derived superclass of the remote object's class that directly&#xA;implements an interface that extends &lt;code>Remote&lt;/code>.&#xA;&#xA;&lt;li>The name of the stub class to load is determined by concatenating&#xA;the binary name of the root class with the suffix &lt;code>&quot;_Stub&quot;&lt;/code>.&#xA;&#xA;&lt;li>The stub class is loaded by name using the class loader of the root&#xA;class.  The stub class must extend {@link RemoteStub} and must have a&#xA;public constructor that has one parameter, of type {@link RemoteRef}.&#xA;&#xA;&lt;li>Finally, an instance of the stub class is constructed with a&#xA;{@link RemoteRef}.&#xA;&lt;/ul>&#xA;&#xA;&lt;li>If the appropriate stub class could not be found, or the stub class&#xA;could not be loaded, or a problem occurs creating the stub instance, a&#xA;{@link StubNotFoundException} is thrown.&#xA;&#xA;&lt;p>&#xA;&lt;li>For all other means of exporting:&#xA;&lt;p>&lt;ul>&#xA;&#xA;&lt;li>If the remote object's stub class (as defined above) could not be&#xA;loaded or the system property&#xA;&lt;code>java.rmi.server.ignoreStubClasses&lt;/code> is set to&#xA;&lt;code>&quot;true&quot;&lt;/code> (case insensitive), a {@link&#xA;java.lang.reflect.Proxy} instance is constructed with the following&#xA;properties:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>The proxy's class is defined by the class loader of the remote&#xA;object's class.&#xA;&#xA;&lt;li>The proxy implements all the remote interfaces implemented by the&#xA;remote object's class.&#xA;&#xA;&lt;li>The proxy's invocation handler is a {@link&#xA;RemoteObjectInvocationHandler} instance constructed with a&#xA;{@link RemoteRef}.&#xA;&#xA;&lt;li>If the proxy could not be created, a {@link StubNotFoundException}&#xA;will be thrown.&#xA;&lt;/ul>&#xA;&#xA;&lt;p>&#xA;&lt;li>Otherwise, an instance of the remote object's stub class (as&#xA;described above) is used as the stub.&#xA;&#xA;&lt;/ul>&#xA;&lt;/ul>&#xA;&#xA;@version 1.32, 12/19/03&#xA;@author  Ann Wollrath&#xA;@author  Peter Jones&#xA;@since   JDK1.1&#xA;" annotatedElement="fce948d6-0252-4de0-b563-0113bdb9b3da"/>
              <generalization xmi:id="ee9e82c4-f9de-4806-94b6-e7431b71e891" isSubstitutable="true" general="ea03ddd8-728d-49ca-a62a-c98ce29e9167"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="45f00117-f27f-4208-b626-e7c2bc55485e" name="RemoteCall" isAbstract="true">
              <ownedComment xmi:id="2ad401a1-25c5-4557-8d7d-f9b3598f09ca" body="&lt;code>RemoteCall&lt;/code> is an abstraction used solely by the RMI runtime&#xA;(in conjunction with stubs and skeletons of remote objects) to carry out a&#xA;call to a remote object.  The &lt;code>RemoteCall&lt;/code> interface is&#xA;deprecated in the Java 2 platform since it is only used by deprecated methods of&#xA;&lt;code>java.rmi.server.RemoteRef&lt;/code>.&#xA;&#xA;@version 1.19, 05/18/04&#xA;@since   JDK1.1&#xA;@author  Ann Wollrath&#xA;@author  Roger Riggs&#xA;@see     java.rmi.server.RemoteRef&#xA;@deprecated no replacement.&#xA;" annotatedElement="45f00117-f27f-4208-b626-e7c2bc55485e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="485dc578-ecf6-4f28-8b2e-13e11a731f48" name="RemoteRef" isAbstract="true">
              <ownedComment xmi:id="a2db300a-f256-43e3-a403-c20270cb4247" body="&lt;code>RemoteRef&lt;/code> represents the handle for a remote object. A&#xA;&lt;code>RemoteStub&lt;/code> uses a remote reference to carry out a&#xA;remote method invocation to a remote object.&#xA;&#xA;@version 1.23, 05/18/04&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;@see     java.rmi.server.RemoteStub&#xA;" annotatedElement="485dc578-ecf6-4f28-8b2e-13e11a731f48"/>
              <generalization xmi:id="b991ef7b-9d3e-4903-8f72-be7cc7732790" isSubstitutable="true" general="d359de8b-a8e5-4901-98b0-99c23e339ab5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c044dfed-d277-45ef-aca2-95bdd0cfc36c" name="ServerCloneException">
              <ownedComment xmi:id="f6d89902-1c15-486f-b177-08bf4df4b990" body="A &lt;code>ServerCloneException&lt;/code> is thrown if a remote exception occurs&#xA;during the cloning of a &lt;code>UnicastRemoteObject&lt;/code>.&#xA;&#xA;&lt;p>As of release 1.4, this exception has been retrofitted to conform to&#xA;the general purpose exception-chaining mechanism.  The &quot;nested exception&quot;&#xA;that may be provided at construction time and accessed via the public&#xA;{@link #detail} field is now known as the &lt;i>cause&lt;/i>, and may be&#xA;accessed via the {@link Throwable#getCause()} method, as well as&#xA;the aforementioned &quot;legacy field.&quot;&#xA;&#xA;&lt;p>Invoking the method {@link Throwable#initCause(Throwable)} on an&#xA;instance of &lt;code>ServerCloneException&lt;/code> always throws {@link&#xA;IllegalStateException}.&#xA;&#xA;@version 1.20, 12/19/03&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;@see     java.rmi.server.UnicastRemoteObject#clone()&#xA;" annotatedElement="c044dfed-d277-45ef-aca2-95bdd0cfc36c"/>
              <generalization xmi:id="9cb277a8-636f-4984-b0d4-a2eccff9611e" isSubstitutable="true" general="7bb6e831-f0b4-495e-9fd1-5b7292b35892"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="e0b5ee8e-0fbf-498f-936f-6167ebf9c310" name="RMIClientSocketFactory" isAbstract="true">
              <ownedComment xmi:id="38ffee7f-18c5-47f3-8e09-28d757e77e3d" body="An &lt;code>RMIClientSocketFactory&lt;/code> instance is used by the RMI runtime&#xA;in order to obtain client sockets for RMI calls.  A remote object can be&#xA;associated with an &lt;code>RMIClientSocketFactory&lt;/code> when it is&#xA;created/exported via the constructors or &lt;code>exportObject&lt;/code> methods&#xA;of &lt;code>java.rmi.server.UnicastRemoteObject&lt;/code> and&#xA;&lt;code>java.rmi.activation.Activatable&lt;/code> .&#xA;&#xA;&lt;p>An &lt;code>RMIClientSocketFactory&lt;/code> instance associated with a remote&#xA;object will be downloaded to clients when the remote object's reference is&#xA;transmitted in an RMI call.  This &lt;code>RMIClientSocketFactory&lt;/code> will&#xA;be used to create connections to the remote object for remote method calls.&#xA;&#xA;&lt;p>An &lt;code>RMIClientSocketFactory&lt;/code> instance can also be associated&#xA;with a remote object registry so that clients can use custom socket&#xA;communication with a remote object registry.&#xA;&#xA;&lt;p>An implementation of this interface should be serializable and&#xA;should implement {@link Object#equals} to return &lt;code>true&lt;/code> when&#xA;passed an instance that represents the same (functionally equivalent)&#xA;client socket factory, and &lt;code>false&lt;/code> otherwise (and it should also&#xA;implement {@link Object#hashCode} consistently with its&#xA;&lt;code>Object.equals&lt;/code> implementation).&#xA;&#xA;@version 1.11, 12/19/03&#xA;@author  Ann Wollrath&#xA;@author  Peter Jones&#xA;@since   1.2&#xA;@see     java.rmi.server.UnicastRemoteObject&#xA;@see     java.rmi.activation.Activatable&#xA;@see     java.rmi.registry.LocateRegistry&#xA;" annotatedElement="e0b5ee8e-0fbf-498f-936f-6167ebf9c310"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4932661a-fad5-47ee-a500-e57b781f5bb4" name="RMISocketFactory" clientDependency="9e094b8c-387d-4708-8f84-5c943e1db90a 7989e1d7-ac06-41d7-8ba6-d179b9584214" isAbstract="true">
              <ownedComment xmi:id="1b7d881a-a357-4347-8415-5eb43b4d3e39" body="An &lt;code>RMISocketFactory&lt;/code> instance is used by the RMI runtime&#xA;in order to obtain client and server sockets for RMI calls.  An&#xA;application may use the &lt;code>setSocketFactory&lt;/code> method to&#xA;request that the RMI runtime use its socket factory instance&#xA;instead of the default implementation.&lt;p>&#xA;&#xA;The default socket factory implementation used goes through a&#xA;three-tiered approach to creating client sockets. First, a direct&#xA;socket connection to the remote VM is attempted.  If that fails&#xA;(due to a firewall), the runtime uses HTTP with the explicit port&#xA;number of the server.  If the firewall does not allow this type of&#xA;communication, then HTTP to a cgi-bin script on the server is used&#xA;to POST the RMI call.&lt;p>&#xA;&#xA;@version 1.21, 12/19/03&#xA;@author  Ann Wollrath&#xA;@author  Peter Jones&#xA;@since   JDK1.1&#xA;" annotatedElement="4932661a-fad5-47ee-a500-e57b781f5bb4"/>
              <interfaceRealization xmi:id="7989e1d7-ac06-41d7-8ba6-d179b9584214" name="" supplier="e0b5ee8e-0fbf-498f-936f-6167ebf9c310" client="4932661a-fad5-47ee-a500-e57b781f5bb4" contract="e0b5ee8e-0fbf-498f-936f-6167ebf9c310"/>
              <interfaceRealization xmi:id="9e094b8c-387d-4708-8f84-5c943e1db90a" name="" supplier="e6f9ec7f-db69-407a-abf6-9da83d54a3e5" client="4932661a-fad5-47ee-a500-e57b781f5bb4" contract="e6f9ec7f-db69-407a-abf6-9da83d54a3e5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a9eb1d5c-553d-47d6-8c94-ae8761d65ffb" name="RemoteStub" isAbstract="true">
              <ownedComment xmi:id="e485c97d-6ade-4188-805e-bba825130b0e" body="The &lt;code>RemoteStub&lt;/code> class is the common superclass to client&#xA;stubs and provides the framework to support a wide range of remote&#xA;reference semantics.  Stub objects are surrogates that support&#xA;exactly the same set of remote interfaces defined by the actual&#xA;implementation of the remote object.&#xA;&#xA;@version 1.21, 05/18/04&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;" annotatedElement="a9eb1d5c-553d-47d6-8c94-ae8761d65ffb"/>
              <generalization xmi:id="09d089a0-18e2-46a9-8b42-d4569ca4915f" isSubstitutable="true" general="712a1eff-6076-491c-b5e5-9e317088d667"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8e0536af-c0e7-4f7b-9a9d-93435d110613" name="RMIClassLoaderSpi" isAbstract="true">
              <ownedComment xmi:id="87f2dd4c-e515-4f8b-94ef-253263256627" body="&lt;code>RMIClassLoaderSpi&lt;/code> is the service provider interface for&#xA;&lt;code>RMIClassLoader&lt;/code>.&#xA;&#xA;In particular, an &lt;code>RMIClassLoaderSpi&lt;/code> instance provides an&#xA;implementation of the following static methods of&#xA;&lt;code>RMIClassLoader&lt;/code>:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>{@link RMIClassLoader#loadClass(URL,String)}&#xA;&lt;li>{@link RMIClassLoader#loadClass(String,String)}&#xA;&lt;li>{@link RMIClassLoader#loadClass(String,String,ClassLoader)}&#xA;&lt;li>{@link RMIClassLoader#loadProxyClass(String,String[],ClassLoader)}&#xA;&lt;li>{@link RMIClassLoader#getClassLoader(String)}&#xA;&lt;li>{@link RMIClassLoader#getClassAnnotation(Class)}&#xA;&#xA;&lt;/ul>&#xA;&#xA;When one of those methods is invoked, its behavior is to delegate&#xA;to a corresponding method on an instance of this class.&#xA;The details of how each method delegates to the provider instance is&#xA;described in the documentation for each particular method.&#xA;See the documentation for {@link RMIClassLoader} for a description&#xA;of how a provider instance is chosen.&#xA;&#xA;@version&#x9;1.14, 04/05/05&#xA;@author&#x9;Peter Jones&#xA;@author&#x9;Laird Dornin&#xA;@see&#x9;&#x9;RMIClassLoader&#xA;@since&#x9;JDK1.4&#xA;" annotatedElement="8e0536af-c0e7-4f7b-9a9d-93435d110613"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f768953f-4251-4b00-9ba3-f7e99f3acfc0" name="LogStream">
              <ownedComment xmi:id="f14e967e-b247-4769-967c-518de01b15b6" body="&lt;code>LogStream&lt;/code> provides a mechanism for logging errors that are&#xA;of possible interest to those monitoring a system.&#xA;&#xA;@version 1.20, 05/18/04&#xA;@author  Ann Wollrath (lots of code stolen from Ken Arnold)&#xA;@since   JDK1.1&#xA;@deprecated no replacement&#xA;" annotatedElement="f768953f-4251-4b00-9ba3-f7e99f3acfc0"/>
              <generalization xmi:id="9e308628-d65e-4d3b-9c7d-ce8f0afefe68" isSubstitutable="true" general="97fa851f-ae78-405c-a010-fe7e1f3519a1"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f131c1ee-a525-4294-9d0d-404439b3ba19" name="Operation">
              <ownedComment xmi:id="fd2e566e-2b61-4ead-b2b8-792ca0b77ef9" body="An &lt;code>Operation&lt;/code> contains a description of a Java method.&#xA;&lt;code>Operation&lt;/code> objects were used in JDK1.1 version stubs and&#xA;skeletons. The &lt;code>Operation&lt;/code> class is not needed for 1.2 style&#xA;stubs (stubs generated with &lt;code>rmic -v1.2&lt;/code>); hence, this class&#xA;is deprecated.&#xA;&#xA;@version 1.17, 05/18/04&#xA;@since JDK1.1&#xA;@deprecated no replacement&#xA;" annotatedElement="f131c1ee-a525-4294-9d0d-404439b3ba19"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="e6f9ec7f-db69-407a-abf6-9da83d54a3e5" name="RMIServerSocketFactory" isAbstract="true">
              <ownedComment xmi:id="18792d5a-cc3d-40ac-af30-db9189a1f624" body="An &lt;code>RMIServerSocketFactory&lt;/code> instance is used by the RMI runtime&#xA;in order to obtain server sockets for RMI calls.  A remote object can be&#xA;associated with an &lt;code>RMIServerSocketFactory&lt;/code> when it is&#xA;created/exported via the constructors or &lt;code>exportObject&lt;/code> methods&#xA;of &lt;code>java.rmi.server.UnicastRemoteObject&lt;/code> and&#xA;&lt;code>java.rmi.activation.Activatable&lt;/code> .&#xA;&#xA;&lt;p>An &lt;code>RMIServerSocketFactory&lt;/code> instance associated with a remote&#xA;object is used to obtain the &lt;code>ServerSocket&lt;/code> used to accept&#xA;incoming calls from clients.&#xA;&#xA;&lt;p>An &lt;code>RMIServerSocketFactory&lt;/code> instance can also be associated&#xA;with a remote object registry so that clients can use custom socket&#xA;communication with a remote object registry.&#xA;&#xA;&lt;p>An implementation of this interface&#xA;should implement {@link Object#equals} to return &lt;code>true&lt;/code> when&#xA;passed an instance that represents the same (functionally equivalent)&#xA;server socket factory, and &lt;code>false&lt;/code> otherwise (and it should also&#xA;implement {@link Object#hashCode} consistently with its&#xA;&lt;code>Object.equals&lt;/code> implementation).&#xA;&#xA;@version 1.11, 12/19/03&#xA;@author  Ann Wollrath&#xA;@author  Peter Jones&#xA;@since   1.2&#xA;@see     java.rmi.server.UnicastRemoteObject&#xA;@see     java.rmi.activation.Activatable&#xA;@see     java.rmi.registry.LocateRegistry&#xA;" annotatedElement="e6f9ec7f-db69-407a-abf6-9da83d54a3e5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="16f6a26b-da51-4d6c-b413-d9bf7f415b56" name="SkeletonMismatchException">
              <ownedComment xmi:id="4aa17ac5-c53c-49c2-92ab-bd8ac38b993e" body="This exception is thrown when a call is received that does not&#xA;match the available skeleton.  It indicates either that the&#xA;remote method names or signatures in this interface have changed or&#xA;that the stub class used to make the call and the skeleton&#xA;receiving the call were not generated by the same version of&#xA;the stub compiler (&lt;code>rmic&lt;/code>).&#xA;&#xA;@version 1.15, 05/18/04&#xA;@author  Roger Riggs&#xA;@since   JDK1.1&#xA;@deprecated no replacement.  Skeletons are no longer required for remote&#xA;method calls in the Java 2 platform v1.2 and greater.&#xA;" annotatedElement="16f6a26b-da51-4d6c-b413-d9bf7f415b56"/>
              <generalization xmi:id="4c22e406-d455-4984-90ec-3ff7ead04f29" isSubstitutable="true" general="517e9e16-9b01-417d-9842-1e44401e7654"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ea03ddd8-728d-49ca-a62a-c98ce29e9167" name="RemoteServer" isAbstract="true">
              <ownedComment xmi:id="b368496c-3182-499b-a5fe-bed353f0ffb1" body="The &lt;code>RemoteServer&lt;/code> class is the common superclass to server&#xA;implementations and provides the framework to support a wide range&#xA;of remote reference semantics.  Specifically, the functions needed&#xA;to create and export remote objects (i.e. to make them remotely&#xA;available) are provided abstractly by &lt;code>RemoteServer&lt;/code> and&#xA;concretely by its subclass(es).&#xA;&#xA;@version 1.32, 12/19/03&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;" annotatedElement="ea03ddd8-728d-49ca-a62a-c98ce29e9167"/>
              <generalization xmi:id="c26b7653-4fa3-411d-ba21-5079da8da851" isSubstitutable="true" general="712a1eff-6076-491c-b5e5-9e317088d667"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7524bc8b-1299-4d35-a85f-d9cf6191a9dc" name="ExportException">
              <ownedComment xmi:id="ae79005c-9c72-4e12-88e9-ebfc2425b4fa" body="An &lt;code>ExportException&lt;/code> is a &lt;code>RemoteException&lt;/code>&#xA;thrown if an attempt to export a remote object fails.  A remote object is&#xA;exported via the constructors and &lt;code>exportObject&lt;/code> methods of&#xA;&lt;code>java.rmi.server.UnicastRemoteObject&lt;/code> and&#xA;&lt;code>java.rmi.activation.Activatable&lt;/code>.&#xA;&#xA;@version 1.12, 12/19/03&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;@see java.rmi.server.UnicastRemoteObject&#xA;@see java.rmi.activation.Activatable&#xA;" annotatedElement="7524bc8b-1299-4d35-a85f-d9cf6191a9dc"/>
              <generalization xmi:id="0669a037-28f8-458d-93c3-a8bef8bd3c02" isSubstitutable="true" general="517e9e16-9b01-417d-9842-1e44401e7654"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="cf7fd4ce-6fa3-4be7-9706-6140842b22ec" name="ServerRef" isAbstract="true">
              <ownedComment xmi:id="a521ad2b-11cf-48c6-9a36-412d114739c6" body="A ServerRef represents the server-side handle for a remote object&#xA;implementation.&#xA;&#xA;@version 1.16, 12/19/03&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;" annotatedElement="cf7fd4ce-6fa3-4be7-9706-6140842b22ec"/>
              <generalization xmi:id="2abd0747-3788-4638-930e-586ab73930ef" isSubstitutable="true" general="485dc578-ecf6-4f28-8b2e-13e11a731f48"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="7a3b40be-faf1-459b-bf30-2f5b9eac8845" name="Skeleton" isAbstract="true">
              <ownedComment xmi:id="51be4596-b966-4a06-92f4-41845e092050" body="The &lt;code>Skeleton&lt;/code> interface is used solely by the RMI&#xA;implementation.&#xA;&#xA;&lt;p> Every version 1.1 (and version 1.1 compatible skeletons generated in&#xA;1.2 using &lt;code>rmic -vcompat&lt;/code>) skeleton class generated by the rmic&#xA;stub compiler implements this interface. A skeleton for a remote object is&#xA;a server-side entity that dispatches calls to the actual remote object&#xA;implementation.&#xA;&#xA;@version 1.19, 05/18/04&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;@deprecated no replacement.  Skeletons are no longer required for remote&#xA;method calls in the Java 2 platform v1.2 and greater.&#xA;" annotatedElement="7a3b40be-faf1-459b-bf30-2f5b9eac8845"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6c1a553b-c7ea-4ab9-ab74-05c8264b6d10" name="UID" clientDependency="42afcb76-3b45-4374-8379-015ae71de075" isLeaf="true">
              <ownedComment xmi:id="02921505-b887-4232-bced-0b3862f0e098" body="A &lt;code>UID&lt;/code> represents an identifier that is unique over time&#xA;with respect to the host it is generated on, or one of 2&lt;sup>16&lt;/sup>&#xA;&quot;well-known&quot; identifiers.&#xA;&#xA;&lt;p>The {@link #UID()} constructor can be used to generate an&#xA;identifier that is unique over time with respect to the host it is&#xA;generated on.  The {@link #UID(short)} constructor can be used to&#xA;create one of 2&lt;sup>16&lt;/sup> well-known identifiers.&#xA;&#xA;&lt;p>A &lt;code>UID&lt;/code> instance contains three primitive values:&#xA;&lt;ul>&#xA;&lt;li>&lt;code>unique&lt;/code>, an &lt;code>int&lt;/code> that uniquely identifies&#xA;the VM that this &lt;code>UID&lt;/code> was generated in, with respect to its&#xA;host and at the time represented by the &lt;code>time&lt;/code> value (an&#xA;example implementation of the &lt;code>unique&lt;/code> value would be a&#xA;process identifier),&#xA;or zero for a well-known &lt;code>UID&lt;/code>&#xA;&lt;li>&lt;code>time&lt;/code>, a &lt;code>long&lt;/code> equal to a time (as returned&#xA;by {@link System#currentTimeMillis()}) at which the VM that this&#xA;&lt;code>UID&lt;/code> was generated in was alive,&#xA;or zero for a well-known &lt;code>UID&lt;/code>&#xA;&lt;li>&lt;code>count&lt;/code>, a &lt;code>short&lt;/code> to distinguish&#xA;&lt;code>UID&lt;/code>s generated in the same VM with the same&#xA;&lt;code>time&lt;/code> value&#xA;&lt;/ul>&#xA;&#xA;&lt;p>An independently generated &lt;code>UID&lt;/code> instance is unique&#xA;over time with respect to the host it is generated on as long as&#xA;the host requires more than one millisecond to reboot and its system&#xA;clock is never set backward.  A globally unique identifier can be&#xA;constructed by pairing a &lt;code>UID&lt;/code> instance with a unique host&#xA;identifier, such as an IP address.&#xA;&#xA;@author&#x9;Ann Wollrath&#xA;@author&#x9;Peter Jones&#xA;@version&#x9;1.22, 03/12/19&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="6c1a553b-c7ea-4ab9-ab74-05c8264b6d10"/>
              <interfaceRealization xmi:id="42afcb76-3b45-4374-8379-015ae71de075" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="6c1a553b-c7ea-4ab9-ab74-05c8264b6d10" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="b525fa7e-125f-4b69-81b0-39be31c0680f" name="RMIFailureHandler" isAbstract="true">
              <ownedComment xmi:id="1a247754-933c-483b-810e-b064b467c1bc" body="An &lt;code>RMIFailureHandler&lt;/code> can be registered via the&#xA;&lt;code>RMISocketFactory.setFailureHandler&lt;/code> call. The&#xA;&lt;code>failure&lt;/code> method of the handler is invoked when the RMI&#xA;runtime is unable to create a &lt;code>ServerSocket&lt;/code> to listen&#xA;for incoming calls. The &lt;code>failure&lt;/code> method returns a boolean&#xA;indicating whether the runtime should attempt to re-create the&#xA;&lt;code>ServerSocket&lt;/code>.&#xA;&#xA;@author &#x9;Ann Wollrath&#xA;@version&#x9;@(#)RMIFailureHandler.java&#x9;1.11, 03/12/19&#xA;@since &#x9;JDK1.1&#xA;" annotatedElement="b525fa7e-125f-4b69-81b0-39be31c0680f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="712a1eff-6076-491c-b5e5-9e317088d667" name="RemoteObject" clientDependency="58685d1b-e2c3-408f-b5d2-b012085e5e7d e96615c1-db90-438d-a397-c3800fec5c50" isAbstract="true">
              <ownedComment xmi:id="a197ef8e-7f01-4c08-9041-a20cd5241d85" body="The &lt;code>RemoteObject&lt;/code> class implements the&#xA;&lt;code>java.lang.Object&lt;/code> behavior for remote objects.&#xA;&lt;code>RemoteObject&lt;/code> provides the remote semantics of Object by&#xA;implementing methods for hashCode, equals, and toString.&#xA;&#xA;@author&#x9;Ann Wollrath&#xA;@author&#x9;Laird Dornin&#xA;@author&#x9;Peter Jones&#xA;@version&#x9;1.33, 03/12/19&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="712a1eff-6076-491c-b5e5-9e317088d667"/>
              <interfaceRealization xmi:id="58685d1b-e2c3-408f-b5d2-b012085e5e7d" name="" supplier="492277dc-22fc-4399-a309-a8a3b4e56fb6" client="712a1eff-6076-491c-b5e5-9e317088d667" contract="492277dc-22fc-4399-a309-a8a3b4e56fb6"/>
              <interfaceRealization xmi:id="e96615c1-db90-438d-a397-c3800fec5c50" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="712a1eff-6076-491c-b5e5-9e317088d667" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="805e8539-a003-471f-8cb2-f983669ca6fb" name="SocketSecurityException">
              <ownedComment xmi:id="77dfd008-c4b0-4852-8baf-6497d00b2e0c" body="An obsolete subclass of {@link ExportException}.&#xA;&#xA;@version 1.13, 12/19/03&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;" annotatedElement="805e8539-a003-471f-8cb2-f983669ca6fb"/>
              <generalization xmi:id="3d17eca1-221e-4e7e-b63b-8d5201f3f932" isSubstitutable="true" general="7524bc8b-1299-4d35-a85f-d9cf6191a9dc"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b19c01c2-b33d-4143-885a-ebe602fc9bc3" name="SkeletonNotFoundException">
              <ownedComment xmi:id="cd45b3ef-cd72-45c7-8203-8992fc24474d" body="A &lt;code>SkeletonNotFoundException&lt;/code> is thrown if the&#xA;&lt;code>Skeleton&lt;/code> corresponding to the remote object being exported is&#xA;not found.  Skeletons are not required in the Java 2 platform, so this exception is&#xA;never thrown.&#xA;&#xA;@version 1.16, 05/18/04&#xA;@since   JDK1.1&#xA;@deprecated no replacement.  Skeletons are no longer required for remote&#xA;method calls in the Java 2 platform v1.2 and greater.&#xA;" annotatedElement="b19c01c2-b33d-4143-885a-ebe602fc9bc3"/>
              <generalization xmi:id="28bb6e33-9143-4773-8f49-a9f101198988" isSubstitutable="true" general="517e9e16-9b01-417d-9842-1e44401e7654"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="f91fd311-9378-4bbe-9e6a-67130f641221" name="LoaderHandler" isAbstract="true">
              <ownedComment xmi:id="861be8a5-b70c-4b94-8263-3904c0c7c1e9" body="&lt;code>LoaderHandler&lt;/code> is an interface used internally by the RMI&#xA;runtime in previous implementation versions.  It should never be accessed&#xA;by application code.&#xA;&#xA;@version 1.18, 05/18/04&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;&#xA;@deprecated no replacement&#xA;" annotatedElement="f91fd311-9378-4bbe-9e6a-67130f641221"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="151a37b5-2d89-460e-8551-c6524532dc7c" name="Unreferenced" isAbstract="true">
              <ownedComment xmi:id="c41e8e18-93d0-4008-85d1-296453d312e2" body="A remote object implementation should implement the&#xA;&lt;code>Unreferenced&lt;/code> interface to receive notification when there are&#xA;no more clients that reference that remote object.&#xA;&#xA;@version 1.12, 12/19/03&#xA;@author  Ann Wollrath&#xA;@author  Roger Riggs&#xA;@since   JDK1.1&#xA;" annotatedElement="151a37b5-2d89-460e-8551-c6524532dc7c"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="125a9f18-737d-4813-8e5b-fc3ed2681bd5" name="MarshalException">
            <ownedComment xmi:id="96bca3ea-32da-422b-9e1a-f22ec899fdf1" body="A &lt;code>MarshalException&lt;/code> is thrown if a&#xA;&lt;code>java.io.IOException&lt;/code> occurs while marshalling the remote call&#xA;header, arguments or return value for a remote method call.  A&#xA;&lt;code>MarshalException&lt;/code> is also thrown if the receiver does not&#xA;support the protocol version of the sender.&#xA;&#xA;&lt;p>If a &lt;code>MarshalException&lt;/code> occurs during a remote method call,&#xA;the call may or may not have reached the server.  If the call did reach the&#xA;server, parameters may have been deserialized.  A call may not be&#xA;retransmitted after a &lt;code>MarshalException&lt;/code> and reliably preserve&#xA;&quot;at most once&quot; call semantics.&#xA;&#xA;@version 1.12, 12/19/03&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;" annotatedElement="125a9f18-737d-4813-8e5b-fc3ed2681bd5"/>
            <generalization xmi:id="1e05ec91-8aa3-402f-8e77-354b88fd5bfe" isSubstitutable="true" general="517e9e16-9b01-417d-9842-1e44401e7654"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="98bf081f-af02-40f2-9321-76b5becb0b10" name="AlreadyBoundException">
            <ownedComment xmi:id="85ee3d12-59cf-4c9e-9279-b5876d8e099b" body="An &lt;code>AlreadyBoundException&lt;/code> is thrown if an attempt&#xA;is made to bind an object in the registry to a name that already&#xA;has an associated binding.&#xA;&#xA;@version 1.12, 12/19/03&#xA;@since   JDK1.1&#xA;@author  Ann Wollrath&#xA;@author  Roger Riggs&#xA;@see     java.rmi.Naming#bind(String, java.rmi.Remote)&#xA;@see     java.rmi.registry.Registry#bind(String, java.rmi.Remote)&#xA;" annotatedElement="98bf081f-af02-40f2-9321-76b5becb0b10"/>
            <generalization xmi:id="ecf776c0-42ef-4ea9-9695-e16c7b378766" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3e2e3ebb-21ec-4c06-9a20-cb4b45351054" name="MarshalledObject" clientDependency="d527e230-33d4-4102-ae15-e9f6c7181fb8" isLeaf="true">
            <ownedComment xmi:id="7b382567-af91-49af-9e4e-31b80225623e" body="A &lt;code>MarshalledObject&lt;/code> contains a byte stream with the serialized&#xA;representation of an object given to its constructor.  The &lt;code>get&lt;/code>&#xA;method returns a new copy of the original object, as deserialized from&#xA;the contained byte stream.  The contained object is serialized and&#xA;deserialized with the same serialization semantics used for marshaling&#xA;and unmarshaling parameters and return values of RMI calls:  When the&#xA;serialized form is created:&#xA;&#xA;&lt;ul>&#xA;&lt;li> classes are annotated with a codebase URL from where the class&#xA;can be loaded (if available), and&#xA;&lt;li> any remote object in the &lt;code>MarshalledObject&lt;/code> is&#xA;represented by a serialized instance of its stub.&#xA;&lt;/ul>&#xA;&#xA;&lt;p>When copy of the object is retrieved (via the &lt;code>get&lt;/code> method),&#xA;if the class is not available locally, it will be loaded from the&#xA;appropriate location (specified the URL annotated with the class descriptor&#xA;when the class was serialized.&#xA;&#xA;&lt;p>&lt;code>MarshalledObject&lt;/code> facilitates passing objects in RMI calls&#xA;that are not automatically deserialized immediately by the remote peer.&#xA;&#xA;@version 1.33, 12/19/03&#xA;@author  Ann Wollrath&#xA;@author  Peter Jones&#xA;@since   1.2&#xA;" annotatedElement="3e2e3ebb-21ec-4c06-9a20-cb4b45351054"/>
            <interfaceRealization xmi:id="d527e230-33d4-4102-ae15-e9f6c7181fb8" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="3e2e3ebb-21ec-4c06-9a20-cb4b45351054" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="becf3feb-4c14-4515-90de-4201f141ba3e" name="MarshalledObjectOutputStream" visibility="private">
              <ownedComment xmi:id="af23eadc-abb0-4179-b3c6-99d5ef384309" body="This class is used to marshal objects for&#xA;&lt;code>MarshalledObject&lt;/code>.  It places the location annotations&#xA;to one side so that two &lt;code>MarshalledObject&lt;/code>s can be&#xA;compared for equality if they differ only in location&#xA;annotations.  Objects written using this stream should be read back&#xA;from a &lt;code>MarshalledObjectInputStream&lt;/code>.&#xA;&#xA;@see java.rmi.MarshalledObject&#xA;@see MarshalledObjectInputStream&#xA;" annotatedElement="becf3feb-4c14-4515-90de-4201f141ba3e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="99b688d6-e819-4d0b-8932-b1c4e80522c0" name="MarshalledObjectInputStream" visibility="private">
              <ownedComment xmi:id="3cae9f97-da64-4fbf-baee-0ed966dff267" body="The counterpart to &lt;code>MarshalledObjectOutputStream&lt;/code>.&#xA;&#xA;@see MarshalledObjectOutputStream&#xA;" annotatedElement="99b688d6-e819-4d0b-8932-b1c4e80522c0"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="b1d22082-dc7c-483d-b75a-c057db158e2f" name="activation">
            <packagedElement xmi:type="uml:Class" xmi:id="8abc06ec-45ea-4240-8b88-4b0b310172ec" name="UnknownObjectException">
              <ownedComment xmi:id="f82626a8-f971-4e26-a6d3-bb22c6f11ca3" body="An &lt;code>UnknownObjectException&lt;/code> is thrown by methods of classes and&#xA;interfaces in the &lt;code>java.rmi.activation&lt;/code> package when the&#xA;&lt;code>ActivationID&lt;/code> parameter to the method is determined to be&#xA;invalid.  An &lt;code>ActivationID&lt;/code> is invalid if it is not currently&#xA;known by the &lt;code>ActivationSystem&lt;/code>.  An &lt;code>ActivationID&lt;/code>&#xA;is obtained by the &lt;code>ActivationSystem.registerObject&lt;/code> method.&#xA;An &lt;code>ActivationID&lt;/code> is also obtained during the&#xA;&lt;code>Activatable.register&lt;/code> call.&#xA;&#xA;@version 1.11, 12/19/03&#xA;@author  Ann Wollrath&#xA;@since   1.2&#xA;@see     java.rmi.activation.Activatable&#xA;@see     java.rmi.activation.ActivationGroup&#xA;@see     java.rmi.activation.ActivationID&#xA;@see     java.rmi.activation.ActivationMonitor&#xA;@see     java.rmi.activation.ActivationSystem&#xA;@see     java.rmi.activation.Activator&#xA;" annotatedElement="8abc06ec-45ea-4240-8b88-4b0b310172ec"/>
              <generalization xmi:id="d51bddd6-cf17-4c62-b1e9-91ed9016910c" isSubstitutable="true" general="878e12c1-d7cc-4c91-b147-ad6228eaedd2"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="f3a515aa-2028-4561-b54b-2b1cf8e208c0" name="ActivationInstantiator" isAbstract="true">
              <ownedComment xmi:id="b38d4c68-d21e-4a94-9123-c5bc8cbe9b30" body="An &lt;code>ActivationInstantiator&lt;/code> is responsible for creating&#xA;instances of &quot;activatable&quot; objects. A concrete subclass of&#xA;&lt;code>ActivationGroup&lt;/code> implements the &lt;code>newInstance&lt;/code>&#xA;method to handle creating objects within the group.&#xA;&#xA;@author &#x9;Ann Wollrath&#xA;@version&#x9;1.15, 12/19/03&#xA;@see &#x9;ActivationGroup&#xA;@since&#x9;1.2&#xA;" annotatedElement="f3a515aa-2028-4561-b54b-2b1cf8e208c0"/>
              <generalization xmi:id="577e90cc-7d6e-46e3-ab70-e4d4b8440c65" isSubstitutable="true" general="492277dc-22fc-4399-a309-a8a3b4e56fb6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b6df0c8e-c76d-492b-aa06-2de63f3a97bc" name="Activatable" isAbstract="true">
              <ownedComment xmi:id="68f3b4a8-71c7-4c67-a925-743099a995b8" body="The &lt;code>Activatable&lt;/code> class provides support for remote&#xA;objects that require persistent access over time and that&#xA;can be activated by the system.&#xA;&#xA;&lt;p>For the constructors and static &lt;code>exportObject&lt;/code> methods,&#xA;the stub for a remote object being exported is obtained as described in&#xA;{@link java.rmi.server.UnicastRemoteObject}.&#xA;&#xA;@author&#x9;Ann Wollrath&#xA;@version&#x9;1.34, 03/12/19&#xA;@since&#x9;1.2&#xA;" annotatedElement="b6df0c8e-c76d-492b-aa06-2de63f3a97bc"/>
              <generalization xmi:id="a9e6c92e-da2c-4d2f-b5bf-dcaacc9662a7" isSubstitutable="true" general="ea03ddd8-728d-49ca-a62a-c98ce29e9167"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="91912f97-b107-4971-93a4-dc874192d566" name="ActivateFailedException">
              <ownedComment xmi:id="6f24bc92-cc7c-49fe-8d8e-faeaf90d859a" body="This exception is thrown by the RMI runtime when activation&#xA;fails during a remote call to an activatable object.&#xA;&#xA;@author &#x9;Ann Wollrath&#xA;@version&#x9;1.10, 12/19/03&#xA;@since &#x9;1.2&#xA;" annotatedElement="91912f97-b107-4971-93a4-dc874192d566"/>
              <generalization xmi:id="9859e78e-451b-4a6d-88f7-623e4b4b3f90" isSubstitutable="true" general="517e9e16-9b01-417d-9842-1e44401e7654"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="878e12c1-d7cc-4c91-b147-ad6228eaedd2" name="ActivationException">
              <ownedComment xmi:id="9e0f266e-faed-41a3-92fa-ced4071bbd41" body="General exception used by the activation interfaces.&#xA;&#xA;&lt;p>As of release 1.4, this exception has been retrofitted to conform to&#xA;the general purpose exception-chaining mechanism.  The &quot;detail exception&quot;&#xA;that may be provided at construction time and accessed via the public&#xA;{@link #detail} field is now known as the &lt;i>cause&lt;/i>, and may be&#xA;accessed via the {@link Throwable#getCause()} method, as well as&#xA;the aforementioned &quot;legacy field.&quot;&#xA;&#xA;&lt;p>Invoking the method {@link Throwable#initCause(Throwable)} on an&#xA;instance of &lt;code>ActivationException&lt;/code> always throws {@link&#xA;IllegalStateException}.&#xA;&#xA;@author &#x9;Ann Wollrath&#xA;@version&#x9;1.24, 12/19/03&#xA;@since &#x9;1.2&#xA;" annotatedElement="878e12c1-d7cc-4c91-b147-ad6228eaedd2"/>
              <generalization xmi:id="d4c5181e-4e93-4e12-984c-cf4e87bbcf03" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="468e88a1-24f3-4ee2-a524-436f97de1663" name="Activator" isAbstract="true">
              <ownedComment xmi:id="4b5e29bd-48f1-4985-aee9-b15b20a3d18e" body="The &lt;code>Activator&lt;/code> facilitates remote object activation. A&#xA;&quot;faulting&quot; remote reference calls the activator's&#xA;&lt;code>activate&lt;/code> method to obtain a &quot;live&quot; reference to a&#xA;&quot;activatable&quot; remote object. Upon receiving a request for activation,&#xA;the activator looks up the activation descriptor for the activation&#xA;identifier, &lt;code>id&lt;/code>, determines the group in which the&#xA;object should be activated initiates object re-creation via the&#xA;group's &lt;code>ActivationInstantiator&lt;/code> (via a call to the&#xA;&lt;code>newInstance&lt;/code> method). The activator initiates the&#xA;execution of activation groups as necessary. For example, if an&#xA;activation group for a specific group identifier is not already&#xA;executing, the activator initiates the execution of a VM for the&#xA;group. &lt;p>&#xA;&#xA;The &lt;code>Activator&lt;/code> works closely with&#xA;&lt;code>ActivationSystem&lt;/code>, which provides a means for registering&#xA;groups and objects within those groups, and &lt;code>ActivationMonitor&lt;/code>,&#xA;which recives information about active and inactive objects and inactive&#xA;groups. &lt;p>&#xA;&#xA;The activator is responsible for monitoring and detecting when&#xA;activation groups fail so that it can remove stale remote references&#xA;to groups and active object's within those groups.&lt;p>&#xA;&#xA;@author &#x9;Ann Wollrath&#xA;@version&#x9;1.18, 12/19/03&#xA;@see &#x9;ActivationInstantiator&#xA;@see&#x9;&#x9;ActivationGroupDesc&#xA;@see&#x9;&#x9;ActivationGroupID&#xA;@since &#x9;1.2&#xA;" annotatedElement="468e88a1-24f3-4ee2-a524-436f97de1663"/>
              <generalization xmi:id="6a93cb2f-d748-4aa9-958b-cf43750996c2" isSubstitutable="true" general="492277dc-22fc-4399-a309-a8a3b4e56fb6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="94deaf65-af4d-44b1-a809-da8bd6b4c07c" name="ActivationMonitor" isAbstract="true">
              <ownedComment xmi:id="e21f4250-f98a-4bcf-b64d-0ee9b71a7983" body="An &lt;code>ActivationMonitor&lt;/code> is specific to an&#xA;&lt;code>ActivationGroup&lt;/code> and is obtained when a group is&#xA;reported active via a call to&#xA;&lt;code>ActivationSystem.activeGroup&lt;/code> (this is done&#xA;internally). An activation group is responsible for informing its&#xA;&lt;code>ActivationMonitor&lt;/code> when either: its objects become active or&#xA;inactive, or the group as a whole becomes inactive.&#xA;&#xA;@author &#x9;Ann Wollrath&#xA;@version&#x9;1.15, 12/19/03&#xA;@see&#x9;&#x9;Activator&#xA;@see&#x9;&#x9;ActivationSystem&#xA;@see &#x9;ActivationGroup&#xA;@since&#x9;1.2&#xA;" annotatedElement="94deaf65-af4d-44b1-a809-da8bd6b4c07c"/>
              <generalization xmi:id="f925483a-9b36-4b29-89bd-3de71b92375b" isSubstitutable="true" general="492277dc-22fc-4399-a309-a8a3b4e56fb6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="333c5b3a-daa7-4e3f-8fcd-457ef061fde9" name="ActivationID" clientDependency="07661084-6881-4c62-89d0-d29bf21ec1ff">
              <ownedComment xmi:id="91941534-b346-4f5c-b2a2-4192501fffde" body="Activation makes use of special identifiers to denote remote&#xA;objects that can be activated over time. An activation identifier&#xA;(an instance of the class &lt;code>ActivationID&lt;/code>) contains several&#xA;pieces of information needed for activating an object:&#xA;&lt;ul>&#xA;&lt;li> a remote reference to the object's activator (a {@link&#xA;java.rmi.server.RemoteRef RemoteRef}&#xA;instance), and&#xA;&lt;li> a unique identifier (a {@link java.rmi.server.UID UID}&#xA;instance) for the object. &lt;/ul> &lt;p>&#xA;&#xA;An activation identifier for an object can be obtained by registering&#xA;an object with the activation system. Registration is accomplished&#xA;in a few ways: &lt;ul>&#xA;&lt;li>via the &lt;code>Activatable.register&lt;/code> method&#xA;&lt;li>via the first &lt;code>Activatable&lt;/code> constructor (that takes&#xA;three arguments and both registers and exports the object, and&#xA;&lt;li>via the first &lt;code>Activatable.exportObject&lt;/code> method&#xA;that takes the activation descriptor, object and port as arguments;&#xA;this method both registers and exports the object. &lt;/ul>&#xA;&#xA;@author&#x9;Ann Wollrath&#xA;@version&#x9;1.28, 03/12/19&#xA;@see&#x9;&#x9;Activatable&#xA;@since&#x9;1.2&#xA;" annotatedElement="333c5b3a-daa7-4e3f-8fcd-457ef061fde9"/>
              <interfaceRealization xmi:id="07661084-6881-4c62-89d0-d29bf21ec1ff" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="333c5b3a-daa7-4e3f-8fcd-457ef061fde9" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e86234f8-d7eb-40b5-9ef3-c0075240c6e7" name="ActivationGroupID" clientDependency="1c7c7f03-762d-4c90-8475-5e08f31ce3bd">
              <ownedComment xmi:id="c03c9067-3852-457e-9882-ab19dfc89f01" body="The identifier for a registered activation group serves several&#xA;purposes: &lt;ul>&#xA;&lt;li>identifies the group uniquely within the activation system, and&#xA;&lt;li>contains a reference to the group's activation system so that the&#xA;group can contact its activation system when necessary.&lt;/ul>&lt;p>&#xA;&#xA;The &lt;code>ActivationGroupID&lt;/code> is returned from the call to&#xA;&lt;code>ActivationSystem.registerGroup&lt;/code> and is used to identify&#xA;the group within the activation system. This group id is passed&#xA;as one of the arguments to the activation group's special constructor&#xA;when an activation group is created/recreated.&#xA;&#xA;@author &#x9;Ann Wollrath&#xA;@version&#x9;1.15, 12/19/03&#xA;@see &#x9;ActivationGroup&#xA;@see&#x9;&#x9;ActivationGroupDesc&#xA;@since&#x9;1.2&#xA;" annotatedElement="e86234f8-d7eb-40b5-9ef3-c0075240c6e7"/>
              <interfaceRealization xmi:id="1c7c7f03-762d-4c90-8475-5e08f31ce3bd" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="e86234f8-d7eb-40b5-9ef3-c0075240c6e7" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d711c1da-7c30-4129-bbd2-e6ae498cfc8e" name="ActivationDesc" clientDependency="793ce0b9-fa73-439d-b391-4654d709d617" isLeaf="true">
              <ownedComment xmi:id="ec10445c-dd8f-404a-a48d-1c6e20f7d648" body="An activation descriptor contains the information necessary to&#xA;activate an object: &lt;ul>&#xA;&lt;li> the object's group identifier,&#xA;&lt;li> the object's fully-qualified class name,&#xA;&lt;li> the object's code location (the location of the class), a codebase URL&#xA;path,&#xA;&lt;li> the object's restart &quot;mode&quot;, and,&#xA;&lt;li> a &quot;marshalled&quot; object that can contain object specific&#xA;initialization data. &lt;/ul>&#xA;&#xA;&lt;p>A descriptor registered with the activation system can be used to&#xA;recreate/activate the object specified by the descriptor. The&#xA;&lt;code>MarshalledObject&lt;/code> in the object's descriptor is passed&#xA;as the second argument to the remote object's constructor for&#xA;object to use during reinitialization/activation.&#xA;&#xA;@author &#x9;Ann Wollrath&#xA;@version&#x9;1.27, 12/19/03&#xA;@since &#x9;1.2&#xA;@see         java.rmi.activation.Activatable&#xA;" annotatedElement="d711c1da-7c30-4129-bbd2-e6ae498cfc8e"/>
              <interfaceRealization xmi:id="793ce0b9-fa73-439d-b391-4654d709d617" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="d711c1da-7c30-4129-bbd2-e6ae498cfc8e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a2fd3df8-909c-495b-9589-ca08a53f8147" name="ActivationGroupDesc" clientDependency="2b3057c9-4efd-45c6-9c5e-0039d6625d5e" isLeaf="true">
              <ownedComment xmi:id="6a2105ca-f35a-4312-a792-33817370611a" body="An activation group descriptor contains the information necessary to&#xA;create/recreate an activation group in which to activate objects.&#xA;Such a descriptor contains: &lt;ul>&#xA;&lt;li> the group's class name,&#xA;&lt;li> the group's code location (the location of the group's class), and&#xA;&lt;li> a &quot;marshalled&quot; object that can contain group specific&#xA;initialization data. &lt;/ul> &lt;p>&#xA;&#xA;The group's class must be a concrete subclass of&#xA;&lt;code>ActivationGroup&lt;/code>. A subclass of&#xA;&lt;code>ActivationGroup&lt;/code> is created/recreated via the&#xA;&lt;code>ActivationGroup.createGroup&lt;/code> static method that invokes&#xA;a special constructor that takes two arguments: &lt;ul>&#xA;&#xA;&lt;li> the group's &lt;code>ActivationGroupID&lt;/code>, and&#xA;&lt;li> the group's initialization data (in a&#xA;&lt;code>java.rmi.MarshalledObject&lt;/code>)&lt;/ul>&lt;p>&#xA;&#xA;@version&#x9;1.28, 12/19/03&#xA;@author&#x9;Ann Wollrath&#xA;@since&#x9;1.2&#xA;@see&#x9;&#x9;ActivationGroup&#xA;@see&#x9;&#x9;ActivationGroupID&#xA;" annotatedElement="a2fd3df8-909c-495b-9589-ca08a53f8147"/>
              <interfaceRealization xmi:id="2b3057c9-4efd-45c6-9c5e-0039d6625d5e" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="a2fd3df8-909c-495b-9589-ca08a53f8147" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="daabce16-4495-40a6-8082-ab13af06c367" name="CommandEnvironment" clientDependency="a0ab3c1c-f397-458a-aa10-55f8088160b6">
                <ownedComment xmi:id="a9779022-2240-4a35-9191-ecb156d24e55" body="Startup options for ActivationGroup implementations.&#xA;&#xA;This class allows overriding default system properties and&#xA;specifying implementation-defined options for ActivationGroups.&#xA;@since 1.2&#xA;" annotatedElement="daabce16-4495-40a6-8082-ab13af06c367"/>
                <interfaceRealization xmi:id="a0ab3c1c-f397-458a-aa10-55f8088160b6" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="daabce16-4495-40a6-8082-ab13af06c367" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9fc0e0fc-48db-4929-be75-2e0b1ecb3fa9" name="UnknownGroupException">
              <ownedComment xmi:id="5437cc97-f0c2-4f1d-8594-996499efb5fe" body="An &lt;code>UnknownGroupException&lt;/code> is thrown by methods of classes and&#xA;interfaces in the &lt;code>java.rmi.activation&lt;/code> package when the&#xA;&lt;code>ActivationGroupID&lt;/code> parameter to the method is determined to be&#xA;invalid, i.e., not known by the &lt;code>ActivationSystem&lt;/code>.  An&#xA;&lt;code>UnknownGroupException&lt;/code> is also thrown if the&#xA;&lt;code>ActivationGroupID&lt;/code> in an &lt;code>ActivationDesc&lt;/code> refers to&#xA;a group that is not registered with the &lt;code>ActivationSystem&lt;/code>&#xA;&#xA;@version 1.13, 12/19/03&#xA;@author  Ann Wollrath&#xA;@since   1.2&#xA;@see     java.rmi.activation.Activatable&#xA;@see     java.rmi.activation.ActivationGroup&#xA;@see     java.rmi.activation.ActivationGroupID&#xA;@see     java.rmi.activation.ActivationMonitor&#xA;@see     java.rmi.activation.ActivationSystem&#xA;" annotatedElement="9fc0e0fc-48db-4929-be75-2e0b1ecb3fa9"/>
              <generalization xmi:id="7367d832-dc5f-4126-b96c-af7e34c2047d" isSubstitutable="true" general="878e12c1-d7cc-4c91-b147-ad6228eaedd2"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="452615b4-cf0f-4cb3-a6d4-5b9c4764761d" name="ActivationGroup" clientDependency="a83a0916-154b-4b61-b992-e458a0530357" isAbstract="true">
              <ownedComment xmi:id="ddbf4716-d758-47e9-aa9e-b1b4f3b81e7a" body="An &lt;code>ActivationGroup&lt;/code> is responsible for creating new&#xA;instances of &quot;activatable&quot; objects in its group, informing its&#xA;&lt;code>ActivationMonitor&lt;/code> when either: its object's become&#xA;active or inactive, or the group as a whole becomes inactive. &lt;p>&#xA;&#xA;An &lt;code>ActivationGroup&lt;/code> is &lt;i>initially&lt;/i> created in one&#xA;of several ways: &lt;ul>&#xA;&lt;li>as a side-effect of creating an &lt;code>ActivationDesc&lt;/code>&#xA;without an explicit &lt;code>ActivationGroupID&lt;/code> for the&#xA;first activatable object in the group, or&#xA;&lt;li>via the &lt;code>ActivationGroup.createGroup&lt;/code> method&#xA;&lt;li>as a side-effect of activating the first object in a group&#xA;whose &lt;code>ActivationGroupDesc&lt;/code> was only registered.&lt;/ul>&lt;p>&#xA;&#xA;Only the activator can &lt;i>recreate&lt;/i> an&#xA;&lt;code>ActivationGroup&lt;/code>.  The activator spawns, as needed, a&#xA;separate VM (as a child process, for example) for each registered&#xA;activation group and directs activation requests to the appropriate&#xA;group. It is implementation specific how VMs are spawned. An&#xA;activation group is created via the&#xA;&lt;code>ActivationGroup.createGroup&lt;/code> static method. The&#xA;&lt;code>createGroup&lt;/code> method has two requirements on the group&#xA;to be created: 1) the group must be a concrete subclass of&#xA;&lt;code>ActivationGroup&lt;/code>, and 2) the group must have a&#xA;constructor that takes two arguments:&#xA;&#xA;&lt;ul>&#xA;&lt;li> the group's &lt;code>ActivationGroupID&lt;/code>, and&#xA;&lt;li> the group's initialization data (in a&#xA;&lt;code>java.rmi.MarshalledObject&lt;/code>)&lt;/ul>&lt;p>&#xA;&#xA;When created, the default implementation of&#xA;&lt;code>ActivationGroup&lt;/code> will override the system properties&#xA;with the properties requested when its&#xA;&lt;code>ActivationGroupDesc&lt;/code> was created, and will set a&#xA;&lt;code>java.rmi.RMISecurityManager&lt;/code> as the default system&#xA;security manager.  If your application requires specific properties&#xA;to be set when objects are activated in the group, the application&#xA;should create a special &lt;code>Properties&lt;/code> object containing&#xA;these properties, then create an &lt;code>ActivationGroupDesc&lt;/code>&#xA;with the &lt;code>Properties&lt;/code> object, and use&#xA;&lt;code>ActivationGroup.createGroup&lt;/code> before creating any&#xA;&lt;code>ActivationDesc&lt;/code>s (before the default&#xA;&lt;code>ActivationGroupDesc&lt;/code> is created).  If your application&#xA;requires the use of a security manager other than&#xA;&lt;code>java.rmi.RMISecurityManager&lt;/code>, in the&#xA;ActivativationGroupDescriptor properties list you can set&#xA;&lt;code>java.security.manager&lt;/code> property to the name of the security&#xA;manager you would like to install.&#xA;&#xA;@author &#x9;Ann Wollrath&#xA;@version&#x9;1.44, 03/12/19&#xA;@see &#x9;ActivationInstantiator&#xA;@see&#x9;&#x9;ActivationGroupDesc&#xA;@see&#x9;&#x9;ActivationGroupID&#xA;@since&#x9;1.2&#xA;" annotatedElement="452615b4-cf0f-4cb3-a6d4-5b9c4764761d"/>
              <generalization xmi:id="41e20e8b-8a71-487f-87b0-961706d0b24d" isSubstitutable="true" general="fce948d6-0252-4de0-b563-0113bdb9b3da"/>
              <interfaceRealization xmi:id="a83a0916-154b-4b61-b992-e458a0530357" name="" supplier="f3a515aa-2028-4561-b54b-2b1cf8e208c0" client="452615b4-cf0f-4cb3-a6d4-5b9c4764761d" contract="f3a515aa-2028-4561-b54b-2b1cf8e208c0"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="aa2a7314-50ea-4dba-af43-e7ded60cae24" name="ActivationSystem" isAbstract="true">
              <ownedComment xmi:id="3d271ea4-3ed3-452f-8e0c-8862b867235e" body="The &lt;code>ActivationSystem&lt;/code> provides a means for registering&#xA;groups and &quot;activatable&quot; objects to be activated within those groups.&#xA;The &lt;code>ActivationSystem&lt;/code> works closely with the&#xA;&lt;code>Activator&lt;/code>, which activates objects registered via the&#xA;&lt;code>ActivationSystem&lt;/code>, and the &lt;code>ActivationMonitor&lt;/code>,&#xA;which obtains information about active and inactive objects,&#xA;and inactive groups.&#xA;&#xA;@author &#x9;Ann Wollrath&#xA;@version&#x9;1.18, 12/19/03&#xA;@see&#x9;&#x9;Activator&#xA;@see&#x9;&#x9;ActivationMonitor&#xA;@since&#x9;1.2&#xA;" annotatedElement="aa2a7314-50ea-4dba-af43-e7ded60cae24"/>
              <generalization xmi:id="5f2a41b2-ea1d-4411-85c3-17aa71053121" isSubstitutable="true" general="492277dc-22fc-4399-a309-a8a3b4e56fb6"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7a10ce9f-97e9-44e0-ae33-20d333107e48" name="NoSuchObjectException">
            <ownedComment xmi:id="cd85c41a-41b0-4bf5-9f15-6a6423a3ba0c" body="A &lt;code>NoSuchObjectException&lt;/code> is thrown if an attempt is made to&#xA;invoke a method on an object that no longer exists in the remote virtual&#xA;machine.  If a &lt;code>NoSuchObjectException&lt;/code> occurs attempting to&#xA;invoke a method on a remote object, the call may be retransmitted and still&#xA;preserve RMI's &quot;at most once&quot; call semantics.&#xA;&#xA;A &lt;code>NoSuchObjectException&lt;/code> is also thrown by the method&#xA;&lt;code>java.rmi.server.RemoteObject.toStub&lt;/code> and by the&#xA;&lt;code>unexportObject&lt;/code> methods of&#xA;&lt;code>java.rmi.server.UnicastRemoteObject&lt;/code> and&#xA;&lt;code>java.rmi.activation.Activatable&lt;/code> and&#xA;&#xA;@version 1.12, 12/19/03&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;@see     java.rmi.server.RemoteObject#toStub(Remote)&#xA;@see     java.rmi.server.UnicastRemoteObject#unexportObject(Remote,boolean)&#xA;@see     java.rmi.activation.Activatable#unexportObject(Remote,boolean)&#xA;" annotatedElement="7a10ce9f-97e9-44e0-ae33-20d333107e48"/>
            <generalization xmi:id="cacb9bb2-cf15-4f1d-a76a-469144894a9b" isSubstitutable="true" general="517e9e16-9b01-417d-9842-1e44401e7654"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5720397b-3bb9-4655-8c3c-436eafcbf458" name="StubNotFoundException">
            <ownedComment xmi:id="61b10422-4566-4a55-b26a-250ae83c340b" body="A &lt;code>StubNotFoundException&lt;/code> is thrown if a valid stub class&#xA;could not be found for a remote object when it is exported.&#xA;A &lt;code>StubNotFoundException&lt;/code> may also be&#xA;thrown when an activatable object is registered via the&#xA;&lt;code>java.rmi.activation.Activatable.register&lt;/code> method.&#xA;&#xA;@version 1.16, 12/19/03&#xA;@author  Roger Riggs&#xA;@since   JDK1.1&#xA;@see&#x9;    java.rmi.server.UnicastRemoteObject&#xA;@see     java.rmi.activation.Activatable&#xA;" annotatedElement="5720397b-3bb9-4655-8c3c-436eafcbf458"/>
            <generalization xmi:id="ee2e746b-d759-474f-8c71-f35b61e1f216" isSubstitutable="true" general="517e9e16-9b01-417d-9842-1e44401e7654"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e5514bc6-28f6-4f86-aad5-98a74f0c0d67" name="ServerRuntimeException">
            <ownedComment xmi:id="2fffdd7a-30d8-4e14-acab-14a5f36a02bd" body="From a server executing on JDK&amp;nbsp;1.1, a&#xA;&lt;code>ServerRuntimeException&lt;/code> is thrown as a result of a&#xA;remote method invocation when a &lt;code>RuntimeException&lt;/code> is&#xA;thrown while processing the invocation on the server, either while&#xA;unmarshalling the arguments, executing the remote method itself, or&#xA;marshalling the return value.&#xA;&#xA;A &lt;code>ServerRuntimeException&lt;/code> instance contains the original&#xA;&lt;code>RuntimeException&lt;/code> that occurred as its cause.&#xA;&#xA;&lt;p>A &lt;code>ServerRuntimeException&lt;/code> is not thrown from servers&#xA;executing on the Java 2 platform v1.2 or later versions.&#xA;&#xA;@version 1.18, 05/18/04&#xA;@author  Ann Wollrath&#xA;@since   JDK1.1&#xA;@deprecated no replacement&#xA;" annotatedElement="e5514bc6-28f6-4f86-aad5-98a74f0c0d67"/>
            <generalization xmi:id="6784557a-071e-45e8-aea8-d0d1491a3806" isSubstitutable="true" general="517e9e16-9b01-417d-9842-1e44401e7654"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="82b85386-0d39-4150-be09-636d14dadbc6" name="io">
          <packagedElement xmi:type="uml:Class" xmi:id="4b0cb684-2329-4f70-b7f3-756d299bb0cd" name="FileReader">
            <ownedComment xmi:id="042a24a2-facb-4537-8404-be1a5e10d4df" body="Convenience class for reading character files.  The constructors of this&#xA;class assume that the default character encoding and the default byte-buffer&#xA;size are appropriate.  To specify these values yourself, construct an&#xA;InputStreamReader on a FileInputStream.&#xA;&#xA;&lt;p>&lt;code>FileReader&lt;/code> is meant for reading streams of characters.&#xA;For reading streams of raw bytes, consider using a&#xA;&lt;code>FileInputStream&lt;/code>.&#xA;&#xA;@see InputStreamReader&#xA;@see FileInputStream&#xA;&#xA;@version &#x9;1.15, 03/12/19&#xA;@author&#x9;Mark Reinhold&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="4b0cb684-2329-4f70-b7f3-756d299bb0cd"/>
            <generalization xmi:id="cca32f0e-286a-4236-bc73-1d3c6882feff" isSubstitutable="true" general="9d38e70c-6f67-4630-81da-85074afad01d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d51484e0-bb9d-4cf9-90de-366df8cfdbdf" name="NotActiveException">
            <ownedComment xmi:id="53f90460-12df-463a-bfb3-64fb0af03453" body="Thrown when serialization or deserialization is not active.&#xA;&#xA;@author  unascribed&#xA;@version 1.15, 12/19/03&#xA;@since   JDK1.1&#xA;" annotatedElement="d51484e0-bb9d-4cf9-90de-366df8cfdbdf"/>
            <generalization xmi:id="823f81e9-4015-4252-a188-f990a81ac5a7" isSubstitutable="true" general="c8bb47d3-d8cf-429d-98af-49f9addcd3b5"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="10429eb4-c033-4137-893d-aa9805e629e6" name="Win32FileSystem" visibility="package">
            <generalization xmi:id="a320d876-1edf-45b2-8be3-109eafeddddd" isSubstitutable="true" general="e5f9c3aa-74b9-4ddc-a346-004ffae8691e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7a686abe-9466-4bc2-9754-c07d2a36c062" name="PipedWriter">
            <ownedComment xmi:id="f825c175-1b97-411d-9d56-f0244f5c244b" body="Piped character-output streams.&#xA;&#xA;@version &#x9;1.16, 03/12/19&#xA;@author&#x9;Mark Reinhold&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="7a686abe-9466-4bc2-9754-c07d2a36c062"/>
            <generalization xmi:id="9b9ab90f-b6e1-47bd-addf-11ddd6a69bec" isSubstitutable="true" general="35b577c4-0d70-4803-924a-56617a83af53"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e9593e91-73f9-4053-a385-0c0d2a6d3b84" name="OutputStreamWriter">
            <ownedComment xmi:id="141e25fa-26b0-464e-a45d-84d600fabaef" body="An OutputStreamWriter is a bridge from character streams to byte streams:&#xA;Characters written to it are encoded into bytes using a specified {@link&#xA;java.nio.charset.Charset &lt;code>charset&lt;/code>}.  The charset that it uses&#xA;may be specified by name or may be given explicitly, or the platform's&#xA;default charset may be accepted.&#xA;&#xA;&lt;p> Each invocation of a write() method causes the encoding converter to be&#xA;invoked on the given character(s).  The resulting bytes are accumulated in a&#xA;buffer before being written to the underlying output stream.  The size of&#xA;this buffer may be specified, but by default it is large enough for most&#xA;purposes.  Note that the characters passed to the write() methods are not&#xA;buffered.&#xA;&#xA;&lt;p> For top efficiency, consider wrapping an OutputStreamWriter within a&#xA;BufferedWriter so as to avoid frequent converter invocations.  For example:&#xA;&#xA;&lt;pre>&#xA;Writer out&#xA;= new BufferedWriter(new OutputStreamWriter(System.out));&#xA;&lt;/pre>&#xA;&#xA;&lt;p> A &lt;i>surrogate pair&lt;/i> is a character represented by a sequence of two&#xA;&lt;tt>char&lt;/tt> values: A &lt;i>high&lt;/i> surrogate in the range '&amp;#92;uD800' to&#xA;'&amp;#92;uDBFF' followed by a &lt;i>low&lt;/i> surrogate in the range '&amp;#92;uDC00' to&#xA;'&amp;#92;uDFFF'.  If the character represented by a surrogate pair cannot be&#xA;encoded by a given charset then a charset-dependent &lt;i>substitution&#xA;sequence&lt;/i> is written to the output stream.&#xA;&#xA;&lt;p> A &lt;i>malformed surrogate element&lt;/i> is a high surrogate that is not&#xA;followed by a low surrogate or a low surrogate that is not preceded by a&#xA;high surrogate.  It is illegal to attempt to write a character stream&#xA;containing malformed surrogate elements.  The behavior of an instance of&#xA;this class when a malformed surrogate element is written is not specified.&#xA;&#xA;@see BufferedWriter&#xA;@see OutputStream&#xA;@see java.nio.charset.Charset&#xA;&#xA;@version &#x9;1.47, 04/01/12&#xA;@author&#x9;Mark Reinhold&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="e9593e91-73f9-4053-a385-0c0d2a6d3b84"/>
            <generalization xmi:id="403e7819-be5f-4c1d-9f08-19cdc6ce9c5e" isSubstitutable="true" general="35b577c4-0d70-4803-924a-56617a83af53"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8ae1b7fb-68c9-448f-81e0-21b0fc71f647" name="CharArrayWriter">
            <ownedComment xmi:id="7a604027-ca77-473f-9f56-faceecc407ef" body="This class implements a character buffer that can be used as an Writer.&#xA;The buffer automatically grows when data is written to the stream.  The data&#xA;can be retrieved using toCharArray() and toString().&#xA;&lt;P>&#xA;Note: Invoking close() on this class has no effect, and methods&#xA;of this class can be called after the stream has closed&#xA;without generating an IOException.&#xA;&#xA;@author&#x9;Herb Jellinek&#xA;@version &#x9;1.23, 07/16/04&#xA;@since       JDK1.1&#xA;" annotatedElement="8ae1b7fb-68c9-448f-81e0-21b0fc71f647"/>
            <generalization xmi:id="169529f5-b109-4d95-98ae-a8f5d8072e50" isSubstitutable="true" general="35b577c4-0d70-4803-924a-56617a83af53"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c80fac1d-b66c-4e70-9270-e2d8f396a193" name="BufferedReader">
            <ownedComment xmi:id="b7b958dd-7092-445f-98cd-15ad473c26fb" body="Read text from a character-input stream, buffering characters so as to&#xA;provide for the efficient reading of characters, arrays, and lines.&#xA;&#xA;&lt;p> The buffer size may be specified, or the default size may be used.  The&#xA;default is large enough for most purposes.&#xA;&#xA;&lt;p> In general, each read request made of a Reader causes a corresponding&#xA;read request to be made of the underlying character or byte stream.  It is&#xA;therefore advisable to wrap a BufferedReader around any Reader whose read()&#xA;operations may be costly, such as FileReaders and InputStreamReaders.  For&#xA;example,&#xA;&#xA;&lt;pre>&#xA;BufferedReader in&#xA;= new BufferedReader(new FileReader(&quot;foo.in&quot;));&#xA;&lt;/pre>&#xA;&#xA;will buffer the input from the specified file.  Without buffering, each&#xA;invocation of read() or readLine() could cause bytes to be read from the&#xA;file, converted into characters, and then returned, which can be very&#xA;inefficient.&#xA;&#xA;&lt;p> Programs that use DataInputStreams for textual input can be localized by&#xA;replacing each DataInputStream with an appropriate BufferedReader.&#xA;&#xA;@see FileReader&#xA;@see InputStreamReader&#xA;&#xA;@version &#x9;1.33, 04/01/12&#xA;@author&#x9;Mark Reinhold&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="c80fac1d-b66c-4e70-9270-e2d8f396a193"/>
            <generalization xmi:id="5f455979-5d51-4b11-add8-4651b0f74c71" isSubstitutable="true" general="b0f73dc4-f4ae-458e-ab18-465c97ad98ba"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="3c998d9c-d5c5-4e4f-b879-d51904b00107" name="Closeable" isAbstract="true">
            <ownedComment xmi:id="7b286abe-cbe9-4065-ae08-1bdb4b956439" body="A &lt;tt>Closeable&lt;/tt> is a source or destination of data that can be closed.&#xA;The close method is invoked to release resources that the object is&#xA;holding (such as open files).&#xA;&#xA;@version 1.4 03/12/19&#xA;@since 1.5&#xA;" annotatedElement="3c998d9c-d5c5-4e4f-b879-d51904b00107"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="7165ed11-3cde-4096-a89b-dbd8a8ce50e0" name="FilenameFilter" isAbstract="true">
            <ownedComment xmi:id="fe366723-1661-4c1c-8a6e-ee8f9c2349ae" body="Instances of classes that implement this interface are used to&#xA;filter filenames. These instances are used to filter directory&#xA;listings in the &lt;code>list&lt;/code> method of class&#xA;&lt;code>File&lt;/code>, and by the Abstract Window Toolkit's file&#xA;dialog component.&#xA;&#xA;@author  Arthur van Hoff&#xA;@author  Jonathan Payne&#xA;@version 1.23, 12/19/03&#xA;@see     java.awt.FileDialog#setFilenameFilter(java.io.FilenameFilter)&#xA;@see     java.io.File&#xA;@see     java.io.File#list(java.io.FilenameFilter)&#xA;@since   JDK1.0&#xA;" annotatedElement="7165ed11-3cde-4096-a89b-dbd8a8ce50e0"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f1860663-8211-4e4f-a530-51ecbce220fd" name="ExpiringCache" visibility="package">
            <nestedClassifier xmi:type="uml:Class" xmi:id="fe8d19d8-f598-4d49-b6d9-26fc84eba5dd" name="Entry" visibility="package"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="7318f315-7cf5-4cfc-91a2-727624996aca" name="ObjectInputValidation" isAbstract="true">
            <ownedComment xmi:id="6a42f736-3681-4e92-a3a1-7b0be2dc7514" body="Callback interface to allow validation of objects within a graph.&#xA;Allows an object to be called when a complete graph of objects has&#xA;been deserialized.&#xA;&#xA;@author  unascribed&#xA;@version 1.18, 12/19/03&#xA;@see     ObjectInputStream&#xA;@see     ObjectInputStream#registerValidation(java.io.ObjectInputValidation, int)&#xA;@since   JDK1.1&#xA;" annotatedElement="7318f315-7cf5-4cfc-91a2-727624996aca"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="eca630bd-67e2-45fc-afac-de0b42be103a" name="ObjectInputStream" clientDependency="29622630-5063-489d-9e22-3c65dea56f32 7dfd5bd6-8854-42fa-9c43-d2d4c2c26e70">
            <ownedComment xmi:id="fc780eda-a7c2-4cb3-a8df-a65078d7c421" body="An ObjectInputStream deserializes primitive data and objects previously&#xA;written using an ObjectOutputStream.&#xA;&#xA;&lt;p>ObjectOutputStream and ObjectInputStream can provide an application with&#xA;persistent storage for graphs of objects when used with a FileOutputStream&#xA;and FileInputStream respectively.  ObjectInputStream is used to recover&#xA;those objects previously serialized. Other uses include passing objects&#xA;between hosts using a socket stream or for marshaling and unmarshaling&#xA;arguments and parameters in a remote communication system.&#xA;&#xA;&lt;p>ObjectInputStream ensures that the types of all objects in the graph&#xA;created from the stream match the classes present in the Java Virtual&#xA;Machine.  Classes are loaded as required using the standard mechanisms.&#xA;&#xA;&lt;p>Only objects that support the java.io.Serializable or&#xA;java.io.Externalizable interface can be read from streams.&#xA;&#xA;&lt;p>The method &lt;code>readObject&lt;/code> is used to read an object from the&#xA;stream.  Java's safe casting should be used to get the desired type.  In&#xA;Java, strings and arrays are objects and are treated as objects during&#xA;serialization. When read they need to be cast to the expected type.&#xA;&#xA;&lt;p>Primitive data types can be read from the stream using the appropriate&#xA;method on DataInput.&#xA;&#xA;&lt;p>The default deserialization mechanism for objects restores the contents&#xA;of each field to the value and type it had when it was written.  Fields&#xA;declared as transient or static are ignored by the deserialization process.&#xA;References to other objects cause those objects to be read from the stream&#xA;as necessary.  Graphs of objects are restored correctly using a reference&#xA;sharing mechanism.  New objects are always allocated when deserializing,&#xA;which prevents existing objects from being overwritten.&#xA;&#xA;&lt;p>Reading an object is analogous to running the constructors of a new&#xA;object.  Memory is allocated for the object and initialized to zero (NULL).&#xA;No-arg constructors are invoked for the non-serializable classes and then&#xA;the fields of the serializable classes are restored from the stream starting&#xA;with the serializable class closest to java.lang.object and finishing with&#xA;the object's most specific class.&#xA;&#xA;&lt;p>For example to read from a stream as written by the example in&#xA;ObjectOutputStream:&#xA;&lt;br>&#xA;&lt;pre>&#xA;FileInputStream fis = new FileInputStream(&quot;t.tmp&quot;);&#xA;ObjectInputStream ois = new ObjectInputStream(fis);&#xA;&#xA;int i = ois.readInt();&#xA;String today = (String) ois.readObject();&#xA;Date date = (Date) ois.readObject();&#xA;&#xA;ois.close();&#xA;&lt;/pre>&#xA;&#xA;&lt;p>Classes control how they are serialized by implementing either the&#xA;java.io.Serializable or java.io.Externalizable interfaces.&#xA;&#xA;&lt;p>Implementing the Serializable interface allows object serialization to&#xA;save and restore the entire state of the object and it allows classes to&#xA;evolve between the time the stream is written and the time it is read.  It&#xA;automatically traverses references between objects, saving and restoring&#xA;entire graphs.&#xA;&#xA;&lt;p>Serializable classes that require special handling during the&#xA;serialization and deserialization process should implement the following&#xA;methods:&lt;p>&#xA;&#xA;&lt;pre>&#xA;private void writeObject(java.io.ObjectOutputStream stream)&#xA;throws IOException;&#xA;private void readObject(java.io.ObjectInputStream stream)&#xA;throws IOException, ClassNotFoundException;&#xA;private void readObjectNoData()&#xA;throws ObjectStreamException;&#xA;&lt;/pre>&#xA;&#xA;&lt;p>The readObject method is responsible for reading and restoring the state&#xA;of the object for its particular class using data written to the stream by&#xA;the corresponding writeObject method.  The method does not need to concern&#xA;itself with the state belonging to its superclasses or subclasses.  State is&#xA;restored by reading data from the ObjectInputStream for the individual&#xA;fields and making assignments to the appropriate fields of the object.&#xA;Reading primitive data types is supported by DataInput.&#xA;&#xA;&lt;p>Any attempt to read object data which exceeds the boundaries of the&#xA;custom data written by the corresponding writeObject method will cause an&#xA;OptionalDataException to be thrown with an eof field value of true.&#xA;Non-object reads which exceed the end of the allotted data will reflect the&#xA;end of data in the same way that they would indicate the end of the stream:&#xA;bytewise reads will return -1 as the byte read or number of bytes read, and&#xA;primitive reads will throw EOFExceptions.  If there is no corresponding&#xA;writeObject method, then the end of default serialized data marks the end of&#xA;the allotted data.&#xA;&#xA;&lt;p>Primitive and object read calls issued from within a readExternal method&#xA;behave in the same manner--if the stream is already positioned at the end of&#xA;data written by the corresponding writeExternal method, object reads will&#xA;throw OptionalDataExceptions with eof set to true, bytewise reads will&#xA;return -1, and primitive reads will throw EOFExceptions.  Note that this&#xA;behavior does not hold for streams written with the old&#xA;&lt;code>ObjectStreamConstants.PROTOCOL_VERSION_1&lt;/code> protocol, in which the&#xA;end of data written by writeExternal methods is not demarcated, and hence&#xA;cannot be detected.&#xA;&#xA;&lt;p>The readObjectNoData method is responsible for initializing the state of&#xA;the object for its particular class in the event that the serialization&#xA;stream does not list the given class as a superclass of the object being&#xA;deserialized.  This may occur in cases where the receiving party uses a&#xA;different version of the deserialized instance's class than the sending&#xA;party, and the receiver's version extends classes that are not extended by&#xA;the sender's version.  This may also occur if the serialization stream has&#xA;been tampered; hence, readObjectNoData is useful for initializing&#xA;deserialized objects properly despite a &quot;hostile&quot; or incomplete source&#xA;stream.&#xA;&#xA;&lt;p>Serialization does not read or assign values to the fields of any object&#xA;that does not implement the java.io.Serializable interface.  Subclasses of&#xA;Objects that are not serializable can be serializable. In this case the&#xA;non-serializable class must have a no-arg constructor to allow its fields to&#xA;be initialized.  In this case it is the responsibility of the subclass to&#xA;save and restore the state of the non-serializable class. It is frequently&#xA;the case that the fields of that class are accessible (public, package, or&#xA;protected) or that there are get and set methods that can be used to restore&#xA;the state.&#xA;&#xA;&lt;p>Any exception that occurs while deserializing an object will be caught by&#xA;the ObjectInputStream and abort the reading process.&#xA;&#xA;&lt;p>Implementing the Externalizable interface allows the object to assume&#xA;complete control over the contents and format of the object's serialized&#xA;form.  The methods of the Externalizable interface, writeExternal and&#xA;readExternal, are called to save and restore the objects state.  When&#xA;implemented by a class they can write and read their own state using all of&#xA;the methods of ObjectOutput and ObjectInput.  It is the responsibility of&#xA;the objects to handle any versioning that occurs.&#xA;&#xA;&lt;p>Enum constants are deserialized differently than ordinary serializable or&#xA;externalizable objects.  The serialized form of an enum constant consists&#xA;solely of its name; field values of the constant are not transmitted.  To&#xA;deserialize an enum constant, ObjectInputStream reads the constant name from&#xA;the stream; the deserialized constant is then obtained by calling the static&#xA;method &lt;code>Enum.valueOf(Class, String)&lt;/code> with the enum constant's&#xA;base type and the received constant name as arguments.  Like other&#xA;serializable or externalizable objects, enum constants can function as the&#xA;targets of back references appearing subsequently in the serialization&#xA;stream.  The process by which enum constants are deserialized cannot be&#xA;customized: any class-specific readObject, readObjectNoData, and readResolve&#xA;methods defined by enum types are ignored during deserialization.&#xA;Similarly, any serialPersistentFields or serialVersionUID field declarations&#xA;are also ignored--all enum types have a fixed serialVersionUID of 0L.&#xA;&#xA;@author&#x9;Mike Warres&#xA;@author&#x9;Roger Riggs&#xA;@version 1.155, 04/05/28&#xA;@see java.io.DataInput&#xA;@see java.io.ObjectOutputStream&#xA;@see java.io.Serializable&#xA;@see &lt;a href=&quot;../../../guide/serialization/spec/input.doc.html&quot;> Object Serialization Specification, Section 3, Object Input Classes&lt;/a>&#xA;@since   JDK1.1&#xA;" annotatedElement="eca630bd-67e2-45fc-afac-de0b42be103a"/>
            <generalization xmi:id="38a2f90d-8f95-4f9f-a465-ede165bd0ed2" isSubstitutable="true" general="ee3aaef0-e959-4cca-9d5d-9bd2a90ad7dd"/>
            <interfaceRealization xmi:id="29622630-5063-489d-9e22-3c65dea56f32" name="" supplier="70616134-a7cf-49d5-b279-7f6c1e02cee1" client="eca630bd-67e2-45fc-afac-de0b42be103a" contract="70616134-a7cf-49d5-b279-7f6c1e02cee1"/>
            <interfaceRealization xmi:id="7dfd5bd6-8854-42fa-9c43-d2d4c2c26e70" name="" supplier="a73a17a3-16fe-47de-9f4c-129ce810e861" client="eca630bd-67e2-45fc-afac-de0b42be103a" contract="a73a17a3-16fe-47de-9f4c-129ce810e861"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="aff85873-ee87-40b2-a598-8790b4ea7b57" name="GetField" isAbstract="true">
              <ownedComment xmi:id="f9c9a58b-f458-4e29-8c0d-f807536a97af" body="Provide access to the persistent fields read from the input stream.&#xA;" annotatedElement="aff85873-ee87-40b2-a598-8790b4ea7b57"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="384f3c90-e808-4933-9501-1314801bbfdc" name="GetFieldImpl" visibility="private">
              <ownedComment xmi:id="e3e0b093-9390-4629-a9b3-de593909af17" body="Default GetField implementation.&#xA;" annotatedElement="384f3c90-e808-4933-9501-1314801bbfdc"/>
              <generalization xmi:id="5252468a-692c-4abf-a336-6533b8305673" isSubstitutable="true" general="aff85873-ee87-40b2-a598-8790b4ea7b57"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ca2ec4d5-9091-4197-b60b-880118aa9073" name="ValidationList" visibility="private">
              <ownedComment xmi:id="f8d0d657-3fe4-4ac1-977b-7ae4e58a3273" body="Prioritized list of callbacks to be performed once object graph has been&#xA;completely deserialized.&#xA;" annotatedElement="ca2ec4d5-9091-4197-b60b-880118aa9073"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="1c951f4c-efde-4a19-9705-9f5fa994c185" name="Callback" visibility="private"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="035ec378-4562-42d0-b37b-6c2d4930dc53" name="PeekInputStream" visibility="private">
              <ownedComment xmi:id="2b798544-9c49-4392-8537-a472527774a6" body="Input stream supporting single-byte peek operations.&#xA;" annotatedElement="035ec378-4562-42d0-b37b-6c2d4930dc53"/>
              <generalization xmi:id="72ba8ced-9e7c-4b2b-9810-16a65bfc468a" isSubstitutable="true" general="ee3aaef0-e959-4cca-9d5d-9bd2a90ad7dd"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="f14fba82-9d59-4090-8d27-5527fc212ed4" name="BlockDataInputStream" visibility="private" clientDependency="3f2dafac-5a18-4ab8-b529-d566d088cef3">
              <ownedComment xmi:id="2be2d9d3-cd65-4ac9-adc9-ddf97fbd8aa2" body="Input stream with two modes: in default mode, inputs data written in the&#xA;same format as DataOutputStream; in &quot;block data&quot; mode, inputs data&#xA;bracketed by block data markers (see object serialization specification&#xA;for details).  Buffering depends on block data mode: when in default&#xA;mode, no data is buffered in advance; when in block data mode, all data&#xA;for the current data block is read in at once (and buffered).&#xA;" annotatedElement="f14fba82-9d59-4090-8d27-5527fc212ed4"/>
              <generalization xmi:id="212ffbb1-f1dd-4cfe-a4fb-4b7547d8f342" isSubstitutable="true" general="ee3aaef0-e959-4cca-9d5d-9bd2a90ad7dd"/>
              <interfaceRealization xmi:id="3f2dafac-5a18-4ab8-b529-d566d088cef3" name="" supplier="ddbf85e6-73c0-419b-886a-3a984aa68e0d" client="f14fba82-9d59-4090-8d27-5527fc212ed4" contract="ddbf85e6-73c0-419b-886a-3a984aa68e0d"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="49dd8925-2ce4-4f58-81d5-88235540c0b5" name="HandleTable" visibility="private">
              <ownedComment xmi:id="1fab52b1-09d3-42a5-b9ab-411028c58455" body="Unsynchronized table which tracks wire handle to object mappings, as&#xA;well as ClassNotFoundExceptions associated with deserialized objects.&#xA;This class implements an exception-propagation algorithm for&#xA;determining which objects should have ClassNotFoundExceptions associated&#xA;with them, taking into account cycles and discontinuities (e.g., skipped&#xA;fields) in the object graph.&#xA;&#xA;&lt;p>General use of the table is as follows: during deserialization, a&#xA;given object is first assigned a handle by calling the assign method.&#xA;This method leaves the assigned handle in an &quot;open&quot; state, wherein&#xA;dependencies on the exception status of other handles can be registered&#xA;by calling the markDependency method, or an exception can be directly&#xA;associated with the handle by calling markException.  When a handle is&#xA;tagged with an exception, the HandleTable assumes responsibility for&#xA;propagating the exception to any other objects which depend&#xA;(transitively) on the exception-tagged object.&#xA;&#xA;&lt;p>Once all exception information/dependencies for the handle have been&#xA;registered, the handle should be &quot;closed&quot; by calling the finish method&#xA;on it.  The act of finishing a handle allows the exception propagation&#xA;algorithm to aggressively prune dependency links, lessening the&#xA;performance/memory impact of exception tracking.&#xA;&#xA;&lt;p>Note that the exception propagation algorithm used depends on handles&#xA;being assigned/finished in LIFO order; however, for simplicity as well&#xA;as memory conservation, it does not enforce this constraint.&#xA;" annotatedElement="49dd8925-2ce4-4f58-81d5-88235540c0b5"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0438e263-acfd-4ed4-84cf-ee65b240ed89" name="HandleList" visibility="private">
                <ownedComment xmi:id="30e64a85-a3c0-4e58-96de-e5d9e9551dbd" body="Simple growable list of (integer) handles.&#xA;" annotatedElement="0438e263-acfd-4ed4-84cf-ee65b240ed89"/>
              </nestedClassifier>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="a791d975-2546-4f07-bcb7-809a18389e1a" name="FileFilter" isAbstract="true">
            <ownedComment xmi:id="093fea9d-9660-49a1-950c-f916fab4aa45" body="A filter for abstract pathnames.&#xA;&#xA;&lt;p> Instances of this interface may be passed to the &lt;code>{@link&#xA;File#listFiles(java.io.FileFilter) listFiles(FileFilter)}&lt;/code> method&#xA;of the &lt;code>{@link java.io.File}&lt;/code> class.&#xA;&#xA;@since 1.2&#xA;" annotatedElement="a791d975-2546-4f07-bcb7-809a18389e1a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3f9995c4-ec91-4bfd-833f-ac8ee0f39861" name="IOException">
            <ownedComment xmi:id="d33f2b11-0863-4c06-96ec-c1c5dcdb2c91" body="Signals that an I/O exception of some sort has occurred. This&#xA;class is the general class of exceptions produced by failed or&#xA;interrupted I/O operations.&#xA;&#xA;@author  unascribed&#xA;@version 1.22, 12/19/03&#xA;@see     java.io.InputStream&#xA;@see     java.io.OutputStream&#xA;@since   JDK1.0&#xA;" annotatedElement="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
            <generalization xmi:id="c87d96d1-8628-420d-981e-305bcd8b2f97" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5bb9e0d9-883b-444a-abaa-a400604e293a" name="UnsupportedEncodingException">
            <ownedComment xmi:id="1f014ecb-00e8-4044-8242-b33f38083b29" body="The Character Encoding is not supported.&#xA;&#xA;@author  Asmus Freytag&#xA;@version 1.16, 12/19/03&#xA;@since   JDK1.1&#xA;" annotatedElement="5bb9e0d9-883b-444a-abaa-a400604e293a"/>
            <generalization xmi:id="b5b47f02-0c35-4826-8dc7-f24df97b1201" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2c3ad74b-d2fc-4382-9b53-ffc3f1f228d1" name="LineNumberReader">
            <ownedComment xmi:id="c64eeadd-6693-4c70-a989-9d7d8ca297b8" body="A buffered character-input stream that keeps track of line numbers.&#xA;This class defines methods &lt;CODE>void setLineNumber(int)&lt;/CODE> and&#xA;&lt;CODE>int getLineNumber()&lt;/CODE> for setting and getting the current&#xA;line number respectively.&#xA;&lt;P>&#xA;By default, line numbering begins at 0. This number increments as data is&#xA;read, and can be changed with a call to &lt;CODE>setLineNumber(int)&lt;/CODE>.&#xA;Note however, that &lt;CODE>setLineNumber(int)&lt;/CODE> does not actually change the current&#xA;position in the stream; it only changes the value that will be returned&#xA;by &lt;CODE>getLineNumber()&lt;/CODE>.&#xA;&lt;P>&#xA;A line is considered to be terminated by any one of a line feed ('\n'), a carriage&#xA;return ('\r'), or a carriage return followed immediately by a linefeed.&#xA;&#xA;@version &#x9;1.20, 03/12/19&#xA;@author&#x9;Mark Reinhold&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="2c3ad74b-d2fc-4382-9b53-ffc3f1f228d1"/>
            <generalization xmi:id="15ad09bd-cc9b-4c6d-bd8c-74d622f30d89" isSubstitutable="true" general="c80fac1d-b66c-4e70-9270-e2d8f396a193"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c0663c46-d339-4483-ae57-ae1b6b7425ea" name="BufferedOutputStream">
            <ownedComment xmi:id="5e8112db-3fce-4b34-a22e-64e1b5e3652d" body="The class implements a buffered output stream. By setting up such&#xA;an output stream, an application can write bytes to the underlying&#xA;output stream without necessarily causing a call to the underlying&#xA;system for each byte written.&#xA;&#xA;@author  Arthur van Hoff&#xA;@version 1.33, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="c0663c46-d339-4483-ae57-ae1b6b7425ea"/>
            <generalization xmi:id="1cf7bcf1-b050-4cd5-a16a-166bef6c81bf" isSubstitutable="true" general="c01a0cc2-82be-41f9-973c-05c9c60bb7e8"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="78cd3532-585e-4118-b15f-795d00d40b1c" name="StringBufferInputStream">
            <ownedComment xmi:id="d3785f13-33c0-4469-87a0-c2803306386a" body="This class allows an application to create an input stream in&#xA;which the bytes read are supplied by the contents of a string.&#xA;Applications can also read bytes from a byte array by using a&#xA;&lt;code>ByteArrayInputStream&lt;/code>.&#xA;&lt;p>&#xA;Only the low eight bits of each character in the string are used by&#xA;this class.&#xA;&#xA;@author     Arthur van Hoff&#xA;@version    1.26, 05/18/04&#xA;@see        java.io.ByteArrayInputStream&#xA;@see        java.io.StringReader&#xA;@since      JDK1.0&#xA;@deprecated This class does not properly convert characters into bytes.  As&#xA;of JDK&amp;nbsp;1.1, the preferred way to create a stream from a&#xA;string is via the &lt;code>StringReader&lt;/code> class.&#xA;" annotatedElement="78cd3532-585e-4118-b15f-795d00d40b1c"/>
            <generalization xmi:id="d1e3bf22-198f-4782-8f77-3a40383deeb0" isSubstitutable="true" general="ee3aaef0-e959-4cca-9d5d-9bd2a90ad7dd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b658791a-babf-4ba9-aa20-fbe978a071a7" name="InvalidClassException">
            <ownedComment xmi:id="232645ca-229b-43ea-b7f7-5c2b1c635a68" body="Thrown when the Serialization runtime detects one of the following&#xA;problems with a Class.&#xA;&lt;UL>&#xA;&lt;LI> The serial version of the class does not match that of the class&#xA;descriptor read from the stream&#xA;&lt;LI> The class contains unknown datatypes&#xA;&lt;LI> The class does not have an accessible no-arg constructor&#xA;&lt;/UL>&#xA;&#xA;@author  unascribed&#xA;@version 1.20, 12/19/03&#xA;@since   JDK1.1&#xA;" annotatedElement="b658791a-babf-4ba9-aa20-fbe978a071a7"/>
            <generalization xmi:id="2fedbc9d-7f98-4974-b0be-186a11b090f5" isSubstitutable="true" general="c8bb47d3-d8cf-429d-98af-49f9addcd3b5"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="e118f426-a5a9-4150-8969-e9a80d67a153" name="Comparable&lt;Object>">
            <templateBinding xmi:id="6537fb70-c961-4438-aaae-b73a1958f03a" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="338d0e84-5cda-4d94-89f1-cac164c41969" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d80407bb-8534-4959-b15a-610130391131" name="RandomAccessFile" clientDependency="db8a6b6d-ecb6-4113-9316-e771a98b5c7a b3e21ae2-8e4f-4747-a677-fe68bd9b65a4 b0feb392-1c85-49db-9a59-7b6611967269">
            <ownedComment xmi:id="282b9114-11e4-4804-b8d8-3787eb55c8f8" body="Instances of this class support both reading and writing to a&#xA;random access file. A random access file behaves like a large&#xA;array of bytes stored in the file system. There is a kind of cursor,&#xA;or index into the implied array, called the &lt;em>file pointer&lt;/em>;&#xA;input operations read bytes starting at the file pointer and advance&#xA;the file pointer past the bytes read. If the random access file is&#xA;created in read/write mode, then output operations are also available;&#xA;output operations write bytes starting at the file pointer and advance&#xA;the file pointer past the bytes written. Output operations that write&#xA;past the current end of the implied array cause the array to be&#xA;extended. The file pointer can be read by the&#xA;&lt;code>getFilePointer&lt;/code> method and set by the &lt;code>seek&lt;/code>&#xA;method.&#xA;&lt;p>&#xA;It is generally true of all the reading routines in this class that&#xA;if end-of-file is reached before the desired number of bytes has been&#xA;read, an &lt;code>EOFException&lt;/code> (which is a kind of&#xA;&lt;code>IOException&lt;/code>) is thrown. If any byte cannot be read for&#xA;any reason other than end-of-file, an &lt;code>IOException&lt;/code> other&#xA;than &lt;code>EOFException&lt;/code> is thrown. In particular, an&#xA;&lt;code>IOException&lt;/code> may be thrown if the stream has been closed.&#xA;&#xA;@author  unascribed&#xA;@version 1.78, 05/13/04&#xA;@since   JDK1.0&#xA;" annotatedElement="d80407bb-8534-4959-b15a-610130391131"/>
            <interfaceRealization xmi:id="b3e21ae2-8e4f-4747-a677-fe68bd9b65a4" name="" supplier="dfd1d319-49a0-4fe5-a0e7-9b658c5d9c55" client="d80407bb-8534-4959-b15a-610130391131" contract="dfd1d319-49a0-4fe5-a0e7-9b658c5d9c55"/>
            <interfaceRealization xmi:id="b0feb392-1c85-49db-9a59-7b6611967269" name="" supplier="ddbf85e6-73c0-419b-886a-3a984aa68e0d" client="d80407bb-8534-4959-b15a-610130391131" contract="ddbf85e6-73c0-419b-886a-3a984aa68e0d"/>
            <interfaceRealization xmi:id="db8a6b6d-ecb6-4113-9316-e771a98b5c7a" name="" supplier="3c998d9c-d5c5-4e4f-b879-d51904b00107" client="d80407bb-8534-4959-b15a-610130391131" contract="3c998d9c-d5c5-4e4f-b879-d51904b00107"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="082c9c17-841c-40cd-af93-0e0eba02397d" name="SyncFailedException">
            <ownedComment xmi:id="0d0d7775-0108-466a-8f76-3036898238d9" body="Signals that a sync operation has failed.&#xA;&#xA;@author  Ken Arnold&#xA;@version 1.15, 12/19/03&#xA;@see     java.io.FileDescriptor#sync&#xA;@see&#x9;    java.io.IOException&#xA;@since   JDK1.1&#xA;" annotatedElement="082c9c17-841c-40cd-af93-0e0eba02397d"/>
            <generalization xmi:id="64e8756f-2b3b-4de7-b23b-ab711af2f4d8" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e5f9c3aa-74b9-4ddc-a346-004ffae8691e" name="FileSystem" visibility="package" isAbstract="true">
            <ownedComment xmi:id="805e19a2-7888-4d9d-bc15-f7e1d88bf9dc" body="Package-private abstract class for the local filesystem abstraction.&#xA;" annotatedElement="e5f9c3aa-74b9-4ddc-a346-004ffae8691e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="18e75435-82ae-4588-ab73-f0958764c66d" name="FilterReader" isAbstract="true">
            <ownedComment xmi:id="43c016a5-faee-4c7a-ab52-fffdfc17a0ec" body="Abstract class for reading filtered character streams.&#xA;The abstract class &lt;code>FilterReader&lt;/code> itself&#xA;provides default methods that pass all requests to&#xA;the contained stream. Subclasses of &lt;code>FilterReader&lt;/code>&#xA;should override some of these methods and may also provide&#xA;additional methods and fields.&#xA;&#xA;@version &#x9;1.17, 03/12/19&#xA;@author&#x9;Mark Reinhold&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="18e75435-82ae-4588-ab73-f0958764c66d"/>
            <generalization xmi:id="1a467312-1df3-4b30-b368-12a4ade6d55b" isSubstitutable="true" general="b0f73dc4-f4ae-458e-ab18-465c97ad98ba"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="740d283f-3027-4647-a498-6f94656e662b" name="FilterInputStream">
            <ownedComment xmi:id="443c167f-ecc1-4a05-a23a-60697974bf51" body="A &lt;code>FilterInputStream&lt;/code> contains&#xA;some other input stream, which it uses as&#xA;its  basic source of data, possibly transforming&#xA;the data along the way or providing  additional&#xA;functionality. The class &lt;code>FilterInputStream&lt;/code>&#xA;itself simply overrides all  methods of&#xA;&lt;code>InputStream&lt;/code> with versions that&#xA;pass all requests to the contained  input&#xA;stream. Subclasses of &lt;code>FilterInputStream&lt;/code>&#xA;may further override some of  these methods&#xA;and may also provide additional methods&#xA;and fields.&#xA;&#xA;@author  Jonathan Payne&#xA;@version 1.28, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="740d283f-3027-4647-a498-6f94656e662b"/>
            <generalization xmi:id="97dcf508-12a1-4991-a210-945275e3ab3c" isSubstitutable="true" general="ee3aaef0-e959-4cca-9d5d-9bd2a90ad7dd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4d48fa90-78d8-43fe-b87c-9afb89c2f0cf" name="ObjectOutputStream" clientDependency="a46dbd03-bcd6-4ae0-8902-011df5f34f73 23a163c6-fadf-43ee-b47f-2b63363e4ac3">
            <ownedComment xmi:id="e2e13822-50cf-4831-b8f8-eb663acbe53e" body="An ObjectOutputStream writes primitive data types and graphs of Java objects&#xA;to an OutputStream.  The objects can be read (reconstituted) using an&#xA;ObjectInputStream.  Persistent storage of objects can be accomplished by&#xA;using a file for the stream.  If the stream is a network socket stream, the&#xA;objects can be reconstituted on another host or in another process.&#xA;&#xA;&lt;p>Only objects that support the java.io.Serializable interface can be&#xA;written to streams.  The class of each serializable object is encoded&#xA;including the class name and signature of the class, the values of the&#xA;object's fields and arrays, and the closure of any other objects referenced&#xA;from the initial objects.&#xA;&#xA;&lt;p>The method writeObject is used to write an object to the stream.  Any&#xA;object, including Strings and arrays, is written with writeObject. Multiple&#xA;objects or primitives can be written to the stream.  The objects must be&#xA;read back from the corresponding ObjectInputstream with the same types and&#xA;in the same order as they were written.&#xA;&#xA;&lt;p>Primitive data types can also be written to the stream using the&#xA;appropriate methods from DataOutput. Strings can also be written using the&#xA;writeUTF method.&#xA;&#xA;&lt;p>The default serialization mechanism for an object writes the class of the&#xA;object, the class signature, and the values of all non-transient and&#xA;non-static fields.  References to other objects (except in transient or&#xA;static fields) cause those objects to be written also. Multiple references&#xA;to a single object are encoded using a reference sharing mechanism so that&#xA;graphs of objects can be restored to the same shape as when the original was&#xA;written.&#xA;&#xA;&lt;p>For example to write an object that can be read by the example in&#xA;ObjectInputStream:&#xA;&lt;br>&#xA;&lt;pre>&#xA;FileOutputStream fos = new FileOutputStream(&quot;t.tmp&quot;);&#xA;ObjectOutputStream oos = new ObjectOutputStream(fos);&#xA;&#xA;oos.writeInt(12345);&#xA;oos.writeObject(&quot;Today&quot;);&#xA;oos.writeObject(new Date());&#xA;&#xA;oos.close();&#xA;&lt;/pre>&#xA;&#xA;&lt;p>Classes that require special handling during the serialization and&#xA;deserialization process must implement special methods with these exact&#xA;signatures:&#xA;&lt;br>&#xA;&lt;pre>&#xA;private void readObject(java.io.ObjectInputStream stream)&#xA;throws IOException, ClassNotFoundException;&#xA;private void writeObject(java.io.ObjectOutputStream stream)&#xA;throws IOException&#xA;&lt;/pre>&#xA;&#xA;&lt;p>The writeObject method is responsible for writing the state of the object&#xA;for its particular class so that the corresponding readObject method can&#xA;restore it.  The method does not need to concern itself with the state&#xA;belonging to the object's superclasses or subclasses.  State is saved by&#xA;writing the individual fields to the ObjectOutputStream using the&#xA;writeObject method or by using the methods for primitive data types&#xA;supported by DataOutput.&#xA;&#xA;&lt;p>Serialization does not write out the fields of any object that does not&#xA;implement the java.io.Serializable interface.  Subclasses of Objects that&#xA;are not serializable can be serializable. In this case the non-serializable&#xA;class must have a no-arg constructor to allow its fields to be initialized.&#xA;In this case it is the responsibility of the subclass to save and restore&#xA;the state of the non-serializable class. It is frequently the case that the&#xA;fields of that class are accessible (public, package, or protected) or that&#xA;there are get and set methods that can be used to restore the state.&#xA;&#xA;&lt;p>Serialization of an object can be prevented by implementing writeObject&#xA;and readObject methods that throw the NotSerializableException.  The&#xA;exception will be caught by the ObjectOutputStream and abort the&#xA;serialization process.&#xA;&#xA;&lt;p>Implementing the Externalizable interface allows the object to assume&#xA;complete control over the contents and format of the object's serialized&#xA;form.  The methods of the Externalizable interface, writeExternal and&#xA;readExternal, are called to save and restore the objects state.  When&#xA;implemented by a class they can write and read their own state using all of&#xA;the methods of ObjectOutput and ObjectInput.  It is the responsibility of&#xA;the objects to handle any versioning that occurs.&#xA;&#xA;&lt;p>Enum constants are serialized differently than ordinary serializable or&#xA;externalizable objects.  The serialized form of an enum constant consists&#xA;solely of its name; field values of the constant are not transmitted.  To&#xA;serialize an enum constant, ObjectOutputStream writes the string returned by&#xA;the constant's name method.  Like other serializable or externalizable&#xA;objects, enum constants can function as the targets of back references&#xA;appearing subsequently in the serialization stream.  The process by which&#xA;enum constants are serialized cannot be customized; any class-specific&#xA;writeObject and writeReplace methods defined by enum types are ignored&#xA;during serialization.  Similarly, any serialPersistentFields or&#xA;serialVersionUID field declarations are also ignored--all enum types have a&#xA;fixed serialVersionUID of 0L.&#xA;&#xA;&lt;p>Primitive data, excluding serializable fields and externalizable data, is&#xA;written to the ObjectOutputStream in block-data records. A block data record&#xA;is composed of a header and data. The block data header consists of a marker&#xA;and the number of bytes to follow the header.  Consecutive primitive data&#xA;writes are merged into one block-data record.  The blocking factor used for&#xA;a block-data record will be 1024 bytes.  Each block-data record will be&#xA;filled up to 1024 bytes, or be written whenever there is a termination of&#xA;block-data mode.  Calls to the ObjectOutputStream methods writeObject,&#xA;defaultWriteObject and writeFields initially terminate any existing&#xA;block-data record.&#xA;&#xA;@author&#x9;Mike Warres&#xA;@author&#x9;Roger Riggs&#xA;@version     1.145, 04/05/28&#xA;@see java.io.DataOutput&#xA;@see java.io.ObjectInputStream&#xA;@see java.io.Serializable&#xA;@see java.io.Externalizable&#xA;@see &lt;a href=&quot;../../../guide/serialization/spec/output.doc.html&quot;>Object Serialization Specification, Section 2, Object Output Classes&lt;/a>&#xA;@since       JDK1.1&#xA;" annotatedElement="4d48fa90-78d8-43fe-b87c-9afb89c2f0cf"/>
            <generalization xmi:id="e45aaf8f-a679-4959-a5de-e91dc0ef8453" isSubstitutable="true" general="23f94159-dc57-40a7-86d8-db17a349aa48"/>
            <interfaceRealization xmi:id="a46dbd03-bcd6-4ae0-8902-011df5f34f73" name="" supplier="dfd71b5d-05ab-4a16-8e5d-c7d72018bc1c" client="4d48fa90-78d8-43fe-b87c-9afb89c2f0cf" contract="dfd71b5d-05ab-4a16-8e5d-c7d72018bc1c"/>
            <interfaceRealization xmi:id="23a163c6-fadf-43ee-b47f-2b63363e4ac3" name="" supplier="a73a17a3-16fe-47de-9f4c-129ce810e861" client="4d48fa90-78d8-43fe-b87c-9afb89c2f0cf" contract="a73a17a3-16fe-47de-9f4c-129ce810e861"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ca7f9edb-7e8a-4630-bfeb-65d2fdbdcca2" name="PutField" isAbstract="true">
              <ownedComment xmi:id="910d773f-5a69-4c6e-9ff5-312b0123fb5e" body="Provide programmatic access to the persistent fields to be written&#xA;to ObjectOutput.&#xA;&#xA;@since 1.2&#xA;" annotatedElement="ca7f9edb-7e8a-4630-bfeb-65d2fdbdcca2"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="396502b5-04d4-46d1-9e03-e29d32caba60" name="PutFieldImpl" visibility="private">
              <ownedComment xmi:id="0ae6db9d-0cd3-4f32-8e54-f6e3601120ad" body="Default PutField implementation.&#xA;" annotatedElement="396502b5-04d4-46d1-9e03-e29d32caba60"/>
              <generalization xmi:id="cf0a9374-9a62-4079-aa6d-263695deb39d" isSubstitutable="true" general="ca7f9edb-7e8a-4630-bfeb-65d2fdbdcca2"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="4bbf6718-0879-452e-aa72-63411e21b367" name="BlockDataOutputStream" visibility="private" clientDependency="9f1f331f-d761-4af0-baaf-597500959481">
              <ownedComment xmi:id="41002f03-9a30-4452-8301-8145676e96d9" body="Buffered output stream with two modes: in default mode, outputs data in&#xA;same format as DataOutputStream; in &quot;block data&quot; mode, outputs data&#xA;bracketed by block data markers (see object serialization specification&#xA;for details).&#xA;" annotatedElement="4bbf6718-0879-452e-aa72-63411e21b367"/>
              <generalization xmi:id="d0e709f9-a994-4ab7-965d-bff25daba7ae" isSubstitutable="true" general="23f94159-dc57-40a7-86d8-db17a349aa48"/>
              <interfaceRealization xmi:id="9f1f331f-d761-4af0-baaf-597500959481" name="" supplier="dfd1d319-49a0-4fe5-a0e7-9b658c5d9c55" client="4bbf6718-0879-452e-aa72-63411e21b367" contract="dfd1d319-49a0-4fe5-a0e7-9b658c5d9c55"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="e0770965-40a4-4549-95dc-7aa35a4b0533" name="HandleTable" visibility="private">
              <ownedComment xmi:id="387f9592-aa3d-49d3-87e7-2d9caba500a6" body="Lightweight identity hash table which maps objects to integer handles,&#xA;assigned in ascending order.&#xA;" annotatedElement="e0770965-40a4-4549-95dc-7aa35a4b0533"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="51350b7b-f665-4291-aed9-59fa572d40cc" name="ReplaceTable" visibility="private">
              <ownedComment xmi:id="0ecdc8f0-5863-4913-8731-c5946c8a2d92" body="Lightweight identity hash table which maps objects to replacement&#xA;objects.&#xA;" annotatedElement="51350b7b-f665-4291-aed9-59fa572d40cc"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a869a517-98a9-423d-83ce-49ab86892736" name="UTFDataFormatException">
            <ownedComment xmi:id="bfd614a3-0036-4370-af87-82e7c000abf3" body="Signals that a malformed string in&#xA;&lt;a href=&quot;DataInput.html#modified-utf-8&quot;>modified UTF-8&lt;/a>&#xA;format has been read in a data&#xA;input stream or by any class that implements the data input&#xA;interface.&#xA;See the&#xA;&lt;a href=&quot;DataInput.html#modified-utf-8&quot;>&lt;code>DataInput&lt;/code>&lt;/a>&#xA;class description for the format in&#xA;which modified UTF-8 strings are read and written.&#xA;&#xA;@author  Frank Yellin&#xA;@version 1.13, 05/13/04&#xA;@see     java.io.DataInput&#xA;@see     java.io.DataInputStream#readUTF(java.io.DataInput)&#xA;@see     java.io.IOException&#xA;@since   JDK1.0&#xA;" annotatedElement="a869a517-98a9-423d-83ce-49ab86892736"/>
            <generalization xmi:id="e7252119-e9db-41a3-b0b2-6186355300ef" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7b41bc4c-0bdf-43e8-a198-c21c0595ac93" name="ByteArrayInputStream">
            <ownedComment xmi:id="1f3c750f-d605-4abf-8af3-7641d31cb56a" body="A &lt;code>ByteArrayInputStream&lt;/code> contains&#xA;an internal buffer that contains bytes that&#xA;may be read from the stream. An internal&#xA;counter keeps track of the next byte to&#xA;be supplied by the &lt;code>read&lt;/code> method.&#xA;&lt;p>&#xA;Closing a &lt;tt>ByteArrayInputStream&lt;/tt> has no effect. The methods in&#xA;this class can be called after the stream has been closed without&#xA;generating an &lt;tt>IOException&lt;/tt>.&#xA;&#xA;@author  Arthur van Hoff&#xA;@version 1.44, 12/19/03&#xA;@see     java.io.StringBufferInputStream&#xA;@since   JDK1.0&#xA;" annotatedElement="7b41bc4c-0bdf-43e8-a198-c21c0595ac93"/>
            <generalization xmi:id="b4f5bb48-c882-42c5-9a39-802ef2873acf" isSubstitutable="true" general="ee3aaef0-e959-4cca-9d5d-9bd2a90ad7dd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="224491b9-9aec-4ba0-9da6-bef0c10bacc2" name="FileInputStream">
            <ownedComment xmi:id="5741d983-253f-4df4-b3fb-d2411bc8ac8d" body="A &lt;code>FileInputStream&lt;/code> obtains input bytes&#xA;from a file in a file system. What files&#xA;are  available depends on the host environment.&#xA;&#xA;&lt;p>&lt;code>FileInputStream&lt;/code> is meant for reading streams of raw bytes&#xA;such as image data. For reading streams of characters, consider using&#xA;&lt;code>FileReader&lt;/code>.&#xA;&#xA;@author  Arthur van Hoff&#xA;@version 1.63, 12/19/03&#xA;@see     java.io.File&#xA;@see     java.io.FileDescriptor&#xA;@see&#x9;    java.io.FileOutputStream&#xA;@since   JDK1.0&#xA;" annotatedElement="224491b9-9aec-4ba0-9da6-bef0c10bacc2"/>
            <generalization xmi:id="ce38cb45-657b-40fc-aec8-6cca2a47e794" isSubstitutable="true" general="ee3aaef0-e959-4cca-9d5d-9bd2a90ad7dd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="70616134-a7cf-49d5-b279-7f6c1e02cee1" name="ObjectInput" isAbstract="true">
            <ownedComment xmi:id="729c2c46-ad98-4600-9ba5-30959260f50b" body="ObjectInput extends the DataInput interface to include the reading of&#xA;objects. DataInput includes methods for the input of primitive types,&#xA;ObjectInput extends that interface to include objects, arrays, and Strings.&#xA;&#xA;@author  unascribed&#xA;@version 1.19, 12/19/03&#xA;@see java.io.InputStream&#xA;@see java.io.ObjectOutputStream&#xA;@see java.io.ObjectInputStream&#xA;@since   JDK1.1&#xA;" annotatedElement="70616134-a7cf-49d5-b279-7f6c1e02cee1"/>
            <generalization xmi:id="165fd878-679a-451d-adb1-c265ac682bcc" isSubstitutable="true" general="ddbf85e6-73c0-419b-886a-3a984aa68e0d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="ddbf85e6-73c0-419b-886a-3a984aa68e0d" name="DataInput" isAbstract="true">
            <ownedComment xmi:id="798b1404-cafc-4a80-8e1c-030ad7d40efc" body="The &lt;code>DataInput&lt;/code> interface provides&#xA;for reading bytes from a binary stream and&#xA;reconstructing from them data in any of&#xA;the Java primitive types. There is also&#xA;a&#xA;facility for reconstructing a &lt;code>String&lt;/code>&#xA;from data in&#xA;&lt;a href=&quot;#modified-utf-8&quot;>modified UTF-8&lt;/a>&#xA;format.&#xA;&lt;p>&#xA;It is generally true of all the reading&#xA;routines in this interface that if end of&#xA;file is reached before the desired number&#xA;of bytes has been read, an &lt;code>EOFException&lt;/code>&#xA;(which is a kind of &lt;code>IOException&lt;/code>)&#xA;is thrown. If any byte cannot be read for&#xA;any reason other than end of file, an &lt;code>IOException&lt;/code>&#xA;other than &lt;code>EOFException&lt;/code> is&#xA;thrown. In particular, an &lt;code>IOException&lt;/code>&#xA;may be thrown if the input stream has been&#xA;closed.&#xA;&#xA;&lt;h4>&lt;a name=&quot;modified-utf-8&quot;>Modified UTF-8&lt;/a>&lt;/h4>&#xA;&lt;p>&#xA;Implementations of the DataInput and DataOutput interfaces represent&#xA;Unicode strings in a format that is a slight modification of UTF-8.&#xA;(For information regarding the standard UTF-8 format, see section&#xA;&lt;i>3.9 Unicode Encoding Forms&lt;/i> of &lt;i>The Unicode Standard, Version&#xA;4.0&lt;/i>).&#xA;Note that in the following tables, the most significant bit appears in the&#xA;far left-hand column.&#xA;&lt;p>&#xA;All characters in the range &lt;code>'&amp;#92;u0001'&lt;/code> to&#xA;&lt;code>'&amp;#92;u007F'&lt;/code> are represented by a single byte:&#xA;&#xA;&lt;blockquote>&#xA;&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;8&quot; width=&quot;50%&quot;&#xA;summary=&quot;Bit values and bytes&quot;>&#xA;&lt;tr>&#xA;&lt;td>&lt;/td>&#xA;&lt;th id=&quot;bit&quot;>Bit Values&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;th id=&quot;byte1&quot;>Byte 1&lt;/th>&#xA;&lt;td>&#xA;&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; width=&quot;100%&quot;>&#xA;&lt;tr>&#xA;&lt;td width=&quot;12%&quot;>&lt;center>0&lt;/center>&#xA;&lt;td colspan=&quot;7&quot;>&lt;center>bits 6-0&lt;/center>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;The null character &lt;code>'&amp;#92;u0000'&lt;/code> and characters in the&#xA;range &lt;code>'&amp;#92;u0080'&lt;/code> to &lt;code>'&amp;#92;u07FF'&lt;/code> are&#xA;represented by a pair of bytes:&#xA;&#xA;&lt;blockquote>&#xA;&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;8&quot; width=&quot;50%&quot;&#xA;summary=&quot;Bit values and bytes&quot;>&#xA;&lt;tr>&#xA;&lt;td>&lt;/td>&#xA;&lt;th id=&quot;bit&quot;>Bit Values&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;th id=&quot;byte1&quot;>Byte 1&lt;/th>&#xA;&lt;td>&#xA;&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; width=&quot;100%&quot;>&#xA;&lt;tr>&#xA;&lt;td width=&quot;12%&quot;>&lt;center>1&lt;/center>&#xA;&lt;td width=&quot;13%&quot;>&lt;center>1&lt;/center>&#xA;&lt;td width=&quot;12%&quot;>&lt;center>0&lt;/center>&#xA;&lt;td colspan=&quot;5&quot;>&lt;center>bits 10-6&lt;/center>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;th id=&quot;byte2&quot;>Byte 2&lt;/th>&#xA;&lt;td>&#xA;&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; width=&quot;100%&quot;>&#xA;&lt;tr>&#xA;&lt;td width=&quot;12%&quot;>&lt;center>1&lt;/center>&#xA;&lt;td width=&quot;13%&quot;>&lt;center>0&lt;/center>&#xA;&lt;td colspan=&quot;6&quot;>&lt;center>bits 5-0&lt;/center>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;br>&#xA;&lt;code>char&lt;/code> values in the range &lt;code>'&amp;#92;u0800'&lt;/code> to&#xA;&lt;code>'&amp;#92;uFFFF'&lt;/code> are represented by three bytes:&#xA;&#xA;&lt;blockquote>&#xA;&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;8&quot; width=&quot;50%&quot;&#xA;summary=&quot;Bit values and bytes&quot;>&#xA;&lt;tr>&#xA;&lt;td>&lt;/td>&#xA;&lt;th id=&quot;bit&quot;>Bit Values&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;th id=&quot;byte1&quot;>Byte 1&lt;/th>&#xA;&lt;td>&#xA;&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; width=&quot;100%&quot;>&#xA;&lt;tr>&#xA;&lt;td width=&quot;12%&quot;>&lt;center>1&lt;/center>&#xA;&lt;td width=&quot;13%&quot;>&lt;center>1&lt;/center>&#xA;&lt;td width=&quot;12%&quot;>&lt;center>1&lt;/center>&#xA;&lt;td width=&quot;13%&quot;>&lt;center>0&lt;/center>&#xA;&lt;td colspan=&quot;4&quot;>&lt;center>bits 15-12&lt;/center>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;th id=&quot;byte2&quot;>Byte 2&lt;/th>&#xA;&lt;td>&#xA;&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; width=&quot;100%&quot;>&#xA;&lt;tr>&#xA;&lt;td width=&quot;12%&quot;>&lt;center>1&lt;/center>&#xA;&lt;td width=&quot;13%&quot;>&lt;center>0&lt;/center>&#xA;&lt;td colspan=&quot;6&quot;>&lt;center>bits 11-6&lt;/center>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;th id=&quot;byte3&quot;>Byte 3&lt;/th>&#xA;&lt;td>&#xA;&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; width=&quot;100%&quot;>&#xA;&lt;tr>&#xA;&lt;td width=&quot;12%&quot;>&lt;center>1&lt;/center>&#xA;&lt;td width=&quot;13%&quot;>&lt;center>0&lt;/center>&#xA;&lt;td colspan=&quot;6&quot;>&lt;center>bits 5-0&lt;/center>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;The differences between this format and the&#xA;standard UTF-8 format are the following:&#xA;&lt;ul>&#xA;&lt;li>The null byte &lt;code>'&amp;#92;u0000'&lt;/code> is encoded in 2-byte format&#xA;rather than 1-byte, so that the encoded strings never have&#xA;embedded nulls.&#xA;&lt;li>Only the 1-byte, 2-byte, and 3-byte formats are used.&#xA;&lt;li>&lt;a href=&quot;../lang/Character.html#unicode&quot;>Supplementary characters&lt;/a>&#xA;are represented in the form of surrogate pairs.&#xA;&lt;/ul>&#xA;@author  Frank Yellin&#xA;@version 1.23, 06/03/04&#xA;@see     java.io.DataInputStream&#xA;@see     java.io.DataOutput&#xA;@since   JDK1.0&#xA;" annotatedElement="ddbf85e6-73c0-419b-886a-3a984aa68e0d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1b5924d1-ca31-481a-b92c-719ec3f3c3fa" name="FileDescriptor" isLeaf="true">
            <ownedComment xmi:id="d05aa68d-2443-4cc2-87a4-54edff61f7e0" body="Instances of the file descriptor class serve as an opaque handle&#xA;to the underlying machine-specific structure representing an open&#xA;file, an open socket, or another source or sink of bytes. The&#xA;main practical use for a file descriptor is to create a&#xA;&lt;code>FileInputStream&lt;/code> or &lt;code>FileOutputStream&lt;/code> to&#xA;contain it.&#xA;&lt;p>&#xA;Applications should not create their own file descriptors.&#xA;&#xA;@author  Pavani Diwanji&#xA;@version 1.3, 12/19/03&#xA;@see&#x9;    java.io.FileInputStream&#xA;@see&#x9;    java.io.FileOutputStream&#xA;@since   JDK1.0&#xA;" annotatedElement="1b5924d1-ca31-481a-b92c-719ec3f3c3fa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="35b577c4-0d70-4803-924a-56617a83af53" name="Writer" clientDependency="cfedc028-4569-4a14-b9ba-edbab26061e3 2bea6abe-5e2e-4dcd-82e2-5b771bb7412c 05c9f7e7-f04a-4831-a305-0bc3a53ec2e5" isAbstract="true">
            <ownedComment xmi:id="3590dde5-6834-4bc0-b660-4aafdc06b726" body="Abstract class for writing to character streams.  The only methods that a&#xA;subclass must implement are write(char[], int, int), flush(), and close().&#xA;Most subclasses, however, will override some of the methods defined here in&#xA;order to provide higher efficiency, additional functionality, or both.&#xA;&#xA;@see Writer&#xA;@see   BufferedWriter&#xA;@see   CharArrayWriter&#xA;@see   FilterWriter&#xA;@see   OutputStreamWriter&#xA;@see     FileWriter&#xA;@see   PipedWriter&#xA;@see   PrintWriter&#xA;@see   StringWriter&#xA;@see Reader&#xA;&#xA;@version &#x9;1.26, 04/07/16&#xA;@author&#x9;Mark Reinhold&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="35b577c4-0d70-4803-924a-56617a83af53"/>
            <interfaceRealization xmi:id="cfedc028-4569-4a14-b9ba-edbab26061e3" name="" supplier="e1b0e7ce-3e7f-4c85-be61-5b3588027acb" client="35b577c4-0d70-4803-924a-56617a83af53" contract="e1b0e7ce-3e7f-4c85-be61-5b3588027acb"/>
            <interfaceRealization xmi:id="05c9f7e7-f04a-4831-a305-0bc3a53ec2e5" name="" supplier="3c998d9c-d5c5-4e4f-b879-d51904b00107" client="35b577c4-0d70-4803-924a-56617a83af53" contract="3c998d9c-d5c5-4e4f-b879-d51904b00107"/>
            <interfaceRealization xmi:id="2bea6abe-5e2e-4dcd-82e2-5b771bb7412c" name="" supplier="2811b8ed-7762-4e53-9fef-44916e7c1e6f" client="35b577c4-0d70-4803-924a-56617a83af53" contract="2811b8ed-7762-4e53-9fef-44916e7c1e6f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e1feca05-3181-4a18-8383-7cb66a5caac2" name="File" clientDependency="b1e8b2f1-5075-4d60-b318-16f1c7f88520 f95745f0-ef74-48b3-a86d-a5821a67b691">
            <ownedComment xmi:id="915592e1-2fa1-482a-9753-728635b3f6f2" body="An abstract representation of file and directory pathnames.&#xA;&#xA;&lt;p> User interfaces and operating systems use system-dependent &lt;em>pathname&#xA;strings&lt;/em> to name files and directories.  This class presents an&#xA;abstract, system-independent view of hierarchical pathnames.  An&#xA;&lt;em>abstract pathname&lt;/em> has two components:&#xA;&#xA;&lt;ol>&#xA;&lt;li> An optional system-dependent &lt;em>prefix&lt;/em> string,&#xA;such as a disk-drive specifier, &lt;code>&quot;/&quot;&lt;/code>&amp;nbsp;for the UNIX root&#xA;directory, or &lt;code>&quot;\\\\&quot;&lt;/code>&amp;nbsp;for a Microsoft Windows UNC pathname, and&#xA;&lt;li> A sequence of zero or more string &lt;em>names&lt;/em>.&#xA;&lt;/ol>&#xA;&#xA;Each name in an abstract pathname except for the last denotes a directory;&#xA;the last name may denote either a directory or a file.  The &lt;em>empty&lt;/em>&#xA;abstract pathname has no prefix and an empty name sequence.&#xA;&#xA;&lt;p> The conversion of a pathname string to or from an abstract pathname is&#xA;inherently system-dependent.  When an abstract pathname is converted into a&#xA;pathname string, each name is separated from the next by a single copy of&#xA;the default &lt;em>separator character&lt;/em>.  The default name-separator&#xA;character is defined by the system property &lt;code>file.separator&lt;/code>, and&#xA;is made available in the public static fields &lt;code>{@link&#xA;#separator}&lt;/code> and &lt;code>{@link #separatorChar}&lt;/code> of this class.&#xA;When a pathname string is converted into an abstract pathname, the names&#xA;within it may be separated by the default name-separator character or by any&#xA;other name-separator character that is supported by the underlying system.&#xA;&#xA;&lt;p> A pathname, whether abstract or in string form, may be either&#xA;&lt;em>absolute&lt;/em> or &lt;em>relative&lt;/em>.  An absolute pathname is complete in&#xA;that no other information is required in order to locate the file that it&#xA;denotes.  A relative pathname, in contrast, must be interpreted in terms of&#xA;information taken from some other pathname.  By default the classes in the&#xA;&lt;code>java.io&lt;/code> package always resolve relative pathnames against the&#xA;current user directory.  This directory is named by the system property&#xA;&lt;code>user.dir&lt;/code>, and is typically the directory in which the Java&#xA;virtual machine was invoked.&#xA;&#xA;&lt;p> The prefix concept is used to handle root directories on UNIX platforms,&#xA;and drive specifiers, root directories and UNC pathnames on Microsoft Windows platforms,&#xA;as follows:&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li> For UNIX platforms, the prefix of an absolute pathname is always&#xA;&lt;code>&quot;/&quot;&lt;/code>.  Relative pathnames have no prefix.  The abstract pathname&#xA;denoting the root directory has the prefix &lt;code>&quot;/&quot;&lt;/code> and an empty&#xA;name sequence.&#xA;&#xA;&lt;li> For Microsoft Windows platforms, the prefix of a pathname that contains a drive&#xA;specifier consists of the drive letter followed by &lt;code>&quot;:&quot;&lt;/code> and&#xA;possibly followed by &lt;code>&quot;\\&quot;&lt;/code> if the pathname is absolute.  The&#xA;prefix of a UNC pathname is &lt;code>&quot;\\\\&quot;&lt;/code>; the hostname and the share&#xA;name are the first two names in the name sequence.  A relative pathname that&#xA;does not specify a drive has no prefix.&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p> Instances of the &lt;code>File&lt;/code> class are immutable; that is, once&#xA;created, the abstract pathname represented by a &lt;code>File&lt;/code> object&#xA;will never change.&#xA;&#xA;@version 1.122, 05/05/04&#xA;@author  unascribed&#xA;@since   JDK1.0&#xA;" annotatedElement="e1feca05-3181-4a18-8383-7cb66a5caac2"/>
            <interfaceRealization xmi:id="b1e8b2f1-5075-4d60-b318-16f1c7f88520" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="e1feca05-3181-4a18-8383-7cb66a5caac2" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="f95745f0-ef74-48b3-a86d-a5821a67b691" name="" supplier="608858f3-4ee3-4700-9573-aa17d44781cd" client="e1feca05-3181-4a18-8383-7cb66a5caac2" contract="608858f3-4ee3-4700-9573-aa17d44781cd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="510f9190-e89d-4b74-9894-4896a5e77fa9" name="PushbackInputStream">
            <ownedComment xmi:id="9229addd-6abf-46bf-be5e-d86c3037da43" body="A &lt;code>PushbackInputStream&lt;/code> adds&#xA;functionality to another input stream, namely&#xA;the  ability to &quot;push back&quot; or &quot;unread&quot;&#xA;one byte. This is useful in situations where&#xA;it is  convenient for a fragment of code&#xA;to read an indefinite number of data bytes&#xA;that  are delimited by a particular byte&#xA;value; after reading the terminating byte,&#xA;the  code fragment can &quot;unread&quot; it, so that&#xA;the next read operation on the input stream&#xA;will reread the byte that was pushed back.&#xA;For example, bytes representing the  characters&#xA;constituting an identifier might be terminated&#xA;by a byte representing an  operator character;&#xA;a method whose job is to read just an identifier&#xA;can read until it  sees the operator and&#xA;then push the operator back to be re-read.&#xA;&#xA;@author  David Connelly&#xA;@author  Jonathan Payne&#xA;@version 1.36, 02/19/04&#xA;@since   JDK1.0&#xA;" annotatedElement="510f9190-e89d-4b74-9894-4896a5e77fa9"/>
            <generalization xmi:id="073817c0-c73d-4472-bd6c-b6d8e78aead8" isSubstitutable="true" general="740d283f-3027-4647-a498-6f94656e662b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5518c7b6-a327-41e1-9ed3-608a304a4433" name="PushbackReader">
            <ownedComment xmi:id="1e07ba40-ee9f-42ef-8ba6-0349542776d5" body="A character-stream reader that allows characters to be pushed back into the&#xA;stream.&#xA;&#xA;@version &#x9;1.18, 03/12/19&#xA;@author&#x9;Mark Reinhold&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="5518c7b6-a327-41e1-9ed3-608a304a4433"/>
            <generalization xmi:id="b980f3fc-0fd6-4ff2-967f-0c4ed7ce064e" isSubstitutable="true" general="18e75435-82ae-4588-ab73-f0958764c66d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="991f4939-5e4a-4b09-86ac-5113b22c33da" name="SequenceInputStream">
            <ownedComment xmi:id="bb503132-5837-4968-be5e-4f8b268e7ea5" body="A &lt;code>SequenceInputStream&lt;/code> represents&#xA;the logical concatenation of other input&#xA;streams. It starts out with an ordered&#xA;collection of input streams and reads from&#xA;the first one until end of file is reached,&#xA;whereupon it reads from the second one,&#xA;and so on, until end of file is reached&#xA;on the last of the contained input streams.&#xA;&#xA;@author  Author van Hoff&#xA;@version 1.28, 05/12/04&#xA;@since   JDK1.0&#xA;" annotatedElement="991f4939-5e4a-4b09-86ac-5113b22c33da"/>
            <generalization xmi:id="b179630c-8c4d-44be-9b6b-d2c4d09ac2a9" isSubstitutable="true" general="ee3aaef0-e959-4cca-9d5d-9bd2a90ad7dd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="dfd71b5d-05ab-4a16-8e5d-c7d72018bc1c" name="ObjectOutput" isAbstract="true">
            <ownedComment xmi:id="af9ee51f-f583-4df0-a8f9-01df540852aa" body="ObjectOutput extends the DataOutput interface to include writing of objects.&#xA;DataOutput includes methods for output of primitive types, ObjectOutput&#xA;extends that interface to include objects, arrays, and Strings.&#xA;&#xA;@author  unascribed&#xA;@version 1.16, 12/19/03&#xA;@see java.io.InputStream&#xA;@see java.io.ObjectOutputStream&#xA;@see java.io.ObjectInputStream&#xA;@since   JDK1.1&#xA;" annotatedElement="dfd71b5d-05ab-4a16-8e5d-c7d72018bc1c"/>
            <generalization xmi:id="b8343ce3-3c95-487d-a1d2-f8f8c852badd" isSubstitutable="true" general="dfd1d319-49a0-4fe5-a0e7-9b658c5d9c55"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="44ac96b5-d487-4331-92fb-1c514f5a81bb" name="StringReader">
            <ownedComment xmi:id="e9c80201-e7fb-4bbd-9196-7c11db1e2d22" body="A character stream whose source is a string.&#xA;&#xA;@version &#x9;1.24, 04/02/19&#xA;@author&#x9;Mark Reinhold&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="44ac96b5-d487-4331-92fb-1c514f5a81bb"/>
            <generalization xmi:id="359e1be2-bc5a-41f4-a379-cc20e9580f5f" isSubstitutable="true" general="b0f73dc4-f4ae-458e-ab18-465c97ad98ba"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="56bf6aa5-263a-4a52-8bf0-175f4238b77e" name="Serializable" isAbstract="true">
            <ownedComment xmi:id="ba536915-c123-4cc9-bf1c-e2e32b3629fc" body="Serializability of a class is enabled by the class implementing the&#xA;java.io.Serializable interface. Classes that do not implement this&#xA;interface will not have any of their state serialized or&#xA;deserialized.  All subtypes of a serializable class are themselves&#xA;serializable.  The serialization interface has no methods or fields&#xA;and serves only to identify the semantics of being serializable. &lt;p>&#xA;&#xA;To allow subtypes of non-serializable classes to be serialized, the&#xA;subtype may assume responsibility for saving and restoring the&#xA;state of the supertype's public, protected, and (if accessible)&#xA;package fields.  The subtype may assume this responsibility only if&#xA;the class it extends has an accessible no-arg constructor to&#xA;initialize the class's state.  It is an error to declare a class&#xA;Serializable if this is not the case.  The error will be detected at runtime. &lt;p>&#xA;&#xA;During deserialization, the fields of non-serializable classes will&#xA;be initialized using the public or protected no-arg constructor of&#xA;the class.  A no-arg constructor must be accessible to the subclass&#xA;that is serializable.  The fields of serializable subclasses will&#xA;be restored from the stream. &lt;p>&#xA;&#xA;When traversing a graph, an object may be encountered that does not&#xA;support the Serializable interface. In this case the&#xA;NotSerializableException will be thrown and will identify the class&#xA;of the non-serializable object. &lt;p>&#xA;&#xA;Classes that require special handling during the serialization and&#xA;deserialization process must implement special methods with these exact&#xA;signatures: &lt;p>&#xA;&#xA;&lt;PRE>&#xA;private void writeObject(java.io.ObjectOutputStream out)&#xA;throws IOException&#xA;private void readObject(java.io.ObjectInputStream in)&#xA;throws IOException, ClassNotFoundException;&#xA;&lt;/PRE>&lt;p>&#xA;&#xA;The writeObject method is responsible for writing the state of the&#xA;object for its particular class so that the corresponding&#xA;readObject method can restore it.  The default mechanism for saving&#xA;the Object's fields can be invoked by calling&#xA;out.defaultWriteObject. The method does not need to concern&#xA;itself with the state belonging to its superclasses or subclasses.&#xA;State is saved by writing the individual fields to the&#xA;ObjectOutputStream using the writeObject method or by using the&#xA;methods for primitive data types supported by DataOutput. &lt;p>&#xA;&#xA;The readObject method is responsible for reading from the stream and&#xA;restoring the classes fields. It may call in.defaultReadObject to invoke&#xA;the default mechanism for restoring the object's non-static and non-transient&#xA;fields.  The defaultReadObject method uses information in the stream to&#xA;assign the fields of the object saved in the stream with the correspondingly&#xA;named fields in the current object.  This handles the case when the class&#xA;has evolved to add new fields. The method does not need to concern&#xA;itself with the state belonging to its superclasses or subclasses.&#xA;State is saved by writing the individual fields to the&#xA;ObjectOutputStream using the writeObject method or by using the&#xA;methods for primitive data types supported by DataOutput. &lt;p>&#xA;&#xA;Serializable classes that need to designate an alternative object to be&#xA;used when writing an object to the stream should implement this&#xA;special method with the exact signature: &lt;p>&#xA;&#xA;&lt;PRE>&#xA;ANY-ACCESS-MODIFIER Object writeReplace() throws ObjectStreamException;&#xA;&lt;/PRE>&lt;p>&#xA;&#xA;This writeReplace method is invoked by serialization if the method&#xA;exists and it would be accessible from a method defined within the&#xA;class of the object being serialized. Thus, the method can have private,&#xA;protected and package-private access. Subclass access to this method&#xA;follows java accessibility rules. &lt;p>&#xA;&#xA;Classes that need to designate a replacement when an instance of it&#xA;is read from the stream should implement this special method with the&#xA;exact signature.&lt;p>&#xA;&#xA;&lt;PRE>&#xA;ANY-ACCESS-MODIFIER Object readResolve() throws ObjectStreamException;&#xA;&lt;/PRE>&lt;p>&#xA;&#xA;This readResolve method follows the same invocation rules and&#xA;accessibility rules as writeReplace.&lt;p>&#xA;&#xA;The serialization runtime associates with each serializable class a version&#xA;number, called a serialVersionUID, which is used during deserialization to&#xA;verify that the sender and receiver of a serialized object have loaded&#xA;classes for that object that are compatible with respect to serialization.&#xA;If the receiver has loaded a class for the object that has a different&#xA;serialVersionUID than that of the corresponding sender's class, then&#xA;deserialization will result in an {@link InvalidClassException}.  A&#xA;serializable class can declare its own serialVersionUID explicitly by&#xA;declaring a field named &lt;code>&quot;serialVersionUID&quot;&lt;/code> that must be static,&#xA;final, and of type &lt;code>long&lt;/code>:&lt;p>&#xA;&#xA;&lt;PRE>&#xA;ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;&#xA;&lt;/PRE>&#xA;&#xA;If a serializable class does not explicitly declare a serialVersionUID, then&#xA;the serialization runtime will calculate a default serialVersionUID value&#xA;for that class based on various aspects of the class, as described in the&#xA;Java(TM) Object Serialization Specification.  However, it is &lt;em>strongly&#xA;recommended&lt;/em> that all serializable classes explicitly declare&#xA;serialVersionUID values, since the default serialVersionUID computation is&#xA;highly sensitive to class details that may vary depending on compiler&#xA;implementations, and can thus result in unexpected&#xA;&lt;code>InvalidClassException&lt;/code>s during deserialization.  Therefore, to&#xA;guarantee a consistent serialVersionUID value across different java compiler&#xA;implementations, a serializable class must declare an explicit&#xA;serialVersionUID value.  It is also strongly advised that explicit&#xA;serialVersionUID declarations use the &lt;code>private&lt;/code> modifier where&#xA;possible, since such declarations apply only to the immediately declaring&#xA;class--serialVersionUID fields are not useful as inherited members.&#xA;&#xA;@author  unascribed&#xA;@version 1.22, 12/19/03&#xA;@see java.io.ObjectOutputStream&#xA;@see java.io.ObjectInputStream&#xA;@see java.io.ObjectOutput&#xA;@see java.io.ObjectInput&#xA;@see java.io.Externalizable&#xA;@since   JDK1.1&#xA;" annotatedElement="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d7fa1a3b-194a-4d5b-a047-f227ad5c323f" name="FileNotFoundException">
            <ownedComment xmi:id="85a2dd6e-d924-4cd6-ab7a-984f9fc67902" body="Signals that an attempt to open the file denoted by a specified pathname&#xA;has failed.&#xA;&#xA;&lt;p> This exception will be thrown by the {@link FileInputStream}, {@link&#xA;FileOutputStream}, and {@link RandomAccessFile} constructors when a file&#xA;with the specified pathname does not exist.  It will also be thrown by these&#xA;constructors if the file does exist but for some reason is inaccessible, for&#xA;example when an attempt is made to open a read-only file for writing.&#xA;&#xA;@author  unascribed&#xA;@version 1.23, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="d7fa1a3b-194a-4d5b-a047-f227ad5c323f"/>
            <generalization xmi:id="0adacc6f-831a-43ea-9fc1-1ec57b38de43" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9fe8803a-a949-48d6-b6da-9209d59baa74" name="PipedInputStream">
            <ownedComment xmi:id="e43f9af5-ba29-4cbe-b151-a81c7d796328" body="A piped input stream should be connected&#xA;to a piped output stream; the piped  input&#xA;stream then provides whatever data bytes&#xA;are written to the piped output  stream.&#xA;Typically, data is read from a &lt;code>PipedInputStream&lt;/code>&#xA;object by one thread  and data is written&#xA;to the corresponding &lt;code>PipedOutputStream&lt;/code>&#xA;by some  other thread. Attempting to use&#xA;both objects from a single thread is not&#xA;recommended, as it may deadlock the thread.&#xA;The piped input stream contains a buffer,&#xA;decoupling read operations from write operations,&#xA;within limits.&#xA;&#xA;@author  James Gosling&#xA;@version 1.35, 12/19/03&#xA;@see     java.io.PipedOutputStream&#xA;@since   JDK1.0&#xA;" annotatedElement="9fe8803a-a949-48d6-b6da-9209d59baa74"/>
            <generalization xmi:id="b86418eb-f012-4d32-9401-43c5d0d52d42" isSubstitutable="true" general="ee3aaef0-e959-4cca-9d5d-9bd2a90ad7dd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3a647eba-f869-4d35-95b6-ef872219d4f4" name="NotSerializableException">
            <ownedComment xmi:id="de8c0f46-e5f9-4abd-a4cf-5a4c47977809" body="Thrown when an instance is required to have a Serializable interface.&#xA;The serialization runtime or the class of the instance can throw&#xA;this exception. The argument should be the name of the class.&#xA;&#xA;@author  unascribed&#xA;@version 1.14, 12/19/03&#xA;@since   JDK1.1&#xA;" annotatedElement="3a647eba-f869-4d35-95b6-ef872219d4f4"/>
            <generalization xmi:id="ed0d65dc-db83-46de-a7c4-021f9991d922" isSubstitutable="true" general="c8bb47d3-d8cf-429d-98af-49f9addcd3b5"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="a73a17a3-16fe-47de-9f4c-129ce810e861" name="ObjectStreamConstants" isAbstract="true">
            <ownedComment xmi:id="29e2e3ad-ac72-4440-984a-4a3ce0c44e8d" body="Constants written into the Object Serialization Stream.&#xA;&#xA;@author  unascribed&#xA;@version 1.34, 01/12/04&#xA;@since JDK 1.1&#xA;" annotatedElement="a73a17a3-16fe-47de-9f4c-129ce810e861"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="23f94159-dc57-40a7-86d8-db17a349aa48" name="OutputStream" clientDependency="30046d1b-ad4b-40e9-a1db-74d93bb37461 141deca8-3e91-4ce6-801b-cac96876ffb0" isAbstract="true">
            <ownedComment xmi:id="9329c9cd-a733-4019-94bc-e74a9a8e438c" body="This abstract class is the superclass of all classes representing&#xA;an output stream of bytes. An output stream accepts output bytes&#xA;and sends them to some sink.&#xA;&lt;p>&#xA;Applications that need to define a subclass of&#xA;&lt;code>OutputStream&lt;/code> must always provide at least a method&#xA;that writes one byte of output.&#xA;&#xA;@author  Arthur van Hoff&#xA;@version 1.29, 04/21/04&#xA;@see     java.io.BufferedOutputStream&#xA;@see     java.io.ByteArrayOutputStream&#xA;@see     java.io.DataOutputStream&#xA;@see     java.io.FilterOutputStream&#xA;@see     java.io.InputStream&#xA;@see     java.io.OutputStream#write(int)&#xA;@since   JDK1.0&#xA;" annotatedElement="23f94159-dc57-40a7-86d8-db17a349aa48"/>
            <interfaceRealization xmi:id="141deca8-3e91-4ce6-801b-cac96876ffb0" name="" supplier="3c998d9c-d5c5-4e4f-b879-d51904b00107" client="23f94159-dc57-40a7-86d8-db17a349aa48" contract="3c998d9c-d5c5-4e4f-b879-d51904b00107"/>
            <interfaceRealization xmi:id="30046d1b-ad4b-40e9-a1db-74d93bb37461" name="" supplier="2811b8ed-7762-4e53-9fef-44916e7c1e6f" client="23f94159-dc57-40a7-86d8-db17a349aa48" contract="2811b8ed-7762-4e53-9fef-44916e7c1e6f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="690b6ee7-8eac-419d-8102-2e0b1e9580d7" name="CharArrayReader">
            <ownedComment xmi:id="976d5a87-e1b2-4119-9949-84894f7f56e6" body="This class implements a character buffer that can be used as a&#xA;character-input stream.&#xA;&#xA;@author&#x9;Herb Jellinek&#xA;@version &#x9;1.22, 02/19/04&#xA;@since       JDK1.1&#xA;" annotatedElement="690b6ee7-8eac-419d-8102-2e0b1e9580d7"/>
            <generalization xmi:id="3a9362fc-60bb-4f0b-bf30-030e9c8f9f5b" isSubstitutable="true" general="b0f73dc4-f4ae-458e-ab18-465c97ad98ba"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0bf66996-168b-4c13-97db-3e76f5981076" name="CharConversionException">
            <ownedComment xmi:id="9f7eb88c-5f5a-4aba-b4b0-2671937a8397" body="Base class for character conversion exceptions.&#xA;&#xA;@author      Asmus Freytag&#xA;@version &#x9;1.15, 12/19/03&#xA;@since       JDK1.1&#xA;" annotatedElement="0bf66996-168b-4c13-97db-3e76f5981076"/>
            <generalization xmi:id="46965bfc-3c4d-4891-997e-81384738d0d5" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9d38e70c-6f67-4630-81da-85074afad01d" name="InputStreamReader">
            <ownedComment xmi:id="7c740cbe-1cf6-4605-883f-470bfef528c7" body="An InputStreamReader is a bridge from byte streams to character streams: It&#xA;reads bytes and decodes them into characters using a specified {@link&#xA;java.nio.charset.Charset &lt;code>charset&lt;/code>}.  The charset that it uses&#xA;may be specified by name or may be given explicitly, or the platform's&#xA;default charset may be accepted.&#xA;&#xA;&lt;p> Each invocation of one of an InputStreamReader's read() methods may&#xA;cause one or more bytes to be read from the underlying byte-input stream.&#xA;To enable the efficient conversion of bytes to characters, more bytes may&#xA;be read ahead from the underlying stream than are necessary to satisfy the&#xA;current read operation.&#xA;&#xA;&lt;p> For top efficiency, consider wrapping an InputStreamReader within a&#xA;BufferedReader.  For example:&#xA;&#xA;&lt;pre>&#xA;BufferedReader in&#xA;= new BufferedReader(new InputStreamReader(System.in));&#xA;&lt;/pre>&#xA;&#xA;@see BufferedReader&#xA;@see InputStream&#xA;@see java.nio.charset.Charset&#xA;&#xA;@version     1.44, 03/12/19&#xA;@author      Mark Reinhold&#xA;@since       JDK1.1&#xA;" annotatedElement="9d38e70c-6f67-4630-81da-85074afad01d"/>
            <generalization xmi:id="c9c286da-261f-4485-a318-838b8aa4fc2c" isSubstitutable="true" general="b0f73dc4-f4ae-458e-ab18-465c97ad98ba"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a2684a1b-e618-4575-85c5-5db4d485673e" name="EOFException">
            <ownedComment xmi:id="9ebb6583-58e0-44ea-84a6-6ebae4d15006" body="Signals that an end of file or end of stream has been reached&#xA;unexpectedly during input.&#xA;&lt;p>&#xA;This exception is mainly used by data input streams to signal end of&#xA;stream. Note that many other input operations return a special value on&#xA;end of stream rather than throwing an exception.&#xA;&lt;p>&#xA;&#xA;@author  Frank Yellin&#xA;@version 1.13, 12/19/03&#xA;@see     java.io.DataInputStream&#xA;@see     java.io.IOException&#xA;@since   JDK1.0&#xA;" annotatedElement="a2684a1b-e618-4575-85c5-5db4d485673e"/>
            <generalization xmi:id="8cd09898-3c60-4abb-9935-2e9398e39941" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1a31edcd-ea4d-4ca9-b7cb-f8f4c63a0453" name="ObjectStreamField" clientDependency="42a42900-256d-4b9c-b84a-9f74295b8ada">
            <ownedComment xmi:id="dd49d7d5-bdb2-491b-9fb6-710de407fc31" body="A description of a Serializable field from a Serializable class.  An array&#xA;of ObjectStreamFields is used to declare the Serializable fields of a class.&#xA;&#xA;@author&#x9;Mike Warres&#xA;@author&#x9;Roger Riggs&#xA;@version 1.45, 04/05/05&#xA;@see ObjectStreamClass&#xA;@since 1.2&#xA;" annotatedElement="1a31edcd-ea4d-4ca9-b7cb-f8f4c63a0453"/>
            <interfaceRealization xmi:id="42a42900-256d-4b9c-b84a-9f74295b8ada" name="" supplier="e118f426-a5a9-4150-8969-e9a80d67a153" client="1a31edcd-ea4d-4ca9-b7cb-f8f4c63a0453" contract="e118f426-a5a9-4150-8969-e9a80d67a153"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d903aefa-4cae-412d-9059-eaac79a9cc2b" name="SerializablePermission" isLeaf="true">
            <ownedComment xmi:id="47da1e57-0da6-481b-93fc-fe9c05c876ab" body="This class is for Serializable permissions. A SerializablePermission&#xA;contains a name (also referred to as a &quot;target name&quot;) but&#xA;no actions list; you either have the named permission&#xA;or you don't.&#xA;&#xA;&lt;P>&#xA;The target name is the name of the Serializable permission (see below).&#xA;&#xA;&lt;P>&#xA;The following table lists all the possible SerializablePermission target names,&#xA;and for each provides a description of what the permission allows&#xA;and a discussion of the risks of granting code the permission.&#xA;&lt;P>&#xA;&#xA;&lt;table border=1 cellpadding=5 summary=&quot;Permission target name, what the permission allows, and associated risks&quot;>&#xA;&lt;tr>&#xA;&lt;th>Permission Target Name&lt;/th>&#xA;&lt;th>What the Permission Allows&lt;/th>&#xA;&lt;th>Risks of Allowing this Permission&lt;/th>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>enableSubclassImplementation&lt;/td>&#xA;&lt;td>Subclass implementation of ObjectOutputStream or ObjectInputStream&#xA;to override the default serialization or deserialization, respectively,&#xA;of objects&lt;/td>&#xA;&lt;td>Code can use this to serialize or&#xA;deserialize classes in a purposefully malfeasant manner. For example,&#xA;during serialization, malicious code can use this to&#xA;purposefully store confidential private field data in a way easily accessible&#xA;to attackers. Or, during deserialization it could, for example, deserialize&#xA;a class with all its private fields zeroed out.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>enableSubstitution&lt;/td>&#xA;&lt;td>Substitution of one object for another during&#xA;serialization or deserialization&lt;/td>&#xA;&lt;td>This is dangerous because malicious code&#xA;can replace the actual object with one which has incorrect or&#xA;malignant data.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;/table>&#xA;&#xA;@see java.security.BasicPermission&#xA;@see java.security.Permission&#xA;@see java.security.Permissions&#xA;@see java.security.PermissionCollection&#xA;@see java.lang.SecurityManager&#xA;&#xA;@version 1.19, 01/12/04&#xA;&#xA;@author Joe Fialli&#xA;@since 1.2&#xA;" annotatedElement="d903aefa-4cae-412d-9059-eaac79a9cc2b"/>
            <generalization xmi:id="2aac2c01-55fb-48ca-a49d-5e9b2de2f4a0" isSubstitutable="true" general="4831e368-c670-40b4-87bd-a8a910a528fa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="25a41528-91d4-4360-a11b-e5c6963d2785" name="DataOutputStream" clientDependency="80f7eb99-0fed-41a1-98d8-cc6e88ea357f">
            <ownedComment xmi:id="4deb489e-3bf6-4761-aeb6-3f491500284c" body="A data output stream lets an application write primitive Java data&#xA;types to an output stream in a portable way. An application can&#xA;then use a data input stream to read the data back in.&#xA;&#xA;@author  unascribed&#xA;@version 1.43, 05/13/04&#xA;@see     java.io.DataInputStream&#xA;@since   JDK1.0&#xA;" annotatedElement="25a41528-91d4-4360-a11b-e5c6963d2785"/>
            <generalization xmi:id="5961f963-07e0-4d4d-8b80-241c3c98946f" isSubstitutable="true" general="c01a0cc2-82be-41f9-973c-05c9c60bb7e8"/>
            <interfaceRealization xmi:id="80f7eb99-0fed-41a1-98d8-cc6e88ea357f" name="" supplier="dfd1d319-49a0-4fe5-a0e7-9b658c5d9c55" client="25a41528-91d4-4360-a11b-e5c6963d2785" contract="dfd1d319-49a0-4fe5-a0e7-9b658c5d9c55"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3eadd93a-5c1d-43b7-a2c3-0524b0971e8a" name="OptionalDataException">
            <ownedComment xmi:id="2d1460ff-0373-4ca9-8ab4-d41ec3906178" body="Exception indicating the failure of an object read operation due to&#xA;unread primitive data, or the end of data belonging to a serialized&#xA;object in the stream.  This exception may be thrown in two cases:&#xA;&#xA;&lt;ul>&#xA;&lt;li>An attempt was made to read an object when the next element in the&#xA;stream is primitive data.  In this case, the OptionalDataException's&#xA;length field is set to the number of bytes of primitive data&#xA;immediately readable from the stream, and the eof field is set to&#xA;false.&#xA;&#xA;&lt;li>An attempt was made to read past the end of data consumable by a&#xA;class-defined readObject or readExternal method.  In this case, the&#xA;OptionalDataException's eof field is set to true, and the length field&#xA;is set to 0.&#xA;&lt;/ul>&#xA;&#xA;@author  unascribed&#xA;@version 1.18, 01/12/04&#xA;@since   JDK1.1&#xA;" annotatedElement="3eadd93a-5c1d-43b7-a2c3-0524b0971e8a"/>
            <generalization xmi:id="54f826ae-2f94-44d5-bf10-d3fc61d62eb1" isSubstitutable="true" general="c8bb47d3-d8cf-429d-98af-49f9addcd3b5"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1e3f839d-473c-48b8-98f5-3bb6c26b2a40" name="DataInputStream" clientDependency="d45e3eca-9550-48a3-b57b-25a717dad431">
            <ownedComment xmi:id="3d296e8e-c6cd-4a3b-9a2d-f0a4dbe22a5c" body="A data input stream lets an application read primitive Java data&#xA;types from an underlying input stream in a machine-independent&#xA;way. An application uses a data output stream to write data that&#xA;can later be read by a data input stream.&#xA;&#xA;@author  Arthur van Hoff&#xA;@version 1.71, 05/28/04&#xA;@see     java.io.DataOutputStream&#xA;@since   JDK1.0&#xA;" annotatedElement="1e3f839d-473c-48b8-98f5-3bb6c26b2a40"/>
            <generalization xmi:id="d229bc1e-6e5e-439d-8b3b-2664ef906ad9" isSubstitutable="true" general="740d283f-3027-4647-a498-6f94656e662b"/>
            <interfaceRealization xmi:id="d45e3eca-9550-48a3-b57b-25a717dad431" name="" supplier="ddbf85e6-73c0-419b-886a-3a984aa68e0d" client="1e3f839d-473c-48b8-98f5-3bb6c26b2a40" contract="ddbf85e6-73c0-419b-886a-3a984aa68e0d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ee3aaef0-e959-4cca-9d5d-9bd2a90ad7dd" name="InputStream" clientDependency="ed376b8e-d5c6-4f9e-ba63-010cd7106d10" isAbstract="true">
            <ownedComment xmi:id="716e7855-5bd7-46dc-a46a-dd8c52b5e33d" body="This abstract class is the superclass of all classes representing&#xA;an input stream of bytes.&#xA;&#xA;&lt;p> Applications that need to define a subclass of &lt;code>InputStream&lt;/code>&#xA;must always provide a method that returns the next byte of input.&#xA;&#xA;@author  Arthur van Hoff&#xA;@version 1.45, 02/19/04&#xA;@see     java.io.BufferedInputStream&#xA;@see     java.io.ByteArrayInputStream&#xA;@see     java.io.DataInputStream&#xA;@see     java.io.FilterInputStream&#xA;@see     java.io.InputStream#read()&#xA;@see     java.io.OutputStream&#xA;@see     java.io.PushbackInputStream&#xA;@since   JDK1.0&#xA;" annotatedElement="ee3aaef0-e959-4cca-9d5d-9bd2a90ad7dd"/>
            <interfaceRealization xmi:id="ed376b8e-d5c6-4f9e-ba63-010cd7106d10" name="" supplier="3c998d9c-d5c5-4e4f-b879-d51904b00107" client="ee3aaef0-e959-4cca-9d5d-9bd2a90ad7dd" contract="3c998d9c-d5c5-4e4f-b879-d51904b00107"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="d359de8b-a8e5-4901-98b0-99c23e339ab5" name="Externalizable" isAbstract="true">
            <ownedComment xmi:id="b3a01089-21b9-4126-b0dc-a4a9a1bcb5dd" body="Only the identity of the class of an Externalizable instance is&#xA;written in the serialization stream and it is the responsibility&#xA;of the class to save and restore the contents of its instances.&#xA;&#xA;The writeExternal and readExternal methods of the Externalizable&#xA;interface are implemented by a class to give the class complete&#xA;control over the format and contents of the stream for an object&#xA;and its supertypes. These methods must explicitly&#xA;coordinate with the supertype to save its state. These methods supersede&#xA;customized implementations of writeObject and readObject methods.&lt;br>&#xA;&#xA;Object Serialization uses the Serializable and Externalizable&#xA;interfaces.  Object persistence mechanisms can use them as well.  Each&#xA;object to be stored is tested for the Externalizable interface. If&#xA;the object supports Externalizable, the writeExternal method is called. If the&#xA;object does not support Externalizable and does implement&#xA;Serializable, the object is saved using&#xA;ObjectOutputStream. &lt;br> When an Externalizable object is&#xA;reconstructed, an instance is created using the public no-arg&#xA;constructor, then the readExternal method called.  Serializable&#xA;objects are restored by reading them from an ObjectInputStream.&lt;br>&#xA;&#xA;An Externalizable instance can designate a substitution object via&#xA;the writeReplace and readResolve methods documented in the Serializable&#xA;interface.&lt;br>&#xA;&#xA;@author  unascribed&#xA;@version 1.19, 01/12/04&#xA;@see java.io.ObjectOutputStream&#xA;@see java.io.ObjectInputStream&#xA;@see java.io.ObjectOutput&#xA;@see java.io.ObjectInput&#xA;@see java.io.Serializable&#xA;@since   JDK1.1&#xA;" annotatedElement="d359de8b-a8e5-4901-98b0-99c23e339ab5"/>
            <generalization xmi:id="dff1514a-ae4e-495d-b0e8-38e50e37d455" isSubstitutable="true" general="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ed210212-779c-4300-8168-01405badd83d" name="FileOutputStream">
            <ownedComment xmi:id="ca79eecb-30ad-4c88-b0d3-c2996f2b05b4" body="A file output stream is an output stream for writing data to a&#xA;&lt;code>File&lt;/code> or to a &lt;code>FileDescriptor&lt;/code>. Whether or not&#xA;a file is available or may be created depends upon the underlying&#xA;platform.  Some platforms, in particular, allow a file to be opened&#xA;for writing by only one &lt;tt>FileOutputStream&lt;/tt> (or other&#xA;file-writing object) at a time.  In such situations the constructors in&#xA;this class will fail if the file involved is already open.&#xA;&#xA;&lt;p>&lt;code>FileOutputStream&lt;/code> is meant for writing streams of raw bytes&#xA;such as image data. For writing streams of characters, consider using&#xA;&lt;code>FileWriter&lt;/code>.&#xA;&#xA;@author  Arthur van Hoff&#xA;@version 1.57, 12/19/03&#xA;@see     java.io.File&#xA;@see     java.io.FileDescriptor&#xA;@see     java.io.FileInputStream&#xA;@since   JDK1.0&#xA;" annotatedElement="ed210212-779c-4300-8168-01405badd83d"/>
            <generalization xmi:id="dafa8a5a-5cc0-4730-b910-26be9783ada9" isSubstitutable="true" general="23f94159-dc57-40a7-86d8-db17a349aa48"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="882f1d96-ded2-4e1d-b9d4-57380f760e83" name="Bits" visibility="package">
            <ownedComment xmi:id="a4b08a15-19cd-4370-9652-a4d84b513b3a" body="Utility methods for packing/unpacking primitive values in/out of byte arrays&#xA;using big-endian byte ordering.&#xA;" annotatedElement="882f1d96-ded2-4e1d-b9d4-57380f760e83"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="12389850-5ed3-4a60-bc0f-dadc9ceaec5d" name="WriteAbortedException">
            <ownedComment xmi:id="d1c4d46b-3977-451e-a2dd-7c42f471daa4" body="Signals that one of the ObjectStreamExceptions was thrown during a&#xA;write operation.  Thrown during a read operation when one of the&#xA;ObjectStreamExceptions was thrown during a write operation.  The&#xA;exception that terminated the write can be found in the detail&#xA;field. The stream is reset to it's initial state and all references&#xA;to objects already deserialized are discarded.&#xA;&#xA;&lt;p>As of release 1.4, this exception has been retrofitted to conform to&#xA;the general purpose exception-chaining mechanism.  The &quot;exception causing&#xA;the abort&quot; that is provided at construction time and&#xA;accessed via the public {@link #detail} field is now known as the&#xA;&lt;i>cause&lt;/i>, and may be accessed via the {@link Throwable#getCause()}&#xA;method, as well as the aforementioned &quot;legacy field.&quot;&#xA;&#xA;@author  unascribed&#xA;@version 1.18, 12/19/03&#xA;@since   JDK1.1&#xA;" annotatedElement="12389850-5ed3-4a60-bc0f-dadc9ceaec5d"/>
            <generalization xmi:id="66133c12-a025-4473-b394-00a769344c07" isSubstitutable="true" general="c8bb47d3-d8cf-429d-98af-49f9addcd3b5"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="22784d17-1ea4-45d8-ba76-75840f3be440" name="PipedReader">
            <ownedComment xmi:id="1d4f8f15-73c5-4012-adee-cc6407110ba2" body="Piped character-input streams.&#xA;&#xA;@version &#x9;1.15, 03/12/19&#xA;@author&#x9;Mark Reinhold&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="22784d17-1ea4-45d8-ba76-75840f3be440"/>
            <generalization xmi:id="c5594ddb-ea6d-4684-a0a3-5bcdcdfed251" isSubstitutable="true" general="b0f73dc4-f4ae-458e-ab18-465c97ad98ba"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="608858f3-4ee3-4700-9573-aa17d44781cd" name="Comparable&lt;File>">
            <templateBinding xmi:id="a0a84293-8720-4028-8057-90fdc142b460" signature="5ad198c9-2870-4ea9-8c7f-1eac95f41aa9">
              <parameterSubstitution xmi:id="9ebed653-f77f-443c-8a1e-817d3dba9d5e" formal="e7a6699c-c87d-47b5-a068-dc2f3a0244ad" actual="e1feca05-3181-4a18-8383-7cb66a5caac2"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9184caee-9227-4eb0-aa30-cbf6dbef6782" name="FilePermission" clientDependency="70e17992-bddb-4a41-b6ef-49e970334608" isLeaf="true">
            <ownedComment xmi:id="19846791-fd0a-4a7e-8bb7-191f8f95b611" body="This class represents access to a file or directory.  A FilePermission consists&#xA;of a pathname and a set of actions valid for that pathname.&#xA;&lt;P>&#xA;Pathname is the pathname of the file or directory granted the specified&#xA;actions. A pathname that ends in &quot;/*&quot; (where &quot;/&quot; is&#xA;the file separator character, &lt;code>File.separatorChar&lt;/code>) indicates&#xA;all the files and directories contained in that directory. A pathname&#xA;that ends with &quot;/-&quot; indicates (recursively) all files&#xA;and subdirectories contained in that directory. A pathname consisting of&#xA;the special token &quot;&lt;&lt;ALL FILES>>&quot; matches &lt;b>any&lt;/b> file.&#xA;&lt;P>&#xA;Note: A pathname consisting of a single &quot;*&quot; indicates all the files&#xA;in the current directory, while a pathname consisting of a single &quot;-&quot;&#xA;indicates all the files in the current directory and&#xA;(recursively) all files and subdirectories contained in the current&#xA;directory.&#xA;&lt;P>&#xA;The actions to be granted are passed to the constructor in a string containing&#xA;a list of one or more comma-separated keywords. The possible keywords are&#xA;&quot;read&quot;, &quot;write&quot;, &quot;execute&quot;, and &quot;delete&quot;. Their meaning is defined as follows:&#xA;&lt;P>&#xA;&lt;DL>&#xA;&lt;DT> read &lt;DD> read permission&#xA;&lt;DT> write &lt;DD> write permission&#xA;&lt;DT> execute&#xA;&lt;DD> execute permission. Allows &lt;code>Runtime.exec&lt;/code> to&#xA;be called. Corresponds to &lt;code>SecurityManager.checkExec&lt;/code>.&#xA;&lt;DT> delete&#xA;&lt;DD> delete permission. Allows &lt;code>File.delete&lt;/code> to&#xA;be called. Corresponds to &lt;code>SecurityManager.checkDelete&lt;/code>.&#xA;&lt;/DL>&#xA;&lt;P>&#xA;The actions string is converted to lowercase before processing.&#xA;&lt;P>&#xA;Be careful when granting FilePermissions. Think about the implications&#xA;of granting read and especially write access to various files and&#xA;directories. The &quot;&lt;&lt;ALL FILES>>&quot; permission with write action is&#xA;especially dangerous. This grants permission to write to the entire&#xA;file system. One thing this effectively allows is replacement of the&#xA;system binary, including the JVM runtime environment.&#xA;&#xA;&lt;p>Please note: Code can always read a file from the same&#xA;directory it's in (or a subdirectory of that directory); it does not&#xA;need explicit permission to do so.&#xA;&#xA;@see java.security.Permission&#xA;@see java.security.Permissions&#xA;@see java.security.PermissionCollection&#xA;&#xA;@version 1.76 04/01/12&#xA;&#xA;@author Marianne Mueller&#xA;@author Roland Schemers&#xA;@since 1.2&#xA;&#xA;@serial exclude&#xA;" annotatedElement="9184caee-9227-4eb0-aa30-cbf6dbef6782"/>
            <generalization xmi:id="65301ca1-0b3a-4c29-b613-82b2cfae5bd3" isSubstitutable="true" general="d9c6788c-6eda-4930-93b7-34c95c7c74cc"/>
            <interfaceRealization xmi:id="70e17992-bddb-4a41-b6ef-49e970334608" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="9184caee-9227-4eb0-aa30-cbf6dbef6782" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c01a0cc2-82be-41f9-973c-05c9c60bb7e8" name="FilterOutputStream">
            <ownedComment xmi:id="774617ec-4e4a-4a4b-9021-4d4ff6c5cfaa" body="This class is the superclass of all classes that filter output&#xA;streams. These streams sit on top of an already existing output&#xA;stream (the &lt;i>underlying&lt;/i> output stream) which it uses as its&#xA;basic sink of data, but possibly transforming the data along the&#xA;way or providing additional functionality.&#xA;&lt;p>&#xA;The class &lt;code>FilterOutputStream&lt;/code> itself simply overrides&#xA;all methods of &lt;code>OutputStream&lt;/code> with versions that pass&#xA;all requests to the underlying output stream. Subclasses of&#xA;&lt;code>FilterOutputStream&lt;/code> may further override some of these&#xA;methods as well as provide additional methods and fields.&#xA;&#xA;@author  Jonathan Payne&#xA;@version 1.31, 12/19/03&#xA;@since   JDK1.0&#xA;" annotatedElement="c01a0cc2-82be-41f9-973c-05c9c60bb7e8"/>
            <generalization xmi:id="a0ae3edb-ec6b-4466-8dd5-c5618e733b58" isSubstitutable="true" general="23f94159-dc57-40a7-86d8-db17a349aa48"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="be8bd57e-ff5e-4a68-a073-eff3353bb96d" name="FileWriter">
            <ownedComment xmi:id="705c7024-bfda-43d5-a8b8-b779c6741958" body="Convenience class for writing character files.  The constructors of this&#xA;class assume that the default character encoding and the default byte-buffer&#xA;size are acceptable.  To specify these values yourself, construct an&#xA;OutputStreamWriter on a FileOutputStream.&#xA;&#xA;&lt;p>Whether or not a file is available or may be created depends upon the&#xA;underlying platform.  Some platforms, in particular, allow a file to be&#xA;opened for writing by only one &lt;tt>FileWriter&lt;/tt> (or other file-writing&#xA;object) at a time.  In such situations the constructors in this class&#xA;will fail if the file involved is already open.&#xA;&#xA;&lt;p>&lt;code>FileWriter&lt;/code> is meant for writing streams of characters.&#xA;For writing streams of raw bytes, consider using a&#xA;&lt;code>FileOutputStream&lt;/code>.&#xA;&#xA;@see OutputStreamWriter&#xA;@see FileOutputStream&#xA;&#xA;@version &#x9;1.18, 03/12/19&#xA;@author&#x9;Mark Reinhold&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="be8bd57e-ff5e-4a68-a073-eff3353bb96d"/>
            <generalization xmi:id="1eb99a66-0031-442b-b755-ec192c6dd583" isSubstitutable="true" general="e9593e91-73f9-4053-a385-0c0d2a6d3b84"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a03d7c2d-dd3d-41b4-9cce-07475d86d6a3" name="InvalidObjectException">
            <ownedComment xmi:id="e0815007-0d1c-4c25-920f-8050721ba909" body="Indicates that one or more deserialized objects failed validation&#xA;tests.  The argument should provide the reason for the failure.&#xA;&#xA;@see ObjectInputValidation&#xA;@since JDK1.1&#xA;&#xA;@author  unascribed&#xA;@version 1.16, 01/12/04&#xA;@since   JDK1.1&#xA;" annotatedElement="a03d7c2d-dd3d-41b4-9cce-07475d86d6a3"/>
            <generalization xmi:id="5a37153d-d1fa-48be-afa2-bf912e5e3fbe" isSubstitutable="true" general="c8bb47d3-d8cf-429d-98af-49f9addcd3b5"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c8bb47d3-d8cf-429d-98af-49f9addcd3b5" name="ObjectStreamException" isAbstract="true">
            <ownedComment xmi:id="5511c016-4a29-4506-bce1-6fa3e53a518d" body="Superclass of all exceptions specific to Object Stream classes.&#xA;&#xA;@author  unascribed&#xA;@version 1.13, 12/19/03&#xA;@since   JDK1.1&#xA;" annotatedElement="c8bb47d3-d8cf-429d-98af-49f9addcd3b5"/>
            <generalization xmi:id="f177ed88-3c02-46be-8673-08a1343fede4" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b623cc9d-79b7-44b2-a742-3e52b5ae9343" name="ByteArrayOutputStream">
            <ownedComment xmi:id="98617018-6015-47ca-8460-32991280267a" body="This class implements an output stream in which the data is&#xA;written into a byte array. The buffer automatically grows as data&#xA;is written to it.&#xA;The data can be retrieved using &lt;code>toByteArray()&lt;/code> and&#xA;&lt;code>toString()&lt;/code>.&#xA;&lt;p>&#xA;Closing a &lt;tt>ByteArrayOutputStream&lt;/tt> has no effect. The methods in&#xA;this class can be called after the stream has been closed without&#xA;generating an &lt;tt>IOException&lt;/tt>.&#xA;&#xA;@author  Arthur van Hoff&#xA;@version 1.49, 05/18/04&#xA;@since   JDK1.0&#xA;" annotatedElement="b623cc9d-79b7-44b2-a742-3e52b5ae9343"/>
            <generalization xmi:id="0da19f1e-8208-46b8-ae8c-b7a0d817cde6" isSubstitutable="true" general="23f94159-dc57-40a7-86d8-db17a349aa48"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c665f68b-1cfc-4ead-8620-a7afab691266" name="BufferedInputStream">
            <ownedComment xmi:id="a71e866b-8cf4-4580-b976-c6af4c2aac14" body="A &lt;code>BufferedInputStream&lt;/code> adds&#xA;functionality to another input stream-namely,&#xA;the ability to buffer the input and to&#xA;support the &lt;code>mark&lt;/code> and &lt;code>reset&lt;/code>&#xA;methods. When  the &lt;code>BufferedInputStream&lt;/code>&#xA;is created, an internal buffer array is&#xA;created. As bytes  from the stream are read&#xA;or skipped, the internal buffer is refilled&#xA;as necessary  from the contained input stream,&#xA;many bytes at a time. The &lt;code>mark&lt;/code>&#xA;operation  remembers a point in the input&#xA;stream and the &lt;code>reset&lt;/code> operation&#xA;causes all the  bytes read since the most&#xA;recent &lt;code>mark&lt;/code> operation to be&#xA;reread before new bytes are  taken from&#xA;the contained input stream.&#xA;&#xA;@author  Arthur van Hoff&#xA;@version 1.50, 05/03/04&#xA;@since   JDK1.0&#xA;" annotatedElement="c665f68b-1cfc-4ead-8620-a7afab691266"/>
            <generalization xmi:id="c8e8b6cd-3864-4e0e-956e-6c90bb066083" isSubstitutable="true" general="740d283f-3027-4647-a498-6f94656e662b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="2811b8ed-7762-4e53-9fef-44916e7c1e6f" name="Flushable" isAbstract="true">
            <ownedComment xmi:id="99598384-e013-4be2-8f42-d63ebcdbb28b" body="A &lt;tt>Flushable&lt;/tt> is a destination of data that can be flushed.  The&#xA;flush method is invoked to write any buffered output to the underlying&#xA;stream.&#xA;&#xA;@version 1.1 04/04/21&#xA;@since 1.5&#xA;" annotatedElement="2811b8ed-7762-4e53-9fef-44916e7c1e6f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3b0c0cc0-1eba-4475-a398-9fa72c20763e" name="InterruptedIOException">
            <ownedComment xmi:id="01364985-b474-45e8-9cd4-8c30f0c119e8" body="Signals that an I/O operation has been interrupted. An&#xA;&lt;code>InterruptedIOException&lt;/code> is thrown to indicate that an&#xA;input or output transfer has been terminated because the thread&#xA;performing it was interrupted. The field {@link #bytesTransferred}&#xA;indicates how many bytes were successfully transferred before&#xA;the interruption occurred.&#xA;&#xA;@author  unascribed&#xA;@version 1.19, 12/19/03&#xA;@see     java.io.InputStream&#xA;@see     java.io.OutputStream&#xA;@see     java.lang.Thread#interrupt()&#xA;@since   JDK1.0&#xA;" annotatedElement="3b0c0cc0-1eba-4475-a398-9fa72c20763e"/>
            <generalization xmi:id="46b43a85-47b0-4140-88d3-ad73ea09a1ec" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="86ccce0b-0d4c-44ae-8a2a-71c7b2c68c3c" name="PrintWriter">
            <ownedComment xmi:id="1bac0329-a0ed-4972-86d5-fc303b9f3340" body="Print formatted representations of objects to a text-output stream.  This&#xA;class implements all of the &lt;tt>print&lt;/tt> methods found in {@link&#xA;PrintStream}.  It does not contain methods for writing raw bytes, for which&#xA;a program should use unencoded byte streams.&#xA;&#xA;&lt;p> Unlike the {@link PrintStream} class, if automatic flushing is enabled&#xA;it will be done only when one of the &lt;tt>println&lt;/tt>, &lt;tt>printf&lt;/tt>, or&#xA;&lt;tt>format&lt;/tt> methods is invoked, rather than whenever a newline character&#xA;happens to be output.  These methods use the platform's own notion of line&#xA;separator rather than the newline character.&#xA;&#xA;&lt;p> Methods in this class never throw I/O exceptions, although some of its&#xA;constructors may.  The client may inquire as to whether any errors have&#xA;occurred by invoking {@link #checkError checkError()}.&#xA;&#xA;@version &#x9;1.37, 07/16/04&#xA;@author&#x9;Frank Yellin&#xA;@author&#x9;Mark Reinhold&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="86ccce0b-0d4c-44ae-8a2a-71c7b2c68c3c"/>
            <generalization xmi:id="8254e0b9-5e3a-40c0-beeb-dcb6dff98e0f" isSubstitutable="true" general="35b577c4-0d70-4803-924a-56617a83af53"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3837bffb-74b7-437b-8872-d4c81180bf24" name="LineNumberInputStream">
            <ownedComment xmi:id="f58df3a7-f8b0-4315-8e00-9f915e753411" body="This class is an input stream filter that provides the added&#xA;functionality of keeping track of the current line number.&#xA;&lt;p>&#xA;A line is a sequence of bytes ending with a carriage return&#xA;character (&lt;code>'&amp;#92;r'&lt;/code>), a newline character&#xA;(&lt;code>'&amp;#92;n'&lt;/code>), or a carriage return character followed&#xA;immediately by a linefeed character. In all three cases, the line&#xA;terminating character(s) are returned as a single newline character.&#xA;&lt;p>&#xA;The line number begins at &lt;code>0&lt;/code>, and is incremented by&#xA;&lt;code>1&lt;/code> when a &lt;code>read&lt;/code> returns a newline character.&#xA;&#xA;@author     Arthur van Hoff&#xA;@version    1.27, 05/18/04&#xA;@see        java.io.LineNumberReader&#xA;@since      JDK1.0&#xA;@deprecated This class incorrectly assumes that bytes adequately represent&#xA;characters.  As of JDK&amp;nbsp;1.1, the preferred way to operate on&#xA;character streams is via the new character-stream classes, which&#xA;include a class for counting line numbers.&#xA;" annotatedElement="3837bffb-74b7-437b-8872-d4c81180bf24"/>
            <generalization xmi:id="601c4123-cc2a-4159-82f1-0fd17810cb7d" isSubstitutable="true" general="740d283f-3027-4647-a498-6f94656e662b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b0f73dc4-f4ae-458e-ab18-465c97ad98ba" name="Reader" clientDependency="7943f917-bbff-474f-a31f-0a6a8a6eb402 ec99acd0-3966-483b-9f0c-533772dbd155" isAbstract="true">
            <ownedComment xmi:id="bca34ab7-e6cb-4ebc-99e7-a239331f4fe3" body="Abstract class for reading character streams.  The only methods that a&#xA;subclass must implement are read(char[], int, int) and close().  Most&#xA;subclasses, however, will override some of the methods defined here in order&#xA;to provide higher efficiency, additional functionality, or both.&#xA;&#xA;&#xA;@see BufferedReader&#xA;@see   LineNumberReader&#xA;@see CharArrayReader&#xA;@see InputStreamReader&#xA;@see   FileReader&#xA;@see FilterReader&#xA;@see   PushbackReader&#xA;@see PipedReader&#xA;@see StringReader&#xA;@see Writer&#xA;&#xA;@version &#x9;1.27, 03/12/19&#xA;@author&#x9;Mark Reinhold&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="b0f73dc4-f4ae-458e-ab18-465c97ad98ba"/>
            <interfaceRealization xmi:id="7943f917-bbff-474f-a31f-0a6a8a6eb402" name="" supplier="4245e8f4-88b0-4637-bbe8-d441309e9db9" client="b0f73dc4-f4ae-458e-ab18-465c97ad98ba" contract="4245e8f4-88b0-4637-bbe8-d441309e9db9"/>
            <interfaceRealization xmi:id="ec99acd0-3966-483b-9f0c-533772dbd155" name="" supplier="3c998d9c-d5c5-4e4f-b879-d51904b00107" client="b0f73dc4-f4ae-458e-ab18-465c97ad98ba" contract="3c998d9c-d5c5-4e4f-b879-d51904b00107"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a970c1a4-41ec-4604-915c-f96ec2a9580a" name="PipedOutputStream">
            <ownedComment xmi:id="8873f5a5-de0f-479c-a6f2-b91b32ed977f" body="A piped output stream can be connected to a piped input stream&#xA;to create a communications pipe. The piped output stream is the&#xA;sending end of the pipe. Typically, data is written to a&#xA;&lt;code>PipedOutputStream&lt;/code> object by one thread and data is&#xA;read from the connected &lt;code>PipedInputStream&lt;/code> by some&#xA;other thread. Attempting to use both objects from a single thread&#xA;is not recommended as it may deadlock the thread.&#xA;&#xA;@author  James Gosling&#xA;@version 1.26, 12/19/03&#xA;@see     java.io.PipedInputStream&#xA;@since   JDK1.0&#xA;" annotatedElement="a970c1a4-41ec-4604-915c-f96ec2a9580a"/>
            <generalization xmi:id="5607be87-2490-47cb-9cfc-f596c302257f" isSubstitutable="true" general="23f94159-dc57-40a7-86d8-db17a349aa48"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="97fa851f-ae78-405c-a010-fe7e1f3519a1" name="PrintStream" clientDependency="1b4066ca-f304-4bcf-9e58-6fe4c9cc27be 2e40b3f0-6bc0-4ccd-a734-a6489c4f3deb">
            <ownedComment xmi:id="418d1b98-26ad-42e4-8f70-4b87d59b184a" body="A &lt;code>PrintStream&lt;/code> adds functionality to another output stream,&#xA;namely the ability to print representations of various data values&#xA;conveniently.  Two other features are provided as well.  Unlike other output&#xA;streams, a &lt;code>PrintStream&lt;/code> never throws an&#xA;&lt;code>IOException&lt;/code>; instead, exceptional situations merely set an&#xA;internal flag that can be tested via the &lt;code>checkError&lt;/code> method.&#xA;Optionally, a &lt;code>PrintStream&lt;/code> can be created so as to flush&#xA;automatically; this means that the &lt;code>flush&lt;/code> method is&#xA;automatically invoked after a byte array is written, one of the&#xA;&lt;code>println&lt;/code> methods is invoked, or a newline character or byte&#xA;(&lt;code>'\n'&lt;/code>) is written.&#xA;&#xA;&lt;p> All characters printed by a &lt;code>PrintStream&lt;/code> are converted into&#xA;bytes using the platform's default character encoding.  The &lt;code>{@link&#xA;PrintWriter}&lt;/code> class should be used in situations that require writing&#xA;characters rather than bytes.&#xA;&#xA;@version    1.32, 04/07/16&#xA;@author     Frank Yellin&#xA;@author     Mark Reinhold&#xA;@since      JDK1.0&#xA;" annotatedElement="97fa851f-ae78-405c-a010-fe7e1f3519a1"/>
            <generalization xmi:id="f6d45813-fba1-48b4-9029-b7459a5e7668" isSubstitutable="true" general="c01a0cc2-82be-41f9-973c-05c9c60bb7e8"/>
            <interfaceRealization xmi:id="2e40b3f0-6bc0-4ccd-a734-a6489c4f3deb" name="" supplier="e1b0e7ce-3e7f-4c85-be61-5b3588027acb" client="97fa851f-ae78-405c-a010-fe7e1f3519a1" contract="e1b0e7ce-3e7f-4c85-be61-5b3588027acb"/>
            <interfaceRealization xmi:id="1b4066ca-f304-4bcf-9e58-6fe4c9cc27be" name="" supplier="3c998d9c-d5c5-4e4f-b879-d51904b00107" client="97fa851f-ae78-405c-a010-fe7e1f3519a1" contract="3c998d9c-d5c5-4e4f-b879-d51904b00107"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="73bb35d1-915a-49e5-941a-4fc07af1cdc2" name="FilterWriter" isAbstract="true">
            <ownedComment xmi:id="6989c82b-2f2f-4e07-af58-2d8050e29fe9" body="Abstract class for writing filtered character streams.&#xA;The abstract class &lt;code>FilterWriter&lt;/code> itself&#xA;provides default methods that pass all requests to the&#xA;contained stream. Subclasses of &lt;code>FilterWriter&lt;/code>&#xA;should override some of these methods and may also&#xA;provide additional methods and fields.&#xA;&#xA;@version &#x9;1.16, 03/12/19&#xA;@author&#x9;Mark Reinhold&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="73bb35d1-915a-49e5-941a-4fc07af1cdc2"/>
            <generalization xmi:id="da588d65-7933-402d-a0fc-8d1997337c39" isSubstitutable="true" general="35b577c4-0d70-4803-924a-56617a83af53"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="dfd1d319-49a0-4fe5-a0e7-9b658c5d9c55" name="DataOutput" isAbstract="true">
            <ownedComment xmi:id="ab94df4c-1e53-4d3a-a169-99c542ca8e22" body="The &lt;code>DataOutput&lt;/code> interface provides&#xA;for converting data from any of the Java&#xA;primitive types to a series of bytes and&#xA;writing these bytes to a binary stream.&#xA;There is  also a facility for converting&#xA;a &lt;code>String&lt;/code> into&#xA;&lt;a href=&quot;DataInput.html#modified-utf-8&quot;>modified UTF-8&lt;/a>&#xA;format and writing the resulting series&#xA;of bytes.&#xA;&lt;p>&#xA;For all the methods in this interface that&#xA;write bytes, it is generally true that if&#xA;a byte cannot be written for any reason,&#xA;an &lt;code>IOException&lt;/code> is thrown.&#xA;&#xA;@author  Frank Yellin&#xA;@version 1.21, 05/13/04&#xA;@see     java.io.DataInput&#xA;@see     java.io.DataOutputStream&#xA;@since   JDK1.0&#xA;" annotatedElement="dfd1d319-49a0-4fe5-a0e7-9b658c5d9c55"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="635262ea-6c3b-428f-a810-12ac6754433e" name="StreamCorruptedException">
            <ownedComment xmi:id="91fb0206-c4a6-4c3f-86f6-cdba2e037cfe" body="Thrown when control information that was read from an object stream&#xA;violates internal consistency checks.&#xA;&#xA;@author  unascribed&#xA;@version 1.14, 12/19/03&#xA;@since   JDK1.1&#xA;" annotatedElement="635262ea-6c3b-428f-a810-12ac6754433e"/>
            <generalization xmi:id="ef2a23bb-dc08-4682-9300-08bb295be275" isSubstitutable="true" general="c8bb47d3-d8cf-429d-98af-49f9addcd3b5"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="29e89d5e-2192-4daa-99fe-6cfbc246e762" name="FilePermissionCollection" visibility="package" clientDependency="f84206db-5406-4182-a16f-0487bd1d719e" isLeaf="true">
            <ownedComment xmi:id="d2214d1e-e1e0-4cc0-b28d-b7ad5fb829ea" body="A FilePermissionCollection stores a set of FilePermission permissions.&#xA;FilePermission objects&#xA;must be stored in a manner that allows them to be inserted in any&#xA;order, but enable the implies function to evaluate the implies&#xA;method.&#xA;For example, if you have two FilePermissions:&#xA;&lt;OL>&#xA;&lt;LI> &quot;/tmp/-&quot;, &quot;read&quot;&#xA;&lt;LI> &quot;/tmp/scratch/foo&quot;, &quot;write&quot;&#xA;&lt;/OL>&#xA;And you are calling the implies function with the FilePermission:&#xA;&quot;/tmp/scratch/foo&quot;, &quot;read,write&quot;, then the implies function must&#xA;take into account both the /tmp/- and /tmp/scratch/foo&#xA;permissions, so the effective permission is &quot;read,write&quot;.&#xA;&#xA;@see java.security.Permission&#xA;@see java.security.Permissions&#xA;@see java.security.PermissionCollection&#xA;&#xA;@version 1.76 01/12/04&#xA;&#xA;@author Marianne Mueller&#xA;@author Roland Schemers&#xA;&#xA;@serial include&#xA;&#xA;" annotatedElement="29e89d5e-2192-4daa-99fe-6cfbc246e762"/>
            <generalization xmi:id="f6cd20ab-63b2-48c6-92c2-5f76acce108b" isSubstitutable="true" general="528e6ee9-bd4d-433a-b08d-a8e30fb7d9c7"/>
            <interfaceRealization xmi:id="f84206db-5406-4182-a16f-0487bd1d719e" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="29e89d5e-2192-4daa-99fe-6cfbc246e762" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="19ba5a86-2d9b-4890-94f8-fe8e20d2f296" name="ObjectStreamClass" clientDependency="582db365-1fd0-470e-9038-1fdde20785ea">
            <ownedComment xmi:id="797eee95-1c0e-4fc2-83ef-ea42deac3311" body="Serialization's descriptor for classes.  It contains the name and&#xA;serialVersionUID of the class.  The ObjectStreamClass for a specific class&#xA;loaded in this Java VM can be found/created using the lookup method.&#xA;&#xA;&lt;p>The algorithm to compute the SerialVersionUID is described in&#xA;&lt;a href=&quot;../../../guide/serialization/spec/class.doc4.html&quot;>Object&#xA;Serialization Specification, Section 4.4, Stream Unique Identifiers&lt;/a>.&#xA;&#xA;@author&#x9;Mike Warres&#xA;@author&#x9;Roger Riggs&#xA;@version 1.98 02/02/00&#xA;@see ObjectStreamField&#xA;@see &lt;a href=&quot;../../../guide/serialization/spec/class.doc.html&quot;>Object Serialization Specification, Section 4, Class Descriptors&lt;/a>&#xA;@since   JDK1.1&#xA;" annotatedElement="19ba5a86-2d9b-4890-94f8-fe8e20d2f296"/>
            <interfaceRealization xmi:id="582db365-1fd0-470e-9038-1fdde20785ea" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="19ba5a86-2d9b-4890-94f8-fe8e20d2f296" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="26736a8a-13af-477b-8506-6514d021bbfb" name="EntryFuture" visibility="private">
              <ownedComment xmi:id="c9472cff-e97d-40f6-ac72-b03a63462cd5" body="Placeholder used in class descriptor and field reflector lookup tables&#xA;for an entry in the process of being initialized.  (Internal) callers&#xA;which receive an EntryFuture belonging to another thread as the result&#xA;of a lookup should call the get() method of the EntryFuture; this will&#xA;return the actual entry once it is ready for use and has been set().  To&#xA;conserve objects, EntryFutures synchronize on themselves.&#xA;" annotatedElement="26736a8a-13af-477b-8506-6514d021bbfb"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="3b6c869a-01e8-495f-a475-b25bac0238eb" name="ClassDataSlot" visibility="package">
              <ownedComment xmi:id="4cbb8a11-809f-48d3-a652-911761485c55" body="Class representing the portion of an object's serialized form allotted&#xA;to data described by a given class descriptor.  If &quot;hasData&quot; is false,&#xA;the object's serialized form does not contain data associated with the&#xA;class descriptor.&#xA;" annotatedElement="3b6c869a-01e8-495f-a475-b25bac0238eb"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="2c0244ee-be9f-4a69-a9fb-e1e4954a1f8f" name="MemberSignature" visibility="private">
              <ownedComment xmi:id="deecca4f-2ade-4563-b41a-b0b8cb69717f" body="Class for computing and caching field/constructor/method signatures&#xA;during serialVersionUID calculation.&#xA;" annotatedElement="2c0244ee-be9f-4a69-a9fb-e1e4954a1f8f"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="e10e135f-77ca-459f-a52e-4a527c09c018" name="FieldReflector" visibility="private">
              <ownedComment xmi:id="27c409bc-5aba-4052-9a29-17a6294d313b" body="Class for setting and retrieving serializable field values in batch.&#xA;" annotatedElement="e10e135f-77ca-459f-a52e-4a527c09c018"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="58c47a21-167f-4a01-a7fd-76c7c77d8505" name="FieldReflectorKey" visibility="private">
              <ownedComment xmi:id="e9ee133a-af77-4a2c-b209-54d4e21c8893" body="FieldReflector cache lookup key.  Keys are considered equal if they&#xA;refer to the same class and equivalent field formats.&#xA;" annotatedElement="58c47a21-167f-4a01-a7fd-76c7c77d8505"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1e9e80d3-dfda-4992-9441-81c7f6a98759" name="StreamTokenizer">
            <ownedComment xmi:id="9d255601-f0b7-4476-9c98-cd0d8324fec2" body="The &lt;code>StreamTokenizer&lt;/code> class takes an input stream and&#xA;parses it into &quot;tokens&quot;, allowing the tokens to be&#xA;read one at a time. The parsing process is controlled by a table&#xA;and a number of flags that can be set to various states. The&#xA;stream tokenizer can recognize identifiers, numbers, quoted&#xA;strings, and various comment styles.&#xA;&lt;p>&#xA;Each byte read from the input stream is regarded as a character&#xA;in the range &lt;code>'&amp;#92;u0000'&lt;/code> through &lt;code>'&amp;#92;u00FF'&lt;/code>.&#xA;The character value is used to look up five possible attributes of&#xA;the character: &lt;i>white space&lt;/i>, &lt;i>alphabetic&lt;/i>,&#xA;&lt;i>numeric&lt;/i>, &lt;i>string quote&lt;/i>, and &lt;i>comment character&lt;/i>.&#xA;Each character can have zero or more of these attributes.&#xA;&lt;p>&#xA;In addition, an instance has four flags. These flags indicate:&#xA;&lt;ul>&#xA;&lt;li>Whether line terminators are to be returned as tokens or treated&#xA;as white space that merely separates tokens.&#xA;&lt;li>Whether C-style comments are to be recognized and skipped.&#xA;&lt;li>Whether C++-style comments are to be recognized and skipped.&#xA;&lt;li>Whether the characters of identifiers are converted to lowercase.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;A typical application first constructs an instance of this class,&#xA;sets up the syntax tables, and then repeatedly loops calling the&#xA;&lt;code>nextToken&lt;/code> method in each iteration of the loop until&#xA;it returns the value &lt;code>TT_EOF&lt;/code>.&#xA;&#xA;@author  James Gosling&#xA;@version 1.44, 05/18/04&#xA;@see     java.io.StreamTokenizer#nextToken()&#xA;@see     java.io.StreamTokenizer#TT_EOF&#xA;@since   JDK1.0&#xA;" annotatedElement="1e9e80d3-dfda-4992-9441-81c7f6a98759"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="602e48a6-5aa7-40ce-bdd3-94eed24c1da4" name="BufferedWriter">
            <ownedComment xmi:id="4c019213-328c-4fd9-a577-19b083969ef2" body="Write text to a character-output stream, buffering characters so as to&#xA;provide for the efficient writing of single characters, arrays, and strings.&#xA;&#xA;&lt;p> The buffer size may be specified, or the default size may be accepted.&#xA;The default is large enough for most purposes.&#xA;&#xA;&lt;p> A newLine() method is provided, which uses the platform's own notion of&#xA;line separator as defined by the system property &lt;tt>line.separator&lt;/tt>.&#xA;Not all platforms use the newline character ('\n') to terminate lines.&#xA;Calling this method to terminate each output line is therefore preferred to&#xA;writing a newline character directly.&#xA;&#xA;&lt;p> In general, a Writer sends its output immediately to the underlying&#xA;character or byte stream.  Unless prompt output is required, it is advisable&#xA;to wrap a BufferedWriter around any Writer whose write() operations may be&#xA;costly, such as FileWriters and OutputStreamWriters.  For example,&#xA;&#xA;&lt;pre>&#xA;PrintWriter out&#xA;= new PrintWriter(new BufferedWriter(new FileWriter(&quot;foo.out&quot;)));&#xA;&lt;/pre>&#xA;&#xA;will buffer the PrintWriter's output to the file.  Without buffering, each&#xA;invocation of a print() method would cause characters to be converted into&#xA;bytes that would then be written immediately to the file, which can be very&#xA;inefficient.&#xA;&#xA;@see PrintWriter&#xA;@see FileWriter&#xA;@see OutputStreamWriter&#xA;&#xA;@version &#x9;1.26, 03/12/19&#xA;@author&#x9;Mark Reinhold&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="602e48a6-5aa7-40ce-bdd3-94eed24c1da4"/>
            <generalization xmi:id="56fee376-cd96-479e-a413-9ae6f9ebf5d6" isSubstitutable="true" general="35b577c4-0d70-4803-924a-56617a83af53"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="99b0d191-b56c-4f54-bc19-b4800a05f770" name="WinNTFileSystem" visibility="package">
            <ownedComment xmi:id="86fa07fc-6a97-41b7-8558-d347487771b7" body="Unicode-aware FileSystem for Windows NT/2000.&#xA;&#xA;@author Konstantin Kladko&#xA;@version 1.9, 04/03/20&#xA;@since 1.4&#xA;" annotatedElement="99b0d191-b56c-4f54-bc19-b4800a05f770"/>
            <generalization xmi:id="34af5bb3-e7ff-42b2-a343-b2c813167223" isSubstitutable="true" general="10429eb4-c033-4137-893d-aa9805e629e6"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="dac2e972-3946-401a-a227-127bde89263a" name="StringWriter">
            <ownedComment xmi:id="a3d5ed61-1702-47b0-8bca-a0cb260e3d8f" body="A character stream that collects its output in a string buffer, which can&#xA;then be used to construct a string.&#xA;&lt;p>&#xA;Closing a &lt;tt>StringWriter&lt;/tt> has no effect. The methods in this class&#xA;can be called after the stream has been closed without generating an&#xA;&lt;tt>IOException&lt;/tt>.&#xA;&#xA;@version &#x9;1.24, 04/07/16&#xA;@author&#x9;Mark Reinhold&#xA;@since&#x9;JDK1.1&#xA;" annotatedElement="dac2e972-3946-401a-a227-127bde89263a"/>
            <generalization xmi:id="d6dbcc32-7edd-4cb6-9af4-fed791eb08d6" isSubstitutable="true" general="35b577c4-0d70-4803-924a-56617a83af53"/>
          </packagedElement>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="3841c671-653a-4d6b-9331-5a496eeee0c7" name="org">
        <packagedElement xmi:type="uml:Package" xmi:id="721eac25-fca3-4c52-b21b-29896bec043d" name="apache">
          <packagedElement xmi:type="uml:Package" xmi:id="f0d4ede5-6502-4cbd-983a-7ca6392f9d7e" name="xpath">
            <packagedElement xmi:type="uml:Class" xmi:id="6dc72bb6-0b14-4387-a4ef-776465063b33" name="XPathAPI"/>
            <packagedElement xmi:type="uml:Class" xmi:id="8f0ecebe-1145-4c0b-9afa-a12d97ef6cd2" name="DOMHelper"/>
            <packagedElement xmi:type="uml:Package" xmi:id="d938cacf-3a0a-4f46-9c15-cb8e5d507ad1" name="domapi">
              <packagedElement xmi:type="uml:Class" xmi:id="9e773c2e-8897-4d7a-8709-fb073ab52eee" name="XPathEvaluatorImpl">
                <nestedClassifier xmi:type="uml:Class" xmi:id="3b790412-9a1c-411b-a90e-9f0eeb6139a5" name="DummyPrefixResolver" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="d77a60d6-9cf2-4690-8790-7d68ca1f6403" name="XPathResultImpl"/>
              <packagedElement xmi:type="uml:Class" xmi:id="0c4014d6-effc-493d-bf5a-65c86cc67d13" name="XPathExpressionImpl"/>
              <packagedElement xmi:type="uml:Class" xmi:id="22113445-83a6-4173-ba85-2f3c068a431d" name="XPathNSResolverImpl"/>
              <packagedElement xmi:type="uml:Class" xmi:id="dad58e60-fb2b-4f29-bff0-5724c8ba073f" name="XPathNamespaceImpl"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e2f67e1e-326c-46fd-bb17-98cec5232aea" name="XPath"/>
            <packagedElement xmi:type="uml:Interface" xmi:id="62ddbc0c-a81f-449b-b252-a77a75ca207c" name="WhitespaceStrippingElementMatcher" isAbstract="true"/>
            <packagedElement xmi:type="uml:Class" xmi:id="09c96589-6352-4af6-948a-beca134619fd" name="Expression" isAbstract="true"/>
            <packagedElement xmi:type="uml:Class" xmi:id="aa55d52a-4bcc-465d-a0f3-313eef922cf6" name="XPathProcessorException"/>
            <packagedElement xmi:type="uml:Class" xmi:id="a03c06b6-3cb5-4b9c-83bc-7b59ba9db510" name="NodeSetDTM"/>
            <packagedElement xmi:type="uml:Package" xmi:id="2e009283-58de-4e4a-af66-5f14b96f2f2b" name="operations">
              <packagedElement xmi:type="uml:Class" xmi:id="a8951c56-e8bf-4414-9fec-dd22d356f6b2" name="Gte"/>
              <packagedElement xmi:type="uml:Class" xmi:id="cd430682-4c80-4121-a040-2285b671a112" name="String"/>
              <packagedElement xmi:type="uml:Class" xmi:id="991c8ec2-c357-4fdc-a158-abdf4bfcbdff" name="Div"/>
              <packagedElement xmi:type="uml:Class" xmi:id="4d31447f-1773-4f5e-9fb7-c0baa0dc0c58" name="Or"/>
              <packagedElement xmi:type="uml:Class" xmi:id="60888cca-a3f0-4f91-9714-de2fc2a278ea" name="Plus"/>
              <packagedElement xmi:type="uml:Class" xmi:id="4208a242-29d6-4f38-b7be-ad7a6565c13d" name="Lte"/>
              <packagedElement xmi:type="uml:Class" xmi:id="55f3ca12-1466-47d1-82c6-897217590020" name="Equals"/>
              <packagedElement xmi:type="uml:Class" xmi:id="f3b62b9a-81e4-4427-8a8a-af75d7b4fe11" name="Bool"/>
              <packagedElement xmi:type="uml:Class" xmi:id="4160cc5f-c958-4e76-af24-1c00d5b5896a" name="Quo"/>
              <packagedElement xmi:type="uml:Class" xmi:id="a9b2218c-afe1-4a88-8968-26b13c568bdc" name="And"/>
              <packagedElement xmi:type="uml:Class" xmi:id="2b26c44f-929a-4c99-9076-3899f02952df" name="Number"/>
              <packagedElement xmi:type="uml:Class" xmi:id="d18a867f-e11d-48cd-966a-836a4f842f94" name="Variable"/>
              <packagedElement xmi:type="uml:Class" xmi:id="794b7cca-32cd-42d6-947a-a2a57fea8e93" name="Neg"/>
              <packagedElement xmi:type="uml:Class" xmi:id="7b6367d6-bbad-41f8-9f13-fdf788ae0cbb" name="NotEquals"/>
              <packagedElement xmi:type="uml:Class" xmi:id="5c78e824-0e0f-4e6f-bead-21582a32a7e5" name="Minus"/>
              <packagedElement xmi:type="uml:Class" xmi:id="2a390320-42c7-4231-9a28-f0e4a7ca2755" name="UnaryOperation" isAbstract="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="a427e82b-46a8-4982-8840-3c88df7c2f84" name="VariableSafeAbsRef"/>
              <packagedElement xmi:type="uml:Class" xmi:id="f9004eb1-f3b7-4505-b442-efe7138d688d" name="Operation">
                <nestedClassifier xmi:type="uml:Class" xmi:id="9573757d-bcb0-4adc-b08d-c3b814e39453" name="LeftExprOwner" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="e5fa1eba-f47b-4f43-9aea-68c589fc1f0c" name="Lt"/>
              <packagedElement xmi:type="uml:Class" xmi:id="a572fb01-e3d7-43b5-9434-36dc9031b4a9" name="Mod"/>
              <packagedElement xmi:type="uml:Class" xmi:id="f1d2d38f-9746-4528-973a-4b2f2c16e494" name="Mult"/>
              <packagedElement xmi:type="uml:Class" xmi:id="c253fb3f-eccc-4da1-87e6-62626c111f0f" name="Gt"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="fffb940b-e365-4d14-82e6-9248b0366009" name="compiler">
              <packagedElement xmi:type="uml:Class" xmi:id="68e157d7-8c6c-475d-98c8-14c3993c6427" name="Keywords"/>
              <packagedElement xmi:type="uml:Class" xmi:id="c552f3a9-7ace-46fe-b941-ca4ecf9b2ad4" name="XPathParser"/>
              <packagedElement xmi:type="uml:Class" xmi:id="c01b5b45-8ed3-44e5-b804-51a4dbb29087" name="PsuedoNames"/>
              <packagedElement xmi:type="uml:Class" xmi:id="15d95330-e842-458f-8e06-26b199f6864f" name="OpCodes"/>
              <packagedElement xmi:type="uml:Class" xmi:id="a86d4e89-a557-440b-a08d-ecfc279bbc9d" name="OpMapVector"/>
              <packagedElement xmi:type="uml:Class" xmi:id="da7a8ad0-cff5-4f19-905f-34bc3da54875" name="XPathDumper"/>
              <packagedElement xmi:type="uml:Class" xmi:id="22f42900-25a0-47e5-b859-9b1ca02adbe9" name="Lexer" visibility="package"/>
              <packagedElement xmi:type="uml:Class" xmi:id="c00cfcff-dffa-4fe7-ad84-f24a3bb79a1d" name="FunctionTable"/>
              <packagedElement xmi:type="uml:Class" xmi:id="ccec5015-e883-4f16-b9a7-a0b7d5c8a528" name="FuncLoader"/>
              <packagedElement xmi:type="uml:Class" xmi:id="9ad62f03-bedc-4c15-9d61-688fbac8e00a" name="Compiler"/>
              <packagedElement xmi:type="uml:Class" xmi:id="1e2cf766-d9fc-475f-8eb6-21e368f37bd6" name="OpMap"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f529988f-49a3-4060-a1c9-54d15efbbb58" name="CachedXPathAPI"/>
            <packagedElement xmi:type="uml:Class" xmi:id="ecd5e34d-cdad-4b1d-b99c-40e5676f0da7" name="NodeSet"/>
            <packagedElement xmi:type="uml:Class" xmi:id="e3665492-6d02-4200-855c-33ffa013746f" name="VariableStack"/>
            <packagedElement xmi:type="uml:Class" xmi:id="8855c056-7ed7-487a-acc8-409d8c8a410b" name="XPathContext">
              <nestedClassifier xmi:type="uml:Class" xmi:id="cf2f2238-df24-477c-8c98-74b4114b375b" name="XPathExpressionContext"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="33f5f198-6ebe-4ff0-b1f7-cafa81b9a92d" name="ExpressionOwner" isAbstract="true"/>
            <packagedElement xmi:type="uml:Package" xmi:id="d6c95249-10fe-4c8c-86ec-76384b180411" name="patterns">
              <packagedElement xmi:type="uml:Class" xmi:id="485b375e-8abc-4262-b804-17e33d9b4719" name="StepPattern">
                <nestedClassifier xmi:type="uml:Class" xmi:id="3aad4a2d-5a70-4f05-8c29-40556ad2000a" name="PredOwner" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="0f0acf6f-1d59-414e-819e-985af87e08af" name="ContextMatchStepPattern"/>
              <packagedElement xmi:type="uml:Class" xmi:id="23efaa40-8f79-40f8-8773-ea1284bfcb02" name="FunctionPattern">
                <nestedClassifier xmi:type="uml:Class" xmi:id="7368c6fb-4f91-4979-b756-9db7a4c2b93d" name="FunctionOwner" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="b30e086a-12b1-4cb1-ab14-99f79107fe1e" name="NodeTest"/>
              <packagedElement xmi:type="uml:Interface" xmi:id="a4ea6b5c-6f00-4e53-9db5-bbd9c29a8965" name="NodeTestFilter" isAbstract="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="c6c780aa-07bc-467a-a473-969b51f4de05" name="UnionPattern">
                <nestedClassifier xmi:type="uml:Class" xmi:id="aabca8c0-ada2-44f5-a4df-9f6d3f396d07" name="UnionPathPartOwner" visibility="package"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5583dd5c-9f28-4697-bb0d-df945f661d85" name="DOM2Helper"/>
            <packagedElement xmi:type="uml:Class" xmi:id="9ed93548-04d1-4875-b021-baeaed87ecf9" name="FoundIndex"/>
            <packagedElement xmi:type="uml:Class" xmi:id="008dd8c4-1bbb-4557-bdab-19d4d05cf0cf" name="XPathVisitor"/>
            <packagedElement xmi:type="uml:Class" xmi:id="6a53a74f-6881-492a-b798-7c747ddc5ea4" name="SourceTreeManager"/>
            <packagedElement xmi:type="uml:Class" xmi:id="5888980f-0d32-4d10-922f-28ddd4229e71" name="SourceTree"/>
            <packagedElement xmi:type="uml:Package" xmi:id="d086e1c1-15e7-4163-acd7-aba73f11d825" name="functions">
              <packagedElement xmi:type="uml:Class" xmi:id="82e4faec-b37b-4621-acb9-742dff93d110" name="FuncQname"/>
              <packagedElement xmi:type="uml:Class" xmi:id="7df33614-d0f6-4ca7-ab33-f02f3abd7c9f" name="Function" isAbstract="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="637512b5-b2f6-4940-bb0a-019d70908843" name="FuncExtFunction">
                <nestedClassifier xmi:type="uml:Class" xmi:id="49568b12-bd89-4e65-8428-b6c20787ecf2" name="ArgExtOwner" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="ad30e891-f2ac-499b-b280-cbe20aa18075" name="FuncLast"/>
              <packagedElement xmi:type="uml:Class" xmi:id="7d8b1026-23b1-4946-884f-c0a074890a89" name="FuncDoclocation"/>
              <packagedElement xmi:type="uml:Class" xmi:id="55158e4a-ed42-469d-a861-d77b96789c8a" name="Function3Args">
                <nestedClassifier xmi:type="uml:Class" xmi:id="77400134-5b55-4578-b435-6360fdb1665d" name="Arg2Owner" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="2d50c849-7eea-4fb8-aa5a-426e882633a3" name="FuncSum"/>
              <packagedElement xmi:type="uml:Class" xmi:id="138798d0-3258-4b29-a035-88049c4d0dad" name="FunctionMultiArgs">
                <nestedClassifier xmi:type="uml:Class" xmi:id="947e7d42-d651-4a3e-9a19-84c1577a0875" name="ArgMultiOwner" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="7645590a-905b-4430-a114-91094df5e51a" name="WrongNumberArgsException"/>
              <packagedElement xmi:type="uml:Class" xmi:id="8bad8806-8ac9-47d6-8e66-5bb05940a0eb" name="FuncTrue"/>
              <packagedElement xmi:type="uml:Class" xmi:id="8be324f4-727b-44e7-833b-572ca56df636" name="FuncPosition"/>
              <packagedElement xmi:type="uml:Class" xmi:id="a7c7b4c2-5ae6-498b-aa29-854a07bb1e17" name="FuncFalse"/>
              <packagedElement xmi:type="uml:Class" xmi:id="fa1067a7-aa0f-4c6a-b159-0cbbea6af77c" name="FuncNot"/>
              <packagedElement xmi:type="uml:Class" xmi:id="d6e0c66e-8874-484e-ac92-702de4b4e582" name="FuncLang"/>
              <packagedElement xmi:type="uml:Class" xmi:id="518cd3c3-1fe4-4177-b313-bae0f6455e50" name="FuncTranslate"/>
              <packagedElement xmi:type="uml:Class" xmi:id="977a772c-79b8-4b15-b030-31c128bfc3b2" name="FuncCurrent"/>
              <packagedElement xmi:type="uml:Class" xmi:id="25bf65c9-f10a-4328-b6b3-7c556c47c605" name="FuncString"/>
              <packagedElement xmi:type="uml:Class" xmi:id="ca77f50c-02ec-49d2-b738-de33f889fce2" name="FuncContains"/>
              <packagedElement xmi:type="uml:Class" xmi:id="3aa70ee4-837f-4962-89e9-ce324adc348b" name="FuncSystemProperty"/>
              <packagedElement xmi:type="uml:Class" xmi:id="8b48e176-c4d6-49fd-a4a3-92bcfbc65a3c" name="FuncExtElementAvailable"/>
              <packagedElement xmi:type="uml:Class" xmi:id="1d203d7d-d7fa-4744-9300-d7483af10d4b" name="FuncLocalPart"/>
              <packagedElement xmi:type="uml:Class" xmi:id="10421502-5aab-42ba-8f3f-adcd4d4901cf" name="FuncSubstring"/>
              <packagedElement xmi:type="uml:Class" xmi:id="0654cd0f-f0c9-42c3-9845-b2508bacd65b" name="FuncGenerateId"/>
              <packagedElement xmi:type="uml:Class" xmi:id="70ff51ea-bfee-42fd-9d05-90a87a38c216" name="FuncCeiling"/>
              <packagedElement xmi:type="uml:Class" xmi:id="3d22cf3c-8b1d-4cd9-96cf-97506b6fe031" name="FuncId"/>
              <packagedElement xmi:type="uml:Class" xmi:id="61e5d751-5952-4da5-a2c5-17bcd47082c2" name="FuncSubstringAfter"/>
              <packagedElement xmi:type="uml:Class" xmi:id="6f9b90e9-e850-487e-a1e1-14b9eb03abe2" name="FuncBoolean"/>
              <packagedElement xmi:type="uml:Class" xmi:id="0848b499-b910-4759-b1cd-720e8ad59c1e" name="FuncNamespace"/>
              <packagedElement xmi:type="uml:Class" xmi:id="36a7fd8f-44e1-46e5-821b-fcf7be1f69d4" name="FuncStartsWith"/>
              <packagedElement xmi:type="uml:Class" xmi:id="86ebac65-b8d1-4a12-8fd3-d1a250db4116" name="FuncStringLength"/>
              <packagedElement xmi:type="uml:Class" xmi:id="22092a04-984b-47d8-94f6-9ece5e8c4b04" name="FuncCount"/>
              <packagedElement xmi:type="uml:Class" xmi:id="4f4c623a-9dc4-4bfc-8a3b-a3a12b6d1d22" name="FuncSubstringBefore"/>
              <packagedElement xmi:type="uml:Class" xmi:id="79766899-409d-43ef-88d2-89d06c2159eb" name="Function2Args">
                <nestedClassifier xmi:type="uml:Class" xmi:id="8e2e30b2-e433-4cc1-89e2-b2d05d5db18d" name="Arg1Owner" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="d8ba0527-48f6-4ec0-b415-f0042dc25430" name="FuncConcat"/>
              <packagedElement xmi:type="uml:Class" xmi:id="c0fe81d7-56e4-4948-9ec3-106b89f4a096" name="FuncNormalizeSpace"/>
              <packagedElement xmi:type="uml:Class" xmi:id="06e50dc9-fd3a-4d0c-9b5b-6304f39280ff" name="FuncUnparsedEntityURI"/>
              <packagedElement xmi:type="uml:Class" xmi:id="602cc3cb-2327-42d5-ad4b-b9b5d4cb13d7" name="FuncRound"/>
              <packagedElement xmi:type="uml:Class" xmi:id="56eb0155-7ad1-4135-98ec-51c1cb69754c" name="FuncExtFunctionAvailable"/>
              <packagedElement xmi:type="uml:Class" xmi:id="8de627a1-60f4-4766-825b-161b870d42b1" name="FuncFloor"/>
              <packagedElement xmi:type="uml:Class" xmi:id="bf1fbcd8-d5df-42d9-bd22-209c8813c2dd" name="FuncNumber"/>
              <packagedElement xmi:type="uml:Class" xmi:id="050d6451-f3de-4ebf-8c05-eddd24301c1d" name="FunctionDef1Arg"/>
              <packagedElement xmi:type="uml:Class" xmi:id="c5c19783-45a9-4217-ba6f-cc9db091e281" name="FunctionOneArg"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d2a9893f-1998-47c2-98eb-b68ebe248ed8" name="Arg"/>
            <packagedElement xmi:type="uml:Interface" xmi:id="c39d4ffb-dfa9-45d1-bc05-bef4e996e1b6" name="XPathFactory" isAbstract="true"/>
            <packagedElement xmi:type="uml:Interface" xmi:id="b929772f-d617-4975-a9f4-74625b259000" name="XPathVisitable" isAbstract="true"/>
            <packagedElement xmi:type="uml:Interface" xmi:id="3eea5f33-99f0-425d-afdd-c5a86006bfb8" name="ExtensionsProvider" isAbstract="true"/>
            <packagedElement xmi:type="uml:Package" xmi:id="a2e782dd-a9f8-4ef8-a517-5ee00ebed427" name="res">
              <packagedElement xmi:type="uml:Class" xmi:id="caaf2d3d-7a43-4e62-b4a7-0da8d2a4d29a" name="XPATHErrorResources"/>
              <packagedElement xmi:type="uml:Class" xmi:id="8bd34aff-5c1b-4872-8f28-79353267bace" name="XPATHErrorResources_ko"/>
              <packagedElement xmi:type="uml:Class" xmi:id="62297ba4-1540-4d4d-a4e4-86d6f1d99347" name="XPATHErrorResources_ja"/>
              <packagedElement xmi:type="uml:Class" xmi:id="c8ccd95e-8bdf-4399-bdee-c0ee6b1a4eba" name="XPATHErrorResources_it"/>
              <packagedElement xmi:type="uml:Class" xmi:id="16cf7d09-0cce-42e0-8f59-0b0392d05c7a" name="XPATHErrorResources_fr"/>
              <packagedElement xmi:type="uml:Class" xmi:id="3f4b2764-19a5-4de4-9732-c249a82ca2d3" name="XPATHErrorResources_zh_CN"/>
              <packagedElement xmi:type="uml:Class" xmi:id="00b11569-e1c6-4bcb-a817-30413e4627df" name="XPATHErrorResources_en"/>
              <packagedElement xmi:type="uml:Class" xmi:id="0f695290-e424-443b-8f84-6dc15e37f66c" name="XPATHErrorResources_sv"/>
              <packagedElement xmi:type="uml:Class" xmi:id="cb13ea06-38ea-41a1-9af3-e2e8963051b9" name="XPATHErrorResources_es"/>
              <packagedElement xmi:type="uml:Class" xmi:id="6505ba03-06e2-49d6-9a2e-b9c3fb34e8cb" name="XPATHErrorResources_zh_TW"/>
              <packagedElement xmi:type="uml:Class" xmi:id="eddf2b08-1de1-4430-b7da-e35f0e3ec8ad" name="XPATHErrorResources_de"/>
              <packagedElement xmi:type="uml:Class" xmi:id="fcd06e59-31c8-44df-91d1-7b5eb12c0ae2" name="XPATHErrorResourceBundle"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="7557c0ac-ef63-4064-b1e7-3a70a4e85407" name="DOMOrder" isAbstract="true"/>
            <packagedElement xmi:type="uml:Package" xmi:id="352fd752-39e8-4f00-b743-99751bd13f10" name="axes">
              <packagedElement xmi:type="uml:Class" xmi:id="1165ddb8-74e5-4339-9105-8ff0bd6f207b" name="AttributeIterator"/>
              <packagedElement xmi:type="uml:Class" xmi:id="7bf1f853-5264-467b-9ca4-ed923dcc0222" name="AxesWalker"/>
              <packagedElement xmi:type="uml:Class" xmi:id="4dee7431-d184-4c04-a38e-524cf95cf542" name="NodeSequence"/>
              <packagedElement xmi:type="uml:Class" xmi:id="ad7d9073-a263-4b7d-a3c3-dfaee1df5400" name="RTFIterator"/>
              <packagedElement xmi:type="uml:Class" xmi:id="646e88c3-e1e7-468f-b4a4-c5b1bbfa7fe6" name="DescendantIterator"/>
              <packagedElement xmi:type="uml:Class" xmi:id="ff70eff6-2859-4a58-af37-15ef11f56237" name="OneStepIterator"/>
              <packagedElement xmi:type="uml:Class" xmi:id="1cbe73be-d7d7-42f6-8492-87094bf2a35f" name="FilterExprIterator">
                <nestedClassifier xmi:type="uml:Class" xmi:id="1cdb2d1c-2671-4b59-839d-1e352c5cc43c" name="filterExprOwner" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="73c491b4-17af-4fcb-a01d-8c0eca828981" name="ContextNodeList" isAbstract="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="917167d6-7c4c-4c44-ab71-cd1706fbc8ac" name="FilterExprIteratorSimple">
                <nestedClassifier xmi:type="uml:Class" xmi:id="99a91336-dcfa-4023-85a5-ecf7e20b925d" name="filterExprOwner" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="02025919-5f9b-4058-bd85-1208f4f61bb2" name="WalkerFactory"/>
              <packagedElement xmi:type="uml:Class" xmi:id="370ed9f0-e617-4507-864d-969b50b63f6f" name="WalkingIteratorSorted"/>
              <packagedElement xmi:type="uml:Class" xmi:id="f736c5ec-d42c-4883-84e1-ff56a9cacbc4" name="UnionPathIterator">
                <nestedClassifier xmi:type="uml:Class" xmi:id="653f3a64-b66c-4b1c-831e-abfe5b178076" name="iterOwner" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="0523022f-0bf1-4974-b06f-c3b0d7eb8c6a" name="ChildIterator"/>
              <packagedElement xmi:type="uml:Class" xmi:id="73dbbab5-b754-4668-8452-0414066eb9ee" name="IteratorPool"/>
              <packagedElement xmi:type="uml:Class" xmi:id="86b130d0-260a-446a-bde2-3b26931133fb" name="HasPositionalPredChecker"/>
              <packagedElement xmi:type="uml:Class" xmi:id="4cfeccb8-4c41-4369-9c1d-d5cd89226550" name="MatchPatternIterator"/>
              <packagedElement xmi:type="uml:Class" xmi:id="a59f8d1a-821b-4f43-9cfb-b37a200c6d14" name="WalkingIterator"/>
              <packagedElement xmi:type="uml:Class" xmi:id="2f992e1c-6b21-4de0-947a-03acd56df649" name="BasicTestIterator" isAbstract="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="c24f0ee6-5ee2-4442-a4e8-e26da77c562e" name="ReverseAxesWalker"/>
              <packagedElement xmi:type="uml:Interface" xmi:id="6eadf295-c6e3-412d-a37e-1da2379b6a52" name="SubContextList" isAbstract="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="5fcba320-347a-4e2b-98d6-e076e270b5c5" name="FilterExprWalker">
                <nestedClassifier xmi:type="uml:Class" xmi:id="56b5ca63-38a6-41fb-8091-d34caee9b47f" name="filterExprOwner" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="1cd3ff24-ab2f-4c63-b2ca-54001376c276" name="PathComponent" isAbstract="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="bd406aaf-7111-486e-b7a9-a1543a1739d9" name="OneStepIteratorForward"/>
              <packagedElement xmi:type="uml:Class" xmi:id="a3358f11-eeb7-4c8d-b428-84c1b27af927" name="ChildTestIterator"/>
              <packagedElement xmi:type="uml:Class" xmi:id="5d0665a6-3fcb-4fc5-8e2e-5ecc908c0861" name="SelfIteratorNoPredicate"/>
              <packagedElement xmi:type="uml:Class" xmi:id="9125b5dd-6c22-4d25-ac1f-a9f66f856f98" name="LocPathIterator" isAbstract="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="69d78b90-f18f-4474-a092-40eeaa05aa5a" name="UnionChildIterator"/>
              <packagedElement xmi:type="uml:Class" xmi:id="85aa77a5-1936-4b70-be02-7231e0f05555" name="PredicatedNodeTest" isAbstract="true">
                <nestedClassifier xmi:type="uml:Class" xmi:id="831dd31f-0b6b-4395-9b0a-2367b80771ba" name="PredOwner" visibility="package"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d4b3e883-f49c-402c-874e-924ad1c6af7f" name="ExpressionNode" isAbstract="true"/>
            <packagedElement xmi:type="uml:Class" xmi:id="2e8ad16a-bb72-40a0-8aea-fc21d8e2e2ed" name="XPathException"/>
            <packagedElement xmi:type="uml:Package" xmi:id="306a15dc-d3fa-4dd3-9f26-2a4cb7cc1621" name="objects">
              <packagedElement xmi:type="uml:Class" xmi:id="a913cf09-e212-4f03-ac21-0adf3eba05cf" name="XBooleanStatic"/>
              <packagedElement xmi:type="uml:Class" xmi:id="13aa2dd5-6020-4450-8d3c-8bea878abf06" name="XString"/>
              <packagedElement xmi:type="uml:Class" xmi:id="11cfd663-e48d-42a4-8d27-92c6b99e994c" name="XObjectFactory"/>
              <packagedElement xmi:type="uml:Class" xmi:id="80ef3a77-f543-4276-b513-77e2f87ae6f8" name="XStringForFSB"/>
              <packagedElement xmi:type="uml:Class" xmi:id="025a015f-9b49-4a35-a652-fd84b72cddaf" name="LessThanOrEqualComparator" visibility="package"/>
              <packagedElement xmi:type="uml:Class" xmi:id="177a82a7-e5dc-44fa-961b-805a4a02d535" name="XObject"/>
              <packagedElement xmi:type="uml:Class" xmi:id="26642eb7-2175-4c36-b2ca-c9f2652a5e4f" name="XNull"/>
              <packagedElement xmi:type="uml:Class" xmi:id="b37acb07-5e6c-46b0-8cc8-b8be45bdb30d" name="XRTreeFrag"/>
              <packagedElement xmi:type="uml:Class" xmi:id="3ea3170e-0a75-4234-828d-0eae92202030" name="XNodeSetForDOM"/>
              <packagedElement xmi:type="uml:Class" xmi:id="96b2e4d0-5f6a-4d9f-b2c5-6128b1d8342f" name="GreaterThanOrEqualComparator" visibility="package"/>
              <packagedElement xmi:type="uml:Class" xmi:id="cf755513-edc7-497c-a0df-341ffca3e032" name="XBoolean"/>
              <packagedElement xmi:type="uml:Class" xmi:id="4e69aa71-f74b-473d-9f4b-458d4b0a0ee4" name="XMLStringFactoryImpl"/>
              <packagedElement xmi:type="uml:Class" xmi:id="714b3bc4-2fa7-41ff-864a-3fa38f93a88e" name="Comparator" visibility="package" isAbstract="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="612762be-634a-468c-a4e9-bd0dcc167ef2" name="XRTreeFragSelectWrapper"/>
              <packagedElement xmi:type="uml:Class" xmi:id="707c4e4a-5ffe-4a50-8a07-c14ea832352b" name="EqualComparator" visibility="package"/>
              <packagedElement xmi:type="uml:Class" xmi:id="4560b082-bd23-4d41-9e74-12e27bff0146" name="XNumber"/>
              <packagedElement xmi:type="uml:Class" xmi:id="0519569e-4540-4cf6-86f8-001ff57a9c7f" name="NotEqualComparator" visibility="package"/>
              <packagedElement xmi:type="uml:Class" xmi:id="d6e7d612-bcad-4b60-a135-8b53ab69fc8d" name="GreaterThanComparator" visibility="package"/>
              <packagedElement xmi:type="uml:Class" xmi:id="ebc683f5-c4bc-4273-a8a0-e4229cd8facd" name="LessThanComparator" visibility="package"/>
              <packagedElement xmi:type="uml:Class" xmi:id="727daffc-b8ff-496e-941c-d7be4ca9b91f" name="XStringForChars"/>
              <packagedElement xmi:type="uml:Class" xmi:id="c34c2345-7777-4996-8e6e-6cf72f8feb8f" name="XNodeSet"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="b8ccb7ac-8b41-460e-af18-e7aa475ac959" name="crimson">
            <packagedElement xmi:type="uml:Package" xmi:id="94556538-e28a-444f-9786-85b21d04e3fc" name="util">
              <packagedElement xmi:type="uml:Class" xmi:id="35579f33-c57f-4253-a8e7-1e9f70d44a32" name="MessageCatalog" isAbstract="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="f71c8f3f-7590-4108-bc4e-6d6fc2d5c34d" name="XmlChars"/>
              <packagedElement xmi:type="uml:Class" xmi:id="c80d29be-5c4c-4649-8380-f4f5cae47027" name="XmlNames"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="18e114dd-9cfd-4ac5-a0dd-cddb3cd02d6c" name="jaxp">
              <packagedElement xmi:type="uml:Class" xmi:id="7ebe163f-6b00-43c9-bea5-388675773ade" name="DefaultValidationErrorHandler" visibility="package"/>
              <packagedElement xmi:type="uml:Class" xmi:id="7cffd4f1-2237-4c66-b5e8-f7f8d4061ba4" name="SAXParserFactoryImpl"/>
              <packagedElement xmi:type="uml:Class" xmi:id="d677d404-787d-441e-951b-ecab8db4a3f9" name="DocumentBuilderImpl"/>
              <packagedElement xmi:type="uml:Class" xmi:id="3bd2049f-0e05-40e4-b46b-fbfc748ec441" name="DocumentBuilderFactoryImpl"/>
              <packagedElement xmi:type="uml:Class" xmi:id="07973bbd-18b2-47bc-918d-ee57b875fe39" name="SAXParserImpl"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="c0e62875-6a52-48e2-8abe-87693db33398" name="tree">
              <packagedElement xmi:type="uml:Interface" xmi:id="c2b4fb81-864e-4a97-b123-9d523b7f1ae4" name="DocumentEx" isAbstract="true"/>
              <packagedElement xmi:type="uml:Interface" xmi:id="2f65096e-a964-42b9-a0e1-826f6636f39a" name="ElementFactory" isAbstract="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="38c6c793-0653-4833-9cdb-06de3b72e537" name="DOMImplementationImpl"/>
              <packagedElement xmi:type="uml:Class" xmi:id="b08967d9-36a5-428d-9ecf-5498872c5346" name="CDataNode" visibility="package"/>
              <packagedElement xmi:type="uml:Class" xmi:id="5da9bfe6-c295-4725-b5b0-411bec26e49e" name="NodeBase" visibility="package" isAbstract="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="634052e2-fda6-4244-b0d5-b27561b43df3" name="XmlDocumentBuilderNS"/>
              <packagedElement xmi:type="uml:Class" xmi:id="e703c143-b3c8-4f68-8285-3196bfb91db9" name="SimpleElementFactory">
                <nestedClassifier xmi:type="uml:Class" xmi:id="a4791922-36d6-4a07-b98c-0a8918cbd51f" name="ClassLoaderFinder" visibility="private" isAbstract="true"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="f7c38ea5-41c8-4be7-8f20-7b9fb788a433" name="ClassLoaderFinderConcrete" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="2d21b15e-a7f4-49e8-9e3f-b709c95f7833" name="TreeWalker"/>
              <packagedElement xmi:type="uml:Interface" xmi:id="3b5325ed-50d5-4c6a-8f9b-b0fdc46152fa" name="ParseContext" isAbstract="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="f362d473-fde5-4d25-b01f-c18b90114603" name="ElementNode"/>
              <packagedElement xmi:type="uml:Class" xmi:id="29f2c921-a6c3-44d9-9534-d8d3138fa64b" name="XmlWriteContext"/>
              <packagedElement xmi:type="uml:Interface" xmi:id="a7dc3b65-0c7a-4540-b77a-d0a837b5094f" name="NodeEx" isAbstract="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="5329ae91-b34c-4390-843f-e5496f74e7df" name="NamespacedNode" isAbstract="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="4e8ec3b2-14f6-43d6-be15-cb2b20cff0a2" name="PINode" visibility="package" isLeaf="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="365a82b1-8080-4b5e-8f33-4b3468b7173c" name="AttributeNode1"/>
              <packagedElement xmi:type="uml:Class" xmi:id="efdd1d4e-6202-47f1-96b5-805e912364e4" name="TextNode"/>
              <packagedElement xmi:type="uml:Class" xmi:id="4a91317f-adf9-4ff9-a58b-a71841d1f076" name="DataNode" visibility="package" isAbstract="true">
                <nestedClassifier xmi:type="uml:Class" xmi:id="d0ff2b24-693d-41aa-9a47-0f3b8ed36e8d" name="NodeListImpl" visibility="package" isLeaf="true"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="953d0d46-5139-4c28-abb5-2cb44d6c1407" name="XmlDocumentBuilder"/>
              <packagedElement xmi:type="uml:Class" xmi:id="5cd6978f-3aef-4ada-b599-5acc29a4ab7a" name="XmlDocument">
                <nestedClassifier xmi:type="uml:Class" xmi:id="feb4631a-60a6-4cee-b06d-89e1ffca8e96" name="DocFragNode" visibility="package" isLeaf="true"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="9ca3568a-c81d-4e3a-8e5b-e8cf272510e3" name="EntityRefNode" visibility="package" isLeaf="true"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="8e8a0a06-75fa-4600-ada4-3bc1ee4d8d79" name="ExtWriteContext" visibility="package"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1df3fdac-ebe8-4686-a8da-409d3a6b54f2" name="Catalog" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="d0d18bb6-b9d1-4681-b424-23c1438e5c4f" name="ElementEx" isAbstract="true"/>
              <packagedElement xmi:type="uml:Interface" xmi:id="5c938194-3ced-4878-820f-485a1b929006" name="XmlWritable" isAbstract="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="1450c224-212d-48a0-954b-e65848e68956" name="AttributeSet" visibility="package" isLeaf="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="0e793469-21fc-488e-997b-a30e855e452e" name="CommentNode"/>
              <packagedElement xmi:type="uml:Class" xmi:id="46637bd5-6a3b-41cd-8d58-b34ab33c3859" name="Doctype" visibility="package" isLeaf="true">
                <nestedClassifier xmi:type="uml:Class" xmi:id="abf0316c-8a19-4bb8-bd99-fd20ed2dd802" name="NotationNode" visibility="package"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c34f5f36-9ff3-4f88-b3c9-27047e23c76d" name="EntityNode" visibility="package"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e45fffa6-43e0-4414-b259-284958b81cfa" name="Nodemap" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="8b64ded7-4cb8-46bb-a4f2-ef3f4901ae17" name="ParentNode" visibility="package" isAbstract="true">
                <nestedClassifier xmi:type="uml:Class" xmi:id="f77fd953-37d7-49f4-939c-621dc1b03eb3" name="TagList" visibility="package"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ef1e737b-959f-4de9-a8ac-efd72e307303" name="TagListNS" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="63e54bc1-3f14-434f-82b4-443e36be1fc9" name="AttributeNode"/>
              <packagedElement xmi:type="uml:Class" xmi:id="577a6aec-6064-493c-89b0-5104a9d1368c" name="ElementNode2"/>
              <packagedElement xmi:type="uml:Class" xmi:id="f4b6505b-e49e-4b9b-ba62-14529c419d83" name="DomEx" visibility="package"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="80009794-f5c1-410b-86e9-cb431a709557" name="parser">
              <packagedElement xmi:type="uml:Class" xmi:id="78ecff3a-6ad4-4c25-9da7-164c090b61f1" name="InputEntity" visibility="package" isLeaf="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="9a9ac507-9abe-44bc-9d9d-0fa8268149d5" name="ValidatingParser">
                <nestedClassifier xmi:type="uml:Class" xmi:id="ce070279-5568-4aeb-9e06-1c02e1a11bde" name="EmptyValidator" visibility="package"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1b172cb2-b739-40a6-b51e-43ac21824fae" name="MixedValidator" visibility="package"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="4f700903-36e4-4658-9623-968576a3699d" name="ChildrenValidator" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="10a4e5b5-07c7-44f2-88a8-d8a67e6c35e8" name="ContentModel" visibility="package" isLeaf="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="7375f510-bf38-4bc3-9dd1-4a9e853dc370" name="ElementValidator" visibility="package"/>
              <packagedElement xmi:type="uml:Class" xmi:id="ade8d3ef-3622-4608-8bd9-eff32126f77e" name="EntityDecl" visibility="package"/>
              <packagedElement xmi:type="uml:Class" xmi:id="e6ff5945-cf83-45e3-9748-6b236b03e368" name="AttributesExImpl" visibility="package" isLeaf="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="589e1877-8fd0-4204-a658-8ea8c1c6a592" name="Resolver"/>
              <packagedElement xmi:type="uml:Class" xmi:id="545d944e-12db-40f1-b358-2ba9744d760d" name="ContentModelState" visibility="package"/>
              <packagedElement xmi:type="uml:Class" xmi:id="4debe1ae-9c78-4102-ad21-62f607e31827" name="ExternalEntity" visibility="package"/>
              <packagedElement xmi:type="uml:Class" xmi:id="f1e240e8-3420-464b-8852-fd325eda0c69" name="XMLReaderImpl"/>
              <packagedElement xmi:type="uml:Class" xmi:id="e4672e16-a06f-4e06-aa5f-95ef42894198" name="ElementDecl" visibility="package"/>
              <packagedElement xmi:type="uml:Class" xmi:id="c8da37f3-3626-44a3-bc8d-e9283af5a051" name="Parser2">
                <nestedClassifier xmi:type="uml:Class" xmi:id="379eef3f-a045-4799-878a-c4f45b931f58" name="DocLocator" visibility="package"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="897910bb-a01b-473d-8a18-9dfa18904b9d" name="NameCache" visibility="package"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="7a1592ba-a2a0-4f8a-b974-16ba103447ad" name="NameCacheEntry" visibility="package"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="da4ccf3f-88e6-4c25-a62a-4d0e3b1591e8" name="NullHandler" visibility="private"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="125000c2-5443-4fc0-99fc-08d4c654eb0e" name="Catalog" visibility="package" isLeaf="true"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="3d72acf1-caf5-4d6e-a635-e1131e4e4faf" name="AttributeDecl" visibility="package"/>
              <packagedElement xmi:type="uml:Class" xmi:id="a88a4a8d-b0a5-40ba-9b4a-fdc6111a32c1" name="XmlReader" visibility="package" isLeaf="true">
                <nestedClassifier xmi:type="uml:Class" xmi:id="2d0f57da-e9d7-44d4-8e72-b00a5a98ba93" name="BaseReader" visibility="package" isAbstract="true"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="cf792545-aabb-40ae-bcf6-380bf9a0b0d8" name="Utf8Reader" visibility="package" isLeaf="true"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="324c0e7c-7f7b-4d05-abdd-48b7d39d6102" name="AsciiReader" visibility="package" isLeaf="true"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ba69da04-c56d-4930-8512-337006bceb83" name="Iso8859_1Reader" visibility="package" isLeaf="true"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="91132be2-37e2-4d9a-b2c4-717c45648016" name="SimpleHashtable" visibility="package" isLeaf="true">
                <nestedClassifier xmi:type="uml:Class" xmi:id="b3962b06-54fc-4c5a-adbf-8ccb0007bbd0" name="Entry" visibility="private"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="dd15201e-b644-4883-b18c-1ede0a336013" name="AttributesEx" isAbstract="true"/>
              <packagedElement xmi:type="uml:Class" xmi:id="db4d95dd-456a-449e-b758-f0ff57ecaf3f" name="EndOfInputException" visibility="package"/>
              <packagedElement xmi:type="uml:Class" xmi:id="6de592b2-f367-41f9-9c85-9927986271d5" name="InternalEntity" visibility="package"/>
            </packagedElement>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="19c1a863-4ca6-466b-9755-c08ef71c4685" name="w3c">
          <packagedElement xmi:type="uml:Package" xmi:id="27f10101-2003-443e-b331-ac827ec8527b" name="dom">
            <packagedElement xmi:type="uml:Interface" xmi:id="8f861683-f21c-4d48-a80d-6f06066ae865" name="Node" isAbstract="true">
              <ownedComment xmi:id="fa27f177-e901-455d-8c60-b8683b2d6b47" body="The &lt;code>Node&lt;/code> interface is the primary datatype for the entire&#xA;Document Object Model. It represents a single node in the document tree.&#xA;While all objects implementing the &lt;code>Node&lt;/code> interface expose&#xA;methods for dealing with children, not all objects implementing the&#xA;&lt;code>Node&lt;/code> interface may have children. For example,&#xA;&lt;code>Text&lt;/code> nodes may not have children, and adding children to&#xA;such nodes results in a &lt;code>DOMException&lt;/code> being raised.&#xA;&lt;p>The attributes &lt;code>nodeName&lt;/code>, &lt;code>nodeValue&lt;/code> and&#xA;&lt;code>attributes&lt;/code> are included as a mechanism to get at node&#xA;information without casting down to the specific derived interface. In&#xA;cases where there is no obvious mapping of these attributes for a&#xA;specific &lt;code>nodeType&lt;/code> (e.g., &lt;code>nodeValue&lt;/code> for an&#xA;&lt;code>Element&lt;/code> or &lt;code>attributes&lt;/code> for a &lt;code>Comment&lt;/code>&#xA;), this returns &lt;code>null&lt;/code>. Note that the specialized interfaces&#xA;may contain additional and more convenient mechanisms to get and set the&#xA;relevant information.&#xA;&lt;p>The values of &lt;code>nodeName&lt;/code>,&#xA;&lt;code>nodeValue&lt;/code>, and &lt;code>attributes&lt;/code> vary according to the&#xA;node type as follows:&#xA;&lt;table border='1' cellpadding='3'>&#xA;&lt;tr>&#xA;&lt;th>Interface&lt;/th>&#xA;&lt;th>nodeName&lt;/th>&#xA;&lt;th>nodeValue&lt;/th>&#xA;&lt;th>attributes&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;code>Attr&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>same as &lt;code>Attr.name&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>same as&#xA;&lt;code>Attr.value&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>null&lt;/code>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>CDATASection&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;code>&quot;#cdata-section&quot;&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>same as &lt;code>CharacterData.data&lt;/code>, the&#xA;content of the CDATA Section&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>null&lt;/code>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>Comment&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;code>&quot;#comment&quot;&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>same as &lt;code>CharacterData.data&lt;/code>, the&#xA;content of the comment&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>null&lt;/code>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>Document&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;code>&quot;#document&quot;&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>null&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>null&lt;/code>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;code>DocumentFragment&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>&quot;#document-fragment&quot;&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;code>null&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>null&lt;/code>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>DocumentType&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>same as&#xA;&lt;code>DocumentType.name&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>null&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>null&lt;/code>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;code>Element&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>same as &lt;code>Element.tagName&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>null&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;code>NamedNodeMap&lt;/code>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>Entity&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>entity name&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>null&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;code>null&lt;/code>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>EntityReference&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>name of entity referenced&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;code>null&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>null&lt;/code>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>Notation&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>notation name&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;code>null&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>null&lt;/code>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>ProcessingInstruction&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>same&#xA;as &lt;code>ProcessingInstruction.target&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>same as&#xA;&lt;code>ProcessingInstruction.data&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>null&lt;/code>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>Text&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;code>&quot;#text&quot;&lt;/code>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>same as &lt;code>CharacterData.data&lt;/code>, the content&#xA;of the text node&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;code>null&lt;/code>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;" annotatedElement="8f861683-f21c-4d48-a80d-6f06066ae865"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="3d21db18-546e-4f1e-9de4-c4818268088d" name="DOMStringList" isAbstract="true">
              <ownedComment xmi:id="3e75d2bc-068a-452b-ba1c-c3f64d6bffef" body="The &lt;code>DOMStringList&lt;/code> interface provides the abstraction of an&#xA;ordered collection of &lt;code>DOMString&lt;/code> values, without defining or&#xA;constraining how this collection is implemented. The items in the&#xA;&lt;code>DOMStringList&lt;/code> are accessible via an integral index, starting&#xA;from 0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;@since DOM Level 3&#xA;" annotatedElement="3d21db18-546e-4f1e-9de4-c4818268088d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="df2e70f3-c570-4f5e-ba32-4f2784910b54" name="CharacterData" isAbstract="true">
              <ownedComment xmi:id="2a3a6dc9-c43d-4582-90fd-9c1c9188024b" body="The &lt;code>CharacterData&lt;/code> interface extends Node with a set of&#xA;attributes and methods for accessing character data in the DOM. For&#xA;clarity this set is defined here rather than on each object that uses&#xA;these attributes and methods. No DOM objects correspond directly to&#xA;&lt;code>CharacterData&lt;/code>, though &lt;code>Text&lt;/code> and others do&#xA;inherit the interface from it. All &lt;code>offsets&lt;/code> in this interface&#xA;start from &lt;code>0&lt;/code>.&#xA;&lt;p>As explained in the &lt;code>DOMString&lt;/code> interface, text strings in&#xA;the DOM are represented in UTF-16, i.e. as a sequence of 16-bit units. In&#xA;the following, the term 16-bit units is used whenever necessary to&#xA;indicate that indexing on CharacterData is done in 16-bit units.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;" annotatedElement="df2e70f3-c570-4f5e-ba32-4f2784910b54"/>
              <generalization xmi:id="67c92592-5db5-4529-9827-57c89785dbfd" isSubstitutable="true" general="8f861683-f21c-4d48-a80d-6f06066ae865"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="59cb8de2-1b94-416e-8d68-d1ba6f3b7bdd" name="Document" isAbstract="true">
              <ownedComment xmi:id="20751f30-7a32-410a-b483-32185b17a40c" body="The &lt;code>Document&lt;/code> interface represents the entire HTML or XML&#xA;document. Conceptually, it is the root of the document tree, and provides&#xA;the primary access to the document's data.&#xA;&lt;p>Since elements, text nodes, comments, processing instructions, etc.&#xA;cannot exist outside the context of a &lt;code>Document&lt;/code>, the&#xA;&lt;code>Document&lt;/code> interface also contains the factory methods needed&#xA;to create these objects. The &lt;code>Node&lt;/code> objects created have a&#xA;&lt;code>ownerDocument&lt;/code> attribute which associates them with the&#xA;&lt;code>Document&lt;/code> within whose context they were created.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;" annotatedElement="59cb8de2-1b94-416e-8d68-d1ba6f3b7bdd"/>
              <generalization xmi:id="d497f328-3c32-47cf-b58c-dee30f351823" isSubstitutable="true" general="8f861683-f21c-4d48-a80d-6f06066ae865"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="a42ec4df-7865-44cc-9bf6-4b658ab5fa31" name="DOMError" isAbstract="true">
              <ownedComment xmi:id="24dcaf9e-3b21-4d12-ada0-7e4dde38a6e0" body="&lt;code>DOMError&lt;/code> is an interface that describes an error.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;@since DOM Level 3&#xA;" annotatedElement="a42ec4df-7865-44cc-9bf6-4b658ab5fa31"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="161282e4-5c83-4b44-94ce-8c12fbe641c2" name="NamedNodeMap" isAbstract="true">
              <ownedComment xmi:id="d187246d-99bd-4546-92d8-d62b3c837dea" body="Objects implementing the &lt;code>NamedNodeMap&lt;/code> interface are used to&#xA;represent collections of nodes that can be accessed by name. Note that&#xA;&lt;code>NamedNodeMap&lt;/code> does not inherit from &lt;code>NodeList&lt;/code>;&#xA;&lt;code>NamedNodeMaps&lt;/code> are not maintained in any particular order.&#xA;Objects contained in an object implementing &lt;code>NamedNodeMap&lt;/code> may&#xA;also be accessed by an ordinal index, but this is simply to allow&#xA;convenient enumeration of the contents of a &lt;code>NamedNodeMap&lt;/code>,&#xA;and does not imply that the DOM specifies an order to these Nodes.&#xA;&lt;p>&lt;code>NamedNodeMap&lt;/code> objects in the DOM are live.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;" annotatedElement="161282e4-5c83-4b44-94ce-8c12fbe641c2"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="363c3fb1-e5dc-4bec-8216-4144c1458026" name="NameList" isAbstract="true">
              <ownedComment xmi:id="063a12ea-0aeb-4af5-8b1b-9b80b2cdccda" body="The &lt;code>NameList&lt;/code> interface provides the abstraction of an ordered&#xA;collection of parallel pairs of name and namespace values (which could be&#xA;null values), without defining or constraining how this collection is&#xA;implemented. The items in the &lt;code>NameList&lt;/code> are accessible via an&#xA;integral index, starting from 0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;@since DOM Level 3&#xA;" annotatedElement="363c3fb1-e5dc-4bec-8216-4144c1458026"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="c33f804f-e7d3-4b5a-a1e7-1bb077ab31b4" name="css">
              <packagedElement xmi:type="uml:Interface" xmi:id="b8e70e75-603e-49f2-8590-3774b9c07274" name="CSS2Properties" isAbstract="true">
                <ownedComment xmi:id="7c59d220-57b9-485d-b5c2-28d92f9d3ca0" body="The &lt;code>CSS2Properties&lt;/code> interface represents a convenience&#xA;mechanism for retrieving and setting properties within a&#xA;&lt;code>CSSStyleDeclaration&lt;/code>. The attributes of this interface&#xA;correspond to all the properties specified in CSS2. Getting an attribute&#xA;of this interface is equivalent to calling the&#xA;&lt;code>getPropertyValue&lt;/code> method of the&#xA;&lt;code>CSSStyleDeclaration&lt;/code> interface. Setting an attribute of this&#xA;interface is equivalent to calling the &lt;code>setProperty&lt;/code> method of&#xA;the &lt;code>CSSStyleDeclaration&lt;/code> interface.&#xA;&lt;p> A conformant implementation of the CSS module is not required to&#xA;implement the &lt;code>CSS2Properties&lt;/code> interface. If an implementation&#xA;does implement this interface, the expectation is that language-specific&#xA;methods can be used to cast from an instance of the&#xA;&lt;code>CSSStyleDeclaration&lt;/code> interface to the&#xA;&lt;code>CSS2Properties&lt;/code> interface.&#xA;&lt;p> If an implementation does implement this interface, it is expected to&#xA;understand the specific syntax of the shorthand properties, and apply&#xA;their semantics; when the &lt;code>margin&lt;/code> property is set, for&#xA;example, the &lt;code>marginTop&lt;/code>, &lt;code>marginRight&lt;/code>,&#xA;&lt;code>marginBottom&lt;/code> and &lt;code>marginLeft&lt;/code> properties are&#xA;actually being set by the underlying implementation.&#xA;&lt;p> When dealing with CSS &quot;shorthand&quot; properties, the shorthand properties&#xA;should be decomposed into their component longhand properties as&#xA;appropriate, and when querying for their value, the form returned should&#xA;be the shortest form exactly equivalent to the declarations made in the&#xA;ruleset. However, if there is no shorthand declaration that could be&#xA;added to the ruleset without changing in any way the rules already&#xA;declared in the ruleset (i.e., by adding longhand rules that were&#xA;previously not declared in the ruleset), then the empty string should be&#xA;returned for the shorthand property.&#xA;&lt;p> For example, querying for the &lt;code>font&lt;/code> property should not&#xA;return &quot;normal normal normal 14pt/normal Arial, sans-serif&quot;, when &quot;14pt&#xA;Arial, sans-serif&quot; suffices. (The normals are initial values, and are&#xA;implied by use of the longhand property.)&#xA;&lt;p> If the values for all the longhand properties that compose a particular&#xA;string are the initial values, then a string consisting of all the&#xA;initial values should be returned (e.g. a &lt;code>border-width&lt;/code> value&#xA;of &quot;medium&quot; should be returned as such, not as &quot;&quot;).&#xA;&lt;p> For some shorthand properties that take missing values from other&#xA;sides, such as the &lt;code>margin&lt;/code>, &lt;code>padding&lt;/code>, and&#xA;&lt;code>border-[width|style|color]&lt;/code> properties, the minimum number of&#xA;sides possible should be used; i.e., &quot;0px 10px&quot; will be returned instead&#xA;of &quot;0px 10px 0px 10px&quot;.&#xA;&lt;p> If the value of a shorthand property can not be decomposed into its&#xA;component longhand properties, as is the case for the &lt;code>font&lt;/code>&#xA;property with a value of &quot;menu&quot;, querying for the values of the component&#xA;longhand properties should return the empty string.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="b8e70e75-603e-49f2-8590-3774b9c07274"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="03f798af-c091-4d83-8afc-15e495805536" name="Counter" isAbstract="true">
                <ownedComment xmi:id="e02fe751-9b01-483b-886b-39af7a716064" body="The &lt;code>Counter&lt;/code> interface is used to represent any counter or&#xA;counters function value. This interface reflects the values in the&#xA;underlying style property.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="03f798af-c091-4d83-8afc-15e495805536"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="689248f1-10e9-4ddc-89ee-5b42fa778c38" name="ElementCSSInlineStyle" isAbstract="true">
                <ownedComment xmi:id="5c160c49-3bce-4504-bacb-e925b41c9368" body="Inline style information attached to elements is exposed through the&#xA;&lt;code>style&lt;/code> attribute. This represents the contents of the STYLE&#xA;attribute for HTML elements (or elements in other schemas or DTDs which&#xA;use the STYLE attribute in the same way). The expectation is that an&#xA;instance of the ElementCSSInlineStyle interface can be obtained by using&#xA;binding-specific casting methods on an instance of the Element interface&#xA;when the element supports inline CSS style informations.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="689248f1-10e9-4ddc-89ee-5b42fa778c38"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="f1362ccb-5d35-475b-810a-e8d6485bd592" name="CSSMediaRule" isAbstract="true">
                <ownedComment xmi:id="14815ca4-63e7-4ef9-9782-245a4c27464a" body="The &lt;code>CSSMediaRule&lt;/code> interface represents a @media rule in a CSS&#xA;style sheet. A &lt;code>@media&lt;/code> rule can be used to delimit style&#xA;rules for specific media types.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="f1362ccb-5d35-475b-810a-e8d6485bd592"/>
                <generalization xmi:id="56a267f7-c512-40da-8383-263f5179c2d4" isSubstitutable="true" general="9780a92c-a003-4ef8-9d33-8762cfe07148"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="9b0107b8-5a3a-4d6a-afbb-a2f06bd2718a" name="CSSPrimitiveValue" isAbstract="true">
                <ownedComment xmi:id="42e87b10-b65a-48e8-81e1-2ce275bd7e9a" body="The &lt;code>CSSPrimitiveValue&lt;/code> interface represents a single CSS value&#xA;. This interface may be used to determine the value of a specific style&#xA;property currently set in a block or to set a specific style property&#xA;explicitly within the block. An instance of this interface might be&#xA;obtained from the &lt;code>getPropertyCSSValue&lt;/code> method of the&#xA;&lt;code>CSSStyleDeclaration&lt;/code> interface. A&#xA;&lt;code>CSSPrimitiveValue&lt;/code> object only occurs in a context of a CSS&#xA;property.&#xA;&lt;p> Conversions are allowed between absolute values (from millimeters to&#xA;centimeters, from degrees to radians, and so on) but not between relative&#xA;values. (For example, a pixel value cannot be converted to a centimeter&#xA;value.) Percentage values can't be converted since they are relative to&#xA;the parent value (or another property value). There is one exception for&#xA;color percentage values: since a color percentage value is relative to&#xA;the range 0-255, a color percentage value can be converted to a number;&#xA;(see also the &lt;code>RGBColor&lt;/code> interface).&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="9b0107b8-5a3a-4d6a-afbb-a2f06bd2718a"/>
                <generalization xmi:id="8ad55cd9-dddc-4a4c-b5a8-fd0a17f7dda5" isSubstitutable="true" general="06c0bef1-1732-439d-90fa-bc496d20427f"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="0c67a764-2292-4a81-a5a7-ef12043e3776" name="CSSFontFaceRule" isAbstract="true">
                <ownedComment xmi:id="45b2e7c7-d61f-4420-a58e-40dd09f31424" body="The &lt;code>CSSFontFaceRule&lt;/code> interface represents a @font-face rule in&#xA;a CSS style sheet. The &lt;code>@font-face&lt;/code> rule is used to hold a set&#xA;of font descriptions.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="0c67a764-2292-4a81-a5a7-ef12043e3776"/>
                <generalization xmi:id="7f5a25bf-df8d-445f-a240-7f829657da0a" isSubstitutable="true" general="9780a92c-a003-4ef8-9d33-8762cfe07148"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="0113ea3c-474f-4471-a305-7ac7abdc29ed" name="RGBColor" isAbstract="true">
                <ownedComment xmi:id="2fd7ccf3-ab14-452f-96c0-7d85f1614725" body="The &lt;code>RGBColor&lt;/code> interface is used to represent any RGB color&#xA;value. This interface reflects the values in the underlying style&#xA;property. Hence, modifications made to the &lt;code>CSSPrimitiveValue&lt;/code>&#xA;objects modify the style property.&#xA;&lt;p> A specified RGB color is not clipped (even if the number is outside the&#xA;range 0-255 or 0%-100%). A computed RGB color is clipped depending on the&#xA;device.&#xA;&lt;p> Even if a style sheet can only contain an integer for a color value,&#xA;the internal storage of this integer is a float, and this can be used as&#xA;a float in the specified or the computed style.&#xA;&lt;p> A color percentage value can always be converted to a number and vice&#xA;versa.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="0113ea3c-474f-4471-a305-7ac7abdc29ed"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="06c0bef1-1732-439d-90fa-bc496d20427f" name="CSSValue" isAbstract="true">
                <ownedComment xmi:id="95e91c12-13ab-4ea2-86b4-a242d4a0b4d1" body="The &lt;code>CSSValue&lt;/code> interface represents a simple or a complex&#xA;value. A &lt;code>CSSValue&lt;/code> object only occurs in a context of a CSS&#xA;property.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="06c0bef1-1732-439d-90fa-bc496d20427f"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="9f30b220-c1de-48a5-b1b3-82193707dbd7" name="CSSUnknownRule" isAbstract="true">
                <ownedComment xmi:id="36d30736-f438-42dd-a4e4-fc199472f736" body="The &lt;code>CSSUnknownRule&lt;/code> interface represents an at-rule not&#xA;supported by this user agent.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="9f30b220-c1de-48a5-b1b3-82193707dbd7"/>
                <generalization xmi:id="e9150e5b-826e-4313-ab46-c2666936d439" isSubstitutable="true" general="9780a92c-a003-4ef8-9d33-8762cfe07148"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="0fa96e73-8154-4b82-a1f3-7896eca84be8" name="CSSStyleDeclaration" isAbstract="true">
                <ownedComment xmi:id="8f5bef80-43e7-41b6-b7a4-225e5f77d1b7" body="The &lt;code>CSSStyleDeclaration&lt;/code> interface represents a single CSS&#xA;declaration block. This interface may be used to determine the style&#xA;properties currently set in a block or to set style properties explicitly&#xA;within the block.&#xA;&lt;p> While an implementation may not recognize all CSS properties within a&#xA;CSS declaration block, it is expected to provide access to all specified&#xA;properties in the style sheet through the &lt;code>CSSStyleDeclaration&lt;/code>&#xA;interface. Furthermore, implementations that support a specific level of&#xA;CSS should correctly handle CSS shorthand properties for that level. For&#xA;a further discussion of shorthand properties, see the&#xA;&lt;code>CSS2Properties&lt;/code> interface.&#xA;&lt;p> This interface is also used to provide a read-only access to the&#xA;computed values of an element. See also the &lt;code>ViewCSS&lt;/code>&#xA;interface.  The CSS Object Model doesn't provide an access to the&#xA;specified or actual values of the CSS cascade.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="0fa96e73-8154-4b82-a1f3-7896eca84be8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="071a3480-c63c-408c-917a-99e645c4a902" name="ViewCSS" isAbstract="true">
                <ownedComment xmi:id="0957715e-e31a-4212-8d4f-1865e094a23e" body="This interface represents a CSS view. The &lt;code>getComputedStyle&lt;/code>&#xA;method provides a read only access to the computed values of an element.&#xA;&lt;p> The expectation is that an instance of the &lt;code>ViewCSS&lt;/code>&#xA;interface can be obtained by using binding-specific casting methods on an&#xA;instance of the &lt;code>AbstractView&lt;/code> interface.&#xA;&lt;p> Since a computed style is related to an &lt;code>Element&lt;/code> node, if&#xA;this element is removed from the document, the associated&#xA;&lt;code>CSSStyleDeclaration&lt;/code> and &lt;code>CSSValue&lt;/code> related to&#xA;this declaration are no longer valid.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="071a3480-c63c-408c-917a-99e645c4a902"/>
                <generalization xmi:id="1c4bb7ae-1aed-42c7-bf9e-f323cb8e9413" isSubstitutable="true" general="da30221f-bf46-4948-9b06-df9acfb34584"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="24f2c9ce-419d-4712-97bc-f9c1f9c126f4" name="CSSValueList" isAbstract="true">
                <ownedComment xmi:id="187c0258-ee8b-43e1-a374-38cb08acbece" body="The &lt;code>CSSValueList&lt;/code> interface provides the abstraction of an&#xA;ordered collection of CSS values.&#xA;&lt;p> Some properties allow an empty list into their syntax. In that case,&#xA;these properties take the &lt;code>none&lt;/code> identifier. So, an empty list&#xA;means that the property has the value &lt;code>none&lt;/code>.&#xA;&lt;p> The items in the &lt;code>CSSValueList&lt;/code> are accessible via an&#xA;integral index, starting from 0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="24f2c9ce-419d-4712-97bc-f9c1f9c126f4"/>
                <generalization xmi:id="4c06669c-0dde-4d9b-a891-cf8c54390308" isSubstitutable="true" general="06c0bef1-1732-439d-90fa-bc496d20427f"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="01a68ac3-6eb6-445c-a54d-90c2038ec388" name="CSSPageRule" isAbstract="true">
                <ownedComment xmi:id="9543a139-a5e4-44c5-982d-c5941332fb6b" body="The &lt;code>CSSPageRule&lt;/code> interface represents a @page rule within a&#xA;CSS style sheet. The &lt;code>@page&lt;/code> rule is used to specify the&#xA;dimensions, orientation, margins, etc. of a page box for paged media.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="01a68ac3-6eb6-445c-a54d-90c2038ec388"/>
                <generalization xmi:id="3d798412-09ab-459f-abde-67701dc7c398" isSubstitutable="true" general="9780a92c-a003-4ef8-9d33-8762cfe07148"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="737e6593-0ef8-44d6-9ead-3c3117555417" name="Rect" isAbstract="true">
                <ownedComment xmi:id="9311ceb7-5645-4b11-b7d6-e7d1ccf116d9" body="The &lt;code>Rect&lt;/code> interface is used to represent any rect value. This&#xA;interface reflects the values in the underlying style property. Hence,&#xA;modifications made to the &lt;code>CSSPrimitiveValue&lt;/code> objects modify&#xA;the style property.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="737e6593-0ef8-44d6-9ead-3c3117555417"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="9121c1c9-f07e-41ee-bcca-1d28ff93fddd" name="CSSCharsetRule" isAbstract="true">
                <ownedComment xmi:id="4d9817c5-d70d-40f5-822c-fb396d727c98" body="The &lt;code>CSSCharsetRule&lt;/code> interface represents a @charset rule in a&#xA;CSS style sheet. The value of the &lt;code>encoding&lt;/code> attribute does&#xA;not affect the encoding of text data in the DOM objects; this encoding is&#xA;always UTF-16. After a stylesheet is loaded, the value of the&#xA;&lt;code>encoding&lt;/code> attribute is the value found in the&#xA;&lt;code>@charset&lt;/code> rule. If there was no &lt;code>@charset&lt;/code> in the&#xA;original document, then no &lt;code>CSSCharsetRule&lt;/code> is created. The&#xA;value of the &lt;code>encoding&lt;/code> attribute may also be used as a hint&#xA;for the encoding used on serialization of the style sheet.&#xA;&lt;p> The value of the @charset rule (and therefore of the&#xA;&lt;code>CSSCharsetRule&lt;/code>) may not correspond to the encoding the&#xA;document actually came in; character encoding information e.g. in an HTTP&#xA;header, has priority (see CSS document representation) but this is not&#xA;reflected in the &lt;code>CSSCharsetRule&lt;/code>.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="9121c1c9-f07e-41ee-bcca-1d28ff93fddd"/>
                <generalization xmi:id="222f66ab-cb25-4d0f-822f-6df602398232" isSubstitutable="true" general="9780a92c-a003-4ef8-9d33-8762cfe07148"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="eac28258-c00e-43ff-a1e3-b76b108c7fa5" name="CSSStyleRule" isAbstract="true">
                <ownedComment xmi:id="6b692773-ed97-41e6-be0c-1b69ba59913a" body="The &lt;code>CSSStyleRule&lt;/code> interface represents a single rule set in a&#xA;CSS style sheet.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="eac28258-c00e-43ff-a1e3-b76b108c7fa5"/>
                <generalization xmi:id="3b951978-9b11-4c20-b934-9f24a646d8af" isSubstitutable="true" general="9780a92c-a003-4ef8-9d33-8762cfe07148"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="8238e7ad-a5d4-4afe-9d9d-21295216faae" name="CSSImportRule" isAbstract="true">
                <ownedComment xmi:id="3c4f9cf3-69c2-4b71-9a8b-4f7fba82f93b" body="The &lt;code>CSSImportRule&lt;/code> interface represents a @import rule within&#xA;a CSS style sheet. The &lt;code>@import&lt;/code> rule is used to import style&#xA;rules from other style sheets.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="8238e7ad-a5d4-4afe-9d9d-21295216faae"/>
                <generalization xmi:id="da51d583-a738-4556-a7c2-2b874cd6126e" isSubstitutable="true" general="9780a92c-a003-4ef8-9d33-8762cfe07148"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="4a4e6cd7-bb5e-4592-9c55-367fa0fa1176" name="DocumentCSS" isAbstract="true">
                <ownedComment xmi:id="1f7e7fc1-7942-4f1b-a88d-fb9cc4e7954d" body="This interface represents a document with a CSS view.&#xA;&lt;p> The &lt;code>getOverrideStyle&lt;/code> method provides a mechanism through&#xA;which a DOM author could effect immediate change to the style of an&#xA;element without modifying the explicitly linked style sheets of a&#xA;document or the inline style of elements in the style sheets. This style&#xA;sheet comes after the author style sheet in the cascade algorithm and is&#xA;called override style sheet. The override style sheet takes precedence&#xA;over author style sheets. An &quot;!important&quot; declaration still takes&#xA;precedence over a normal declaration. Override, author, and user style&#xA;sheets all may contain &quot;!important&quot; declarations. User &quot;!important&quot; rules&#xA;take precedence over both override and author &quot;!important&quot; rules, and&#xA;override &quot;!important&quot; rules take precedence over author &quot;!important&quot;&#xA;rules.&#xA;&lt;p> The expectation is that an instance of the &lt;code>DocumentCSS&lt;/code>&#xA;interface can be obtained by using binding-specific casting methods on an&#xA;instance of the &lt;code>Document&lt;/code> interface.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="4a4e6cd7-bb5e-4592-9c55-367fa0fa1176"/>
                <generalization xmi:id="561557b2-2481-4e2a-813d-d270dc708219" isSubstitutable="true" general="f7e4673c-804f-4487-96b8-e5b34f5053ac"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="9780a92c-a003-4ef8-9d33-8762cfe07148" name="CSSRule" isAbstract="true">
                <ownedComment xmi:id="8fdc8aa8-b38d-4d73-91dd-f19917ba8d72" body="The &lt;code>CSSRule&lt;/code> interface is the abstract base interface for any&#xA;type of CSS statement. This includes both rule sets and at-rules. An&#xA;implementation is expected to preserve all rules specified in a CSS style&#xA;sheet, even if the rule is not recognized by the parser. Unrecognized&#xA;rules are represented using the &lt;code>CSSUnknownRule&lt;/code> interface.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="9780a92c-a003-4ef8-9d33-8762cfe07148"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="356a2bfd-8e1a-4f5f-8ec7-59ff5dbfba2b" name="DOMImplementationCSS" isAbstract="true">
                <ownedComment xmi:id="8d96fe70-09b3-4ce0-9063-953d9afe30d8" body="This interface allows the DOM user to create a &lt;code>CSSStyleSheet&lt;/code>&#xA;outside the context of a document. There is no way to associate the new&#xA;&lt;code>CSSStyleSheet&lt;/code> with a document in DOM Level 2.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM   Level 2&#xA;" annotatedElement="356a2bfd-8e1a-4f5f-8ec7-59ff5dbfba2b"/>
                <generalization xmi:id="85eeb57a-a56a-4251-8f41-03b62361f22a" isSubstitutable="true" general="a44b8f3d-90bf-445f-bd5f-987639f913fb"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="b092955b-9e0c-45a8-9638-99057db219f8" name="CSSRuleList" isAbstract="true">
                <ownedComment xmi:id="763ddbcc-6f0d-426c-afb4-fda98bb520b7" body="The &lt;code>CSSRuleList&lt;/code> interface provides the abstraction of an&#xA;ordered collection of CSS rules.&#xA;&lt;p> The items in the &lt;code>CSSRuleList&lt;/code> are accessible via an&#xA;integral index, starting from 0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="b092955b-9e0c-45a8-9638-99057db219f8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="7fdf0c89-45b8-4f3e-9942-ff2ebfebda94" name="CSSStyleSheet" isAbstract="true">
                <ownedComment xmi:id="292e16ea-c02d-483f-9f32-504aea65a714" body="The &lt;code>CSSStyleSheet&lt;/code> interface is a concrete interface used to&#xA;represent a CSS style sheet i.e., a style sheet whose content type is&#xA;&quot;text/css&quot;.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="7fdf0c89-45b8-4f3e-9942-ff2ebfebda94"/>
                <generalization xmi:id="11d6aa74-d731-4e89-b2f6-3753a898fd59" isSubstitutable="true" general="8f78924d-81b9-4859-9fa8-1d2d2934389c"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="6e53bd47-01b1-4f5d-b724-3b46bd88097c" name="ls">
              <packagedElement xmi:type="uml:Interface" xmi:id="32447f28-4e75-40a3-83f8-f45f44c14109" name="LSOutput" isAbstract="true">
                <ownedComment xmi:id="eeac53ea-db3b-42a6-ace0-5aeed7d49ba2" body="This interface represents an output destination for data.&#xA;&lt;p> This interface allows an application to encapsulate information about&#xA;an output destination in a single object, which may include a URI, a byte&#xA;stream (possibly with a specified encoding), a base URI, and/or a&#xA;character stream.&#xA;&lt;p> The exact definitions of a byte stream and a character stream are&#xA;binding dependent.&#xA;&lt;p> The application is expected to provide objects that implement this&#xA;interface whenever such objects are needed. The application can either&#xA;provide its own objects that implement this interface, or it can use the&#xA;generic factory method &lt;code>DOMImplementationLS.createLSOutput()&lt;/code>&#xA;to create objects that implement this interface.&#xA;&lt;p> The &lt;code>LSSerializer&lt;/code> will use the &lt;code>LSOutput&lt;/code> object&#xA;to determine where to serialize the output to. The&#xA;&lt;code>LSSerializer&lt;/code> will look at the different outputs specified in&#xA;the &lt;code>LSOutput&lt;/code> in the following order to know which one to&#xA;output to, the first one that is not null and not an empty string will be&#xA;used:&#xA;&lt;ol>&#xA;&lt;li> &lt;code>LSOutput.characterStream&lt;/code>&#xA;&lt;/li>&#xA;&lt;li>&#xA;&lt;code>LSOutput.byteStream&lt;/code>&#xA;&lt;/li>&#xA;&lt;li> &lt;code>LSOutput.systemId&lt;/code>&#xA;&lt;/li>&#xA;&lt;/ol>&#xA;&lt;p> &lt;code>LSOutput&lt;/code> objects belong to the application. The DOM&#xA;implementation will never modify them (though it may make copies and&#xA;modify the copies, if necessary).&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407'>Document Object Model (DOM) Level 3 Load&#xA;and Save Specification&lt;/a>.&#xA;" annotatedElement="32447f28-4e75-40a3-83f8-f45f44c14109"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="c4e7266d-e365-4c96-968d-06847e047287" name="LSParser" isAbstract="true">
                <ownedComment xmi:id="e5d2a92c-0bd6-43b4-ba9c-bb93efdaadad" body="An interface to an object that is able to build, or augment, a DOM tree&#xA;from various input sources.&#xA;&lt;p> &lt;code>LSParser&lt;/code> provides an API for parsing XML and building the&#xA;corresponding DOM document structure. A &lt;code>LSParser&lt;/code> instance&#xA;can be obtained by invoking the&#xA;&lt;code>DOMImplementationLS.createLSParser()&lt;/code> method.&#xA;&lt;p> As specified in [&lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>DOM Level 3 Core&lt;/a>]&#xA;, when a document is first made available via the LSParser:&#xA;&lt;ul>&#xA;&lt;li> there will&#xA;never be two adjacent nodes of type NODE_TEXT, and there will never be&#xA;empty text nodes.&#xA;&lt;/li>&#xA;&lt;li> it is expected that the &lt;code>value&lt;/code> and&#xA;&lt;code>nodeValue&lt;/code> attributes of an &lt;code>Attr&lt;/code> node initially&#xA;return the &lt;a href='http://www.w3.org/TR/2004/REC-xml-20040204#AVNormalize'>XML 1.0&#xA;normalized value&lt;/a>. However, if the parameters &quot;&lt;a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-validate-if-schema'>&#xA;validate-if-schema&lt;/a>&quot; and &quot;&lt;a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-datatype-normalization'>&#xA;datatype-normalization&lt;/a>&quot; are set to &lt;code>true&lt;/code>, depending on the attribute normalization&#xA;used, the attribute values may differ from the ones obtained by the XML&#xA;1.0 attribute normalization. If the parameters &quot;&lt;a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-datatype-normalization'>&#xA;datatype-normalization&lt;/a>&quot; is set to &lt;code>false&lt;/code>, the XML 1.0 attribute normalization is&#xA;guaranteed to occur, and if the attributes list does not contain&#xA;namespace declarations, the &lt;code>attributes&lt;/code> attribute on&#xA;&lt;code>Element&lt;/code> node represents the property &lt;b>[attributes]&lt;/b> defined in [&lt;a href='http://www.w3.org/TR/2004/REC-xml-infoset-20040204/'>XML Information Set&lt;/a>]&#xA;.&#xA;&lt;/li>&#xA;&lt;/ul>&#xA;&lt;p> Asynchronous &lt;code>LSParser&lt;/code> objects are expected to also&#xA;implement the &lt;code>events::EventTarget&lt;/code> interface so that event&#xA;listeners can be registered on asynchronous &lt;code>LSParser&lt;/code>&#xA;objects.&#xA;&lt;p> Events supported by asynchronous &lt;code>LSParser&lt;/code> objects are:&#xA;&lt;dl>&#xA;&lt;dt>load&lt;/dt>&#xA;&lt;dd>&#xA;The &lt;code>LSParser&lt;/code> finishes to load the document. See also the&#xA;definition of the &lt;code>LSLoadEvent&lt;/code> interface. &lt;/dd>&#xA;&lt;dt>progress&lt;/dt>&#xA;&lt;dd> The&#xA;&lt;code>LSParser&lt;/code> signals progress as data is parsed.  This&#xA;specification does not attempt to define exactly when progress events&#xA;should be dispatched. That is intentionally left as&#xA;implementation-dependent. Here is one example of how an application might&#xA;dispatch progress events: Once the parser starts receiving data, a&#xA;progress event is dispatched to indicate that the parsing starts. From&#xA;there on, a progress event is dispatched for every 4096 bytes of data&#xA;that is received and processed. This is only one example, though, and&#xA;implementations can choose to dispatch progress events at any time while&#xA;parsing, or not dispatch them at all.  See also the definition of the&#xA;&lt;code>LSProgressEvent&lt;/code> interface. &lt;/dd>&#xA;&lt;/dl>&#xA;&lt;p >&lt;b>Note:&lt;/b>  All events defined in this specification use the&#xA;namespace URI &lt;code>&quot;http://www.w3.org/2002/DOMLS&quot;&lt;/code>.&#xA;&lt;p> While parsing an input source, errors are reported to the application&#xA;through the error handler (&lt;code>LSParser.domConfig&lt;/code>'s &quot;&lt;a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-error-handler'>&#xA;error-handler&lt;/a>&quot; parameter). This specification does in no way try to define all possible&#xA;errors that can occur while parsing XML, or any other markup, but some&#xA;common error cases are defined. The types (&lt;code>DOMError.type&lt;/code>) of&#xA;errors and warnings defined by this specification are:&#xA;&lt;dl>&#xA;&lt;dt>&#xA;&lt;code>&quot;check-character-normalization-failure&quot; [error]&lt;/code> &lt;/dt>&#xA;&lt;dd> Raised if&#xA;the parameter &quot;&lt;a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-check-character-normalization'>&#xA;check-character-normalization&lt;/a>&quot; is set to true and a string is encountered that fails normalization&#xA;checking. &lt;/dd>&#xA;&lt;dt>&lt;code>&quot;doctype-not-allowed&quot; [fatal]&lt;/code>&lt;/dt>&#xA;&lt;dd> Raised if the&#xA;configuration parameter &quot;disallow-doctype&quot; is set to &lt;code>true&lt;/code>&#xA;and a doctype is encountered. &lt;/dd>&#xA;&lt;dt>&lt;code>&quot;no-input-specified&quot; [fatal]&lt;/code>&lt;/dt>&#xA;&lt;dd>&#xA;Raised when loading a document and no input is specified in the&#xA;&lt;code>LSInput&lt;/code> object. &lt;/dd>&#xA;&lt;dt>&#xA;&lt;code>&quot;pi-base-uri-not-preserved&quot; [warning]&lt;/code>&lt;/dt>&#xA;&lt;dd> Raised if a processing&#xA;instruction is encountered in a location where the base URI of the&#xA;processing instruction can not be preserved.  One example of a case where&#xA;this warning will be raised is if the configuration parameter &quot;&lt;a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-entities'>&#xA;entities&lt;/a>&quot; is set to &lt;code>false&lt;/code> and the following XML file is parsed:&#xA;&lt;pre>&#xA;&lt;!DOCTYPE root [ &lt;!ENTITY e SYSTEM 'subdir/myentity.ent' ]>&#xA;&lt;root> &amp;e; &lt;/root>&lt;/pre>&#xA;And &lt;code>subdir/myentity.ent&lt;/code>&#xA;contains:&#xA;&lt;pre>&lt;one> &lt;two/> &lt;/one> &lt;?pi 3.14159?>&#xA;&lt;more/>&lt;/pre>&#xA;&lt;/dd>&#xA;&lt;dt>&lt;code>&quot;unbound-prefix-in-entity&quot; [warning]&lt;/code>&lt;/dt>&#xA;&lt;dd> An&#xA;implementation dependent warning that may be raised if the configuration&#xA;parameter &quot;&lt;a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-namespaces'>&#xA;namespaces&lt;/a>&quot; is set to &lt;code>true&lt;/code> and an unbound namespace prefix is&#xA;encountered in an entity's replacement text. Raising this warning is not&#xA;enforced since some existing parsers may not recognize unbound namespace&#xA;prefixes in the replacement text of entities. &lt;/dd>&#xA;&lt;dt>&#xA;&lt;code>&quot;unknown-character-denormalization&quot; [fatal]&lt;/code>&lt;/dt>&#xA;&lt;dd> Raised if the&#xA;configuration parameter &quot;ignore-unknown-character-denormalizations&quot; is&#xA;set to &lt;code>false&lt;/code> and a character is encountered for which the&#xA;processor cannot determine the normalization properties. &lt;/dd>&#xA;&lt;dt>&#xA;&lt;code>&quot;unsupported-encoding&quot; [fatal]&lt;/code>&lt;/dt>&#xA;&lt;dd> Raised if an unsupported&#xA;encoding is encountered. &lt;/dd>&#xA;&lt;dt>&lt;code>&quot;unsupported-media-type&quot; [fatal]&lt;/code>&lt;/dt>&#xA;&lt;dd>&#xA;Raised if the configuration parameter &quot;supported-media-types-only&quot; is set&#xA;to &lt;code>true&lt;/code> and an unsupported media type is encountered. &lt;/dd>&#xA;&lt;/dl>&#xA;&lt;p> In addition to raising the defined errors and warnings, implementations&#xA;are expected to raise implementation specific errors and warnings for any&#xA;other error and warning cases such as IO errors (file not found,&#xA;permission denied,...), XML well-formedness errors, and so on.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407'>Document Object Model (DOM) Level 3 Load&#xA;and Save Specification&lt;/a>.&#xA;" annotatedElement="c4e7266d-e365-4c96-968d-06847e047287"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="f1fa44bc-6aeb-42dc-8e9d-c85dd86925f1" name="LSSerializer" isAbstract="true">
                <ownedComment xmi:id="ba8a4428-6939-4f3a-b1fe-5de50eb7581a" body="A &lt;code>LSSerializer&lt;/code> provides an API for serializing (writing) a&#xA;DOM document out into XML. The XML data is written to a string or an&#xA;output stream. Any changes or fixups made during the serialization affect&#xA;only the serialized data. The &lt;code>Document&lt;/code> object and its&#xA;children are never altered by the serialization operation.&#xA;&lt;p> During serialization of XML data, namespace fixup is done as defined in [&lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>DOM Level 3 Core&lt;/a>]&#xA;, Appendix B. [&lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113'>DOM Level 2 Core&lt;/a>]&#xA;allows empty strings as a real namespace URI. If the&#xA;&lt;code>namespaceURI&lt;/code> of a &lt;code>Node&lt;/code> is empty string, the&#xA;serialization will treat them as &lt;code>null&lt;/code>, ignoring the prefix&#xA;if any.&#xA;&lt;p> &lt;code>LSSerializer&lt;/code> accepts any node type for serialization. For&#xA;nodes of type &lt;code>Document&lt;/code> or &lt;code>Entity&lt;/code>, well-formed&#xA;XML will be created when possible (well-formedness is guaranteed if the&#xA;document or entity comes from a parse operation and is unchanged since it&#xA;was created). The serialized output for these node types is either as a&#xA;XML document or an External XML Entity, respectively, and is acceptable&#xA;input for an XML parser. For all other types of nodes the serialized form&#xA;is implementation dependent.&#xA;&lt;p>Within a &lt;code>Document&lt;/code>, &lt;code>DocumentFragment&lt;/code>, or&#xA;&lt;code>Entity&lt;/code> being serialized, &lt;code>Nodes&lt;/code> are processed as&#xA;follows&#xA;&lt;ul>&#xA;&lt;li> &lt;code>Document&lt;/code> nodes are written, including the XML&#xA;declaration (unless the parameter &quot;xml-declaration&quot; is set to&#xA;&lt;code>false&lt;/code>) and a DTD subset, if one exists in the DOM. Writing a&#xA;&lt;code>Document&lt;/code> node serializes the entire document.&#xA;&lt;/li>&#xA;&lt;li>&#xA;&lt;code>Entity&lt;/code> nodes, when written directly by&#xA;&lt;code>LSSerializer.write&lt;/code>, outputs the entity expansion but no&#xA;namespace fixup is done. The resulting output will be valid as an&#xA;external entity.&#xA;&lt;/li>&#xA;&lt;li> If the parameter &quot;&lt;a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-entities'>&#xA;entities&lt;/a>&quot; is set to &lt;code>true&lt;/code>, &lt;code>EntityReference&lt;/code> nodes are&#xA;serialized as an entity reference of the form &quot;&#xA;&lt;code>&amp;entityName;&lt;/code>&quot; in the output. Child nodes (the expansion)&#xA;of the entity reference are ignored. If the parameter &quot;&lt;a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-entities'>&#xA;entities&lt;/a>&quot; is set to &lt;code>false&lt;/code>, only the children of the entity reference&#xA;are serialized. &lt;code>EntityReference&lt;/code> nodes with no children (no&#xA;corresponding &lt;code>Entity&lt;/code> node or the corresponding&#xA;&lt;code>Entity&lt;/code> nodes have no children) are always serialized.&#xA;&lt;/li>&#xA;&lt;li>&#xA;&lt;code>CDATAsections&lt;/code> containing content characters that cannot be&#xA;represented in the specified output encoding are handled according to the&#xA;&quot;&lt;a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-split-cdata-sections'>&#xA;split-cdata-sections&lt;/a>&quot; parameter.  If the parameter is set to &lt;code>true&lt;/code>,&#xA;&lt;code>CDATAsections&lt;/code> are split, and the unrepresentable characters&#xA;are serialized as numeric character references in ordinary content. The&#xA;exact position and number of splits is not specified.  If the parameter&#xA;is set to &lt;code>false&lt;/code>, unrepresentable characters in a&#xA;&lt;code>CDATAsection&lt;/code> are reported as&#xA;&lt;code>&quot;wf-invalid-character&quot;&lt;/code> errors if the parameter &quot;&lt;a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-well-formed'>&#xA;well-formed&lt;/a>&quot; is set to &lt;code>true&lt;/code>. The error is not recoverable - there is no&#xA;mechanism for supplying alternative characters and continuing with the&#xA;serialization.&#xA;&lt;/li>&#xA;&lt;li> &lt;code>DocumentFragment&lt;/code> nodes are serialized by&#xA;serializing the children of the document fragment in the order they&#xA;appear in the document fragment.&#xA;&lt;/li>&#xA;&lt;li> All other node types (Element, Text,&#xA;etc.) are serialized to their corresponding XML source form.&#xA;&lt;/li>&#xA;&lt;/ul>&#xA;&lt;p >&lt;b>Note:&lt;/b>  The serialization of a &lt;code>Node&lt;/code> does not always&#xA;generate a well-formed XML document, i.e. a &lt;code>LSParser&lt;/code> might&#xA;throw fatal errors when parsing the resulting serialization.&#xA;&lt;p> Within the character data of a document (outside of markup), any&#xA;characters that cannot be represented directly are replaced with&#xA;character references. Occurrences of '&lt;' and '&amp;' are replaced by&#xA;the predefined entities &lt; and &amp;. The other predefined&#xA;entities (>, ', and &quot;) might not be used, except&#xA;where needed (e.g. using > in cases such as ']]>'). Any&#xA;characters that cannot be represented directly in the output character&#xA;encoding are serialized as numeric character references (and since&#xA;character encoding standards commonly use hexadecimal representations of&#xA;characters, using the hexadecimal representation when serializing&#xA;character references is encouraged).&#xA;&lt;p> To allow attribute values to contain both single and double quotes, the&#xA;apostrophe or single-quote character (') may be represented as&#xA;&quot;'&quot;, and the double-quote character (&quot;)  as &quot;&quot;&quot;. New&#xA;line characters and other characters that cannot be represented directly&#xA;in attribute values in the output character encoding are serialized as a&#xA;numeric character reference.&#xA;&lt;p> Within markup, but outside of attributes, any occurrence of a character&#xA;that cannot be represented in the output character encoding is reported&#xA;as a &lt;code>DOMError&lt;/code> fatal error. An example would be serializing&#xA;the element &lt;LaCa\u00f1ada/> with &lt;code>encoding=&quot;us-ascii&quot;&lt;/code>.&#xA;This will result with a generation of a &lt;code>DOMError&lt;/code>&#xA;&quot;wf-invalid-character-in-node-name&quot; (as proposed in &quot;&lt;a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-well-formed'>&#xA;well-formed&lt;/a>&quot;).&#xA;&lt;p> When requested by setting the parameter &quot;&lt;a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-normalize-characters'>&#xA;normalize-characters&lt;/a>&quot; on &lt;code>LSSerializer&lt;/code> to true, character normalization is&#xA;performed according to the definition of &lt;a href='http://www.w3.org/TR/2004/REC-xml11-20040204/#dt-fullnorm'>fully&#xA;normalized&lt;/a> characters included in appendix E of [&lt;a href='http://www.w3.org/TR/2004/REC-xml11-20040204/'>XML 1.1&lt;/a>] on all&#xA;data to be serialized, both markup and character data. The character&#xA;normalization process affects only the data as it is being written; it&#xA;does not alter the DOM's view of the document after serialization has&#xA;completed.&#xA;&lt;p> Implementations are required to support the encodings &quot;UTF-8&quot;,&#xA;&quot;UTF-16&quot;, &quot;UTF-16BE&quot;, and &quot;UTF-16LE&quot; to guarantee that data is&#xA;serializable in all encodings that are required to be supported by all&#xA;XML parsers. When the encoding is UTF-8, whether or not a byte order mark&#xA;is serialized, or if the output is big-endian or little-endian, is&#xA;implementation dependent. When the encoding is UTF-16, whether or not the&#xA;output is big-endian or little-endian is implementation dependent, but a&#xA;Byte Order Mark must be generated for non-character outputs, such as&#xA;&lt;code>LSOutput.byteStream&lt;/code> or &lt;code>LSOutput.systemId&lt;/code>. If&#xA;the Byte Order Mark is not generated, a &quot;byte-order-mark-needed&quot; warning&#xA;is reported. When the encoding is UTF-16LE or UTF-16BE, the output is&#xA;big-endian (UTF-16BE) or little-endian (UTF-16LE) and the Byte Order Mark&#xA;is not be generated. In all cases, the encoding declaration, if&#xA;generated, will correspond to the encoding used during the serialization&#xA;(e.g. &lt;code>encoding=&quot;UTF-16&quot;&lt;/code> will appear if UTF-16 was&#xA;requested).&#xA;&lt;p> Namespaces are fixed up during serialization, the serialization process&#xA;will verify that namespace declarations, namespace prefixes and the&#xA;namespace URI associated with elements and attributes are consistent. If&#xA;inconsistencies are found, the serialized form of the document will be&#xA;altered to remove them. The method used for doing the namespace fixup&#xA;while serializing a document is the algorithm defined in Appendix B.1,&#xA;&quot;Namespace normalization&quot;, of [&lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>DOM Level 3 Core&lt;/a>]&#xA;.&#xA;&lt;p> While serializing a document, the parameter &quot;discard-default-content&quot;&#xA;controls whether or not non-specified data is serialized.&#xA;&lt;p> While serializing, errors and warnings are reported to the application&#xA;through the error handler (&lt;code>LSSerializer.domConfig&lt;/code>'s &quot;&lt;a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-error-handler'>&#xA;error-handler&lt;/a>&quot; parameter). This specification does in no way try to define all possible&#xA;errors and warnings that can occur while serializing a DOM node, but some&#xA;common error and warning cases are defined. The types (&#xA;&lt;code>DOMError.type&lt;/code>) of errors and warnings defined by this&#xA;specification are:&#xA;&lt;dl>&#xA;&lt;dt>&lt;code>&quot;no-output-specified&quot; [fatal]&lt;/code>&lt;/dt>&#xA;&lt;dd> Raised when&#xA;writing to a &lt;code>LSOutput&lt;/code> if no output is specified in the&#xA;&lt;code>LSOutput&lt;/code>. &lt;/dd>&#xA;&lt;dt>&#xA;&lt;code>&quot;unbound-prefix-in-entity-reference&quot; [fatal]&lt;/code> &lt;/dt>&#xA;&lt;dd> Raised if the&#xA;configuration parameter &quot;&lt;a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-namespaces'>&#xA;namespaces&lt;/a>&quot; is set to &lt;code>true&lt;/code> and an entity whose replacement text&#xA;contains unbound namespace prefixes is referenced in a location where&#xA;there are no bindings for the namespace prefixes. &lt;/dd>&#xA;&lt;dt>&#xA;&lt;code>&quot;unsupported-encoding&quot; [fatal]&lt;/code>&lt;/dt>&#xA;&lt;dd> Raised if an unsupported&#xA;encoding is encountered. &lt;/dd>&#xA;&lt;/dl>&#xA;&lt;p> In addition to raising the defined errors and warnings, implementations&#xA;are expected to raise implementation specific errors and warnings for any&#xA;other error and warning cases such as IO errors (file not found,&#xA;permission denied,...) and so on.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407'>Document Object Model (DOM) Level 3 Load&#xA;and Save Specification&lt;/a>.&#xA;" annotatedElement="f1fa44bc-6aeb-42dc-8e9d-c85dd86925f1"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="9f35c07c-066b-4e3a-8d24-8fd0cf35c8d3" name="DOMImplementationLS" isAbstract="true">
                <ownedComment xmi:id="e6c5c04c-4f3f-4c67-8d6b-255cb4a96e08" body="&lt;code>DOMImplementationLS&lt;/code> contains the factory methods for creating&#xA;Load and Save objects.&#xA;&lt;p> The expectation is that an instance of the&#xA;&lt;code>DOMImplementationLS&lt;/code> interface can be obtained by using&#xA;binding-specific casting methods on an instance of the&#xA;&lt;code>DOMImplementation&lt;/code> interface or, if the &lt;code>Document&lt;/code>&#xA;supports the feature &lt;code>&quot;Core&quot;&lt;/code> version &lt;code>&quot;3.0&quot;&lt;/code>&#xA;defined in [&lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>DOM Level 3 Core&lt;/a>]&#xA;, by using the method &lt;code>DOMImplementation.getFeature&lt;/code> with&#xA;parameter values &lt;code>&quot;LS&quot;&lt;/code> (or &lt;code>&quot;LS-Async&quot;&lt;/code>) and&#xA;&lt;code>&quot;3.0&quot;&lt;/code> (respectively).&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407'>Document Object Model (DOM) Level 3 Load&#xA;and Save Specification&lt;/a>.&#xA;" annotatedElement="9f35c07c-066b-4e3a-8d24-8fd0cf35c8d3"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="29572e5a-45e4-42c6-9350-1a2a3cbe4de7" name="LSException">
                <ownedComment xmi:id="884742f6-f8ce-4aed-abea-79b4d251a098" body="Parser or write operations may throw an &lt;code>LSException&lt;/code> if the&#xA;processing is stopped. The processing can be stopped due to a&#xA;&lt;code>DOMError&lt;/code> with a severity of&#xA;&lt;code>DOMError.SEVERITY_FATAL_ERROR&lt;/code> or a non recovered&#xA;&lt;code>DOMError.SEVERITY_ERROR&lt;/code>, or if&#xA;&lt;code>DOMErrorHandler.handleError()&lt;/code> returned &lt;code>false&lt;/code>.&#xA;&lt;p >&lt;b>Note:&lt;/b>  As suggested in the definition of the constants in the&#xA;&lt;code>DOMError&lt;/code> interface, a DOM implementation may choose to&#xA;continue after a fatal error, but the resulting DOM tree is then&#xA;implementation dependent.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407'>Document Object Model (DOM) Level 3 Load&#xA;and Save Specification&lt;/a>.&#xA;" annotatedElement="29572e5a-45e4-42c6-9350-1a2a3cbe4de7"/>
                <generalization xmi:id="fd8345a1-efbe-4dd6-b38b-f11b9eb86c93" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="9126c51a-86f6-4b1e-a273-56a99f2fa2ac" name="LSParserFilter" isAbstract="true">
                <ownedComment xmi:id="e60819b4-3472-496f-8ec0-6f8164483783" body="&lt;code>LSParserFilter&lt;/code>s provide applications the ability to examine&#xA;nodes as they are being constructed while parsing. As each node is&#xA;examined, it may be modified or removed, or the entire parse may be&#xA;terminated early.&#xA;&lt;p> At the time any of the filter methods are called by the parser, the&#xA;owner Document and DOMImplementation objects exist and are accessible.&#xA;The document element is never passed to the &lt;code>LSParserFilter&lt;/code>&#xA;methods, i.e. it is not possible to filter out the document element.&#xA;&lt;code>Document&lt;/code>, &lt;code>DocumentType&lt;/code>, &lt;code>Notation&lt;/code>,&#xA;&lt;code>Entity&lt;/code>, and &lt;code>Attr&lt;/code> nodes are never passed to the&#xA;&lt;code>acceptNode&lt;/code> method on the filter. The child nodes of an&#xA;&lt;code>EntityReference&lt;/code> node are passed to the filter if the&#xA;parameter &quot;&lt;a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-entities'>&#xA;entities&lt;/a>&quot; is set to &lt;code>false&lt;/code>. Note that, as described by the parameter &quot;&lt;a href='http://www.w3.org/TR/DOM-Level-3-Core/core.html#parameter-entities'>&#xA;entities&lt;/a>&quot;, unexpanded entity reference nodes are never discarded and are always&#xA;passed to the filter.&#xA;&lt;p> All validity checking while parsing a document occurs on the source&#xA;document as it appears on the input stream, not on the DOM document as it&#xA;is built in memory. With filters, the document in memory may be a subset&#xA;of the document on the stream, and its validity may have been affected by&#xA;the filtering.&#xA;&lt;p> All default attributes must be present on elements when the elements&#xA;are passed to the filter methods. All other default content must be&#xA;passed to the filter methods.&#xA;&lt;p> DOM applications must not raise exceptions in a filter. The effect of&#xA;throwing exceptions from a filter is DOM implementation dependent.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407'>Document Object Model (DOM) Level 3 Load&#xA;and Save Specification&lt;/a>.&#xA;" annotatedElement="9126c51a-86f6-4b1e-a273-56a99f2fa2ac"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="7a3a48de-d927-4574-aa6e-bf7e853eacf3" name="LSInput" isAbstract="true">
                <ownedComment xmi:id="0230ef25-6f4b-46f0-bc72-fb3effea5b30" body="This interface represents an input source for data.&#xA;&lt;p> This interface allows an application to encapsulate information about&#xA;an input source in a single object, which may include a public&#xA;identifier, a system identifier, a byte stream (possibly with a specified&#xA;encoding), a base URI, and/or a character stream.&#xA;&lt;p> The exact definitions of a byte stream and a character stream are&#xA;binding dependent.&#xA;&lt;p> The application is expected to provide objects that implement this&#xA;interface whenever such objects are needed. The application can either&#xA;provide its own objects that implement this interface, or it can use the&#xA;generic factory method &lt;code>DOMImplementationLS.createLSInput()&lt;/code>&#xA;to create objects that implement this interface.&#xA;&lt;p> The &lt;code>LSParser&lt;/code> will use the &lt;code>LSInput&lt;/code> object to&#xA;determine how to read data. The &lt;code>LSParser&lt;/code> will look at the&#xA;different inputs specified in the &lt;code>LSInput&lt;/code> in the following&#xA;order to know which one to read from, the first one that is not null and&#xA;not an empty string will be used:&#xA;&lt;ol>&#xA;&lt;li> &lt;code>LSInput.characterStream&lt;/code>&#xA;&lt;/li>&#xA;&lt;li>&#xA;&lt;code>LSInput.byteStream&lt;/code>&#xA;&lt;/li>&#xA;&lt;li> &lt;code>LSInput.stringData&lt;/code>&#xA;&lt;/li>&#xA;&lt;li>&#xA;&lt;code>LSInput.systemId&lt;/code>&#xA;&lt;/li>&#xA;&lt;li> &lt;code>LSInput.publicId&lt;/code>&#xA;&lt;/li>&#xA;&lt;/ol>&#xA;&lt;p> If all inputs are null, the &lt;code>LSParser&lt;/code> will report a&#xA;&lt;code>DOMError&lt;/code> with its &lt;code>DOMError.type&lt;/code> set to&#xA;&lt;code>&quot;no-input-specified&quot;&lt;/code> and its &lt;code>DOMError.severity&lt;/code>&#xA;set to &lt;code>DOMError.SEVERITY_FATAL_ERROR&lt;/code>.&#xA;&lt;p> &lt;code>LSInput&lt;/code> objects belong to the application. The DOM&#xA;implementation will never modify them (though it may make copies and&#xA;modify the copies, if necessary).&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407'>Document Object Model (DOM) Level 3 Load&#xA;and Save Specification&lt;/a>.&#xA;" annotatedElement="7a3a48de-d927-4574-aa6e-bf7e853eacf3"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="0df124b3-2015-407b-bb4b-41a15a0d0b4f" name="LSProgressEvent" isAbstract="true">
                <ownedComment xmi:id="d061f2a9-2ce9-4f96-937a-d0e973ce630c" body="This interface represents a progress event object that notifies the&#xA;application about progress as a document is parsed. It extends the&#xA;&lt;code>Event&lt;/code> interface defined in [&lt;a href='http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107'>DOM Level 3 Events&lt;/a>]&#xA;.&#xA;&lt;p> The units used for the attributes &lt;code>position&lt;/code> and&#xA;&lt;code>totalSize&lt;/code> are not specified and can be implementation and&#xA;input dependent.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407'>Document Object Model (DOM) Level 3 Load&#xA;and Save Specification&lt;/a>.&#xA;" annotatedElement="0df124b3-2015-407b-bb4b-41a15a0d0b4f"/>
                <generalization xmi:id="aa5f59f0-075e-4efb-95d5-9150f07b6f50" isSubstitutable="true" general="25c5a1c4-b288-4c70-97c2-e69d137eb2aa"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="8f0bfabb-875c-4a3a-8195-6e6e80ce5864" name="LSResourceResolver" isAbstract="true">
                <ownedComment xmi:id="18580e92-f7d6-4ff1-a55b-350830b7431e" body="&lt;code>LSResourceResolver&lt;/code> provides a way for applications to&#xA;redirect references to external resources.&#xA;&lt;p> Applications needing to implement custom handling for external&#xA;resources can implement this interface and register their implementation&#xA;by setting the &quot;resource-resolver&quot; parameter of&#xA;&lt;code>DOMConfiguration&lt;/code> objects attached to &lt;code>LSParser&lt;/code>&#xA;and &lt;code>LSSerializer&lt;/code>. It can also be register on&#xA;&lt;code>DOMConfiguration&lt;/code> objects attached to &lt;code>Document&lt;/code>&#xA;if the &quot;LS&quot; feature is supported.&#xA;&lt;p> The &lt;code>LSParser&lt;/code> will then allow the application to intercept&#xA;any external entities, including the external DTD subset and external&#xA;parameter entities, before including them. The top-level document entity&#xA;is never passed to the &lt;code>resolveResource&lt;/code> method.&#xA;&lt;p> Many DOM applications will not need to implement this interface, but it&#xA;will be especially useful for applications that build XML documents from&#xA;databases or other specialized input sources, or for applications that&#xA;use URNs.&#xA;&lt;p >&lt;b>Note:&lt;/b>  &lt;code>LSResourceResolver&lt;/code> is based on the SAX2 [&lt;a href='http://www.saxproject.org/'>SAX&lt;/a>] &lt;code>EntityResolver&lt;/code>&#xA;interface.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407'>Document Object Model (DOM) Level 3 Load&#xA;and Save Specification&lt;/a>.&#xA;" annotatedElement="8f0bfabb-875c-4a3a-8195-6e6e80ce5864"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="860da057-3541-49e1-81d1-ed73ee42aaf9" name="LSSerializerFilter" isAbstract="true">
                <ownedComment xmi:id="a79f75bc-56a8-4d9b-b0d4-23015f65b505" body="&lt;code>LSSerializerFilter&lt;/code>s provide applications the ability to&#xA;examine nodes as they are being serialized and decide what nodes should&#xA;be serialized or not. The &lt;code>LSSerializerFilter&lt;/code> interface is&#xA;based on the &lt;code>NodeFilter&lt;/code> interface defined in [&lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>DOM Level 2 Traversal and      Range&lt;/a>]&#xA;.&#xA;&lt;p> &lt;code>Document&lt;/code>, &lt;code>DocumentType&lt;/code>,&#xA;&lt;code>DocumentFragment&lt;/code>, &lt;code>Notation&lt;/code>, &lt;code>Entity&lt;/code>&#xA;, and children of &lt;code>Attr&lt;/code> nodes are not passed to the filter.&#xA;The child nodes of an &lt;code>EntityReference&lt;/code> node are only passed&#xA;to the filter if the &lt;code>EntityReference&lt;/code> node is skipped by the&#xA;method &lt;code>LSParserFilter.acceptNode()&lt;/code>.&#xA;&lt;p> When serializing an &lt;code>Element&lt;/code>, the element is passed to the&#xA;filter before any of its attributes are passed to the filter. Namespace&#xA;declaration attributes, and default attributes (except in the case when &quot;&#xA;discard-default-content&quot; is set to &lt;code>false&lt;/code>), are never passed&#xA;to the filter.&#xA;&lt;p> The result of any attempt to modify a node passed to a&#xA;&lt;code>LSSerializerFilter&lt;/code> is implementation dependent.&#xA;&lt;p> DOM applications must not raise exceptions in a filter. The effect of&#xA;throwing exceptions from a filter is DOM implementation dependent.&#xA;&lt;p> For efficiency, a node passed to the filter may not be the same as the&#xA;one that is actually in the tree. And the actual node (node object&#xA;identity) may be reused during the process of filtering and serializing a&#xA;document.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407'>Document Object Model (DOM) Level 3 Load&#xA;and Save Specification&lt;/a>.&#xA;" annotatedElement="860da057-3541-49e1-81d1-ed73ee42aaf9"/>
                <generalization xmi:id="1031d8d5-2b70-4cf8-83e9-116d7448d855" isSubstitutable="true" general="eb184621-a4a9-42ef-acd8-d781e765717a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="130c90d7-0813-4356-bbc8-2aa29860e296" name="LSLoadEvent" isAbstract="true">
                <ownedComment xmi:id="62a63677-ab7f-48ae-b383-92db6e5047e9" body="This interface represents a load event object that signals the completion&#xA;of a document load.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407'>Document Object Model (DOM) Level 3 Load&#xA;and Save Specification&lt;/a>.&#xA;" annotatedElement="130c90d7-0813-4356-bbc8-2aa29860e296"/>
                <generalization xmi:id="6aecba1c-dc32-46ee-907b-7dd94d5533cb" isSubstitutable="true" general="25c5a1c4-b288-4c70-97c2-e69d137eb2aa"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="eae12cb5-34ed-4889-a4ad-a0a319011f1b" name="DOMException">
              <ownedComment xmi:id="0406ccb5-0309-440d-84aa-ff1804c7a26a" body="DOM operations only raise exceptions in &quot;exceptional&quot; circumstances, i.e.,&#xA;when an operation is impossible to perform (either for logical reasons,&#xA;because data is lost, or because the implementation has become unstable).&#xA;In general, DOM methods return specific error values in ordinary&#xA;processing situations, such as out-of-bound errors when using&#xA;&lt;code>NodeList&lt;/code>.&#xA;&lt;p>Implementations should raise other exceptions under other circumstances.&#xA;For example, implementations should raise an implementation-dependent&#xA;exception if a &lt;code>null&lt;/code> argument is passed when &lt;code>null&lt;/code>&#xA;was not expected.&#xA;&lt;p>Some languages and object systems do not support the concept of&#xA;exceptions. For such systems, error conditions may be indicated using&#xA;native error reporting mechanisms. For some bindings, for example,&#xA;methods may return error codes similar to those listed in the&#xA;corresponding method descriptions.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;" annotatedElement="eae12cb5-34ed-4889-a4ad-a0a319011f1b"/>
              <generalization xmi:id="7ee5f610-ac56-41e0-b90a-0ed50ce1f2f3" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="7c145c38-5254-4f8d-b88a-ba6646474e56" name="DOMImplementationList" isAbstract="true">
              <ownedComment xmi:id="23ff5ced-6d25-4078-881a-5f187cd49980" body="The &lt;code>DOMImplementationList&lt;/code> interface provides the abstraction&#xA;of an ordered collection of DOM implementations, without defining or&#xA;constraining how this collection is implemented. The items in the&#xA;&lt;code>DOMImplementationList&lt;/code> are accessible via an integral index,&#xA;starting from 0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;@since DOM Level 3&#xA;" annotatedElement="7c145c38-5254-4f8d-b88a-ba6646474e56"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="7e3139ce-a067-4646-ba93-bffd98e4227f" name="UserDataHandler" isAbstract="true">
              <ownedComment xmi:id="dc152a12-ca2f-4dfd-b5d5-7261f3cb5a0e" body="When associating an object to a key on a node using&#xA;&lt;code>Node.setUserData()&lt;/code> the application can provide a handler&#xA;that gets called when the node the object is associated to is being&#xA;cloned, imported, or renamed. This can be used by the application to&#xA;implement various behaviors regarding the data it associates to the DOM&#xA;nodes. This interface defines that handler.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;@since DOM Level 3&#xA;" annotatedElement="7e3139ce-a067-4646-ba93-bffd98e4227f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="f710fc2c-9cc0-4cbf-abc3-cdce004e81e1" name="Entity" isAbstract="true">
              <ownedComment xmi:id="a3b37850-0bbf-4982-b189-5a85b095d052" body="This interface represents a known entity, either parsed or unparsed, in an&#xA;XML document. Note that this models the entity itself &lt;em>not&lt;/em> the entity declaration.&#xA;&lt;p>The &lt;code>nodeName&lt;/code> attribute that is inherited from&#xA;&lt;code>Node&lt;/code> contains the name of the entity.&#xA;&lt;p>An XML processor may choose to completely expand entities before the&#xA;structure model is passed to the DOM; in this case there will be no&#xA;&lt;code>EntityReference&lt;/code> nodes in the document tree.&#xA;&lt;p>XML does not mandate that a non-validating XML processor read and&#xA;process entity declarations made in the external subset or declared in&#xA;parameter entities. This means that parsed entities declared in the&#xA;external subset need not be expanded by some classes of applications, and&#xA;that the replacement text of the entity may not be available. When the &lt;a href='http://www.w3.org/TR/2004/REC-xml-20040204#intern-replacement'>&#xA;replacement text&lt;/a> is available, the corresponding &lt;code>Entity&lt;/code> node's child list&#xA;represents the structure of that replacement value. Otherwise, the child&#xA;list is empty.&#xA;&lt;p>DOM Level 3 does not support editing &lt;code>Entity&lt;/code> nodes; if a&#xA;user wants to make changes to the contents of an &lt;code>Entity&lt;/code>,&#xA;every related &lt;code>EntityReference&lt;/code> node has to be replaced in the&#xA;structure model by a clone of the &lt;code>Entity&lt;/code>'s contents, and&#xA;then the desired changes must be made to each of those clones instead.&#xA;&lt;code>Entity&lt;/code> nodes and all their descendants are readonly.&#xA;&lt;p>An &lt;code>Entity&lt;/code> node does not have any parent.&#xA;&lt;p >&lt;b>Note:&lt;/b> If the entity contains an unbound namespace prefix, the&#xA;&lt;code>namespaceURI&lt;/code> of the corresponding node in the&#xA;&lt;code>Entity&lt;/code> node subtree is &lt;code>null&lt;/code>. The same is true&#xA;for &lt;code>EntityReference&lt;/code> nodes that refer to this entity, when&#xA;they are created using the &lt;code>createEntityReference&lt;/code> method of&#xA;the &lt;code>Document&lt;/code> interface.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;" annotatedElement="f710fc2c-9cc0-4cbf-abc3-cdce004e81e1"/>
              <generalization xmi:id="183aa379-98a4-40e4-931e-73269dc1c813" isSubstitutable="true" general="8f861683-f21c-4d48-a80d-6f06066ae865"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="914626c6-74a6-440e-9fc4-af521c037c4f" name="DocumentFragment" isAbstract="true">
              <ownedComment xmi:id="6f04d9c2-ffd8-4c84-bf48-1722678574f9" body="&lt;code>DocumentFragment&lt;/code> is a &quot;lightweight&quot; or &quot;minimal&quot;&#xA;&lt;code>Document&lt;/code> object. It is very common to want to be able to&#xA;extract a portion of a document's tree or to create a new fragment of a&#xA;document. Imagine implementing a user command like cut or rearranging a&#xA;document by moving fragments around. It is desirable to have an object&#xA;which can hold such fragments and it is quite natural to use a Node for&#xA;this purpose. While it is true that a &lt;code>Document&lt;/code> object could&#xA;fulfill this role, a &lt;code>Document&lt;/code> object can potentially be a&#xA;heavyweight object, depending on the underlying implementation. What is&#xA;really needed for this is a very lightweight object.&#xA;&lt;code>DocumentFragment&lt;/code> is such an object.&#xA;&lt;p>Furthermore, various operations -- such as inserting nodes as children&#xA;of another &lt;code>Node&lt;/code> -- may take &lt;code>DocumentFragment&lt;/code>&#xA;objects as arguments; this results in all the child nodes of the&#xA;&lt;code>DocumentFragment&lt;/code> being moved to the child list of this node.&#xA;&lt;p>The children of a &lt;code>DocumentFragment&lt;/code> node are zero or more&#xA;nodes representing the tops of any sub-trees defining the structure of&#xA;the document. &lt;code>DocumentFragment&lt;/code> nodes do not need to be&#xA;well-formed XML documents (although they do need to follow the rules&#xA;imposed upon well-formed XML parsed entities, which can have multiple top&#xA;nodes). For example, a &lt;code>DocumentFragment&lt;/code> might have only one&#xA;child and that child node could be a &lt;code>Text&lt;/code> node. Such a&#xA;structure model represents neither an HTML document nor a well-formed XML&#xA;document.&#xA;&lt;p>When a &lt;code>DocumentFragment&lt;/code> is inserted into a&#xA;&lt;code>Document&lt;/code> (or indeed any other &lt;code>Node&lt;/code> that may&#xA;take children) the children of the &lt;code>DocumentFragment&lt;/code> and not&#xA;the &lt;code>DocumentFragment&lt;/code> itself are inserted into the&#xA;&lt;code>Node&lt;/code>. This makes the &lt;code>DocumentFragment&lt;/code> very&#xA;useful when the user wishes to create nodes that are siblings; the&#xA;&lt;code>DocumentFragment&lt;/code> acts as the parent of these nodes so that&#xA;the user can use the standard methods from the &lt;code>Node&lt;/code>&#xA;interface, such as &lt;code>Node.insertBefore&lt;/code> and&#xA;&lt;code>Node.appendChild&lt;/code>.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;" annotatedElement="914626c6-74a6-440e-9fc4-af521c037c4f"/>
              <generalization xmi:id="3348c26f-3aab-45fb-8d04-6a8d96e491fe" isSubstitutable="true" general="8f861683-f21c-4d48-a80d-6f06066ae865"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="5abc85fd-5955-4262-87bb-0e8a9f9a76ca" name="stylesheets">
              <packagedElement xmi:type="uml:Interface" xmi:id="8f78924d-81b9-4859-9fa8-1d2d2934389c" name="StyleSheet" isAbstract="true">
                <ownedComment xmi:id="6eda8995-9c89-48ef-a1ba-d0438b71d258" body="The &lt;code>StyleSheet&lt;/code> interface is the abstract base interface for&#xA;any type of style sheet. It represents a single style sheet associated&#xA;with a structured document. In HTML, the StyleSheet interface represents&#xA;either an external style sheet, included via the HTML  LINK element, or&#xA;an inline  STYLE element. In XML, this interface represents an external&#xA;style sheet, included via a style sheet processing instruction.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="8f78924d-81b9-4859-9fa8-1d2d2934389c"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="6ff19e5e-e348-4190-a4c3-2529154d6dd7" name="LinkStyle" isAbstract="true">
                <ownedComment xmi:id="1eb4b5f0-b95f-48ba-a289-6d71f4acddc4" body="The &lt;code>LinkStyle&lt;/code> interface provides a mechanism by which a style&#xA;sheet can be retrieved from the node responsible for linking it into a&#xA;document. An instance of the &lt;code>LinkStyle&lt;/code> interface can be&#xA;obtained using binding-specific casting methods on an instance of a&#xA;linking node (&lt;code>HTMLLinkElement&lt;/code>, &lt;code>HTMLStyleElement&lt;/code>&#xA;or &lt;code>ProcessingInstruction&lt;/code> in DOM Level 2).&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="6ff19e5e-e348-4190-a4c3-2529154d6dd7"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="f7e4673c-804f-4487-96b8-e5b34f5053ac" name="DocumentStyle" isAbstract="true">
                <ownedComment xmi:id="d40eee09-e4cf-4224-bfa5-e599f6769345" body="The &lt;code>DocumentStyle&lt;/code> interface provides a mechanism by which the&#xA;style sheets embedded in a document can be retrieved. The expectation is&#xA;that an instance of the &lt;code>DocumentStyle&lt;/code> interface can be&#xA;obtained by using binding-specific casting methods on an instance of the&#xA;&lt;code>Document&lt;/code> interface.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="f7e4673c-804f-4487-96b8-e5b34f5053ac"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="505dc5d0-36e2-4b83-b5bd-cb9dc1ecdd0d" name="MediaList" isAbstract="true">
                <ownedComment xmi:id="49eb902b-e6b0-4057-991b-3d59c7acd54d" body="The &lt;code>MediaList&lt;/code> interface provides the abstraction of an&#xA;ordered collection of media, without defining or constraining how this&#xA;collection is implemented. An empty list is the same as a list that&#xA;contains the medium &lt;code>&quot;all&quot;&lt;/code>.&#xA;&lt;p> The items in the &lt;code>MediaList&lt;/code> are accessible via an integral&#xA;index, starting from 0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="505dc5d0-36e2-4b83-b5bd-cb9dc1ecdd0d"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="26fbff75-81f7-4ad1-be22-f73aab5c34b8" name="StyleSheetList" isAbstract="true">
                <ownedComment xmi:id="7dcd89e6-3bef-4a87-b7f6-4c2f93d04def" body="The &lt;code>StyleSheetList&lt;/code> interface provides the abstraction of an&#xA;ordered collection of style sheets.&#xA;&lt;p> The items in the &lt;code>StyleSheetList&lt;/code> are accessible via an&#xA;integral index, starting from 0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113'>Document Object Model (DOM) Level 2 Style Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="26fbff75-81f7-4ad1-be22-f73aab5c34b8"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d6172237-f111-48e2-900f-576cc2b9078e" name="DOMImplementationSource" isAbstract="true">
              <ownedComment xmi:id="e51aff59-e50f-4030-b66e-129944a04cc9" body="This interface permits a DOM implementer to supply one or more&#xA;implementations, based upon requested features and versions, as specified&#xA;in . Each implemented &lt;code>DOMImplementationSource&lt;/code> object is&#xA;listed in the binding-specific list of available sources so that its&#xA;&lt;code>DOMImplementation&lt;/code> objects are made available.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;@since DOM Level 3&#xA;" annotatedElement="d6172237-f111-48e2-900f-576cc2b9078e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="43f87a36-fb33-48a9-b81c-1caf2110a60d" name="traversal">
              <packagedElement xmi:type="uml:Interface" xmi:id="0defa5be-8837-4508-af3e-7b445d74f021" name="TreeWalker" isAbstract="true">
                <ownedComment xmi:id="7c893bb6-5ae5-4669-8d42-4f191221e981" body="&lt;code>TreeWalker&lt;/code> objects are used to navigate a document tree or&#xA;subtree using the view of the document defined by their&#xA;&lt;code>whatToShow&lt;/code> flags and filter (if any). Any function which&#xA;performs navigation using a &lt;code>TreeWalker&lt;/code> will automatically&#xA;support any view defined by a &lt;code>TreeWalker&lt;/code>.&#xA;&lt;p>Omitting nodes from the logical view of a subtree can result in a&#xA;structure that is substantially different from the same subtree in the&#xA;complete, unfiltered document. Nodes that are siblings in the&#xA;&lt;code>TreeWalker&lt;/code> view may be children of different, widely&#xA;separated nodes in the original view. For instance, consider a&#xA;&lt;code>NodeFilter&lt;/code> that skips all nodes except for Text nodes and&#xA;the root node of a document. In the logical view that results, all text&#xA;nodes will be siblings and appear as direct children of the root node, no&#xA;matter how deeply nested the structure of the original document.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>Document Object Model (DOM) Level 2 Traversal and Range Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="0defa5be-8837-4508-af3e-7b445d74f021"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="eb184621-a4a9-42ef-acd8-d781e765717a" name="NodeFilter" isAbstract="true">
                <ownedComment xmi:id="b87b11f6-edb5-465c-93db-d04ae8ee1aee" body="Filters are objects that know how to &quot;filter out&quot; nodes. If a&#xA;&lt;code>NodeIterator&lt;/code> or &lt;code>TreeWalker&lt;/code> is given a&#xA;&lt;code>NodeFilter&lt;/code>, it applies the filter before it returns the next&#xA;node. If the filter says to accept the node, the traversal logic returns&#xA;it; otherwise, traversal looks for the next node and pretends that the&#xA;node that was rejected was not there.&#xA;&lt;p>The DOM does not provide any filters. &lt;code>NodeFilter&lt;/code> is just an&#xA;interface that users can implement to provide their own filters.&#xA;&lt;p>&lt;code>NodeFilters&lt;/code> do not need to know how to traverse from node&#xA;to node, nor do they need to know anything about the data structure that&#xA;is being traversed. This makes it very easy to write filters, since the&#xA;only thing they have to know how to do is evaluate a single node. One&#xA;filter may be used with a number of different kinds of traversals,&#xA;encouraging code reuse.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>Document Object Model (DOM) Level 2 Traversal and Range Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="eb184621-a4a9-42ef-acd8-d781e765717a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="90dd15e0-31ea-4652-a15c-db347277b190" name="NodeIterator" isAbstract="true">
                <ownedComment xmi:id="667e9ff1-384e-4389-87b7-ebe584bb8633" body="&lt;code>NodeIterators&lt;/code> are used to step through a set of nodes, e.g.&#xA;the set of nodes in a &lt;code>NodeList&lt;/code>, the document subtree&#xA;governed by a particular &lt;code>Node&lt;/code>, the results of a query, or&#xA;any other set of nodes. The set of nodes to be iterated is determined by&#xA;the implementation of the &lt;code>NodeIterator&lt;/code>. DOM Level 2&#xA;specifies a single &lt;code>NodeIterator&lt;/code> implementation for&#xA;document-order traversal of a document subtree. Instances of these&#xA;&lt;code>NodeIterators&lt;/code> are created by calling&#xA;&lt;code>DocumentTraversal&lt;/code>&lt;code>.createNodeIterator()&lt;/code>.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>Document Object Model (DOM) Level 2 Traversal and Range Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="90dd15e0-31ea-4652-a15c-db347277b190"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="763082c2-0eb1-436d-91cb-cdcf0ec20761" name="DocumentTraversal" isAbstract="true">
                <ownedComment xmi:id="b80488e1-52c0-42a6-be1a-a749571ddfcc" body="&lt;code>DocumentTraversal&lt;/code> contains methods that create&#xA;&lt;code>NodeIterators&lt;/code> and &lt;code>TreeWalkers&lt;/code> to traverse a&#xA;node and its children in document order (depth first, pre-order&#xA;traversal, which is equivalent to the order in which the start tags occur&#xA;in the text representation of the document). In DOMs which support the&#xA;Traversal feature, &lt;code>DocumentTraversal&lt;/code> will be implemented by&#xA;the same objects that implement the Document interface.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>Document Object Model (DOM) Level 2 Traversal and Range Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="763082c2-0eb1-436d-91cb-cdcf0ec20761"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="724ea280-be91-4dcc-a67d-926155a331a1" name="bootstrap">
              <packagedElement xmi:type="uml:Class" xmi:id="558c50b4-6bba-4eb1-bc6a-a08a7c6bfeea" name="DOMImplementationRegistry" isLeaf="true">
                <ownedComment xmi:id="8ea4aed5-a35f-46e4-bb17-4c3a3a2e7e20" body="A factory that enables applications to obtain instances of&#xA;&lt;code>DOMImplementation&lt;/code>.&#xA;&#xA;&lt;p>&#xA;Example:&#xA;&lt;/p>&#xA;&#xA;&lt;pre class='example'>&#xA;get an instance of the DOMImplementation registry&#xA;DOMImplementationRegistry registry =&#xA;DOMImplementationRegistry.newInstance();&#xA;get a DOM implementation the Level 3 XML module&#xA;DOMImplementation domImpl =&#xA;registry.getDOMImplementation(&quot;XML 3.0&quot;);&#xA;&lt;/pre>&#xA;&#xA;&lt;p>&#xA;This provides an application with an implementation-independent starting&#xA;point. DOM implementations may modify this class to meet new security&#xA;standards or to provide *additional* fallbacks for the list of&#xA;DOMImplementationSources.&#xA;&lt;/p>&#xA;&#xA;@see DOMImplementation&#xA;@see DOMImplementationSource&#xA;@since DOM Level 3&#xA;" annotatedElement="558c50b4-6bba-4eb1-bc6a-a08a7c6bfeea"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="bc227736-d9c3-4c84-a5e3-e0c6385af83b" name="DOMConfiguration" isAbstract="true">
              <ownedComment xmi:id="b27925a8-d3e4-466f-8688-4081511bcb1f" body="The &lt;code>DOMConfiguration&lt;/code> interface represents the configuration&#xA;of a document and maintains a table of recognized parameters. Using the&#xA;configuration, it is possible to change&#xA;&lt;code>Document.normalizeDocument()&lt;/code> behavior, such as replacing the&#xA;&lt;code>CDATASection&lt;/code> nodes with &lt;code>Text&lt;/code> nodes or&#xA;specifying the type of the schema that must be used when the validation&#xA;of the &lt;code>Document&lt;/code> is requested. &lt;code>DOMConfiguration&lt;/code>&#xA;objects are also used in [&lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407'>DOM Level 3 Load and Save&lt;/a>]&#xA;in the &lt;code>DOMParser&lt;/code> and &lt;code>DOMSerializer&lt;/code> interfaces.&#xA;&lt;p> The parameter names used by the &lt;code>DOMConfiguration&lt;/code> object&#xA;are defined throughout the DOM Level 3 specifications. Names are&#xA;case-insensitive. To avoid possible conflicts, as a convention, names&#xA;referring to parameters defined outside the DOM specification should be&#xA;made unique. Because parameters are exposed as properties in the , names&#xA;are recommended to follow the section 5.16 Identifiers of [Unicode] with the addition of the character '-' (HYPHEN-MINUS) but it is not&#xA;enforced by the DOM implementation. DOM Level 3 Core Implementations are&#xA;required to recognize all parameters defined in this specification. Some&#xA;parameter values may also be required to be supported by the&#xA;implementation. Refer to the definition of the parameter to know if a&#xA;value must be supported or not.&#xA;&lt;p >&lt;b>Note:&lt;/b>  Parameters are similar to features and properties used in&#xA;SAX2 [&lt;a href='http://www.saxproject.org/'>SAX&lt;/a>].&#xA;&lt;p> The following list of parameters defined in the DOM:&#xA;&lt;dl>&#xA;&lt;dt>&#xA;&lt;code>&quot;canonical-form&quot;&lt;/code>&lt;/dt>&#xA;&lt;dd>&#xA;&lt;dl>&#xA;&lt;dt>&lt;code>true&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>optional&lt;/em>] Canonicalize the document according to the rules specified in [&lt;a href='http://www.w3.org/TR/2001/REC-xml-c14n-20010315'>Canonical XML&lt;/a>],&#xA;such as removing the &lt;code>DocumentType&lt;/code> node (if any) from the&#xA;tree, or removing superfluous namespace declarations from each element.&#xA;Note that this is limited to what can be represented in the DOM; in&#xA;particular, there is no way to specify the order of the attributes in the&#xA;DOM. In addition,  Setting this parameter to &lt;code>true&lt;/code> will also&#xA;set the state of the parameters listed below. Later changes to the state&#xA;of one of those parameters will revert &quot;canonical-form&quot; back to&#xA;&lt;code>false&lt;/code>. Parameters set to &lt;code>false&lt;/code>: &quot;entities&quot;, &quot;&#xA;normalize-characters&quot;, &quot;cdata-sections&quot;. Parameters set to&#xA;&lt;code>true&lt;/code>: &quot;namespaces&quot;, &quot;namespace-declarations&quot;, &quot;well-formed&quot;,&#xA;&quot;element-content-whitespace&quot;. Other parameters are not changed unless&#xA;explicitly specified in the description of the parameters.&lt;/dd>&#xA;&lt;dt>&#xA;&lt;code>false&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>] (&lt;em>default&lt;/em>)Do not canonicalize the document.&lt;/dd>&#xA;&lt;/dl>&lt;/dd>&#xA;&lt;dt>&lt;code>&quot;cdata-sections&quot;&lt;/code>&lt;/dt>&#xA;&lt;dd>&#xA;&lt;dl>&#xA;&lt;dt>&#xA;&lt;code>true&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>] (&lt;em>default&lt;/em>)Keep &lt;code>CDATASection&lt;/code> nodes in the document.&lt;/dd>&#xA;&lt;dt>&lt;code>false&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>]Transform &lt;code>CDATASection&lt;/code> nodes in the document into&#xA;&lt;code>Text&lt;/code> nodes. The new &lt;code>Text&lt;/code> node is then combined&#xA;with any adjacent &lt;code>Text&lt;/code> node.&lt;/dd>&#xA;&lt;/dl>&lt;/dd>&#xA;&lt;dt>&#xA;&lt;code>&quot;check-character-normalization&quot;&lt;/code>&lt;/dt>&#xA;&lt;dd>&#xA;&lt;dl>&#xA;&lt;dt>&lt;code>true&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>optional&lt;/em>] Check if the characters in the document are &lt;a href='http://www.w3.org/TR/2004/REC-xml11-20040204/#dt-fullnorm'>fully&#xA;normalized&lt;/a>, as defined in appendix B of [&lt;a href='http://www.w3.org/TR/2004/REC-xml11-20040204/'>XML 1.1&lt;/a>]. When a&#xA;sequence of characters is encountered that fails normalization checking,&#xA;an error with the &lt;code>DOMError.type&lt;/code> equals to&#xA;&quot;check-character-normalization-failure&quot; is issued. &lt;/dd>&#xA;&lt;dt>&lt;code>false&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>] (&lt;em>default&lt;/em>)Do not check if characters are normalized.&lt;/dd>&#xA;&lt;/dl>&lt;/dd>&#xA;&lt;dt>&lt;code>&quot;comments&quot;&lt;/code>&lt;/dt>&#xA;&lt;dd>&#xA;&lt;dl>&#xA;&lt;dt>&#xA;&lt;code>true&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>] (&lt;em>default&lt;/em>)Keep &lt;code>Comment&lt;/code> nodes in the document.&lt;/dd>&#xA;&lt;dt>&lt;code>false&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>]Discard &lt;code>Comment&lt;/code> nodes in the document.&lt;/dd>&#xA;&lt;/dl>&lt;/dd>&#xA;&lt;dt>&#xA;&lt;code>&quot;datatype-normalization&quot;&lt;/code>&lt;/dt>&#xA;&lt;dd>&#xA;&lt;dl>&#xA;&lt;dt>&lt;code>true&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>optional&lt;/em>] Expose schema normalized values in the tree, such as &lt;a href='http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/#key-nv'>XML&#xA;Schema normalized values&lt;/a> in the case of XML Schema. Since this parameter requires to have schema&#xA;information, the &quot;validate&quot; parameter will also be set to&#xA;&lt;code>true&lt;/code>. Having this parameter activated when &quot;validate&quot; is&#xA;&lt;code>false&lt;/code> has no effect and no schema-normalization will happen.&#xA;&lt;p >&lt;b>Note:&lt;/b>  Since the document contains the result of the XML 1.0&#xA;processing, this parameter does not apply to attribute value&#xA;normalization as defined in section 3.3.3 of [&lt;a href='http://www.w3.org/TR/2004/REC-xml-20040204'>XML 1.0&lt;/a>] and is only&#xA;meant for schema languages other than Document Type Definition (DTD). &lt;/dd>&#xA;&lt;dt>&#xA;&lt;code>false&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>] (&lt;em>default&lt;/em>) Do not perform schema normalization on the tree. &lt;/dd>&#xA;&lt;/dl>&lt;/dd>&#xA;&lt;dt>&#xA;&lt;code>&quot;element-content-whitespace&quot;&lt;/code>&lt;/dt>&#xA;&lt;dd>&#xA;&lt;dl>&#xA;&lt;dt>&lt;code>true&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>] (&lt;em>default&lt;/em>)Keep all whitespaces in the document.&lt;/dd>&#xA;&lt;dt>&lt;code>false&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>optional&lt;/em>] Discard all &lt;code>Text&lt;/code> nodes that contain whitespaces in element&#xA;content, as described in &lt;a href='http://www.w3.org/TR/2004/REC-xml-infoset-20040204#infoitem.character'>&#xA;[element content whitespace]&lt;/a>. The implementation is expected to use the attribute&#xA;&lt;code>Text.isElementContentWhitespace&lt;/code> to determine if a&#xA;&lt;code>Text&lt;/code> node should be discarded or not.&lt;/dd>&#xA;&lt;/dl>&lt;/dd>&#xA;&lt;dt>&lt;code>&quot;entities&quot;&lt;/code>&lt;/dt>&#xA;&lt;dd>&#xA;&lt;dl>&#xA;&lt;dt>&#xA;&lt;code>true&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>] (&lt;em>default&lt;/em>)Keep &lt;code>EntityReference&lt;/code> nodes in the document.&lt;/dd>&#xA;&lt;dt>&#xA;&lt;code>false&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>] Remove all &lt;code>EntityReference&lt;/code> nodes from the document,&#xA;putting the entity expansions directly in their place. &lt;code>Text&lt;/code>&#xA;nodes are normalized, as defined in &lt;code>Node.normalize&lt;/code>. Only &lt;a href='http://www.w3.org/TR/2004/REC-xml-infoset-20040204/#infoitem.rse'>&#xA;unexpanded entity references&lt;/a> are kept in the document. &lt;/dd>&#xA;&lt;/dl>&#xA;&lt;p >&lt;b>Note:&lt;/b>  This parameter does not affect &lt;code>Entity&lt;/code> nodes. &lt;/dd>&#xA;&lt;dt>&#xA;&lt;code>&quot;error-handler&quot;&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>] Contains a &lt;code>DOMErrorHandler&lt;/code> object. If an error is&#xA;encountered in the document, the implementation will call back the&#xA;&lt;code>DOMErrorHandler&lt;/code> registered using this parameter. The&#xA;implementation may provide a default &lt;code>DOMErrorHandler&lt;/code> object.&#xA;When called, &lt;code>DOMError.relatedData&lt;/code> will contain the closest&#xA;node to where the error occurred. If the implementation is unable to&#xA;determine the node where the error occurs,&#xA;&lt;code>DOMError.relatedData&lt;/code> will contain the &lt;code>Document&lt;/code>&#xA;node. Mutations to the document from within an error handler will result&#xA;in implementation dependent behavior. &lt;/dd>&#xA;&lt;dt>&lt;code>&quot;infoset&quot;&lt;/code>&lt;/dt>&#xA;&lt;dd>&#xA;&lt;dl>&#xA;&lt;dt>&#xA;&lt;code>true&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>]Keep in the document the information defined in the XML Information Set [&lt;a href='http://www.w3.org/TR/2004/REC-xml-infoset-20040204/'>XML Information Set&lt;/a>]&#xA;.This forces the following parameters to &lt;code>false&lt;/code>: &quot;&#xA;validate-if-schema&quot;, &quot;entities&quot;, &quot;datatype-normalization&quot;, &quot;cdata-sections&#xA;&quot;.This forces the following parameters to &lt;code>true&lt;/code>: &quot;&#xA;namespace-declarations&quot;, &quot;well-formed&quot;, &quot;element-content-whitespace&quot;, &quot;&#xA;comments&quot;, &quot;namespaces&quot;.Other parameters are not changed unless&#xA;explicitly specified in the description of the parameters. Note that&#xA;querying this parameter with &lt;code>getParameter&lt;/code> returns&#xA;&lt;code>true&lt;/code> only if the individual parameters specified above are&#xA;appropriately set.&lt;/dd>&#xA;&lt;dt>&lt;code>false&lt;/code>&lt;/dt>&#xA;&lt;dd>Setting &lt;code>infoset&lt;/code> to&#xA;&lt;code>false&lt;/code> has no effect.&lt;/dd>&#xA;&lt;/dl>&lt;/dd>&#xA;&lt;dt>&lt;code>&quot;namespaces&quot;&lt;/code>&lt;/dt>&#xA;&lt;dd>&#xA;&lt;dl>&#xA;&lt;dt>&#xA;&lt;code>true&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>] (&lt;em>default&lt;/em>) Perform the namespace processing as defined in . &lt;/dd>&#xA;&lt;dt>&lt;code>false&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>optional&lt;/em>] Do not perform the namespace processing. &lt;/dd>&#xA;&lt;/dl>&lt;/dd>&#xA;&lt;dt>&#xA;&lt;code>&quot;namespace-declarations&quot;&lt;/code>&lt;/dt>&#xA;&lt;dd> This parameter has no effect if the&#xA;parameter &quot;namespaces&quot; is set to &lt;code>false&lt;/code>.&#xA;&lt;dl>&#xA;&lt;dt>&lt;code>true&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>] (&lt;em>default&lt;/em>) Include namespace declaration attributes, specified or defaulted from&#xA;the schema, in the document. See also the sections &quot;Declaring Namespaces&quot;&#xA;in [&lt;a href='http://www.w3.org/TR/1999/REC-xml-names-19990114/'>XML Namespaces&lt;/a>]&#xA;and [&lt;a href='http://www.w3.org/TR/2004/REC-xml-names11-20040204/'>XML Namespaces 1.1&lt;/a>]&#xA;.&lt;/dd>&#xA;&lt;dt>&lt;code>false&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>]Discard all namespace declaration attributes. The namespace prefixes (&#xA;&lt;code>Node.prefix&lt;/code>) are retained even if this parameter is set to&#xA;&lt;code>false&lt;/code>.&lt;/dd>&#xA;&lt;/dl>&lt;/dd>&#xA;&lt;dt>&lt;code>&quot;normalize-characters&quot;&lt;/code>&lt;/dt>&#xA;&lt;dd>&#xA;&lt;dl>&#xA;&lt;dt>&lt;code>true&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>optional&lt;/em>] &lt;a href='http://www.w3.org/TR/2004/REC-xml11-20040204/#dt-fullnorm'>Fully&#xA;normalized&lt;/a> the characters in the document as defined in appendix B of [&lt;a href='http://www.w3.org/TR/2004/REC-xml11-20040204/'>XML 1.1&lt;/a>]. &lt;/dd>&#xA;&lt;dt>&#xA;&lt;code>false&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>] (&lt;em>default&lt;/em>)Do not perform character normalization.&lt;/dd>&#xA;&lt;/dl>&lt;/dd>&#xA;&lt;dt>&lt;code>&quot;schema-location&quot;&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>optional&lt;/em>] Represent a &lt;code>DOMString&lt;/code> object containing a list of URIs,&#xA;separated by whitespaces (characters matching the &lt;a href='http://www.w3.org/TR/2004/REC-xml-20040204#NT-S'>nonterminal&#xA;production S&lt;/a> defined in section 2.3 [&lt;a href='http://www.w3.org/TR/2004/REC-xml-20040204'>XML 1.0&lt;/a>]), that&#xA;represents the schemas against which validation should occur, i.e. the&#xA;current schema. The types of schemas referenced in this list must match&#xA;the type specified with &lt;code>schema-type&lt;/code>, otherwise the behavior&#xA;of an implementation is undefined.  The schemas specified using this&#xA;property take precedence to the schema information specified in the&#xA;document itself. For namespace aware schema, if a schema specified using&#xA;this property and a schema specified in the document instance (i.e. using&#xA;the &lt;code>schemaLocation&lt;/code> attribute) in a schema document (i.e.&#xA;using schema &lt;code>import&lt;/code> mechanisms) share the same&#xA;&lt;code>targetNamespace&lt;/code>, the schema specified by the user using this&#xA;property will be used. If two schemas specified using this property share&#xA;the same &lt;code>targetNamespace&lt;/code> or have no namespace, the behavior&#xA;is implementation dependent.  If no location has been provided, this&#xA;parameter is &lt;code>null&lt;/code>.&#xA;&lt;p >&lt;b>Note:&lt;/b>  The &lt;code>&quot;schema-location&quot;&lt;/code> parameter is ignored&#xA;unless the &quot;schema-type&quot; parameter value is set. It is strongly&#xA;recommended that &lt;code>Document.documentURI&lt;/code> will be set so that an&#xA;implementation can successfully resolve any external entities referenced. &lt;/dd>&#xA;&lt;dt>&#xA;&lt;code>&quot;schema-type&quot;&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>optional&lt;/em>] Represent a &lt;code>DOMString&lt;/code> object containing an absolute URI&#xA;and representing the type of the schema language used to validate a&#xA;document against. Note that no lexical checking is done on the absolute&#xA;URI.  If this parameter is not set, a default value may be provided by&#xA;the implementation, based on the schema languages supported and on the&#xA;schema language used at load time. If no value is provided, this&#xA;parameter is &lt;code>null&lt;/code>.&#xA;&lt;p >&lt;b>Note:&lt;/b>  For XML Schema [&lt;a href='http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/'>XML Schema Part 1&lt;/a>]&#xA;, applications must use the value&#xA;&lt;code>&quot;http://www.w3.org/2001/XMLSchema&quot;&lt;/code>. For XML DTD [&lt;a href='http://www.w3.org/TR/2004/REC-xml-20040204'>XML 1.0&lt;/a>],&#xA;applications must use the value&#xA;&lt;code>&quot;http://www.w3.org/TR/REC-xml&quot;&lt;/code>. Other schema languages are&#xA;outside the scope of the W3C and therefore should recommend an absolute&#xA;URI in order to use this method. &lt;/dd>&#xA;&lt;dt>&lt;code>&quot;split-cdata-sections&quot;&lt;/code>&lt;/dt>&#xA;&lt;dd>&#xA;&lt;dl>&#xA;&lt;dt>&#xA;&lt;code>true&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>] (&lt;em>default&lt;/em>)Split CDATA sections containing the CDATA section termination marker&#xA;']]>'. When a CDATA section is split a warning is issued with a&#xA;&lt;code>DOMError.type&lt;/code> equals to&#xA;&lt;code>&quot;cdata-sections-splitted&quot;&lt;/code> and&#xA;&lt;code>DOMError.relatedData&lt;/code> equals to the first&#xA;&lt;code>CDATASection&lt;/code> node in document order resulting from the split.&lt;/dd>&#xA;&lt;dt>&#xA;&lt;code>false&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>]Signal an error if a &lt;code>CDATASection&lt;/code> contains an&#xA;unrepresentable character.&lt;/dd>&#xA;&lt;/dl>&lt;/dd>&#xA;&lt;dt>&lt;code>&quot;validate&quot;&lt;/code>&lt;/dt>&#xA;&lt;dd>&#xA;&lt;dl>&#xA;&lt;dt>&lt;code>true&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>optional&lt;/em>] Require the validation against a schema (i.e. XML schema, DTD, any&#xA;other type or representation of schema) of the document as it is being&#xA;normalized as defined by [&lt;a href='http://www.w3.org/TR/2004/REC-xml-20040204'>XML 1.0&lt;/a>]. If&#xA;validation errors are found, or no schema was found, the error handler is&#xA;notified. Schema-normalized values will not be exposed according to the&#xA;schema in used unless the parameter &quot;datatype-normalization&quot; is&#xA;&lt;code>true&lt;/code>.  This parameter will reevaluate:&#xA;&lt;ul>&#xA;&lt;li> Attribute nodes with&#xA;&lt;code>Attr.specified&lt;/code> equals to &lt;code>false&lt;/code>, as specified in&#xA;the description of the &lt;code>Attr&lt;/code> interface;&#xA;&lt;/li>&#xA;&lt;li> The value of the&#xA;attribute &lt;code>Text.isElementContentWhitespace&lt;/code> for all&#xA;&lt;code>Text&lt;/code> nodes;&#xA;&lt;/li>&#xA;&lt;li> The value of the attribute&#xA;&lt;code>Attr.isId&lt;/code> for all &lt;code>Attr&lt;/code> nodes;&#xA;&lt;/li>&#xA;&lt;li> The attributes&#xA;&lt;code>Element.schemaTypeInfo&lt;/code> and &lt;code>Attr.schemaTypeInfo&lt;/code>.&#xA;&lt;/li>&#xA;&lt;/ul>&#xA;&lt;p >&lt;b>Note:&lt;/b>  &quot;validate-if-schema&quot; and &quot;validate&quot; are mutually&#xA;exclusive, setting one of them to &lt;code>true&lt;/code> will set the other&#xA;one to &lt;code>false&lt;/code>. Applications should also consider setting the&#xA;parameter &quot;well-formed&quot; to &lt;code>true&lt;/code>, which is the default for&#xA;that option, when validating the document. &lt;/dd>&#xA;&lt;dt>&lt;code>false&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>] (&lt;em>default&lt;/em>) Do not accomplish schema processing, including the internal subset&#xA;processing. Default attribute values information are kept. Note that&#xA;validation might still happen if &quot;validate-if-schema&quot; is &lt;code>true&lt;/code>&#xA;. &lt;/dd>&#xA;&lt;/dl>&lt;/dd>&#xA;&lt;dt>&lt;code>&quot;validate-if-schema&quot;&lt;/code>&lt;/dt>&#xA;&lt;dd>&#xA;&lt;dl>&#xA;&lt;dt>&lt;code>true&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>optional&lt;/em>]Enable validation only if a declaration for the document element can be&#xA;found in a schema (independently of where it is found, i.e. XML schema,&#xA;DTD, or any other type or representation of schema). If validation is&#xA;enabled, this parameter has the same behavior as the parameter &quot;validate&quot;&#xA;set to &lt;code>true&lt;/code>.&#xA;&lt;p >&lt;b>Note:&lt;/b>  &quot;validate-if-schema&quot; and &quot;validate&quot; are mutually&#xA;exclusive, setting one of them to &lt;code>true&lt;/code> will set the other&#xA;one to &lt;code>false&lt;/code>. &lt;/dd>&#xA;&lt;dt>&lt;code>false&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>] (&lt;em>default&lt;/em>) No schema processing should be performed if the document has a schema,&#xA;including internal subset processing. Default attribute values&#xA;information are kept. Note that validation must still happen if &quot;validate&#xA;&quot; is &lt;code>true&lt;/code>. &lt;/dd>&#xA;&lt;/dl>&lt;/dd>&#xA;&lt;dt>&lt;code>&quot;well-formed&quot;&lt;/code>&lt;/dt>&#xA;&lt;dd>&#xA;&lt;dl>&#xA;&lt;dt>&lt;code>true&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>required&lt;/em>] (&lt;em>default&lt;/em>) Check if all nodes are XML well formed according to the XML version in&#xA;use in &lt;code>Document.xmlVersion&lt;/code>:&#xA;&lt;ul>&#xA;&lt;li> check if the attribute&#xA;&lt;code>Node.nodeName&lt;/code> contains invalid characters according to its&#xA;node type and generate a &lt;code>DOMError&lt;/code> of type&#xA;&lt;code>&quot;wf-invalid-character-in-node-name&quot;&lt;/code>, with a&#xA;&lt;code>DOMError.SEVERITY_ERROR&lt;/code> severity, if necessary;&#xA;&lt;/li>&#xA;&lt;li> check if&#xA;the text content inside &lt;code>Attr&lt;/code>, &lt;code>Element&lt;/code>,&#xA;&lt;code>Comment&lt;/code>, &lt;code>Text&lt;/code>, &lt;code>CDATASection&lt;/code> nodes&#xA;for invalid characters and generate a &lt;code>DOMError&lt;/code> of type&#xA;&lt;code>&quot;wf-invalid-character&quot;&lt;/code>, with a&#xA;&lt;code>DOMError.SEVERITY_ERROR&lt;/code> severity, if necessary;&#xA;&lt;/li>&#xA;&lt;li> check if&#xA;the data inside &lt;code>ProcessingInstruction&lt;/code> nodes for invalid&#xA;characters and generate a &lt;code>DOMError&lt;/code> of type&#xA;&lt;code>&quot;wf-invalid-character&quot;&lt;/code>, with a&#xA;&lt;code>DOMError.SEVERITY_ERROR&lt;/code> severity, if necessary;&#xA;&lt;/li>&#xA;&lt;/ul>&lt;/dd>&#xA;&lt;dt>&#xA;&lt;code>false&lt;/code>&lt;/dt>&#xA;&lt;dd>[&lt;em>optional&lt;/em>] Do not check for XML well-formedness. &lt;/dd>&#xA;&lt;/dl>&lt;/dd>&#xA;&lt;/dl>&#xA;&lt;p> The resolution of the system identifiers associated with entities is&#xA;done using &lt;code>Document.documentURI&lt;/code>. However, when the feature&#xA;&quot;LS&quot; defined in [&lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407'>DOM Level 3 Load and Save&lt;/a>]&#xA;is supported by the DOM implementation, the parameter&#xA;&quot;resource-resolver&quot; can also be used on &lt;code>DOMConfiguration&lt;/code>&#xA;objects attached to &lt;code>Document&lt;/code> nodes. If this parameter is&#xA;set, &lt;code>Document.normalizeDocument()&lt;/code> will invoke the resource&#xA;resolver instead of using &lt;code>Document.documentURI&lt;/code>.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;@since DOM Level 3&#xA;" annotatedElement="bc227736-d9c3-4c84-a5e3-e0c6385af83b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="b16a24ef-01f8-4756-91f9-e573301bed83" name="Element" isAbstract="true">
              <ownedComment xmi:id="a67c4589-e6e0-4d55-aa39-34d4c0efa770" body="The &lt;code>Element&lt;/code> interface represents an element in an HTML or XML&#xA;document. Elements may have attributes associated with them; since the&#xA;&lt;code>Element&lt;/code> interface inherits from &lt;code>Node&lt;/code>, the&#xA;generic &lt;code>Node&lt;/code> interface attribute &lt;code>attributes&lt;/code> may&#xA;be used to retrieve the set of all attributes for an element. There are&#xA;methods on the &lt;code>Element&lt;/code> interface to retrieve either an&#xA;&lt;code>Attr&lt;/code> object by name or an attribute value by name. In XML,&#xA;where an attribute value may contain entity references, an&#xA;&lt;code>Attr&lt;/code> object should be retrieved to examine the possibly&#xA;fairly complex sub-tree representing the attribute value. On the other&#xA;hand, in HTML, where all attributes have simple string values, methods to&#xA;directly access an attribute value can safely be used as a convenience.&#xA;&lt;p >&lt;b>Note:&lt;/b> In DOM Level 2, the method &lt;code>normalize&lt;/code> is&#xA;inherited from the &lt;code>Node&lt;/code> interface where it was moved.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;" annotatedElement="b16a24ef-01f8-4756-91f9-e573301bed83"/>
              <generalization xmi:id="45018849-1d32-4ffb-9225-ea6f3b6a2067" isSubstitutable="true" general="8f861683-f21c-4d48-a80d-6f06066ae865"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="73ae04ea-e7ac-472f-8ae8-b0eb6f698681" name="events">
              <packagedElement xmi:type="uml:Class" xmi:id="65d4267c-b4f5-445d-bcdb-e56c7039b0e5" name="EventException">
                <ownedComment xmi:id="332b09eb-d6ce-4287-962d-1f0710c9a07c" body="Event operations may throw an &lt;code>EventException&lt;/code> as specified in&#xA;their method descriptions.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113'>Document Object Model (DOM) Level 2 Events Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="65d4267c-b4f5-445d-bcdb-e56c7039b0e5"/>
                <generalization xmi:id="4b21e344-3835-486b-b772-3202232379ab" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="a9d3ac52-04b1-4465-afb8-b78e21081301" name="DocumentEvent" isAbstract="true">
                <ownedComment xmi:id="2364d4b5-3aed-4361-a507-ec40114058d3" body="The &lt;code>DocumentEvent&lt;/code> interface provides a mechanism by which the&#xA;user can create an Event of a type supported by the implementation. It is&#xA;expected that the &lt;code>DocumentEvent&lt;/code> interface will be&#xA;implemented on the same object which implements the &lt;code>Document&lt;/code>&#xA;interface in an implementation which supports the Event model.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113'>Document Object Model (DOM) Level 2 Events Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="a9d3ac52-04b1-4465-afb8-b78e21081301"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="a2142342-3e64-4ef1-8754-dd148065ecc0" name="MouseEvent" isAbstract="true">
                <ownedComment xmi:id="d51ebc60-c41d-4b0d-ae93-f64f501f810f" body="The &lt;code>MouseEvent&lt;/code> interface provides specific contextual&#xA;information associated with Mouse events.&#xA;&lt;p>The &lt;code>detail&lt;/code> attribute inherited from &lt;code>UIEvent&lt;/code>&#xA;indicates the number of times a mouse button has been pressed and&#xA;released over the same screen location during a user action. The&#xA;attribute value is 1 when the user begins this action and increments by 1&#xA;for each full sequence of pressing and releasing. If the user moves the&#xA;mouse between the mousedown and mouseup the value will be set to 0,&#xA;indicating that no click is occurring.&#xA;&lt;p>In the case of nested elements mouse events are always targeted at the&#xA;most deeply nested element. Ancestors of the targeted element may use&#xA;bubbling to obtain notification of mouse events which occur within its&#xA;descendent elements.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113'>Document Object Model (DOM) Level 2 Events Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="a2142342-3e64-4ef1-8754-dd148065ecc0"/>
                <generalization xmi:id="9ff4b12c-3b98-4dd9-a48d-1daffc9e2973" isSubstitutable="true" general="180b96f6-79af-45c5-bc5f-f79fd11f5ab7"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="25c5a1c4-b288-4c70-97c2-e69d137eb2aa" name="Event" isAbstract="true">
                <ownedComment xmi:id="cbab2e34-8519-43d5-809b-8f1cc7a6fbef" body="The &lt;code>Event&lt;/code> interface is used to provide contextual information&#xA;about an event to the handler processing the event. An object which&#xA;implements the &lt;code>Event&lt;/code> interface is generally passed as the&#xA;first parameter to an event handler. More specific context information is&#xA;passed to event handlers by deriving additional interfaces from&#xA;&lt;code>Event&lt;/code> which contain information directly relating to the&#xA;type of event they accompany. These derived interfaces are also&#xA;implemented by the object passed to the event listener.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113'>Document Object Model (DOM) Level 2 Events Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="25c5a1c4-b288-4c70-97c2-e69d137eb2aa"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="f28ef84b-1bd1-4c58-a415-2c4594abe010" name="EventTarget" isAbstract="true">
                <ownedComment xmi:id="4a8152dc-8fe9-4b80-b20c-e4f97dce7747" body="The &lt;code>EventTarget&lt;/code> interface is implemented by all&#xA;&lt;code>Nodes&lt;/code> in an implementation which supports the DOM Event&#xA;Model. Therefore, this interface can be obtained by using&#xA;binding-specific casting methods on an instance of the &lt;code>Node&lt;/code>&#xA;interface. The interface allows registration and removal of&#xA;&lt;code>EventListeners&lt;/code> on an &lt;code>EventTarget&lt;/code> and dispatch&#xA;of events to that &lt;code>EventTarget&lt;/code>.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113'>Document Object Model (DOM) Level 2 Events Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="f28ef84b-1bd1-4c58-a415-2c4594abe010"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="23f3b835-f300-476c-81cd-0783f108c0ac" name="MutationEvent" isAbstract="true">
                <ownedComment xmi:id="66598b5d-167f-48cf-b8fa-a135364cff6c" body="The &lt;code>MutationEvent&lt;/code> interface provides specific contextual&#xA;information associated with Mutation events.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113'>Document Object Model (DOM) Level 2 Events Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="23f3b835-f300-476c-81cd-0783f108c0ac"/>
                <generalization xmi:id="18e37997-8597-4389-a113-ce5e61c18cfa" isSubstitutable="true" general="25c5a1c4-b288-4c70-97c2-e69d137eb2aa"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="180b96f6-79af-45c5-bc5f-f79fd11f5ab7" name="UIEvent" isAbstract="true">
                <ownedComment xmi:id="e57ad199-0e58-408d-b51a-5c5ed58bfbb6" body="The &lt;code>UIEvent&lt;/code> interface provides specific contextual information&#xA;associated with User Interface events.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113'>Document Object Model (DOM) Level 2 Events Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="180b96f6-79af-45c5-bc5f-f79fd11f5ab7"/>
                <generalization xmi:id="6d1b14d4-fe63-4b50-8c0d-7bef31c42d39" isSubstitutable="true" general="25c5a1c4-b288-4c70-97c2-e69d137eb2aa"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="f71f3608-6de1-4e05-8643-5cf8101b8087" name="EventListener" isAbstract="true">
                <ownedComment xmi:id="96e3e829-f735-43fe-949b-6e1120d3da18" body="The &lt;code>EventListener&lt;/code> interface is the primary method for&#xA;handling events. Users implement the &lt;code>EventListener&lt;/code> interface&#xA;and register their listener on an &lt;code>EventTarget&lt;/code> using the&#xA;&lt;code>AddEventListener&lt;/code> method. The users should also remove their&#xA;&lt;code>EventListener&lt;/code> from its &lt;code>EventTarget&lt;/code> after they&#xA;have completed using the listener.&#xA;&lt;p> When a &lt;code>Node&lt;/code> is copied using the &lt;code>cloneNode&lt;/code>&#xA;method the &lt;code>EventListener&lt;/code>s attached to the source&#xA;&lt;code>Node&lt;/code> are not attached to the copied &lt;code>Node&lt;/code>. If&#xA;the user wishes the same &lt;code>EventListener&lt;/code>s to be added to the&#xA;newly created copy the user must add them manually.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113'>Document Object Model (DOM) Level 2 Events Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="f71f3608-6de1-4e05-8643-5cf8101b8087"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="72bd7a33-1742-4337-af3d-7d82193c892d" name="views">
              <packagedElement xmi:type="uml:Interface" xmi:id="da30221f-bf46-4948-9b06-df9acfb34584" name="AbstractView" isAbstract="true">
                <ownedComment xmi:id="d69252dc-f9bb-4f66-b57d-318020d2e8aa" body="A base interface that all views shall derive from.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Views-20001113'>Document Object Model (DOM) Level 2 Views Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="da30221f-bf46-4948-9b06-df9acfb34584"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="d15f2121-f6fa-44ae-b108-45bf1dad242a" name="DocumentView" isAbstract="true">
                <ownedComment xmi:id="6a905d42-b54b-4e7b-9c9a-feef09de59ff" body="The &lt;code>DocumentView&lt;/code> interface is implemented by&#xA;&lt;code>Document&lt;/code> objects in DOM implementations supporting DOM&#xA;Views. It provides an attribute to retrieve the default view of a&#xA;document.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Views-20001113'>Document Object Model (DOM) Level 2 Views Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="d15f2121-f6fa-44ae-b108-45bf1dad242a"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="a15da8ce-8505-4bc9-9b85-ad1b7537cecb" name="Text" isAbstract="true">
              <ownedComment xmi:id="1e18224e-ad06-4ee5-ae91-477039135a8d" body="The &lt;code>Text&lt;/code> interface inherits from &lt;code>CharacterData&lt;/code>&#xA;and represents the textual content (termed &lt;a href='http://www.w3.org/TR/2004/REC-xml-20040204#syntax'>character data&lt;/a> in XML) of an &lt;code>Element&lt;/code> or &lt;code>Attr&lt;/code>. If there is no&#xA;markup inside an element's content, the text is contained in a single&#xA;object implementing the &lt;code>Text&lt;/code> interface that is the only&#xA;child of the element. If there is markup, it is parsed into the&#xA;information items (elements, comments, etc.) and &lt;code>Text&lt;/code> nodes&#xA;that form the list of children of the element.&#xA;&lt;p>When a document is first made available via the DOM, there is only one&#xA;&lt;code>Text&lt;/code> node for each block of text. Users may create adjacent&#xA;&lt;code>Text&lt;/code> nodes that represent the contents of a given element&#xA;without any intervening markup, but should be aware that there is no way&#xA;to represent the separations between these nodes in XML or HTML, so they&#xA;will not (in general) persist between DOM editing sessions. The&#xA;&lt;code>Node.normalize()&lt;/code> method merges any such adjacent&#xA;&lt;code>Text&lt;/code> objects into a single node for each block of text.&#xA;&lt;p> No lexical check is done on the content of a &lt;code>Text&lt;/code> node&#xA;and, depending on its position in the document, some characters must be&#xA;escaped during serialization using character references; e.g. the&#xA;characters &quot;&lt;&amp;&quot; if the textual content is part of an element or of&#xA;an attribute, the character sequence &quot;]]>&quot; when part of an element,&#xA;the quotation mark character &quot; or the apostrophe character ' when part of&#xA;an attribute.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;" annotatedElement="a15da8ce-8505-4bc9-9b85-ad1b7537cecb"/>
              <generalization xmi:id="602e23c1-8a1f-428e-87fb-072638f1d835" isSubstitutable="true" general="df2e70f3-c570-4f5e-ba32-4f2784910b54"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="eed05c82-47f2-4645-b688-3e0f8d3a3ae5" name="DocumentType" isAbstract="true">
              <ownedComment xmi:id="455d4c9c-5e65-44de-a9ca-5f6c6886498c" body="Each &lt;code>Document&lt;/code> has a &lt;code>doctype&lt;/code> attribute whose value&#xA;is either &lt;code>null&lt;/code> or a &lt;code>DocumentType&lt;/code> object. The&#xA;&lt;code>DocumentType&lt;/code> interface in the DOM Core provides an interface&#xA;to the list of entities that are defined for the document, and little&#xA;else because the effect of namespaces and the various XML schema efforts&#xA;on DTD representation are not clearly understood as of this writing.&#xA;&lt;p>DOM Level 3 doesn't support editing &lt;code>DocumentType&lt;/code> nodes.&#xA;&lt;code>DocumentType&lt;/code> nodes are read-only.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;" annotatedElement="eed05c82-47f2-4645-b688-3e0f8d3a3ae5"/>
              <generalization xmi:id="56fad6a7-eead-4fdf-935f-36d521bf9826" isSubstitutable="true" general="8f861683-f21c-4d48-a80d-6f06066ae865"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="15aa5a3a-045b-42cd-ab83-ca0e6ac791b8" name="EntityReference" isAbstract="true">
              <ownedComment xmi:id="6d78894c-b215-4b31-8ed4-d52e449761f5" body="&lt;code>EntityReference&lt;/code> nodes may be used to represent an entity&#xA;reference in the tree. Note that character references and references to&#xA;predefined entities are considered to be expanded by the HTML or XML&#xA;processor so that characters are represented by their Unicode equivalent&#xA;rather than by an entity reference. Moreover, the XML processor may&#xA;completely expand references to entities while building the&#xA;&lt;code>Document&lt;/code>, instead of providing &lt;code>EntityReference&lt;/code>&#xA;nodes. If it does provide such nodes, then for an&#xA;&lt;code>EntityReference&lt;/code> node that represents a reference to a known&#xA;entity an &lt;code>Entity&lt;/code> exists, and the subtree of the&#xA;&lt;code>EntityReference&lt;/code> node is a copy of the &lt;code>Entity&lt;/code>&#xA;node subtree. However, the latter may not be true when an entity contains&#xA;an unbound namespace prefix. In such a case, because the namespace prefix&#xA;resolution depends on where the entity reference is, the descendants of&#xA;the &lt;code>EntityReference&lt;/code> node may be bound to different namespace&#xA;URIs. When an &lt;code>EntityReference&lt;/code> node represents a reference to&#xA;an unknown entity, the node has no children and its replacement value,&#xA;when used by &lt;code>Attr.value&lt;/code> for example, is empty.&#xA;&lt;p>As for &lt;code>Entity&lt;/code> nodes, &lt;code>EntityReference&lt;/code> nodes and&#xA;all their descendants are readonly.&#xA;&lt;p >&lt;b>Note:&lt;/b> &lt;code>EntityReference&lt;/code> nodes may cause element&#xA;content and attribute value normalization problems when, such as in XML&#xA;1.0 and XML Schema, the normalization is performed after entity reference&#xA;are expanded.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;" annotatedElement="15aa5a3a-045b-42cd-ab83-ca0e6ac791b8"/>
              <generalization xmi:id="18286703-e714-49e7-8e03-c1d870c83bca" isSubstitutable="true" general="8f861683-f21c-4d48-a80d-6f06066ae865"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="baaf77a5-552e-47f8-894a-d49cfae512f3" name="html">
              <packagedElement xmi:type="uml:Interface" xmi:id="c52eb253-598e-425e-8302-046faf6d0f45" name="HTMLMenuElement" isAbstract="true">
                <ownedComment xmi:id="800726ea-dbf2-4674-9450-1902e247a648" body="Menu list. See the  MENU element definition in HTML 4.0. This element is&#xA;deprecated in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="c52eb253-598e-425e-8302-046faf6d0f45"/>
                <generalization xmi:id="4092b2ea-6ceb-412c-ab6d-666bb5778b90" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="8c121db5-8666-4a4a-a530-88fcd137573c" name="HTMLParamElement" isAbstract="true">
                <ownedComment xmi:id="8d16a986-b332-4736-9f81-95bb8f68233c" body="Parameters fed to the &lt;code>OBJECT&lt;/code> element. See the  PARAM element&#xA;definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="8c121db5-8666-4a4a-a530-88fcd137573c"/>
                <generalization xmi:id="7cf5e2ba-ede1-4df1-a647-a5cb58d150e2" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="1a79eae8-2d5d-4790-a619-8bd6f738173e" name="HTMLBRElement" isAbstract="true">
                <ownedComment xmi:id="88c2cab0-d8e8-4e93-8bd2-2b56859563ba" body="Force a line break. See the  BR element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="1a79eae8-2d5d-4790-a619-8bd6f738173e"/>
                <generalization xmi:id="390af7a6-bf5b-4873-9dee-6c7f65319198" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="a01350e1-b7df-41c1-8ee3-02035a113212" name="HTMLAnchorElement" isAbstract="true">
                <ownedComment xmi:id="e54c5def-90c5-476e-a957-3128b157c3af" body="The anchor element. See the  A element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="a01350e1-b7df-41c1-8ee3-02035a113212"/>
                <generalization xmi:id="0bd24ee8-4461-4fcb-8211-e5dad93f2a65" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="ec56a466-7d39-44c2-8ebc-8c91a5bb201f" name="HTMLDirectoryElement" isAbstract="true">
                <ownedComment xmi:id="77a5a69a-dbdf-4c7e-8403-da5030d681e9" body="Directory list. See the  DIR element definition in HTML 4.0. This element&#xA;is deprecated in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="ec56a466-7d39-44c2-8ebc-8c91a5bb201f"/>
                <generalization xmi:id="d303e0f4-de8f-49bd-90d9-394d3194f1f6" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="0397a0e7-c9ff-4134-a0ec-9533c7866ce9" name="HTMLDOMImplementation" isAbstract="true">
                <ownedComment xmi:id="84200d71-75d1-431f-8b25-993f59fe97d4" body="The &lt;code>HTMLDOMImplementation&lt;/code> interface extends the&#xA;&lt;code>DOMImplementation&lt;/code> interface with a method for creating an&#xA;HTML document instance.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="0397a0e7-c9ff-4134-a0ec-9533c7866ce9"/>
                <generalization xmi:id="e1057898-0502-46a9-b0c4-01856522b714" isSubstitutable="true" general="a44b8f3d-90bf-445f-bd5f-987639f913fb"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="fc89fca0-0f53-4748-b95e-7ea7529067c2" name="HTMLLabelElement" isAbstract="true">
                <ownedComment xmi:id="8ff8bf7a-f337-41a4-b4c6-172b27c2cd1f" body="Form field label text. See the  LABEL element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="fc89fca0-0f53-4748-b95e-7ea7529067c2"/>
                <generalization xmi:id="b3dd1aeb-0608-46dd-a533-9c3ba16e05a8" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="b9fefffa-fe9d-46c8-bf3b-30d3b4a268e5" name="HTMLCollection" isAbstract="true">
                <ownedComment xmi:id="2d70312c-0b03-4314-a433-553991549548" body="An &lt;code>HTMLCollection&lt;/code> is a list of nodes. An individual node may&#xA;be accessed by either ordinal index or the node's&lt;code>name&lt;/code> or&#xA;&lt;code>id&lt;/code> attributes.  Note: Collections in the HTML DOM are assumed&#xA;to be  live meaning that they are automatically updated when the&#xA;underlying document is changed.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="b9fefffa-fe9d-46c8-bf3b-30d3b4a268e5"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="33fe39ee-2c12-420b-b0a8-d73266410085" name="HTMLOListElement" isAbstract="true">
                <ownedComment xmi:id="3791181c-d263-496d-817b-36f3c636daa1" body="Ordered list. See the  OL element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="33fe39ee-2c12-420b-b0a8-d73266410085"/>
                <generalization xmi:id="28efbe1c-2f9d-4fc7-85c2-0faa0cf53125" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="968071ac-39ab-4d81-82a2-5f74e6fc3475" name="HTMLElement" isAbstract="true">
                <ownedComment xmi:id="fd2e1aae-491f-4bc0-83b9-52f5296616a1" body="All HTML element interfaces derive from this class. Elements that only&#xA;expose the HTML core attributes are represented by the base&#xA;&lt;code>HTMLElement&lt;/code> interface. These elements are as follows:  HEAD&#xA;special: SUB, SUP, SPAN, BDO font: TT, I, B, U, S, STRIKE, BIG, SMALL&#xA;phrase: EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ACRONYM, ABBR list:&#xA;DD, DT NOFRAMES, NOSCRIPT ADDRESS, CENTER The &lt;code>style&lt;/code> attribute&#xA;of an HTML element is accessible through the&#xA;&lt;code>ElementCSSInlineStyle&lt;/code> interface which is defined in the  .&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
                <generalization xmi:id="eb566e05-52b5-4bb5-a2e9-f8bee5e7aae9" isSubstitutable="true" general="b16a24ef-01f8-4756-91f9-e573301bed83"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="5ccb2f1b-f6f5-40a7-bf61-16ff00c7ff79" name="HTMLBaseFontElement" isAbstract="true">
                <ownedComment xmi:id="9689603f-37b1-4f7d-bb60-03bd0dea52bd" body="Base font. See the  BASEFONT element definition in HTML 4.0. This element&#xA;is deprecated in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="5ccb2f1b-f6f5-40a7-bf61-16ff00c7ff79"/>
                <generalization xmi:id="812a47a2-e6e8-45fb-9c49-a0fec3d09856" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="7b3da066-f669-42b4-967f-c19dc996ecef" name="HTMLBaseElement" isAbstract="true">
                <ownedComment xmi:id="62e93621-0611-450e-84b2-2698ceaadce6" body="Document base URI. See the  BASE element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="7b3da066-f669-42b4-967f-c19dc996ecef"/>
                <generalization xmi:id="a8e696dd-f435-43ce-a35c-0b665ba26e4a" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="84550584-f86c-4a2f-bc19-d7b1428f1355" name="HTMLQuoteElement" isAbstract="true">
                <ownedComment xmi:id="47125806-588e-4697-85c5-49cbf864f7a3" body="For the &lt;code>Q&lt;/code> and &lt;code>BLOCKQUOTE&lt;/code> elements. See the  Q&#xA;element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="84550584-f86c-4a2f-bc19-d7b1428f1355"/>
                <generalization xmi:id="82122d9b-086e-4169-b7d0-e4abd3fbcdb4" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="cfb6d8e3-122e-44d4-a922-2e51020a96dd" name="HTMLTableElement" isAbstract="true">
                <ownedComment xmi:id="fd8204dc-bfae-45c0-b65b-d10ac72d8904" body="The create* and delete* methods on the table allow authors to construct&#xA;and modify tables. HTML 4.0 specifies that only one of each of the&#xA;&lt;code>CAPTION&lt;/code> , &lt;code>THEAD&lt;/code> , and &lt;code>TFOOT&lt;/code>&#xA;elements may exist in a table. Therefore, if one exists, and the&#xA;createTHead() or createTFoot() method is called, the method returns the&#xA;existing THead or TFoot element. See the  TABLE element definition in HTML&#xA;4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="cfb6d8e3-122e-44d4-a922-2e51020a96dd"/>
                <generalization xmi:id="d62aa5ae-0a3c-48eb-89b5-ec29f009e433" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="336a34f5-5865-4778-b6aa-c6d18b6b19e3" name="HTMLTextAreaElement" isAbstract="true">
                <ownedComment xmi:id="727af426-03e0-4f2f-8f21-41b176d90f5f" body="Multi-line text field. See the  TEXTAREA element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="336a34f5-5865-4778-b6aa-c6d18b6b19e3"/>
                <generalization xmi:id="a14b20ee-84cb-4371-a5b5-4698d0743823" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="0ab021d6-1671-4a53-8a97-952eaa9ccac2" name="HTMLTableColElement" isAbstract="true">
                <ownedComment xmi:id="12021e71-c6b9-4823-b73e-0d76c7c68eef" body="Regroups the &lt;code>COL&lt;/code> and &lt;code>COLGROUP&lt;/code> elements. See the&#xA;COL element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="0ab021d6-1671-4a53-8a97-952eaa9ccac2"/>
                <generalization xmi:id="d3d32d64-4c9c-454a-88fd-3bf07601b876" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="e7ff85fe-acd6-450f-8ca8-02d1d5715af1" name="HTMLObjectElement" isAbstract="true">
                <ownedComment xmi:id="80ddad66-409c-411b-83cf-98293fc2133c" body="Generic embedded object.  Note. In principle, all properties on the object&#xA;element are read-write but in some environments some properties may be&#xA;read-only once the underlying object is instantiated. See the  OBJECT&#xA;element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="e7ff85fe-acd6-450f-8ca8-02d1d5715af1"/>
                <generalization xmi:id="87c1a97d-7e05-49c9-a67e-ff6140f7d8ce" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="0de7b4c6-b896-4d81-af4f-181eeb997a41" name="HTMLTableSectionElement" isAbstract="true">
                <ownedComment xmi:id="45e4363b-916d-44e0-97ef-258fcf5b74cb" body="The &lt;code>THEAD&lt;/code> , &lt;code>TFOOT&lt;/code> , and &lt;code>TBODY&lt;/code>&#xA;elements.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="0de7b4c6-b896-4d81-af4f-181eeb997a41"/>
                <generalization xmi:id="352b14d5-98bf-4fb5-b82c-6d8531696db6" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="3cefeb6e-2681-4387-8c7a-2c58bb0bacfe" name="HTMLFontElement" isAbstract="true">
                <ownedComment xmi:id="719d6b3a-6a6e-4857-93f2-b83252aa0aae" body="Local change to font. See the  FONT element definition in HTML 4.0. This&#xA;element is deprecated in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="3cefeb6e-2681-4387-8c7a-2c58bb0bacfe"/>
                <generalization xmi:id="e3cfe90f-a517-466c-9812-d06a64460806" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="5c7556d0-e856-447b-afe2-fd333bf7dbde" name="HTMLAppletElement" isAbstract="true">
                <ownedComment xmi:id="df2195d1-f52c-47c9-a957-7d2e4fff5391" body="An embedded Java applet. See the  APPLET element definition in HTML 4.0.&#xA;This element is deprecated in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="5c7556d0-e856-447b-afe2-fd333bf7dbde"/>
                <generalization xmi:id="d03df6f0-57ec-4039-a6d8-8c9465086fb7" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="cb34d0e6-4fff-4431-9586-097b20987e77" name="HTMLLegendElement" isAbstract="true">
                <ownedComment xmi:id="e053b9be-8fc4-4496-83a9-70d450c02af0" body="Provides a caption for a &lt;code>FIELDSET&lt;/code> grouping.  See the  LEGEND&#xA;element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="cb34d0e6-4fff-4431-9586-097b20987e77"/>
                <generalization xmi:id="363e2f56-15cc-4ed4-8d2e-b9722a644786" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="be68400c-182a-471a-93b9-420b8ed92330" name="HTMLLinkElement" isAbstract="true">
                <ownedComment xmi:id="1d55d851-6dcd-41f1-8657-c1738b3cf5d0" body="The &lt;code>LINK&lt;/code> element specifies a link to an external resource,&#xA;and defines this document's relationship to that resource (or vice versa).&#xA;See the  LINK element definition in HTML 4.0  (see also the&#xA;&lt;code>LinkStyle&lt;/code> interface in the  module).&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="be68400c-182a-471a-93b9-420b8ed92330"/>
                <generalization xmi:id="aa6453c7-30ad-4b74-8c94-7fd11663f7c0" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="01ee96f4-8473-47a7-85ed-5b720700565d" name="HTMLOptGroupElement" isAbstract="true">
                <ownedComment xmi:id="29c071d3-f3af-4299-9168-afcf02019da8" body="Group options together in logical subdivisions. See the  OPTGROUP element&#xA;definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="01ee96f4-8473-47a7-85ed-5b720700565d"/>
                <generalization xmi:id="711b947f-6c23-4697-b9db-43e0b1bbb7de" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="66cd071c-b967-420a-bb89-ac3122fc1148" name="HTMLDivElement" isAbstract="true">
                <ownedComment xmi:id="2b45c311-b756-4549-bca9-83530394a8e8" body="Generic block container. See the  DIV element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="66cd071c-b967-420a-bb89-ac3122fc1148"/>
                <generalization xmi:id="ac5e826b-228b-47aa-b841-23b2d9591dc5" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="da78094f-9add-4d27-add6-b0e7448a5570" name="HTMLHtmlElement" isAbstract="true">
                <ownedComment xmi:id="349cc165-30d0-44a8-8cd5-f45228715c90" body="Root of an HTML document. See the  HTML element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="da78094f-9add-4d27-add6-b0e7448a5570"/>
                <generalization xmi:id="0d699505-40c6-461f-8435-5df3ccfc170e" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="df058bec-c807-4fb5-b958-837090207717" name="HTMLTitleElement" isAbstract="true">
                <ownedComment xmi:id="a7146b15-5f00-4cb0-a563-c65ac3197501" body="The document title. See the  TITLE element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="df058bec-c807-4fb5-b958-837090207717"/>
                <generalization xmi:id="52e32828-d7ab-4d1f-9541-4aefb785ebcc" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="568dd222-7bc4-44db-aabb-c7a2c5c16002" name="HTMLAreaElement" isAbstract="true">
                <ownedComment xmi:id="e98e4bd3-18cd-4ffd-9619-267b9a517b64" body="Client-side image map area definition. See the  AREA element definition in&#xA;HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="568dd222-7bc4-44db-aabb-c7a2c5c16002"/>
                <generalization xmi:id="c916b4ae-5823-4bb2-8772-932e5d2d90ab" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="6d8cd385-cac7-4fa7-92cc-07b872f3e42a" name="HTMLSelectElement" isAbstract="true">
                <ownedComment xmi:id="cc8b8751-0ea4-4dd7-a54f-b35e12d5d165" body="The select element allows the selection of an option. The contained&#xA;options can be directly accessed through the select element as a&#xA;collection. See the  SELECT element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="6d8cd385-cac7-4fa7-92cc-07b872f3e42a"/>
                <generalization xmi:id="8e532e29-15eb-4e0d-9d95-f33eb83806be" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="5b7c07b2-5608-4e98-8288-94fc53094d1c" name="HTMLTableCellElement" isAbstract="true">
                <ownedComment xmi:id="72f2b610-07af-4728-9161-f607c8f408cc" body="The object used to represent the &lt;code>TH&lt;/code> and &lt;code>TD&lt;/code>&#xA;elements. See the  TD element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="5b7c07b2-5608-4e98-8288-94fc53094d1c"/>
                <generalization xmi:id="68078eea-c17f-4fdf-bd99-45c2bfea3af6" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="9495c3af-dc7f-4f1d-b1b2-bdafa01b5579" name="HTMLFrameElement" isAbstract="true">
                <ownedComment xmi:id="21603e2c-65e3-43e1-9d1c-40b6ead984ea" body="Create a frame. See the  FRAME element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="9495c3af-dc7f-4f1d-b1b2-bdafa01b5579"/>
                <generalization xmi:id="2d51d508-1243-4d43-b0b3-9025f6fd6189" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="d474e174-4cbb-4732-a056-76aea14beffb" name="HTMLOptionElement" isAbstract="true">
                <ownedComment xmi:id="9cc54ee3-7916-4c4b-b24d-bd0f213badda" body="A selectable choice. See the  OPTION element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="d474e174-4cbb-4732-a056-76aea14beffb"/>
                <generalization xmi:id="2d7efbc5-6620-4c13-af0d-2aa9ae195e84" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="bfae6cd0-4aa6-4bcc-933b-a6eec72e6173" name="HTMLFrameSetElement" isAbstract="true">
                <ownedComment xmi:id="a9b14472-5321-42f1-9a1d-acb5be41778b" body="Create a grid of frames. See the  FRAMESET element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="bfae6cd0-4aa6-4bcc-933b-a6eec72e6173"/>
                <generalization xmi:id="625b3c48-5fbb-47ec-8f7a-a3b83711ff5b" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="8184bfaf-c7b8-42d1-af0f-a13e7e95a7f5" name="HTMLImageElement" isAbstract="true">
                <ownedComment xmi:id="81c6bb38-a3a6-4c7b-b34f-3848fe9171b1" body="Embedded image. See the  IMG element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="8184bfaf-c7b8-42d1-af0f-a13e7e95a7f5"/>
                <generalization xmi:id="73fc97b0-99c0-4b16-b8e5-2465474e6a66" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="0ad79d5f-493f-473d-9001-c4181ccbf286" name="HTMLScriptElement" isAbstract="true">
                <ownedComment xmi:id="a698004e-e9e4-43bf-b81a-7fc67e999f29" body="Script statements. See the  SCRIPT element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="0ad79d5f-493f-473d-9001-c4181ccbf286"/>
                <generalization xmi:id="bcc2a6ab-89c9-464f-8790-20e5c70a0140" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="8a2ab77b-83e0-47ff-ba69-2aa24d7d2bd8" name="HTMLModElement" isAbstract="true">
                <ownedComment xmi:id="6a362078-7588-484a-a57a-2577f00859d1" body="Notice of modification to part of a document. See the   INS  and  DEL&#xA;element definitions in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="8a2ab77b-83e0-47ff-ba69-2aa24d7d2bd8"/>
                <generalization xmi:id="bc0fc201-88a4-43b5-8ed8-b737844fc1ed" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="67da607e-e484-4fa7-9616-64e76cbdebd0" name="HTMLMapElement" isAbstract="true">
                <ownedComment xmi:id="3bcd86e7-6a2b-403c-8316-f6bd1edcdcef" body="Client-side image map. See the  MAP element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="67da607e-e484-4fa7-9616-64e76cbdebd0"/>
                <generalization xmi:id="bdb4dc77-fbec-4b0b-b5a7-841b9cfd485b" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="63cedd8c-6349-4278-bc10-f42ab8fa908d" name="HTMLHeadElement" isAbstract="true">
                <ownedComment xmi:id="6bd17f47-b4b0-492a-9ea9-6dacfe541056" body="Document head information. See the  HEAD element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="63cedd8c-6349-4278-bc10-f42ab8fa908d"/>
                <generalization xmi:id="8f1544c0-d587-477f-820a-8859069bedfe" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="8de4436b-1948-40a7-a30b-bf0c3f091391" name="HTMLDocument" isAbstract="true">
                <ownedComment xmi:id="5d6dd3fa-3144-42d7-b23d-d51a5478e9e5" body="An &lt;code>HTMLDocument&lt;/code> is the root of the HTML hierarchy and holds&#xA;the entire content. Besides providing access to the hierarchy, it also&#xA;provides some convenience methods for accessing certain sets of&#xA;information from the document.&#xA;&lt;p> The following properties have been deprecated in favor of the&#xA;corresponding ones for the &lt;code>BODY&lt;/code> element: alinkColor background&#xA;bgColor fgColor linkColor vlinkColor In DOM Level 2, the method&#xA;&lt;code>getElementById&lt;/code> is inherited from the &lt;code>Document&lt;/code>&#xA;interface where it was moved.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="8de4436b-1948-40a7-a30b-bf0c3f091391"/>
                <generalization xmi:id="5b9ced8e-4a4b-47dc-8894-64d57f472194" isSubstitutable="true" general="59cb8de2-1b94-416e-8d68-d1ba6f3b7bdd"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="d8313a60-8682-441c-8f20-a5dfa94a71ed" name="HTMLInputElement" isAbstract="true">
                <ownedComment xmi:id="b36073b8-62c7-4040-9771-8d3d696d7631" body="Form control.  Note. Depending upon the environment in which the page is&#xA;being viewed, the value property may be read-only for the file upload&#xA;input type. For the &quot;password&quot; input type, the actual value returned may&#xA;be masked to prevent unauthorized use. See the  INPUT element definition&#xA;in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="d8313a60-8682-441c-8f20-a5dfa94a71ed"/>
                <generalization xmi:id="389af747-e353-4906-a20e-9d4bcb958f3e" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="defa4559-cf3b-43c5-9682-8a9d02bc1620" name="HTMLMetaElement" isAbstract="true">
                <ownedComment xmi:id="d2f09989-9d65-4fc8-9c87-51d1054e57ac" body="This contains generic meta-information about the document. See the  META&#xA;element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="defa4559-cf3b-43c5-9682-8a9d02bc1620"/>
                <generalization xmi:id="27c2922b-77b2-47c6-a0e3-375369cf99b9" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="6410ad3b-23e8-4fb9-b168-713b587c9b80" name="HTMLTableCaptionElement" isAbstract="true">
                <ownedComment xmi:id="1c97eba4-f1a7-4129-9840-7bb6104c50b3" body="Table caption See the  CAPTION element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="6410ad3b-23e8-4fb9-b168-713b587c9b80"/>
                <generalization xmi:id="1426126e-d4eb-4f5f-af0f-306fe898e71b" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="5de85534-719c-4965-952e-8e3d9dee1538" name="HTMLPreElement" isAbstract="true">
                <ownedComment xmi:id="3e3363fd-b150-4659-8306-6fbc666672b1" body="Preformatted text. See the  PRE element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="5de85534-719c-4965-952e-8e3d9dee1538"/>
                <generalization xmi:id="6f0eff18-7a6d-43a0-bcd3-e804fcf8b4de" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="5a8e8fc8-6479-4603-9ae3-a314899db73c" name="HTMLIFrameElement" isAbstract="true">
                <ownedComment xmi:id="890865d8-428e-41b0-b569-4d225d705b00" body="Inline subwindows. See the  IFRAME element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="5a8e8fc8-6479-4603-9ae3-a314899db73c"/>
                <generalization xmi:id="40052d78-cdca-4004-a1c6-feb4b7781a0d" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="ed3e1666-ef09-4b07-8ec2-8af4c6b5bb59" name="HTMLTableRowElement" isAbstract="true">
                <ownedComment xmi:id="94f08ec5-3cda-479f-b2ff-b64c23b41289" body="A row in a table. See the  TR element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="ed3e1666-ef09-4b07-8ec2-8af4c6b5bb59"/>
                <generalization xmi:id="6d0ec0ea-258f-4fa7-9fae-ce550ff61bf9" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="11dc4312-b91d-4129-9d91-cb088de699cd" name="HTMLHeadingElement" isAbstract="true">
                <ownedComment xmi:id="75ba9344-06e7-4708-814a-21c00f6f799c" body="For the &lt;code>H1&lt;/code> to &lt;code>H6&lt;/code> elements. See the  H1 element&#xA;definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="11dc4312-b91d-4129-9d91-cb088de699cd"/>
                <generalization xmi:id="ae03cd3a-be97-42a5-93a0-15b29eb2d7c3" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="09a45295-976a-4994-b791-663395530382" name="HTMLUListElement" isAbstract="true">
                <ownedComment xmi:id="c4a0c0e4-b727-4d87-b128-c55d91b43896" body="Unordered list. See the  UL element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="09a45295-976a-4994-b791-663395530382"/>
                <generalization xmi:id="57c39963-ac68-4c5e-8767-a376c90c4e0c" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="3500e518-daf2-4fc4-a7f4-981387083f05" name="HTMLHRElement" isAbstract="true">
                <ownedComment xmi:id="a0ab209d-46cb-4078-9af9-6c3ebe2452e4" body="Create a horizontal rule. See the  HR element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="3500e518-daf2-4fc4-a7f4-981387083f05"/>
                <generalization xmi:id="034b938d-c280-4efa-bef9-1d75aa4cb0f5" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="5c4d9942-9503-4e1c-ba60-eadeb37d675f" name="HTMLLIElement" isAbstract="true">
                <ownedComment xmi:id="78085d49-9382-42ac-81ea-5cd84a7ed914" body="List item. See the  LI element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="5c4d9942-9503-4e1c-ba60-eadeb37d675f"/>
                <generalization xmi:id="9ae9f3a0-f0fd-415a-9935-13c24fd57c05" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="b3285d03-30c0-4e28-93b7-f0b41aff26e4" name="HTMLStyleElement" isAbstract="true">
                <ownedComment xmi:id="b8b5c0d2-d2e1-4ec7-b762-c3ce80fe81c9" body="Style information. See the  STYLE element definition in HTML 4.0, the&#xA;module and the &lt;code>LinkStyle&lt;/code> interface in the  module.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="b3285d03-30c0-4e28-93b7-f0b41aff26e4"/>
                <generalization xmi:id="58935e11-ba21-4618-9b48-7d4dc260b7f6" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="314b3fa9-1832-4f90-a4da-8282d53b525a" name="HTMLButtonElement" isAbstract="true">
                <ownedComment xmi:id="caf3f599-f8ec-48aa-84c1-096c883def01" body="Push button. See the  BUTTON element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="314b3fa9-1832-4f90-a4da-8282d53b525a"/>
                <generalization xmi:id="9fac7503-7ee1-4dc1-9c53-9b9119a8efd7" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="9ed56dcb-5f51-4453-990d-829376c00d17" name="HTMLFieldSetElement" isAbstract="true">
                <ownedComment xmi:id="44b7634f-59f1-4a62-afc6-bf3318b2781a" body="Organizes form controls into logical groups. See the   FIELDSET  element&#xA;definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="9ed56dcb-5f51-4453-990d-829376c00d17"/>
                <generalization xmi:id="8e1014e5-eb52-46b8-8990-dd5c9d46a774" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="375e5b03-c732-426f-8a58-00a96b72c724" name="HTMLDListElement" isAbstract="true">
                <ownedComment xmi:id="886b3f08-30a3-4e53-b625-6e0e0db2467e" body="Definition list. See the  DL element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="375e5b03-c732-426f-8a58-00a96b72c724"/>
                <generalization xmi:id="26001db4-e259-4e20-a54b-4c985c434d3e" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="911074c0-be50-40c6-ab5d-2b8dc7b9bedc" name="HTMLBodyElement" isAbstract="true">
                <ownedComment xmi:id="f73c73f1-dafe-4418-a14a-fb246cb7c50e" body="The HTML document body. This element is always present in the DOM API,&#xA;even if the tags are not present in the source document. See the  BODY&#xA;element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="911074c0-be50-40c6-ab5d-2b8dc7b9bedc"/>
                <generalization xmi:id="f82afe01-63f8-411d-abea-f1dd45c8f693" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="9e2142f7-3d17-4195-be23-3bd4e56ca8ca" name="HTMLIsIndexElement" isAbstract="true">
                <ownedComment xmi:id="c5a25640-ccef-48e9-af61-56a5275f4d3e" body="This element is used for single-line text input. See the  ISINDEX element&#xA;definition in HTML 4.0. This element is deprecated in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="9e2142f7-3d17-4195-be23-3bd4e56ca8ca"/>
                <generalization xmi:id="e2f57fcf-c75f-4b90-bea7-97ff8f6483f6" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="69a4470a-7f98-4eb7-b5ed-447aa79cfc8f" name="HTMLFormElement" isAbstract="true">
                <ownedComment xmi:id="ad529766-52d1-4535-8d43-d0c3125c1fb4" body="The &lt;code>FORM&lt;/code> element encompasses behavior similar to a collection&#xA;and an element. It provides direct access to the contained input elements&#xA;as well as the attributes of the form element. See the  FORM element&#xA;definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="69a4470a-7f98-4eb7-b5ed-447aa79cfc8f"/>
                <generalization xmi:id="6a429f47-1fc1-40f7-9513-83a4dbed77c9" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="bfdf4bd6-adfa-419c-bd2b-88af3828bf0e" name="HTMLParagraphElement" isAbstract="true">
                <ownedComment xmi:id="cf4d9964-81f6-4046-9c6e-8a4a9481362e" body="Paragraphs. See the  P element definition in HTML 4.0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/CR-DOM-Level-2-20000510'>Document Object Model (DOM) Level 2 Specification&lt;/a>.&#xA;" annotatedElement="bfdf4bd6-adfa-419c-bd2b-88af3828bf0e"/>
                <generalization xmi:id="58074ae9-45d2-4bb2-81bb-11ac5e89c601" isSubstitutable="true" general="968071ac-39ab-4d81-82a2-5f74e6fc3475"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="af43cd7e-97ab-493f-b940-bdaded09b14d" name="Attr" isAbstract="true">
              <ownedComment xmi:id="6b3eef22-be12-4195-a42f-a9d38fb4666d" body="The &lt;code>Attr&lt;/code> interface represents an attribute in an&#xA;&lt;code>Element&lt;/code> object. Typically the allowable values for the&#xA;attribute are defined in a schema associated with the document.&#xA;&lt;p>&lt;code>Attr&lt;/code> objects inherit the &lt;code>Node&lt;/code> interface, but&#xA;since they are not actually child nodes of the element they describe, the&#xA;DOM does not consider them part of the document tree. Thus, the&#xA;&lt;code>Node&lt;/code> attributes &lt;code>parentNode&lt;/code>,&#xA;&lt;code>previousSibling&lt;/code>, and &lt;code>nextSibling&lt;/code> have a&#xA;&lt;code>null&lt;/code> value for &lt;code>Attr&lt;/code> objects. The DOM takes the&#xA;view that attributes are properties of elements rather than having a&#xA;separate identity from the elements they are associated with; this should&#xA;make it more efficient to implement such features as default attributes&#xA;associated with all elements of a given type. Furthermore,&#xA;&lt;code>Attr&lt;/code> nodes may not be immediate children of a&#xA;&lt;code>DocumentFragment&lt;/code>. However, they can be associated with&#xA;&lt;code>Element&lt;/code> nodes contained within a&#xA;&lt;code>DocumentFragment&lt;/code>. In short, users and implementors of the&#xA;DOM need to be aware that &lt;code>Attr&lt;/code> nodes have some things in&#xA;common with other objects inheriting the &lt;code>Node&lt;/code> interface, but&#xA;they also are quite distinct.&#xA;&lt;p>The attribute's effective value is determined as follows: if this&#xA;attribute has been explicitly assigned any value, that value is the&#xA;attribute's effective value; otherwise, if there is a declaration for&#xA;this attribute, and that declaration includes a default value, then that&#xA;default value is the attribute's effective value; otherwise, the&#xA;attribute does not exist on this element in the structure model until it&#xA;has been explicitly added. Note that the &lt;code>Node.nodeValue&lt;/code>&#xA;attribute on the &lt;code>Attr&lt;/code> instance can also be used to retrieve&#xA;the string version of the attribute's value(s).&#xA;&lt;p> If the attribute was not explicitly given a value in the instance&#xA;document but has a default value provided by the schema associated with&#xA;the document, an attribute node will be created with&#xA;&lt;code>specified&lt;/code> set to &lt;code>false&lt;/code>. Removing attribute&#xA;nodes for which a default value is defined in the schema generates a new&#xA;attribute node with the default value and &lt;code>specified&lt;/code> set to&#xA;&lt;code>false&lt;/code>. If validation occurred while invoking&#xA;&lt;code>Document.normalizeDocument()&lt;/code>, attribute nodes with&#xA;&lt;code>specified&lt;/code> equals to &lt;code>false&lt;/code> are recomputed&#xA;according to the default attribute values provided by the schema. If no&#xA;default value is associate with this attribute in the schema, the&#xA;attribute node is discarded.&#xA;&lt;p>In XML, where the value of an attribute can contain entity references,&#xA;the child nodes of the &lt;code>Attr&lt;/code> node may be either&#xA;&lt;code>Text&lt;/code> or &lt;code>EntityReference&lt;/code> nodes (when these are&#xA;in use; see the description of &lt;code>EntityReference&lt;/code> for&#xA;discussion).&#xA;&lt;p>The DOM Core represents all attribute values as simple strings, even if&#xA;the DTD or schema associated with the document declares them of some&#xA;specific type such as tokenized.&#xA;&lt;p>The way attribute value normalization is performed by the DOM&#xA;implementation depends on how much the implementation knows about the&#xA;schema in use. Typically, the &lt;code>value&lt;/code> and&#xA;&lt;code>nodeValue&lt;/code> attributes of an &lt;code>Attr&lt;/code> node initially&#xA;returns the normalized value given by the parser. It is also the case&#xA;after &lt;code>Document.normalizeDocument()&lt;/code> is called (assuming the&#xA;right options have been set). But this may not be the case after&#xA;mutation, independently of whether the mutation is performed by setting&#xA;the string value directly or by changing the &lt;code>Attr&lt;/code> child&#xA;nodes. In particular, this is true when &lt;a href='http://www.w3.org/TR/2004/REC-xml-20040204#dt-charref'>character&#xA;references&lt;/a> are involved, given that they are not represented in the DOM and they&#xA;impact attribute value normalization. On the other hand, if the&#xA;implementation knows about the schema in use when the attribute value is&#xA;changed, and it is of a different type than CDATA, it may normalize it&#xA;again at that time. This is especially true of specialized DOM&#xA;implementations, such as SVG DOM implementations, which store attribute&#xA;values in an internal form different from a string.&#xA;&lt;p>The following table gives some examples of the relations between the&#xA;attribute value in the original document (parsed attribute), the value as&#xA;exposed in the DOM, and the serialization of the value:&#xA;&lt;table border='1' cellpadding='3'>&#xA;&lt;tr>&#xA;&lt;th>Examples&lt;/th>&#xA;&lt;th>Parsed&#xA;attribute value&lt;/th>&#xA;&lt;th>Initial &lt;code>Attr.value&lt;/code>&lt;/th>&#xA;&lt;th>Serialized attribute value&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;Character reference&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;pre>&quot;x&amp;#178;=5&quot;&lt;/pre>&#xA;&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;pre>&quot;x\u00b2=5&quot;&lt;/pre>&#xA;&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;pre>&quot;x&amp;#178;=5&quot;&lt;/pre>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>Built-in&#xA;character entity&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;pre>&quot;y&lt;6&quot;&lt;/pre>&#xA;&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;pre>&quot;y&lt;6&quot;&lt;/pre>&#xA;&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;pre>&quot;y&lt;6&quot;&lt;/pre>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>Literal newline between&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;pre>&#xA;&quot;x=5&amp;#10;y=6&quot;&lt;/pre>&#xA;&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;pre>&quot;x=5 y=6&quot;&lt;/pre>&#xA;&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;pre>&quot;x=5&amp;#10;y=6&quot;&lt;/pre>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>Normalized newline between&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;pre>&quot;x=5&#xA;y=6&quot;&lt;/pre>&#xA;&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;pre>&quot;x=5 y=6&quot;&lt;/pre>&#xA;&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;pre>&quot;x=5 y=6&quot;&lt;/pre>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>Entity &lt;code>e&lt;/code> with literal newline&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&#xA;&lt;pre>&#xA;&lt;!ENTITY e '...&amp;#10;...'> [...]> &quot;x=5&amp;e;y=6&quot;&lt;/pre>&#xA;&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;em>Dependent on Implementation and Load Options&lt;/em>&lt;/td>&#xA;&lt;td valign='top' rowspan='1' colspan='1'>&lt;em>Dependent on Implementation and Load/Save Options&lt;/em>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;" annotatedElement="af43cd7e-97ab-493f-b940-bdaded09b14d"/>
              <generalization xmi:id="903813a8-dec1-4e10-af24-dbd5757d182d" isSubstitutable="true" general="8f861683-f21c-4d48-a80d-6f06066ae865"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="a44b8f3d-90bf-445f-bd5f-987639f913fb" name="DOMImplementation" isAbstract="true">
              <ownedComment xmi:id="63997ca2-070b-44ec-9d79-4a4e94e35ecf" body="The &lt;code>DOMImplementation&lt;/code> interface provides a number of methods&#xA;for performing operations that are independent of any particular instance&#xA;of the document object model.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;" annotatedElement="a44b8f3d-90bf-445f-bd5f-987639f913fb"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="7d35f029-6741-4e86-aa79-c18d17248a81" name="DOMErrorHandler" isAbstract="true">
              <ownedComment xmi:id="a69b98db-1765-435c-bf91-6fbee28efe2f" body="&lt;code>DOMErrorHandler&lt;/code> is a callback interface that the DOM&#xA;implementation can call when reporting errors that happens while&#xA;processing XML data, or when doing some other processing (e.g. validating&#xA;a document). A &lt;code>DOMErrorHandler&lt;/code> object can be attached to a&#xA;&lt;code>Document&lt;/code> using the &quot;error-handler&quot; on the&#xA;&lt;code>DOMConfiguration&lt;/code> interface. If more than one error needs to&#xA;be reported during an operation, the sequence and numbers of the errors&#xA;passed to the error handler are implementation dependent.&#xA;&lt;p> The application that is using the DOM implementation is expected to&#xA;implement this interface.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;@since DOM Level 3&#xA;" annotatedElement="7d35f029-6741-4e86-aa79-c18d17248a81"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="651656b4-a466-45b7-b0e8-a33e4d221ebd" name="DOMLocator" isAbstract="true">
              <ownedComment xmi:id="d9c4383d-3f57-4b4e-86ad-2b00bde711ab" body="&lt;code>DOMLocator&lt;/code> is an interface that describes a location (e.g.&#xA;where an error occurred).&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;@since DOM Level 3&#xA;" annotatedElement="651656b4-a466-45b7-b0e8-a33e4d221ebd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="9c99023e-0b51-4921-9bdd-3abe4cd48fae" name="TypeInfo" isAbstract="true">
              <ownedComment xmi:id="33d49158-5ca6-48fc-8d7f-9b1b93d5eddd" body="The &lt;code>TypeInfo&lt;/code> interface represents a type referenced from&#xA;&lt;code>Element&lt;/code> or &lt;code>Attr&lt;/code> nodes, specified in the schemas&#xA;associated with the document. The type is a pair of a namespace URI and&#xA;name properties, and depends on the document's schema.&#xA;&lt;p> If the document's schema is an XML DTD [&lt;a href='http://www.w3.org/TR/2004/REC-xml-20040204'>XML 1.0&lt;/a>], the values&#xA;are computed as follows:&#xA;&lt;ul>&#xA;&lt;li> If this type is referenced from an&#xA;&lt;code>Attr&lt;/code> node, &lt;code>typeNamespace&lt;/code> is&#xA;&lt;code>&quot;http://www.w3.org/TR/REC-xml&quot;&lt;/code> and &lt;code>typeName&lt;/code>&#xA;represents the &lt;b>[attribute type]&lt;/b> property in the [&lt;a href='http://www.w3.org/TR/2004/REC-xml-infoset-20040204/'>XML Information Set&lt;/a>]&#xA;. If there is no declaration for the attribute, &lt;code>typeNamespace&lt;/code>&#xA;and &lt;code>typeName&lt;/code> are &lt;code>null&lt;/code>.&#xA;&lt;/li>&#xA;&lt;li> If this type is&#xA;referenced from an &lt;code>Element&lt;/code> node, &lt;code>typeNamespace&lt;/code>&#xA;and &lt;code>typeName&lt;/code> are &lt;code>null&lt;/code>.&#xA;&lt;/li>&#xA;&lt;/ul>&#xA;&lt;p> If the document's schema is an XML Schema [&lt;a href='http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/'>XML Schema Part 1&lt;/a>]&#xA;, the values are computed as follows using the post-schema-validation&#xA;infoset contributions (also called PSVI contributions):&#xA;&lt;ul>&#xA;&lt;li> If the &lt;b>[validity]&lt;/b> property exists AND is &lt;em>&quot;invalid&quot;&lt;/em> or &lt;em>&quot;notKnown&quot;&lt;/em>: the {target namespace} and {name} properties of the declared type if&#xA;available, otherwise &lt;code>null&lt;/code>.&#xA;&lt;p >&lt;b>Note:&lt;/b>  At the time of writing, the XML Schema specification does&#xA;not require exposing the declared type. Thus, DOM implementations might&#xA;choose not to provide type information if validity is not valid.&#xA;&lt;/li>&#xA;&lt;li> If the &lt;b>[validity]&lt;/b> property exists and is &lt;em>&quot;valid&quot;&lt;/em>:&#xA;&lt;ol>&#xA;&lt;li> If &lt;b>[member type definition]&lt;/b> exists:&#xA;&lt;ol>&#xA;&lt;li>If {name} is not absent, then expose {name} and {target&#xA;namespace} properties of the &lt;b>[member type definition]&lt;/b> property;&#xA;&lt;/li>&#xA;&lt;li>Otherwise, expose the namespace and local name of the&#xA;corresponding anonymous type name.&#xA;&lt;/li>&#xA;&lt;/ol>&#xA;&lt;/li>&#xA;&lt;li> If the &lt;b>[type definition]&lt;/b> property exists:&#xA;&lt;ol>&#xA;&lt;li>If {name} is not absent, then expose {name} and {target&#xA;namespace} properties of the &lt;b>[type definition]&lt;/b> property;&#xA;&lt;/li>&#xA;&lt;li>Otherwise, expose the namespace and local name of the&#xA;corresponding anonymous type name.&#xA;&lt;/li>&#xA;&lt;/ol>&#xA;&lt;/li>&#xA;&lt;li> If the &lt;b>[member type definition anonymous]&lt;/b> exists:&#xA;&lt;ol>&#xA;&lt;li>If it is false, then expose &lt;b>[member type definition name]&lt;/b> and &lt;b>[member type definition namespace]&lt;/b> properties;&#xA;&lt;/li>&#xA;&lt;li>Otherwise, expose the namespace and local name of the&#xA;corresponding anonymous type name.&#xA;&lt;/li>&#xA;&lt;/ol>&#xA;&lt;/li>&#xA;&lt;li> If the &lt;b>[type definition anonymous]&lt;/b> exists:&#xA;&lt;ol>&#xA;&lt;li>If it is false, then expose &lt;b>[type definition name]&lt;/b> and &lt;b>[type definition namespace]&lt;/b> properties;&#xA;&lt;/li>&#xA;&lt;li>Otherwise, expose the namespace and local name of the&#xA;corresponding anonymous type name.&#xA;&lt;/li>&#xA;&lt;/ol>&#xA;&lt;/li>&#xA;&lt;/ol>&#xA;&lt;/li>&#xA;&lt;/ul>&#xA;&lt;p >&lt;b>Note:&lt;/b>  Other schema languages are outside the scope of the W3C&#xA;and therefore should define how to represent their type systems using&#xA;&lt;code>TypeInfo&lt;/code>.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;@since DOM Level 3&#xA;" annotatedElement="9c99023e-0b51-4921-9bdd-3abe4cd48fae"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="46a1a09e-8834-4f75-9a6e-08e482a59b9a" name="Comment" isAbstract="true">
              <ownedComment xmi:id="27b1aa85-6377-4320-b839-725869ae1cba" body="This interface inherits from &lt;code>CharacterData&lt;/code> and represents the&#xA;content of a comment, i.e., all the characters between the starting '&#xA;&lt;code>&lt;!--&lt;/code>' and ending '&lt;code>-->&lt;/code>'. Note that this is&#xA;the definition of a comment in XML, and, in practice, HTML, although some&#xA;HTML tools may implement the full SGML comment structure.&#xA;&lt;p> No lexical check is done on the content of a comment and it is&#xA;therefore possible to have the character sequence &lt;code>&quot;--&quot;&lt;/code>&#xA;(double-hyphen) in the content, which is illegal in a comment per section&#xA;2.5 of [&lt;a href='http://www.w3.org/TR/2004/REC-xml-20040204'>XML 1.0&lt;/a>]. The&#xA;presence of this character sequence must generate a fatal error during&#xA;serialization.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;" annotatedElement="46a1a09e-8834-4f75-9a6e-08e482a59b9a"/>
              <generalization xmi:id="f78a8388-22dd-4c1a-af2e-5ef2e30c0343" isSubstitutable="true" general="df2e70f3-c570-4f5e-ba32-4f2784910b54"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="0aeebc10-6040-49ca-ab5f-5decc69d3604" name="Notation" isAbstract="true">
              <ownedComment xmi:id="dbfb9d3d-df82-4bf2-ad48-b32bc806d17d" body="This interface represents a notation declared in the DTD. A notation either&#xA;declares, by name, the format of an unparsed entity (see &lt;a href='http://www.w3.org/TR/2004/REC-xml-20040204#Notations'>section 4.7&lt;/a> of the XML 1.0 specification [&lt;a href='http://www.w3.org/TR/2004/REC-xml-20040204'>XML 1.0&lt;/a>]), or is&#xA;used for formal declaration of processing instruction targets (see &lt;a href='http://www.w3.org/TR/2004/REC-xml-20040204#sec-pi'>section 2.6&lt;/a> of the XML 1.0 specification [&lt;a href='http://www.w3.org/TR/2004/REC-xml-20040204'>XML 1.0&lt;/a>]). The&#xA;&lt;code>nodeName&lt;/code> attribute inherited from &lt;code>Node&lt;/code> is set&#xA;to the declared name of the notation.&#xA;&lt;p>The DOM Core does not support editing &lt;code>Notation&lt;/code> nodes; they&#xA;are therefore readonly.&#xA;&lt;p>A &lt;code>Notation&lt;/code> node does not have any parent.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;" annotatedElement="0aeebc10-6040-49ca-ab5f-5decc69d3604"/>
              <generalization xmi:id="6df64e1a-658f-462f-ab3b-888f4ceb4d63" isSubstitutable="true" general="8f861683-f21c-4d48-a80d-6f06066ae865"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="a74597c4-c2ff-4e44-a57f-e4daa54d1ea8" name="ranges">
              <packagedElement xmi:type="uml:Class" xmi:id="11f65101-e39c-40b3-b965-2a1b6c562302" name="RangeException">
                <ownedComment xmi:id="bcf898f9-c9ae-4453-9744-bfb5fe635ace" body="Range operations may throw a &lt;code>RangeException&lt;/code> as specified in&#xA;their method descriptions.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>Document Object Model (DOM) Level 2 Traversal and Range Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="11f65101-e39c-40b3-b965-2a1b6c562302"/>
                <generalization xmi:id="e122ac35-4db2-40e3-8126-806ad18e217d" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="45e5d654-9a51-4511-af9f-a54c287d04b9" name="DocumentRange" isAbstract="true">
                <ownedComment xmi:id="996a2dc5-5608-4243-98b3-1897ffca018f" body="&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>Document Object Model (DOM) Level 2 Traversal and Range Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="45e5d654-9a51-4511-af9f-a54c287d04b9"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="bb76e955-8726-4982-b8e3-2290959bae73" name="Range" isAbstract="true">
                <ownedComment xmi:id="b0296bf9-56c4-4fb2-a502-c852035424d4" body="&lt;p>See also the &lt;a href='http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113'>Document Object Model (DOM) Level 2 Traversal and Range Specification&lt;/a>.&#xA;@since DOM Level 2&#xA;" annotatedElement="bb76e955-8726-4982-b8e3-2290959bae73"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="71cfb0be-05f2-44ee-a79f-00410eb8f1bf" name="ProcessingInstruction" isAbstract="true">
              <ownedComment xmi:id="64f60ff7-1680-4cd8-aa7a-8f0e1f5f5341" body="The &lt;code>ProcessingInstruction&lt;/code> interface represents a &quot;processing&#xA;instruction&quot;, used in XML as a way to keep processor-specific information&#xA;in the text of the document.&#xA;&lt;p> No lexical check is done on the content of a processing instruction and&#xA;it is therefore possible to have the character sequence&#xA;&lt;code>&quot;?>&quot;&lt;/code> in the content, which is illegal a processing&#xA;instruction per section 2.6 of [&lt;a href='http://www.w3.org/TR/2004/REC-xml-20040204'>XML 1.0&lt;/a>]. The&#xA;presence of this character sequence must generate a fatal error during&#xA;serialization.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;" annotatedElement="71cfb0be-05f2-44ee-a79f-00410eb8f1bf"/>
              <generalization xmi:id="651e9e7a-c46f-4419-86ce-99f55576444b" isSubstitutable="true" general="8f861683-f21c-4d48-a80d-6f06066ae865"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="8d088edc-570f-4698-8de0-bbbb6246bbd5" name="NodeList" isAbstract="true">
              <ownedComment xmi:id="61e3e146-6593-4bd5-a6b9-369f387b6cbe" body="The &lt;code>NodeList&lt;/code> interface provides the abstraction of an ordered&#xA;collection of nodes, without defining or constraining how this collection&#xA;is implemented. &lt;code>NodeList&lt;/code> objects in the DOM are live.&#xA;&lt;p>The items in the &lt;code>NodeList&lt;/code> are accessible via an integral&#xA;index, starting from 0.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;" annotatedElement="8d088edc-570f-4698-8de0-bbbb6246bbd5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="c23171aa-2d99-4d8e-95b1-bc07c73bfaa0" name="CDATASection" isAbstract="true">
              <ownedComment xmi:id="e6794cc3-5470-4e2f-8068-06f871fc4183" body="CDATA sections are used to escape blocks of text containing characters that&#xA;would otherwise be regarded as markup. The only delimiter that is&#xA;recognized in a CDATA section is the &quot;]]>&quot; string that ends the CDATA&#xA;section. CDATA sections cannot be nested. Their primary purpose is for&#xA;including material such as XML fragments, without needing to escape all&#xA;the delimiters.&#xA;&lt;p>The &lt;code>CharacterData.data&lt;/code> attribute holds the text that is&#xA;contained by the CDATA section. Note that this &lt;em>may&lt;/em> contain characters that need to be escaped outside of CDATA sections and&#xA;that, depending on the character encoding (&quot;charset&quot;) chosen for&#xA;serialization, it may be impossible to write out some characters as part&#xA;of a CDATA section.&#xA;&lt;p>The &lt;code>CDATASection&lt;/code> interface inherits from the&#xA;&lt;code>CharacterData&lt;/code> interface through the &lt;code>Text&lt;/code>&#xA;interface. Adjacent &lt;code>CDATASection&lt;/code> nodes are not merged by use&#xA;of the &lt;code>normalize&lt;/code> method of the &lt;code>Node&lt;/code> interface.&#xA;&lt;p> No lexical check is done on the content of a CDATA section and it is&#xA;therefore possible to have the character sequence &lt;code>&quot;]]>&quot;&lt;/code>&#xA;in the content, which is illegal in a CDATA section per section 2.7 of [&lt;a href='http://www.w3.org/TR/2004/REC-xml-20040204'>XML 1.0&lt;/a>]. The&#xA;presence of this character sequence must generate a fatal error during&#xA;serialization or the cdata section must be splitted before the&#xA;serialization (see also the parameter &lt;code>&quot;split-cdata-sections&quot;&lt;/code>&#xA;in the &lt;code>DOMConfiguration&lt;/code> interface).&#xA;&lt;p >&lt;b>Note:&lt;/b> Because no markup is recognized within a&#xA;&lt;code>CDATASection&lt;/code>, character numeric references cannot be used as&#xA;an escape mechanism when serializing. Therefore, action needs to be taken&#xA;when serializing a &lt;code>CDATASection&lt;/code> with a character encoding&#xA;where some of the contained characters cannot be represented. Failure to&#xA;do so would not produce well-formed XML.&#xA;&lt;p >&lt;b>Note:&lt;/b> One potential solution in the serialization process is to&#xA;end the CDATA section before the character, output the character using a&#xA;character reference or entity reference, and open a new CDATA section for&#xA;any further characters in the text node. Note, however, that some code&#xA;conversion libraries at the time of writing do not return an error or&#xA;exception when a character is missing from the encoding, making the task&#xA;of ensuring that data is not corrupted on serialization more difficult.&#xA;&lt;p>See also the &lt;a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification&lt;/a>.&#xA;" annotatedElement="c23171aa-2d99-4d8e-95b1-bc07c73bfaa0"/>
              <generalization xmi:id="936a436c-d1f7-4504-832d-bb02fc3bdd87" isSubstitutable="true" general="a15da8ce-8505-4bc9-9b85-ad1b7537cecb"/>
            </packagedElement>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="c0f23930-c737-45f1-afbf-6c00064101c8" name="xml">
          <packagedElement xmi:type="uml:Package" xmi:id="c3df233e-06f5-46dc-aa8f-5ac5b9434d79" name="sax">
            <packagedElement xmi:type="uml:Interface" xmi:id="a06461e3-e9fc-4f0b-823e-989881aead55" name="DocumentHandler" isAbstract="true">
              <ownedComment xmi:id="45f85413-8aec-4186-ab84-294b123e1b67" body="Receive notification of general document events.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This was the main event-handling interface for SAX1; in&#xA;SAX2, it has been replaced by {@link org.xml.sax.ContentHandler&#xA;ContentHandler}, which provides Namespace support and reporting&#xA;of skipped entities.  This interface is included in SAX2 only&#xA;to support legacy SAX1 applications.&lt;/p>&#xA;&#xA;&lt;p>The order of events in this interface is very important, and&#xA;mirrors the order of information in the document itself.  For&#xA;example, all of an element's content (character data, processing&#xA;instructions, and/or subelements) will appear, in order, between&#xA;the startElement event and the corresponding endElement event.&lt;/p>&#xA;&#xA;&lt;p>Application writers who do not want to implement the entire&#xA;interface can derive a class from HandlerBase, which implements&#xA;the default functionality; parser writers can instantiate&#xA;HandlerBase to obtain a default handler.  The application can find&#xA;the location of any document event using the Locator interface&#xA;supplied by the Parser through the setDocumentLocator method.&lt;/p>&#xA;&#xA;@deprecated This interface has been replaced by the SAX2&#xA;{@link org.xml.sax.ContentHandler ContentHandler}&#xA;interface, which includes Namespace support.&#xA;@since SAX 1.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.Parser#setDocumentHandler&#xA;@see org.xml.sax.Locator&#xA;@see org.xml.sax.HandlerBase&#xA;" annotatedElement="a06461e3-e9fc-4f0b-823e-989881aead55"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="06ea97ec-420b-4f33-93a5-b4cec5d1eaf0" name="HandlerBase" clientDependency="3c00bb51-8d63-4da9-8dde-a522aee5464d d7d21730-b561-4807-8d4b-14895721e82a fc1f7e33-fd27-4603-b1aa-73547cd06166 a10984c0-074c-4245-9e31-b189fe2acfd5">
              <ownedComment xmi:id="e0a33f55-554a-4be6-9693-83de8e0e2ace" body="Default base class for handlers.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This class implements the default behaviour for four SAX1&#xA;interfaces: EntityResolver, DTDHandler, DocumentHandler,&#xA;and ErrorHandler.  It is now obsolete, but is included in SAX2 to&#xA;support legacy SAX1 applications.  SAX2 applications should use&#xA;the {@link org.xml.sax.helpers.DefaultHandler DefaultHandler}&#xA;class instead.&lt;/p>&#xA;&#xA;&lt;p>Application writers can extend this class when they need to&#xA;implement only part of an interface; parser writers can&#xA;instantiate this class to provide default handlers when the&#xA;application has not supplied its own.&lt;/p>&#xA;&#xA;&lt;p>Note that the use of this class is optional.&lt;/p>&#xA;&#xA;@deprecated This class works with the deprecated&#xA;{@link org.xml.sax.DocumentHandler DocumentHandler}&#xA;interface.  It has been replaced by the SAX2&#xA;{@link org.xml.sax.helpers.DefaultHandler DefaultHandler}&#xA;class.&#xA;@since SAX 1.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.EntityResolver&#xA;@see org.xml.sax.DTDHandler&#xA;@see org.xml.sax.DocumentHandler&#xA;@see org.xml.sax.ErrorHandler&#xA;" annotatedElement="06ea97ec-420b-4f33-93a5-b4cec5d1eaf0"/>
              <interfaceRealization xmi:id="d7d21730-b561-4807-8d4b-14895721e82a" name="" supplier="c88944e8-f26c-4709-85da-80e0b8567088" client="06ea97ec-420b-4f33-93a5-b4cec5d1eaf0" contract="c88944e8-f26c-4709-85da-80e0b8567088"/>
              <interfaceRealization xmi:id="fc1f7e33-fd27-4603-b1aa-73547cd06166" name="" supplier="be7e6eeb-a6c0-4743-809a-50b2c3167d14" client="06ea97ec-420b-4f33-93a5-b4cec5d1eaf0" contract="be7e6eeb-a6c0-4743-809a-50b2c3167d14"/>
              <interfaceRealization xmi:id="3c00bb51-8d63-4da9-8dde-a522aee5464d" name="" supplier="a06461e3-e9fc-4f0b-823e-989881aead55" client="06ea97ec-420b-4f33-93a5-b4cec5d1eaf0" contract="a06461e3-e9fc-4f0b-823e-989881aead55"/>
              <interfaceRealization xmi:id="a10984c0-074c-4245-9e31-b189fe2acfd5" name="" supplier="e318caf1-552e-476f-9f5b-f24f70797339" client="06ea97ec-420b-4f33-93a5-b4cec5d1eaf0" contract="e318caf1-552e-476f-9f5b-f24f70797339"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="2f016c0b-7d9f-4cc9-abef-d7220da2acd3" name="ext">
              <packagedElement xmi:type="uml:Interface" xmi:id="84878d4e-4077-47f0-92f6-8ada86fd0e10" name="DeclHandler" isAbstract="true">
                <ownedComment xmi:id="e1dcbf9e-bf81-46ec-975d-145f88f5feb3" body="SAX2 extension handler for DTD declaration events.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This is an optional extension handler for SAX2 to provide more&#xA;complete information about DTD declarations in an XML document.&#xA;XML readers are not required to recognize this handler, and it&#xA;is not part of core-only SAX2 distributions.&lt;/p>&#xA;&#xA;&lt;p>Note that data-related DTD declarations (unparsed entities and&#xA;notations) are already reported through the {@link&#xA;org.xml.sax.DTDHandler DTDHandler} interface.&lt;/p>&#xA;&#xA;&lt;p>If you are using the declaration handler together with a lexical&#xA;handler, all of the events will occur between the&#xA;{@link org.xml.sax.ext.LexicalHandler#startDTD startDTD} and the&#xA;{@link org.xml.sax.ext.LexicalHandler#endDTD endDTD} events.&lt;/p>&#xA;&#xA;&lt;p>To set the DeclHandler for an XML reader, use the&#xA;{@link org.xml.sax.XMLReader#setProperty setProperty} method&#xA;with the property name&#xA;&lt;code>http://xml.org/sax/properties/declaration-handler&lt;/code>&#xA;and an object implementing this interface (or null) as the value.&#xA;If the reader does not report declaration events, it will throw a&#xA;{@link org.xml.sax.SAXNotRecognizedException SAXNotRecognizedException}&#xA;when you attempt to register the handler.&lt;/p>&#xA;&#xA;@since SAX 2.0 (extensions 1.0)&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;" annotatedElement="84878d4e-4077-47f0-92f6-8ada86fd0e10"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="a5cbbca9-82cb-4641-b28b-4f0847cc12db" name="Attributes2" isAbstract="true">
                <ownedComment xmi:id="3932e2db-9c70-480d-8b40-57e62da982c1" body="SAX2 extension to augment the per-attribute information&#xA;provided though {@link Attributes}.&#xA;If an implementation supports this extension, the attributes&#xA;provided in {@link org.xml.sax.ContentHandler#startElement&#xA;ContentHandler.startElement() } will implement this interface,&#xA;and the &lt;em>http://xml.org/sax/features/use-attributes2&lt;/em>&#xA;feature flag will have the value &lt;em>true&lt;/em>.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p> XMLReader implementations are not required to support this&#xA;information, and it is not part of core-only SAX2 distributions.&lt;/p>&#xA;&#xA;&lt;p>Note that if an attribute was defaulted (&lt;em>!isSpecified()&lt;/em>)&#xA;it will of necessity also have been declared (&lt;em>isDeclared()&lt;/em>)&#xA;in the DTD.&#xA;Similarly if an attribute's type is anything except CDATA, then it&#xA;must have been declared.&#xA;&lt;/p>&#xA;&#xA;@since SAX 2.0 (extensions 1.1 alpha)&#xA;@author David Brownell&#xA;@version TBS&#xA;" annotatedElement="a5cbbca9-82cb-4641-b28b-4f0847cc12db"/>
                <generalization xmi:id="809bd207-e297-453a-8b71-7fd0c9a5faa8" isSubstitutable="true" general="da152948-2432-44fa-86ee-3ee759c51a33"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="3f2e5ab5-d9d5-47c4-9c58-4978d06e9377" name="Locator2" isAbstract="true">
                <ownedComment xmi:id="f7ad053d-7b0c-4d6a-8660-582363b0bead" body="SAX2 extension to augment the entity information provided&#xA;though a {@link Locator}.&#xA;If an implementation supports this extension, the Locator&#xA;provided in {@link org.xml.sax.ContentHandler#setDocumentLocator&#xA;ContentHandler.setDocumentLocator() } will implement this&#xA;interface, and the&#xA;&lt;em>http://xml.org/sax/features/use-locator2&lt;/em> feature&#xA;flag will have the value &lt;em>true&lt;/em>.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p> XMLReader implementations are not required to support this&#xA;information, and it is not part of core-only SAX2 distributions.&lt;/p>&#xA;&#xA;@since SAX 2.0 (extensions 1.1 alpha)&#xA;@author David Brownell&#xA;@version TBS&#xA;" annotatedElement="3f2e5ab5-d9d5-47c4-9c58-4978d06e9377"/>
                <generalization xmi:id="1f82c799-d40f-4c5a-9f67-980d957a974f" isSubstitutable="true" general="64d26046-f170-41c5-86f4-ca2ce1e788e3"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="46729b7d-c666-4e77-9b74-2b65b543837e" name="LexicalHandler" isAbstract="true">
                <ownedComment xmi:id="f3e7e9bb-664e-4e04-840a-3fe77ebbbe09" body="SAX2 extension handler for lexical events.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This is an optional extension handler for SAX2 to provide&#xA;lexical information about an XML document, such as comments&#xA;and CDATA section boundaries.&#xA;XML readers are not required to recognize this handler, and it&#xA;is not part of core-only SAX2 distributions.&lt;/p>&#xA;&#xA;&lt;p>The events in the lexical handler apply to the entire document,&#xA;not just to the document element, and all lexical handler events&#xA;must appear between the content handler's startDocument and&#xA;endDocument events.&lt;/p>&#xA;&#xA;&lt;p>To set the LexicalHandler for an XML reader, use the&#xA;{@link org.xml.sax.XMLReader#setProperty setProperty} method&#xA;with the property name&#xA;&lt;code>http://xml.org/sax/properties/lexical-handler&lt;/code>&#xA;and an object implementing this interface (or null) as the value.&#xA;If the reader does not report lexical events, it will throw a&#xA;{@link org.xml.sax.SAXNotRecognizedException SAXNotRecognizedException}&#xA;when you attempt to register the handler.&lt;/p>&#xA;&#xA;@since SAX 2.0 (extensions 1.0)&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;" annotatedElement="46729b7d-c666-4e77-9b74-2b65b543837e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="0805200c-2327-4c1c-b647-5da181e19dea" name="Locator2Impl" clientDependency="18450aee-fae7-4611-affe-30cf60f44be3">
                <ownedComment xmi:id="12ba4c93-dc16-4a73-bda9-7135f9181d41" body="SAX2 extension helper for holding additional Entity information,&#xA;implementing the {@link Locator2} interface.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p> This is not part of core-only SAX2 distributions.&lt;/p>&#xA;&#xA;@since SAX 2.0.2&#xA;@author David Brownell&#xA;@version TBS&#xA;" annotatedElement="0805200c-2327-4c1c-b647-5da181e19dea"/>
                <generalization xmi:id="d9aa4d23-2d8d-43fb-9e14-eaac95bf4659" isSubstitutable="true" general="f69bb70b-251b-48a3-862b-a53c266f4adc"/>
                <interfaceRealization xmi:id="18450aee-fae7-4611-affe-30cf60f44be3" name="" supplier="3f2e5ab5-d9d5-47c4-9c58-4978d06e9377" client="0805200c-2327-4c1c-b647-5da181e19dea" contract="3f2e5ab5-d9d5-47c4-9c58-4978d06e9377"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="20341927-8b34-48ed-9b22-0501a45ce300" name="DefaultHandler2" clientDependency="cef1f41b-8426-4767-8fee-cfc3375fc386 4d1c25cd-5248-458f-ad69-dd81cb387394 3b40d4a3-6cb6-40d5-b853-7fd92d9c382a">
                <ownedComment xmi:id="a908d79d-b668-446d-9ff7-c9f1e75d69e6" body="This class extends the SAX2 base handler class to support the&#xA;SAX2 {@link LexicalHandler}, {@link DeclHandler}, and&#xA;{@link EntityResolver2} extensions.  Except for overriding the&#xA;original SAX1 {@link DefaultHandler#resolveEntity resolveEntity()}&#xA;method the added handler methods just return.  Subclassers may&#xA;override everything on a method-by-method basis.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p> &lt;em>Note:&lt;/em> this class might yet learn that the&#xA;&lt;em>ContentHandler.setDocumentLocator()&lt;/em> call might be passed a&#xA;{@link Locator2} object, and that the&#xA;&lt;em>ContentHandler.startElement()&lt;/em> call might be passed a&#xA;{@link Attributes2} object.&#xA;&#xA;@since SAX 2.0 (extensions 1.1 alpha)&#xA;@author David Brownell&#xA;@version TBS&#xA;" annotatedElement="20341927-8b34-48ed-9b22-0501a45ce300"/>
                <generalization xmi:id="cc5b4cdf-db08-48cf-a171-b6d1ba384043" isSubstitutable="true" general="37b212f8-bdf0-4f7f-919b-ae39f4f4dae0"/>
                <interfaceRealization xmi:id="cef1f41b-8426-4767-8fee-cfc3375fc386" name="" supplier="46729b7d-c666-4e77-9b74-2b65b543837e" client="20341927-8b34-48ed-9b22-0501a45ce300" contract="46729b7d-c666-4e77-9b74-2b65b543837e"/>
                <interfaceRealization xmi:id="4d1c25cd-5248-458f-ad69-dd81cb387394" name="" supplier="84878d4e-4077-47f0-92f6-8ada86fd0e10" client="20341927-8b34-48ed-9b22-0501a45ce300" contract="84878d4e-4077-47f0-92f6-8ada86fd0e10"/>
                <interfaceRealization xmi:id="3b40d4a3-6cb6-40d5-b853-7fd92d9c382a" name="" supplier="1a2a8655-683f-4266-8711-8ddb728b9dd4" client="20341927-8b34-48ed-9b22-0501a45ce300" contract="1a2a8655-683f-4266-8711-8ddb728b9dd4"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="fc3372f5-ed79-4acd-8d35-68c62b3972a7" name="Attributes2Impl" clientDependency="00fdba50-e0b5-478a-867b-09a69fbaeaea">
                <ownedComment xmi:id="54670ae2-4d17-4238-a8e3-35a197c86450" body="SAX2 extension helper for additional Attributes information,&#xA;implementing the {@link Attributes2} interface.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This is not part of core-only SAX2 distributions.&lt;/p>&#xA;&#xA;&lt;p>The &lt;em>specified&lt;/em> flag for each attribute will always&#xA;be true, unless it has been set to false in the copy constructor&#xA;or using {@link #setSpecified}.&#xA;Similarly, the &lt;em>declared&lt;/em> flag for each attribute will&#xA;always be false, except for defaulted attributes (&lt;em>specified&lt;/em>&#xA;is false), non-CDATA attributes, or when it is set to true using&#xA;{@link #setDeclared}.&#xA;If you change an attribute's type by hand, you may need to modify&#xA;its &lt;em>declared&lt;/em> flag to match.&#xA;&lt;/p>&#xA;&#xA;@since SAX 2.0 (extensions 1.1 alpha)&#xA;@author David Brownell&#xA;@version TBS&#xA;" annotatedElement="fc3372f5-ed79-4acd-8d35-68c62b3972a7"/>
                <generalization xmi:id="38f30a5c-eb09-4ccb-b1bf-39710f334870" isSubstitutable="true" general="181e9bcc-bf96-4a37-a943-abf0cda8b9b0"/>
                <interfaceRealization xmi:id="00fdba50-e0b5-478a-867b-09a69fbaeaea" name="" supplier="a5cbbca9-82cb-4641-b28b-4f0847cc12db" client="fc3372f5-ed79-4acd-8d35-68c62b3972a7" contract="a5cbbca9-82cb-4641-b28b-4f0847cc12db"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="1a2a8655-683f-4266-8711-8ddb728b9dd4" name="EntityResolver2" isAbstract="true">
                <ownedComment xmi:id="d3602558-81fa-46c7-867f-4f0408249277" body="Extended interface for mapping external entity references to input&#xA;sources, or providing a missing external subset.  The&#xA;{@link XMLReader#setEntityResolver XMLReader.setEntityResolver()} method&#xA;is used to provide implementations of this interface to parsers.&#xA;When a parser uses the methods in this interface, the&#xA;{@link EntityResolver2#resolveEntity EntityResolver2.resolveEntity()}&#xA;method (in this interface) is used &lt;em>instead of&lt;/em> the older (SAX 1.0)&#xA;{@link EntityResolver#resolveEntity EntityResolver.resolveEntity()} method.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>If a SAX application requires the customized handling which this&#xA;interface defines for external entities, it must ensure that it uses&#xA;an XMLReader with the&#xA;&lt;em>http://xml.org/sax/features/use-entity-resolver2&lt;/em> feature flag&#xA;set to &lt;em>true&lt;/em> (which is its default value when the feature is&#xA;recognized).  If that flag is unrecognized, or its value is false,&#xA;or the resolver does not implement this interface, then only the&#xA;{@link EntityResolver} method will be used.&#xA;&lt;/p>&#xA;&#xA;&lt;p>That supports three categories of application that modify entity&#xA;resolution.  &lt;em>Old Style&lt;/em> applications won't know about this interface;&#xA;they will provide an EntityResolver.&#xA;&lt;em>Transitional Mode&lt;/em> provide an EntityResolver2 and automatically&#xA;get the benefit of its methods in any systems (parsers or other tools)&#xA;supporting it, due to polymorphism.&#xA;Both &lt;em>Old Style&lt;/em> and &lt;em>Transitional Mode&lt;/em> applications will&#xA;work with any SAX2 parser.&#xA;&lt;em>New style&lt;/em> applications will fail to run except on SAX2 parsers&#xA;that support this particular feature.&#xA;They will insist that feature flag have a value of &quot;true&quot;, and the&#xA;EntityResolver2 implementation they provide  might throw an exception&#xA;if the original SAX 1.0 style entity resolution method is invoked.&#xA;&lt;/p>&#xA;&#xA;@see org.xml.sax.XMLReader#setEntityResolver&#xA;&#xA;@since SAX 2.0 (extensions 1.1 alpha)&#xA;@author David Brownell&#xA;@version TBD&#xA;" annotatedElement="1a2a8655-683f-4266-8711-8ddb728b9dd4"/>
                <generalization xmi:id="2bd51c26-ff45-4c7c-81e4-539ad9c66cd2" isSubstitutable="true" general="c88944e8-f26c-4709-85da-80e0b8567088"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="be7e6eeb-a6c0-4743-809a-50b2c3167d14" name="DTDHandler" isAbstract="true">
              <ownedComment xmi:id="5f68bdac-cbc0-4d48-8b41-e54b04949708" body="Receive notification of basic DTD-related events.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>If a SAX application needs information about notations and&#xA;unparsed entities, then the application implements this&#xA;interface and registers an instance with the SAX parser using&#xA;the parser's setDTDHandler method.  The parser uses the&#xA;instance to report notation and unparsed entity declarations to&#xA;the application.&lt;/p>&#xA;&#xA;&lt;p>Note that this interface includes only those DTD events that&#xA;the XML recommendation &lt;em>requires&lt;/em> processors to report:&#xA;notation and unparsed entity declarations.&lt;/p>&#xA;&#xA;&lt;p>The SAX parser may report these events in any order, regardless&#xA;of the order in which the notations and unparsed entities were&#xA;declared; however, all DTD events must be reported after the&#xA;document handler's startDocument event, and before the first&#xA;startElement event.&#xA;(If the {@link org.xml.sax.ext.LexicalHandler LexicalHandler} is&#xA;used, these events must also be reported before the endDTD event.)&#xA;&lt;/p>&#xA;&#xA;&lt;p>It is up to the application to store the information for&#xA;future use (perhaps in a hash table or object tree).&#xA;If the application encounters attributes of type &quot;NOTATION&quot;,&#xA;&quot;ENTITY&quot;, or &quot;ENTITIES&quot;, it can use the information that it&#xA;obtained through this interface to find the entity and/or&#xA;notation corresponding with the attribute value.&lt;/p>&#xA;&#xA;@since SAX 1.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.XMLReader#setDTDHandler&#xA;" annotatedElement="be7e6eeb-a6c0-4743-809a-50b2c3167d14"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0e1d226b-4df7-49db-8b45-1a89a8ad333b" name="SAXNotSupportedException">
              <ownedComment xmi:id="d94a33df-6930-416a-90c5-f6b406261574" body="Exception class for an unsupported operation.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>An XMLReader will throw this exception when it recognizes a&#xA;feature or property identifier, but cannot perform the requested&#xA;operation (setting a state or value).  Other SAX2 applications and&#xA;extensions may use this class for similar purposes.&lt;/p>&#xA;&#xA;@since SAX 2.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.SAXNotRecognizedException&#xA;" annotatedElement="0e1d226b-4df7-49db-8b45-1a89a8ad333b"/>
              <generalization xmi:id="28793377-f460-4f3c-9ede-af7b9ae5c7b0" isSubstitutable="true" general="c9372f0e-f897-4323-9ecd-e53c61c8cb25"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="a097ae78-9869-4a39-b48f-43ad9c449e2d" name="ContentHandler" isAbstract="true">
              <ownedComment xmi:id="02e2b4de-fe47-4019-a4c8-8f9162426410" body="Receive notification of the logical content of a document.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This is the main interface that most SAX applications&#xA;implement: if the application needs to be informed of basic parsing&#xA;events, it implements this interface and registers an instance with&#xA;the SAX parser using the {@link org.xml.sax.XMLReader#setContentHandler&#xA;setContentHandler} method.  The parser uses the instance to report&#xA;basic document-related events like the start and end of elements&#xA;and character data.&lt;/p>&#xA;&#xA;&lt;p>The order of events in this interface is very important, and&#xA;mirrors the order of information in the document itself.  For&#xA;example, all of an element's content (character data, processing&#xA;instructions, and/or subelements) will appear, in order, between&#xA;the startElement event and the corresponding endElement event.&lt;/p>&#xA;&#xA;&lt;p>This interface is similar to the now-deprecated SAX 1.0&#xA;DocumentHandler interface, but it adds support for Namespaces&#xA;and for reporting skipped entities (in non-validating XML&#xA;processors).&lt;/p>&#xA;&#xA;&lt;p>Implementors should note that there is also a&#xA;&lt;code>ContentHandler&lt;/code> class in the &lt;code>java.net&lt;/code>&#xA;package; that means that it's probably a bad idea to do&lt;/p>&#xA;&#xA;&lt;pre>import java.net.*;&#xA;import org.xml.sax.*;&#xA;&lt;/pre>&#xA;&#xA;&lt;p>In fact, &quot;import ...*&quot; is usually a sign of sloppy programming&#xA;anyway, so the user should consider this a feature rather than a&#xA;bug.&lt;/p>&#xA;&#xA;@since SAX 2.0&#xA;@author David Megginson&#xA;@version 2.0.1+ (sax2r3pre1)&#xA;@see org.xml.sax.XMLReader&#xA;@see org.xml.sax.DTDHandler&#xA;@see org.xml.sax.ErrorHandler&#xA;" annotatedElement="a097ae78-9869-4a39-b48f-43ad9c449e2d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ddf88866-6d5b-4840-8f8f-27fc16144f32" name="SAXNotRecognizedException">
              <ownedComment xmi:id="abbee67e-78a5-47ea-be77-b1ef58bab740" body="Exception class for an unrecognized identifier.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>An XMLReader will throw this exception when it finds an&#xA;unrecognized feature or property identifier; SAX applications and&#xA;extensions may use this class for other, similar purposes.&lt;/p>&#xA;&#xA;@since SAX 2.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.SAXNotSupportedException&#xA;" annotatedElement="ddf88866-6d5b-4840-8f8f-27fc16144f32"/>
              <generalization xmi:id="92024685-f233-451b-9e9f-32eb92551b3e" isSubstitutable="true" general="c9372f0e-f897-4323-9ecd-e53c61c8cb25"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="3585ecab-5666-4071-8fbd-91db858090c1" name="SAXParseException">
              <ownedComment xmi:id="ec742426-3f40-4039-b071-366f16b6d76a" body="Encapsulate an XML parse error or warning.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This exception may include information for locating the error&#xA;in the original XML document, as if it came from a {@link Locator}&#xA;object.  Note that although the application&#xA;will receive a SAXParseException as the argument to the handlers&#xA;in the {@link org.xml.sax.ErrorHandler ErrorHandler} interface,&#xA;the application is not actually required to throw the exception;&#xA;instead, it can simply read the information in it and take a&#xA;different action.&lt;/p>&#xA;&#xA;&lt;p>Since this exception is a subclass of {@link org.xml.sax.SAXException&#xA;SAXException}, it inherits the ability to wrap another exception.&lt;/p>&#xA;&#xA;@since SAX 1.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.SAXException&#xA;@see org.xml.sax.Locator&#xA;@see org.xml.sax.ErrorHandler&#xA;" annotatedElement="3585ecab-5666-4071-8fbd-91db858090c1"/>
              <generalization xmi:id="0d03a607-a200-4e11-b80a-987e1e5963e5" isSubstitutable="true" general="c9372f0e-f897-4323-9ecd-e53c61c8cb25"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c9372f0e-f897-4323-9ecd-e53c61c8cb25" name="SAXException">
              <ownedComment xmi:id="c3b41adb-501d-481b-a25f-8ee30c3448dc" body="Encapsulate a general SAX error or warning.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This class can contain basic error or warning information from&#xA;either the XML parser or the application: a parser writer or&#xA;application writer can subclass it to provide additional&#xA;functionality.  SAX handlers may throw this exception or&#xA;any exception subclassed from it.&lt;/p>&#xA;&#xA;&lt;p>If the application needs to pass through other types of&#xA;exceptions, it must wrap those exceptions in a SAXException&#xA;or an exception derived from a SAXException.&lt;/p>&#xA;&#xA;&lt;p>If the parser or application needs to include information about a&#xA;specific location in an XML document, it should use the&#xA;{@link org.xml.sax.SAXParseException SAXParseException} subclass.&lt;/p>&#xA;&#xA;@since SAX 1.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.SAXParseException&#xA;" annotatedElement="c9372f0e-f897-4323-9ecd-e53c61c8cb25"/>
              <generalization xmi:id="e39fb8a5-7e17-4c5e-8d9d-30a6f66fd3b5" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b399b9f8-b336-4517-937f-9b3be5089fb6" name="InputSource">
              <ownedComment xmi:id="bb36ea57-44c1-40aa-b977-b98e1ba12f7d" body="A single input source for an XML entity.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This class allows a SAX application to encapsulate information&#xA;about an input source in a single object, which may include&#xA;a public identifier, a system identifier, a byte stream (possibly&#xA;with a specified encoding), and/or a character stream.&lt;/p>&#xA;&#xA;&lt;p>There are two places that the application can deliver an&#xA;input source to the parser: as the argument to the Parser.parse&#xA;method, or as the return value of the EntityResolver.resolveEntity&#xA;method.&lt;/p>&#xA;&#xA;&lt;p>The SAX parser will use the InputSource object to determine how&#xA;to read XML input.  If there is a character stream available, the&#xA;parser will read that stream directly, disregarding any text&#xA;encoding declaration found in that stream.&#xA;If there is no character stream, but there is&#xA;a byte stream, the parser will use that byte stream, using the&#xA;encoding specified in the InputSource or else (if no encoding is&#xA;specified) autodetecting the character encoding using an algorithm&#xA;such as the one in the XML specification.  If neither a character&#xA;stream nor a&#xA;byte stream is available, the parser will attempt to open a URI&#xA;connection to the resource identified by the system&#xA;identifier.&lt;/p>&#xA;&#xA;&lt;p>An InputSource object belongs to the application: the SAX parser&#xA;shall never modify it in any way (it may modify a copy if&#xA;necessary).  However, standard processing of both byte and&#xA;character streams is to close them on as part of end-of-parse cleanup,&#xA;so applications should not attempt to re-use such streams after they&#xA;have been handed to a parser.  &lt;/p>&#xA;&#xA;@since SAX 1.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.XMLReader#parse(org.xml.sax.InputSource)&#xA;@see org.xml.sax.EntityResolver#resolveEntity&#xA;@see java.io.InputStream&#xA;@see java.io.Reader&#xA;" annotatedElement="b399b9f8-b336-4517-937f-9b3be5089fb6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="58596e29-a2bb-4f88-9a83-2565398be9cc" name="XMLFilter" isAbstract="true">
              <ownedComment xmi:id="2da2d54f-ab34-4c33-a771-5aaefde65145" body="Interface for an XML filter.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>An XML filter is like an XML reader, except that it obtains its&#xA;events from another XML reader rather than a primary source like&#xA;an XML document or database.  Filters can modify a stream of&#xA;events as they pass on to the final application.&lt;/p>&#xA;&#xA;&lt;p>The XMLFilterImpl helper class provides a convenient base&#xA;for creating SAX2 filters, by passing on all {@link org.xml.sax.EntityResolver&#xA;EntityResolver}, {@link org.xml.sax.DTDHandler DTDHandler},&#xA;{@link org.xml.sax.ContentHandler ContentHandler} and {@link org.xml.sax.ErrorHandler&#xA;ErrorHandler} events automatically.&lt;/p>&#xA;&#xA;@since SAX 2.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.helpers.XMLFilterImpl&#xA;" annotatedElement="58596e29-a2bb-4f88-9a83-2565398be9cc"/>
              <generalization xmi:id="313df666-6063-452b-8bb8-7c4ab50313a1" isSubstitutable="true" general="789c2dbf-80f1-45d5-b14b-d081164f79b5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="80186dca-ef7d-4a10-9283-3a1cfdcb514a" name="helpers">
              <packagedElement xmi:type="uml:Class" xmi:id="99586170-aadb-4204-998b-056b0b7ad671" name="NewInstance" visibility="package">
                <ownedComment xmi:id="9f5f3f07-4d23-47a6-9fcc-79935d800d3d" body="Create a new instance of a class by name.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This class contains a static method for creating an instance of a&#xA;class from an explicit class name.  It tries to use the thread's context&#xA;ClassLoader if possible and falls back to using&#xA;Class.forName(String).&lt;/p>&#xA;&#xA;&lt;p>This code is designed to compile and run on JDK version 1.1 and later&#xA;including versions of Java 2.&lt;/p>&#xA;&#xA;@author Edwin Goei, David Brownell&#xA;@version 2.0.1 (sax2r2)&#xA;" annotatedElement="99586170-aadb-4204-998b-056b0b7ad671"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f69bb70b-251b-48a3-862b-a53c266f4adc" name="LocatorImpl" clientDependency="58cf2ec9-ad15-4eda-bf94-e6f59d8e24f2">
                <ownedComment xmi:id="f23da915-3e55-4217-8636-8001bca57fef" body="Provide an optional convenience implementation of Locator.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This class is available mainly for application writers, who&#xA;can use it to make a persistent snapshot of a locator at any&#xA;point during a document parse:&lt;/p>&#xA;&#xA;&lt;pre>&#xA;Locator locator;&#xA;Locator startloc;&#xA;&#xA;public void setLocator (Locator locator)&#xA;{&#xA;note the locator&#xA;this.locator = locator;&#xA;}&#xA;&#xA;public void startDocument ()&#xA;{&#xA;save the location of the start of the document&#xA;for future use.&#xA;Locator startloc = new LocatorImpl(locator);&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p>Normally, parser writers will not use this class, since it&#xA;is more efficient to provide location information only when&#xA;requested, rather than constantly updating a Locator object.&lt;/p>&#xA;&#xA;@since SAX 1.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.Locator Locator&#xA;" annotatedElement="f69bb70b-251b-48a3-862b-a53c266f4adc"/>
                <interfaceRealization xmi:id="58cf2ec9-ad15-4eda-bf94-e6f59d8e24f2" name="" supplier="64d26046-f170-41c5-86f4-ca2ce1e788e3" client="f69bb70b-251b-48a3-862b-a53c266f4adc" contract="64d26046-f170-41c5-86f4-ca2ce1e788e3"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="ebfbc17d-0f4d-47a2-8b4d-e97c428a32be" name="ParserAdapter" clientDependency="47c1504c-bcd8-4371-8997-57f7980ff14d ce7fb034-0263-4554-a795-db864dc1a5e4">
                <ownedComment xmi:id="56e4a4df-8e41-4723-b9fa-9035b1cb88c8" body="Adapt a SAX1 Parser as a SAX2 XMLReader.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This class wraps a SAX1 {@link org.xml.sax.Parser Parser}&#xA;and makes it act as a SAX2 {@link org.xml.sax.XMLReader XMLReader},&#xA;with feature, property, and Namespace support.  Note&#xA;that it is not possible to report {@link org.xml.sax.ContentHandler#skippedEntity&#xA;skippedEntity} events, since SAX1 does not make that information available.&lt;/p>&#xA;&#xA;&lt;p>This adapter does not test for duplicate Namespace-qualified&#xA;attribute names.&lt;/p>&#xA;&#xA;@since SAX 2.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.helpers.XMLReaderAdapter&#xA;@see org.xml.sax.XMLReader&#xA;@see org.xml.sax.Parser&#xA;" annotatedElement="ebfbc17d-0f4d-47a2-8b4d-e97c428a32be"/>
                <interfaceRealization xmi:id="ce7fb034-0263-4554-a795-db864dc1a5e4" name="" supplier="789c2dbf-80f1-45d5-b14b-d081164f79b5" client="ebfbc17d-0f4d-47a2-8b4d-e97c428a32be" contract="789c2dbf-80f1-45d5-b14b-d081164f79b5"/>
                <interfaceRealization xmi:id="47c1504c-bcd8-4371-8997-57f7980ff14d" name="" supplier="a06461e3-e9fc-4f0b-823e-989881aead55" client="ebfbc17d-0f4d-47a2-8b4d-e97c428a32be" contract="a06461e3-e9fc-4f0b-823e-989881aead55"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a4fd6254-5e24-4d1a-aa91-061148501741" name="AttributeListAdapter" visibility="package" clientDependency="76b6ead3-6b82-46d9-8761-24115e484e89" isLeaf="true">
                  <ownedComment xmi:id="66a1751b-64ec-4f2e-9db3-89c33e6d9541" body="Adapt a SAX1 AttributeList as a SAX2 Attributes object.&#xA;&#xA;&lt;p>This class is in the Public Domain, and comes with NO&#xA;WARRANTY of any kind.&lt;/p>&#xA;&#xA;&lt;p>This wrapper class is used only when Namespace support&#xA;is disabled -- it provides pretty much a direct mapping&#xA;from SAX1 to SAX2, except that names and types are&#xA;interned whenever requested.&lt;/p>&#xA;" annotatedElement="a4fd6254-5e24-4d1a-aa91-061148501741"/>
                  <interfaceRealization xmi:id="76b6ead3-6b82-46d9-8761-24115e484e89" name="" supplier="da152948-2432-44fa-86ee-3ee759c51a33" client="a4fd6254-5e24-4d1a-aa91-061148501741" contract="da152948-2432-44fa-86ee-3ee759c51a33"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="db11b1f8-5490-4236-9f1b-2bb4ff1375b0" name="NamespaceSupport">
                <ownedComment xmi:id="c4f47406-2237-4bc9-8794-02838fc08359" body="Encapsulate Namespace logic for use by applications using SAX,&#xA;or internally by SAX drivers.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This class encapsulates the logic of Namespace processing: it&#xA;tracks the declarations currently in force for each context and&#xA;automatically processes qualified XML names into their Namespace&#xA;parts; it can also be used in reverse for generating XML qnames&#xA;from Namespaces.&lt;/p>&#xA;&#xA;&lt;p>Namespace support objects are reusable, but the reset method&#xA;must be invoked between each session.&lt;/p>&#xA;&#xA;&lt;p>Here is a simple session:&lt;/p>&#xA;&#xA;&lt;pre>&#xA;String parts[] = new String[3];&#xA;NamespaceSupport support = new NamespaceSupport();&#xA;&#xA;support.pushContext();&#xA;support.declarePrefix(&quot;&quot;, &quot;http://www.w3.org/1999/xhtml&quot;);&#xA;support.declarePrefix(&quot;dc&quot;, &quot;http://www.purl.org/dc#&quot;);&#xA;&#xA;parts = support.processName(&quot;p&quot;, parts, false);&#xA;System.out.println(&quot;Namespace URI: &quot; + parts[0]);&#xA;System.out.println(&quot;Local name: &quot; + parts[1]);&#xA;System.out.println(&quot;Raw name: &quot; + parts[2]);&#xA;&#xA;parts = support.processName(&quot;dc:title&quot;, parts, false);&#xA;System.out.println(&quot;Namespace URI: &quot; + parts[0]);&#xA;System.out.println(&quot;Local name: &quot; + parts[1]);&#xA;System.out.println(&quot;Raw name: &quot; + parts[2]);&#xA;&#xA;support.popContext();&#xA;&lt;/pre>&#xA;&#xA;&lt;p>Note that this class is optimized for the use case where most&#xA;elements do not contain Namespace declarations: if the same&#xA;prefix/URI mapping is repeated for each context (for example), this&#xA;class will be somewhat less efficient.&lt;/p>&#xA;&#xA;&lt;p>Although SAX drivers (parsers) may choose to use this class to&#xA;implement namespace handling, they are not required to do so.&#xA;Applications must track namespace information themselves if they&#xA;want to use namespace information.&#xA;&#xA;@since SAX 2.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;" annotatedElement="db11b1f8-5490-4236-9f1b-2bb4ff1375b0"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c173d83b-98fb-4d7d-8467-be188e5225fd" name="Context" visibility="package" isLeaf="true">
                  <ownedComment xmi:id="9b5cc7ec-dd26-471d-a6c7-74b812ead52e" body="Internal class for a single Namespace context.&#xA;&#xA;&lt;p>This module caches and reuses Namespace contexts,&#xA;so the number allocated&#xA;will be equal to the element depth of the document, not to the total&#xA;number of elements (i.e. 5-10 rather than tens of thousands).&#xA;Also, data structures used to represent contexts are shared when&#xA;possible (child contexts without declarations) to further reduce&#xA;the amount of memory that's consumed.&#xA;&lt;/p>&#xA;" annotatedElement="c173d83b-98fb-4d7d-8467-be188e5225fd"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="37b212f8-bdf0-4f7f-919b-ae39f4f4dae0" name="DefaultHandler" clientDependency="e23352f0-d7e1-43e7-b954-b0464678f0c2 5c67eab7-03e9-4b47-8d7c-b213f1c07615 f662c1df-3f12-403f-9aeb-1e59ae257824 92f53013-f386-4d2e-b3ca-959f0f4be2ec">
                <ownedComment xmi:id="658037e8-d5dc-4ece-80e1-be2695e5c117" body="Default base class for SAX2 event handlers.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This class is available as a convenience base class for SAX2&#xA;applications: it provides default implementations for all of the&#xA;callbacks in the four core SAX2 handler classes:&lt;/p>&#xA;&#xA;&lt;ul>&#xA;&lt;li>{@link org.xml.sax.EntityResolver EntityResolver}&lt;/li>&#xA;&lt;li>{@link org.xml.sax.DTDHandler DTDHandler}&lt;/li>&#xA;&lt;li>{@link org.xml.sax.ContentHandler ContentHandler}&lt;/li>&#xA;&lt;li>{@link org.xml.sax.ErrorHandler ErrorHandler}&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;&lt;p>Application writers can extend this class when they need to&#xA;implement only part of an interface; parser writers can&#xA;instantiate this class to provide default handlers when the&#xA;application has not supplied its own.&lt;/p>&#xA;&#xA;&lt;p>This class replaces the deprecated SAX1&#xA;{@link org.xml.sax.HandlerBase HandlerBase} class.&lt;/p>&#xA;&#xA;@since SAX 2.0&#xA;@author David Megginson,&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.EntityResolver&#xA;@see org.xml.sax.DTDHandler&#xA;@see org.xml.sax.ContentHandler&#xA;@see org.xml.sax.ErrorHandler&#xA;" annotatedElement="37b212f8-bdf0-4f7f-919b-ae39f4f4dae0"/>
                <interfaceRealization xmi:id="5c67eab7-03e9-4b47-8d7c-b213f1c07615" name="" supplier="c88944e8-f26c-4709-85da-80e0b8567088" client="37b212f8-bdf0-4f7f-919b-ae39f4f4dae0" contract="c88944e8-f26c-4709-85da-80e0b8567088"/>
                <interfaceRealization xmi:id="e23352f0-d7e1-43e7-b954-b0464678f0c2" name="" supplier="be7e6eeb-a6c0-4743-809a-50b2c3167d14" client="37b212f8-bdf0-4f7f-919b-ae39f4f4dae0" contract="be7e6eeb-a6c0-4743-809a-50b2c3167d14"/>
                <interfaceRealization xmi:id="92f53013-f386-4d2e-b3ca-959f0f4be2ec" name="" supplier="a097ae78-9869-4a39-b48f-43ad9c449e2d" client="37b212f8-bdf0-4f7f-919b-ae39f4f4dae0" contract="a097ae78-9869-4a39-b48f-43ad9c449e2d"/>
                <interfaceRealization xmi:id="f662c1df-3f12-403f-9aeb-1e59ae257824" name="" supplier="e318caf1-552e-476f-9f5b-f24f70797339" client="37b212f8-bdf0-4f7f-919b-ae39f4f4dae0" contract="e318caf1-552e-476f-9f5b-f24f70797339"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="bccbc5f9-2398-4516-b54f-04302b33512b" name="XMLReaderAdapter" clientDependency="d7ae1e23-850c-40cf-9e4e-b62878fda709 02bfb942-bcf6-4d1a-a8ca-421b94f634a4">
                <ownedComment xmi:id="185dd49c-bc9b-4e45-947f-21daf626977b" body="Adapt a SAX2 XMLReader as a SAX1 Parser.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This class wraps a SAX2 {@link org.xml.sax.XMLReader XMLReader}&#xA;and makes it act as a SAX1 {@link org.xml.sax.Parser Parser}.  The XMLReader&#xA;must support a true value for the&#xA;http://xml.org/sax/features/namespace-prefixes property or parsing will fail&#xA;with a {@link org.xml.sax.SAXException SAXException}; if the XMLReader&#xA;supports a false value for the http://xml.org/sax/features/namespaces&#xA;property, that will also be used to improve efficiency.&lt;/p>&#xA;&#xA;@since SAX 2.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.Parser&#xA;@see org.xml.sax.XMLReader&#xA;" annotatedElement="bccbc5f9-2398-4516-b54f-04302b33512b"/>
                <interfaceRealization xmi:id="d7ae1e23-850c-40cf-9e4e-b62878fda709" name="" supplier="de9d4de4-0aaa-4e25-b97d-27576e053a4a" client="bccbc5f9-2398-4516-b54f-04302b33512b" contract="de9d4de4-0aaa-4e25-b97d-27576e053a4a"/>
                <interfaceRealization xmi:id="02bfb942-bcf6-4d1a-a8ca-421b94f634a4" name="" supplier="a097ae78-9869-4a39-b48f-43ad9c449e2d" client="bccbc5f9-2398-4516-b54f-04302b33512b" contract="a097ae78-9869-4a39-b48f-43ad9c449e2d"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="27101afb-160c-4e86-a4d4-54241b4cf781" name="AttributesAdapter" visibility="package" clientDependency="08fb7ba3-e604-405a-88f3-7825ef2b73ee" isLeaf="true">
                  <ownedComment xmi:id="35a9800b-be1b-4eb8-a88e-a7d674a58a17" body="Internal class to wrap a SAX2 Attributes object for SAX1.&#xA;" annotatedElement="27101afb-160c-4e86-a4d4-54241b4cf781"/>
                  <interfaceRealization xmi:id="08fb7ba3-e604-405a-88f3-7825ef2b73ee" name="" supplier="0c8011d9-76c6-42ab-9a51-0ac787e7b480" client="27101afb-160c-4e86-a4d4-54241b4cf781" contract="0c8011d9-76c6-42ab-9a51-0ac787e7b480"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="a71713cc-3d15-44f3-a7c9-8e2d0a2fd9fe" name="ParserFactory">
                <ownedComment xmi:id="8fbdfbbd-a089-4c04-b0de-ac3926292a4d" body="Java-specific class for dynamically loading SAX parsers.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&lt;strong>Note:&lt;/strong> This class is designed to work with the now-deprecated&#xA;SAX1 {@link org.xml.sax.Parser Parser} class.  SAX2 applications should use&#xA;{@link org.xml.sax.helpers.XMLReaderFactory XMLReaderFactory} instead.&lt;/p>&#xA;&#xA;&lt;p>ParserFactory is not part of the platform-independent definition&#xA;of SAX; it is an additional convenience class designed&#xA;specifically for Java XML application writers.  SAX applications&#xA;can use the static methods in this class to allocate a SAX parser&#xA;dynamically at run-time based either on the value of the&#xA;`org.xml.sax.parser' system property or on a string containing the class&#xA;name.&lt;/p>&#xA;&#xA;&lt;p>Note that the application still requires an XML parser that&#xA;implements SAX1.&lt;/p>&#xA;&#xA;@deprecated This class works with the deprecated&#xA;{@link org.xml.sax.Parser Parser}&#xA;interface.&#xA;@since SAX 1.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;" annotatedElement="a71713cc-3d15-44f3-a7c9-8e2d0a2fd9fe"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="aaf82477-8cee-46d8-9752-4a4e00f06635" name="XMLFilterImpl" clientDependency="f85ec165-9a14-4cb6-8c8f-d65a135d4b19 b242a95c-c872-4afe-972f-b129dd5a048c d5965d45-c991-41e8-8115-4d8adfbca9c0 a48de4d7-c846-4c45-a8a2-095d0095659d d89195f0-0ab2-4554-88a1-168277933aca">
                <ownedComment xmi:id="e939304a-f074-4a3b-8c99-41699bc610f2" body="Base class for deriving an XML filter.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This class is designed to sit between an {@link org.xml.sax.XMLReader&#xA;XMLReader} and the client application's event handlers.  By default, it&#xA;does nothing but pass requests up to the reader and events&#xA;on to the handlers unmodified, but subclasses can override&#xA;specific methods to modify the event stream or the configuration&#xA;requests as they pass through.&lt;/p>&#xA;&#xA;@since SAX 2.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.XMLFilter&#xA;@see org.xml.sax.XMLReader&#xA;@see org.xml.sax.EntityResolver&#xA;@see org.xml.sax.DTDHandler&#xA;@see org.xml.sax.ContentHandler&#xA;@see org.xml.sax.ErrorHandler&#xA;" annotatedElement="aaf82477-8cee-46d8-9752-4a4e00f06635"/>
                <interfaceRealization xmi:id="b242a95c-c872-4afe-972f-b129dd5a048c" name="" supplier="58596e29-a2bb-4f88-9a83-2565398be9cc" client="aaf82477-8cee-46d8-9752-4a4e00f06635" contract="58596e29-a2bb-4f88-9a83-2565398be9cc"/>
                <interfaceRealization xmi:id="d5965d45-c991-41e8-8115-4d8adfbca9c0" name="" supplier="c88944e8-f26c-4709-85da-80e0b8567088" client="aaf82477-8cee-46d8-9752-4a4e00f06635" contract="c88944e8-f26c-4709-85da-80e0b8567088"/>
                <interfaceRealization xmi:id="a48de4d7-c846-4c45-a8a2-095d0095659d" name="" supplier="be7e6eeb-a6c0-4743-809a-50b2c3167d14" client="aaf82477-8cee-46d8-9752-4a4e00f06635" contract="be7e6eeb-a6c0-4743-809a-50b2c3167d14"/>
                <interfaceRealization xmi:id="f85ec165-9a14-4cb6-8c8f-d65a135d4b19" name="" supplier="a097ae78-9869-4a39-b48f-43ad9c449e2d" client="aaf82477-8cee-46d8-9752-4a4e00f06635" contract="a097ae78-9869-4a39-b48f-43ad9c449e2d"/>
                <interfaceRealization xmi:id="d89195f0-0ab2-4554-88a1-168277933aca" name="" supplier="e318caf1-552e-476f-9f5b-f24f70797339" client="aaf82477-8cee-46d8-9752-4a4e00f06635" contract="e318caf1-552e-476f-9f5b-f24f70797339"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="5662d8e6-731d-459a-a202-614ee59b95fa" name="AttributeListImpl" clientDependency="6fbaee7b-c9c6-4b59-8ccb-52a8e8c2e3dc">
                <ownedComment xmi:id="8eea90a1-9bc0-4c92-ad67-f56c345f87ab" body="Default implementation for AttributeList.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>AttributeList implements the deprecated SAX1 {@link&#xA;org.xml.sax.AttributeList AttributeList} interface, and has been&#xA;replaced by the new SAX2 {@link org.xml.sax.helpers.AttributesImpl&#xA;AttributesImpl} interface.&lt;/p>&#xA;&#xA;&lt;p>This class provides a convenience implementation of the SAX&#xA;{@link org.xml.sax.AttributeList AttributeList} interface.  This&#xA;implementation is useful both for SAX parser writers, who can use&#xA;it to provide attributes to the application, and for SAX application&#xA;writers, who can use it to create a persistent copy of an element's&#xA;attribute specifications:&lt;/p>&#xA;&#xA;&lt;pre>&#xA;private AttributeList myatts;&#xA;&#xA;public void startElement (String name, AttributeList atts)&#xA;{&#xA;create a persistent copy of the attribute list&#xA;for use outside this method&#xA;myatts = new AttributeListImpl(atts);&#xA;[...]&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p>Please note that SAX parsers are not required to use this&#xA;class to provide an implementation of AttributeList; it is&#xA;supplied only as an optional convenience.  In particular,&#xA;parser writers are encouraged to invent more efficient&#xA;implementations.&lt;/p>&#xA;&#xA;@deprecated This class implements a deprecated interface,&#xA;{@link org.xml.sax.AttributeList AttributeList};&#xA;that interface has been replaced by&#xA;{@link org.xml.sax.Attributes Attributes},&#xA;which is implemented in the&#xA;{@link org.xml.sax.helpers.AttributesImpl&#xA;AttributesImpl} helper class.&#xA;@since SAX 1.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.AttributeList&#xA;@see org.xml.sax.DocumentHandler#startElement&#xA;" annotatedElement="5662d8e6-731d-459a-a202-614ee59b95fa"/>
                <interfaceRealization xmi:id="6fbaee7b-c9c6-4b59-8ccb-52a8e8c2e3dc" name="" supplier="0c8011d9-76c6-42ab-9a51-0ac787e7b480" client="5662d8e6-731d-459a-a202-614ee59b95fa" contract="0c8011d9-76c6-42ab-9a51-0ac787e7b480"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="181e9bcc-bf96-4a37-a943-abf0cda8b9b0" name="AttributesImpl" clientDependency="9ed05324-24f5-492e-a317-12ba4b586473">
                <ownedComment xmi:id="ecede9b8-fddb-4d0e-abb2-d69501f97d6a" body="Default implementation of the Attributes interface.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This class provides a default implementation of the SAX2&#xA;{@link org.xml.sax.Attributes Attributes} interface, with the&#xA;addition of manipulators so that the list can be modified or&#xA;reused.&lt;/p>&#xA;&#xA;&lt;p>There are two typical uses of this class:&lt;/p>&#xA;&#xA;&lt;ol>&#xA;&lt;li>to take a persistent snapshot of an Attributes object&#xA;in a {@link org.xml.sax.ContentHandler#startElement startElement} event; or&lt;/li>&#xA;&lt;li>to construct or modify an Attributes object in a SAX2 driver or filter.&lt;/li>&#xA;&lt;/ol>&#xA;&#xA;&lt;p>This class replaces the now-deprecated SAX1 {@link&#xA;org.xml.sax.helpers.AttributeListImpl AttributeListImpl}&#xA;class; in addition to supporting the updated Attributes&#xA;interface rather than the deprecated {@link org.xml.sax.AttributeList&#xA;AttributeList} interface, it also includes a much more efficient&#xA;implementation using a single array rather than a set of Vectors.&lt;/p>&#xA;&#xA;@since SAX 2.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;" annotatedElement="181e9bcc-bf96-4a37-a943-abf0cda8b9b0"/>
                <interfaceRealization xmi:id="9ed05324-24f5-492e-a317-12ba4b586473" name="" supplier="da152948-2432-44fa-86ee-3ee759c51a33" client="181e9bcc-bf96-4a37-a943-abf0cda8b9b0" contract="da152948-2432-44fa-86ee-3ee759c51a33"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="2f8eae5e-f3e1-4e43-8ffa-3751a133b231" name="XMLReaderFactory" isLeaf="true">
                <ownedComment xmi:id="bd3164a8-8871-44da-82dc-6ec1ff7f3444" body="Factory for creating an XML reader.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This class contains static methods for creating an XML reader&#xA;from an explicit class name, or based on runtime defaults:&lt;/p>&#xA;&#xA;&lt;pre>&#xA;try {&#xA;XMLReader myReader = XMLReaderFactory.createXMLReader();&#xA;} catch (SAXException e) {&#xA;System.err.println(e.getMessage());&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p>&lt;strong>Note to Distributions bundled with parsers:&lt;/strong>&#xA;You should modify the implementation of the no-arguments&#xA;&lt;em>createXMLReader&lt;/em> to handle cases where the external&#xA;configuration mechanisms aren't set up.  That method should do its&#xA;best to return a parser when one is in the class path, even when&#xA;nothing bound its class name to &lt;code>org.xml.sax.driver&lt;/code> so&#xA;those configuration mechanisms would see it.&lt;/p>&#xA;&#xA;@since SAX 2.0&#xA;@author David Megginson, David Brownell&#xA;@version 2.0.1 (sax2r2)&#xA;" annotatedElement="2f8eae5e-f3e1-4e43-8ffa-3751a133b231"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="da152948-2432-44fa-86ee-3ee759c51a33" name="Attributes" isAbstract="true">
              <ownedComment xmi:id="d312439f-2c33-4ba0-81d2-81e735727b88" body="Interface for a list of XML attributes.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This interface allows access to a list of attributes in&#xA;three different ways:&lt;/p>&#xA;&#xA;&lt;ol>&#xA;&lt;li>by attribute index;&lt;/li>&#xA;&lt;li>by Namespace-qualified name; or&lt;/li>&#xA;&lt;li>by qualified (prefixed) name.&lt;/li>&#xA;&lt;/ol>&#xA;&#xA;&lt;p>The list will not contain attributes that were declared&#xA;#IMPLIED but not specified in the start tag.  It will also not&#xA;contain attributes used as Namespace declarations (xmlns*) unless&#xA;the &lt;code>http://xml.org/sax/features/namespace-prefixes&lt;/code>&#xA;feature is set to &lt;var>true&lt;/var> (it is &lt;var>false&lt;/var> by&#xA;default).&#xA;Because SAX2 conforms to the original &quot;Namespaces in XML&quot;&#xA;recommendation, it normally does not&#xA;give namespace declaration attributes a namespace URI.&#xA;&lt;/p>&#xA;&#xA;&lt;p>Some SAX2 parsers may support using an optional feature flag&#xA;(&lt;code>http://xml.org/sax/features/xmlns-uris&lt;/code>) to request&#xA;that those attributes be given URIs, conforming to a later&#xA;backwards-incompatible revision of that recommendation.  (The&#xA;attribute's &quot;local name&quot; will be the prefix, or &quot;xmlns&quot; when&#xA;defining a default element namespace.)  For portability, handler&#xA;code should always resolve that conflict, rather than requiring&#xA;parsers that can change the setting of that feature flag.  &lt;/p>&#xA;&#xA;&lt;p>If the namespace-prefixes feature (see above) is&#xA;&lt;var>false&lt;/var>, access by qualified name may not be available; if&#xA;the &lt;code>http://xml.org/sax/features/namespaces&lt;/code> feature is&#xA;&lt;var>false&lt;/var>, access by Namespace-qualified names may not be&#xA;available.&lt;/p>&#xA;&#xA;&lt;p>This interface replaces the now-deprecated SAX1 {@link&#xA;org.xml.sax.AttributeList AttributeList} interface, which does not&#xA;contain Namespace support.  In addition to Namespace support, it&#xA;adds the &lt;var>getIndex&lt;/var> methods (below).&lt;/p>&#xA;&#xA;&lt;p>The order of attributes in the list is unspecified, and will&#xA;vary from implementation to implementation.&lt;/p>&#xA;&#xA;@since SAX 2.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.helpers.AttributesImpl&#xA;@see org.xml.sax.ext.DeclHandler#attributeDecl&#xA;" annotatedElement="da152948-2432-44fa-86ee-3ee759c51a33"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="c88944e8-f26c-4709-85da-80e0b8567088" name="EntityResolver" isAbstract="true">
              <ownedComment xmi:id="7ed2e681-8951-4566-a7da-c0fee4984e65" body="Basic interface for resolving entities.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>If a SAX application needs to implement customized handling&#xA;for external entities, it must implement this interface and&#xA;register an instance with the SAX driver using the&#xA;{@link org.xml.sax.XMLReader#setEntityResolver setEntityResolver}&#xA;method.&lt;/p>&#xA;&#xA;&lt;p>The XML reader will then allow the application to intercept any&#xA;external entities (including the external DTD subset and external&#xA;parameter entities, if any) before including them.&lt;/p>&#xA;&#xA;&lt;p>Many SAX applications will not need to implement this interface,&#xA;but it will be especially useful for applications that build&#xA;XML documents from databases or other specialised input sources,&#xA;or for applications that use URI types other than URLs.&lt;/p>&#xA;&#xA;&lt;p>The following resolver would provide the application&#xA;with a special character stream for the entity with the system&#xA;identifier &quot;http://www.myhost.com/today&quot;:&lt;/p>&#xA;&#xA;&lt;pre>&#xA;import org.xml.sax.EntityResolver;&#xA;import org.xml.sax.InputSource;&#xA;&#xA;public class MyResolver implements EntityResolver {&#xA;public InputSource resolveEntity (String publicId, String systemId)&#xA;{&#xA;if (systemId.equals(&quot;http://www.myhost.com/today&quot;)) {&#xA;return a special input source&#xA;MyReader reader = new MyReader();&#xA;return new InputSource(reader);&#xA;} else {&#xA;use the default behaviour&#xA;return null;&#xA;}&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p>The application can also use this interface to redirect system&#xA;identifiers to local URIs or to look up replacements in a catalog&#xA;(possibly by using the public identifier).&lt;/p>&#xA;&#xA;@since SAX 1.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.XMLReader#setEntityResolver&#xA;@see org.xml.sax.InputSource&#xA;" annotatedElement="c88944e8-f26c-4709-85da-80e0b8567088"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="0c8011d9-76c6-42ab-9a51-0ac787e7b480" name="AttributeList" isAbstract="true">
              <ownedComment xmi:id="32d16d4d-b9c4-4aae-9adc-ef45bd806588" body="Interface for an element's attribute specifications.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This is the original SAX1 interface for reporting an element's&#xA;attributes.  Unlike the new {@link org.xml.sax.Attributes Attributes}&#xA;interface, it does not support Namespace-related information.&lt;/p>&#xA;&#xA;&lt;p>When an attribute list is supplied as part of a&#xA;{@link org.xml.sax.DocumentHandler#startElement startElement}&#xA;event, the list will return valid results only during the&#xA;scope of the event; once the event handler returns control&#xA;to the parser, the attribute list is invalid.  To save a&#xA;persistent copy of the attribute list, use the SAX1&#xA;{@link org.xml.sax.helpers.AttributeListImpl AttributeListImpl}&#xA;helper class.&lt;/p>&#xA;&#xA;&lt;p>An attribute list includes only attributes that have been&#xA;specified or defaulted: #IMPLIED attributes will not be included.&lt;/p>&#xA;&#xA;&lt;p>There are two ways for the SAX application to obtain information&#xA;from the AttributeList.  First, it can iterate through the entire&#xA;list:&lt;/p>&#xA;&#xA;&lt;pre>&#xA;public void startElement (String name, AttributeList atts) {&#xA;for (int i = 0; i &lt; atts.getLength(); i++) {&#xA;String name = atts.getName(i);&#xA;String type = atts.getType(i);&#xA;String value = atts.getValue(i);&#xA;[...]&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p>(Note that the result of getLength() will be zero if there&#xA;are no attributes.)&#xA;&#xA;&lt;p>As an alternative, the application can request the value or&#xA;type of specific attributes:&lt;/p>&#xA;&#xA;&lt;pre>&#xA;public void startElement (String name, AttributeList atts) {&#xA;String identifier = atts.getValue(&quot;id&quot;);&#xA;String label = atts.getValue(&quot;label&quot;);&#xA;[...]&#xA;}&#xA;&lt;/pre>&#xA;&#xA;@deprecated This interface has been replaced by the SAX2&#xA;{@link org.xml.sax.Attributes Attributes}&#xA;interface, which includes Namespace support.&#xA;@since SAX 1.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.DocumentHandler#startElement startElement&#xA;@see org.xml.sax.helpers.AttributeListImpl AttributeListImpl&#xA;" annotatedElement="0c8011d9-76c6-42ab-9a51-0ac787e7b480"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="789c2dbf-80f1-45d5-b14b-d081164f79b5" name="XMLReader" isAbstract="true">
              <ownedComment xmi:id="20967b2e-4755-40fb-b0be-cccc6d46975f" body="Interface for reading an XML document using callbacks.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&lt;strong>Note:&lt;/strong> despite its name, this interface does&#xA;&lt;em>not&lt;/em> extend the standard Java {@link java.io.Reader Reader}&#xA;interface, because reading XML is a fundamentally different activity&#xA;than reading character data.&lt;/p>&#xA;&#xA;&lt;p>XMLReader is the interface that an XML parser's SAX2 driver must&#xA;implement.  This interface allows an application to set and&#xA;query features and properties in the parser, to register&#xA;event handlers for document processing, and to initiate&#xA;a document parse.&lt;/p>&#xA;&#xA;&lt;p>All SAX interfaces are assumed to be synchronous: the&#xA;{@link #parse parse} methods must not return until parsing&#xA;is complete, and readers must wait for an event-handler callback&#xA;to return before reporting the next event.&lt;/p>&#xA;&#xA;&lt;p>This interface replaces the (now deprecated) SAX 1.0 {@link&#xA;org.xml.sax.Parser Parser} interface.  The XMLReader interface&#xA;contains two important enhancements over the old Parser&#xA;interface (as well as some minor ones):&lt;/p>&#xA;&#xA;&lt;ol>&#xA;&lt;li>it adds a standard way to query and set features and&#xA;properties; and&lt;/li>&#xA;&lt;li>it adds Namespace support, which is required for many&#xA;higher-level XML standards.&lt;/li>&#xA;&lt;/ol>&#xA;&#xA;&lt;p>There are adapters available to convert a SAX1 Parser to&#xA;a SAX2 XMLReader and vice-versa.&lt;/p>&#xA;&#xA;@since SAX 2.0&#xA;@author David Megginson&#xA;@version 2.0.1+ (sax2r3pre1)&#xA;@see org.xml.sax.XMLFilter&#xA;@see org.xml.sax.helpers.ParserAdapter&#xA;@see org.xml.sax.helpers.XMLReaderAdapter&#xA;" annotatedElement="789c2dbf-80f1-45d5-b14b-d081164f79b5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="e318caf1-552e-476f-9f5b-f24f70797339" name="ErrorHandler" isAbstract="true">
              <ownedComment xmi:id="3c507faa-b17e-4e6f-86a8-d2e75b306a63" body="Basic interface for SAX error handlers.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>If a SAX application needs to implement customized error&#xA;handling, it must implement this interface and then register an&#xA;instance with the XML reader using the&#xA;{@link org.xml.sax.XMLReader#setErrorHandler setErrorHandler}&#xA;method.  The parser will then report all errors and warnings&#xA;through this interface.&lt;/p>&#xA;&#xA;&lt;p>&lt;strong>WARNING:&lt;/strong> If an application does &lt;em>not&lt;/em>&#xA;register an ErrorHandler, XML parsing errors will go unreported,&#xA;except that &lt;em>SAXParseException&lt;/em>s will be thrown for fatal errors.&#xA;In order to detect validity errors, an ErrorHandler that does something&#xA;with {@link #error error()} calls must be registered.&lt;/p>&#xA;&#xA;&lt;p>For XML processing errors, a SAX driver must use this interface&#xA;in preference to throwing an exception: it is up to the application&#xA;to decide whether to throw an exception for different types of&#xA;errors and warnings.  Note, however, that there is no requirement that&#xA;the parser continue to report additional errors after a call to&#xA;{@link #fatalError fatalError}.  In other words, a SAX driver class&#xA;may throw an exception after reporting any fatalError.&#xA;Also parsers may throw appropriate exceptions for non-XML errors.&#xA;For example, {@link XMLReader#parse XMLReader.parse()} would throw&#xA;an IOException for errors accessing entities or the document.&lt;/p>&#xA;&#xA;@since SAX 1.0&#xA;@author David Megginson&#xA;@version 2.0.1+ (sax2r3pre1)&#xA;@see org.xml.sax.XMLReader#setErrorHandler&#xA;@see org.xml.sax.SAXParseException&#xA;" annotatedElement="e318caf1-552e-476f-9f5b-f24f70797339"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="64d26046-f170-41c5-86f4-ca2ce1e788e3" name="Locator" isAbstract="true">
              <ownedComment xmi:id="7d1cd1f9-f462-45bb-af2e-3775f7770e80" body="Interface for associating a SAX event with a document location.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>If a SAX parser provides location information to the SAX&#xA;application, it does so by implementing this interface and then&#xA;passing an instance to the application using the content&#xA;handler's {@link org.xml.sax.ContentHandler#setDocumentLocator&#xA;setDocumentLocator} method.  The application can use the&#xA;object to obtain the location of any other SAX event&#xA;in the XML source document.&lt;/p>&#xA;&#xA;&lt;p>Note that the results returned by the object will be valid only&#xA;during the scope of each callback method: the application&#xA;will receive unpredictable results if it attempts to use the&#xA;locator at any other time, or after parsing completes.&lt;/p>&#xA;&#xA;&lt;p>SAX parsers are not required to supply a locator, but they are&#xA;very strongly encouraged to do so.  If the parser supplies a&#xA;locator, it must do so before reporting any other document events.&#xA;If no locator has been set by the time the application receives&#xA;the {@link org.xml.sax.ContentHandler#startDocument startDocument}&#xA;event, the application should assume that a locator is not&#xA;available.&lt;/p>&#xA;&#xA;@since SAX 1.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.ContentHandler#setDocumentLocator&#xA;" annotatedElement="64d26046-f170-41c5-86f4-ca2ce1e788e3"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="de9d4de4-0aaa-4e25-b97d-27576e053a4a" name="Parser" isAbstract="true">
              <ownedComment xmi:id="3434a1a5-be45-4492-b596-9ea5e5b55cb2" body="Basic interface for SAX (Simple API for XML) parsers.&#xA;&#xA;&lt;blockquote>&#xA;&lt;em>This module, both source code and documentation, is in the&#xA;Public Domain, and comes with &lt;strong>NO WARRANTY&lt;/strong>.&lt;/em>&#xA;See &lt;a href='http://www.saxproject.org'>http://www.saxproject.org&lt;/a>&#xA;for further information.&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>This was the main event supplier interface for SAX1; it has&#xA;been replaced in SAX2 by {@link org.xml.sax.XMLReader XMLReader},&#xA;which includes Namespace support and sophisticated configurability&#xA;and extensibility.&lt;/p>&#xA;&#xA;&lt;p>All SAX1 parsers must implement this basic interface: it allows&#xA;applications to register handlers for different types of events&#xA;and to initiate a parse from a URI, or a character stream.&lt;/p>&#xA;&#xA;&lt;p>All SAX1 parsers must also implement a zero-argument constructor&#xA;(though other constructors are also allowed).&lt;/p>&#xA;&#xA;&lt;p>SAX1 parsers are reusable but not re-entrant: the application&#xA;may reuse a parser object (possibly with a different input source)&#xA;once the first parse has completed successfully, but it may not&#xA;invoke the parse() methods recursively within a parse.&lt;/p>&#xA;&#xA;@deprecated This interface has been replaced by the SAX2&#xA;{@link org.xml.sax.XMLReader XMLReader}&#xA;interface, which includes Namespace support.&#xA;@since SAX 1.0&#xA;@author David Megginson&#xA;@version 2.0.1 (sax2r2)&#xA;@see org.xml.sax.EntityResolver&#xA;@see org.xml.sax.DTDHandler&#xA;@see org.xml.sax.DocumentHandler&#xA;@see org.xml.sax.ErrorHandler&#xA;@see org.xml.sax.HandlerBase&#xA;@see org.xml.sax.InputSource&#xA;" annotatedElement="de9d4de4-0aaa-4e25-b97d-27576e053a4a"/>
            </packagedElement>
          </packagedElement>
        </packagedElement>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="93623813-78a8-4f77-a9b0-d6326719e0d9" name="javax">
        <packagedElement xmi:type="uml:Package" xmi:id="d1aba8e4-f2bf-4829-9414-e4811770b63b" name="imageio">
          <packagedElement xmi:type="uml:Interface" xmi:id="1c6397bb-9eac-43e8-8a55-db85ed082375" name="IIOParamController" isAbstract="true">
            <ownedComment xmi:id="6bd4d860-5858-45c2-a15b-a7cfa9ea66d5" body="An interface to be implemented by objects that can determine the&#xA;settings of an &lt;code>IIOParam&lt;/code> object, either by putting up a&#xA;GUI to obtain values from a user, or by other means.  This&#xA;interface merely specifies a generic &lt;code>activate&lt;/code> method&#xA;that invokes the controller, without regard for how the controller&#xA;obtains values (&lt;i>i.e.&lt;/i>, whether the controller puts up a GUI&#xA;or merely computes a set of values is irrelevant to this&#xA;interface).&#xA;&#xA;&lt;p> Within the &lt;code>activate&lt;/code> method, a controller obtains&#xA;initial values by querying the &lt;code>IIOParam&lt;/code> object's&#xA;&lt;code>get&lt;/code> methods, modifies values by whatever means, then&#xA;invokes the &lt;code>IIOParam&lt;/code> object's &lt;code>set&lt;/code> methods&#xA;to modify the appropriate settings.  Normally, these&#xA;&lt;code>set&lt;/code> methods will be invoked all at once at a final&#xA;commit in order that a cancel operation not disturb existing&#xA;values.  In general, applications may expect that when the&#xA;&lt;code>activate&lt;/code> method returns &lt;code>true&lt;/code>, the&#xA;&lt;code>IIOParam&lt;/code> object is ready for use in a read or write&#xA;operation.&#xA;&#xA;&lt;p> Vendors may choose to provide GUIs for the&#xA;&lt;code>IIOParam&lt;/code> subclasses they define for a particular&#xA;plug-in.  These can be set up as default controllers in the&#xA;corresponding &lt;code>IIOParam&lt;/code> subclasses.&#xA;&#xA;&lt;p> Applications may override any default GUIs and provide their&#xA;own controllers embedded in their own framework.  All that is&#xA;required is that the&lt;code>activate&lt;/code> method behave modally&#xA;(not returning until either cancelled or committed), though it need&#xA;not put up an explicitly modal dialog.  Such a non-modal GUI&#xA;component would be coded roughly as follows:&#xA;&#xA;&lt;br>&#xA;&lt;pre>&#xA;class MyGUI extends SomeComponent implements IIOParamController {&#xA;&#xA;public MyGUI() {&#xA;...&#xA;setEnabled(false);&#xA;}&#xA;&#xA;public boolean activate(IIOParam param) {&#xA;disable other components if desired&#xA;setEnabled(true);&#xA;go to sleep until either cancelled or committed&#xA;boolean ret = false;&#xA;if (!cancelled) {&#xA;set values on param&#xA;ret = true;&#xA;}&#xA;setEnabled(false);&#xA;enable any components disabled above&#xA;return ret;&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p> Alternatively, an algorithmic process such as a database lookup&#xA;or the parsing of a command line could be used as a controller, in&#xA;which case the &lt;code>activate&lt;/code> method would simply look up or&#xA;compute the settings, call the &lt;code>IIOParam.setXXX&lt;/code>&#xA;methods, and return &lt;code>true&lt;/code>.&#xA;&#xA;@see IIOParam#setController&#xA;@see IIOParam#getController&#xA;@see IIOParam#getDefaultController&#xA;@see IIOParam#hasController&#xA;@see IIOParam#activateController&#xA;&#xA;@version 0.5&#xA;" annotatedElement="1c6397bb-9eac-43e8-8a55-db85ed082375"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="98edc2ae-8393-4e80-9cfa-09a593190e6d" name="event">
            <packagedElement xmi:type="uml:Interface" xmi:id="e5e64264-4864-4ef6-9aa9-e0b0c3d45ad6" name="IIOReadUpdateListener" isAbstract="true">
              <ownedComment xmi:id="0d33331a-5ad1-4b01-b598-5a59bee4ef74" body="An interface used by &lt;code>ImageReader&lt;/code> implementations to&#xA;notify callers of their image and thumbnail reading methods of&#xA;pixel updates.&#xA;&#xA;@see javax.imageio.ImageReader#addIIOReadUpdateListener&#xA;@see javax.imageio.ImageReader#removeIIOReadUpdateListener&#xA;&#xA;@version 0.5&#xA;" annotatedElement="e5e64264-4864-4ef6-9aa9-e0b0c3d45ad6"/>
              <generalization xmi:id="da691388-2a3a-4c93-a51d-558907a1f37e" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="58c232fc-f717-4003-a015-6c5daefd6beb" name="IIOWriteWarningListener" isAbstract="true">
              <ownedComment xmi:id="d79c47c0-7ca9-4e93-9029-a927ce2a02fb" body="An interface used by &lt;code>ImageWriter&lt;/code> implementations to&#xA;notify callers of their image and thumbnail reading methods of&#xA;warnings (non-fatal errors).  Fatal errors cause the relevant&#xA;read method to throw an &lt;code>IIOException&lt;/code>.&#xA;&#xA;&lt;p> Localization is handled by associating a &lt;code>Locale&lt;/code>&#xA;with each &lt;code>IIOWriteWarningListener&lt;/code> as it is registered&#xA;with an &lt;code>ImageWriter&lt;/code>.  It is up to the&#xA;&lt;code>ImageWriter&lt;/code> to provide localized messages.&#xA;&#xA;@see javax.imageio.ImageWriter#addIIOWriteWarningListener&#xA;@see javax.imageio.ImageWriter#removeIIOWriteWarningListener&#xA;&#xA;@version 0.5&#xA;" annotatedElement="58c232fc-f717-4003-a015-6c5daefd6beb"/>
              <generalization xmi:id="362d32d4-97ed-4b8d-8515-fd634695ecd7" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="e057d6bb-ac95-4917-8619-45fc6b3be584" name="IIOWriteProgressListener" isAbstract="true">
              <ownedComment xmi:id="3d2791a1-5a8d-4ab5-abd0-f2f27e6c1b9e" body="An interface used by &lt;code>ImageWriter&lt;/code> implementations to notify&#xA;callers of their image writing methods of progress.&#xA;&#xA;@see javax.imageio.ImageWriter#write&#xA;&#xA;@version 0.5&#xA;" annotatedElement="e057d6bb-ac95-4917-8619-45fc6b3be584"/>
              <generalization xmi:id="49f86a31-2aad-4eb3-ac80-87d8c94ac3cd" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="de0f1917-66ea-4eea-8fce-a2de1f42a582" name="IIOReadProgressListener" isAbstract="true">
              <ownedComment xmi:id="9ed69984-b0be-4565-b037-f4e44ca5e06c" body="An interface used by &lt;code>ImageReader&lt;/code> implementations to&#xA;notify callers of their image and thumbnail reading methods of&#xA;progress.&#xA;&#xA;&lt;p> This interface receives general indications of decoding&#xA;progress (via the &lt;code>imageProgress&lt;/code> and&#xA;&lt;code>thumbnailProgress&lt;/code> methods), and events indicating when&#xA;an entire image has been updated (via the&#xA;&lt;code>imageStarted&lt;/code>, &lt;code>imageComplete&lt;/code>,&#xA;&lt;code>thumbnailStarted&lt;/code> and &lt;code>thumbnailComplete&lt;/code>&#xA;methods).  Applications that wish to be informed of pixel updates&#xA;as they happen (for example, during progressive decoding), should&#xA;provide an &lt;code>IIOReadUpdateListener&lt;/code>.&#xA;&#xA;@see IIOReadUpdateListener&#xA;@see javax.imageio.ImageReader#addIIOReadProgressListener&#xA;@see javax.imageio.ImageReader#removeIIOReadProgressListener&#xA;&#xA;@version 0.5&#xA;" annotatedElement="de0f1917-66ea-4eea-8fce-a2de1f42a582"/>
              <generalization xmi:id="27cc8619-c011-45a5-81b1-f1eff8535de9" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="c7c83991-d20e-4cd5-888b-9765b1c7c93b" name="IIOReadWarningListener" isAbstract="true">
              <ownedComment xmi:id="fee5686a-412b-430c-9675-44768d74630b" body="An interface used by &lt;code>ImageReader&lt;/code> implementations to&#xA;notify callers of their image and thumbnail reading methods of&#xA;warnings (non-fatal errors).  Fatal errors cause the relevant&#xA;read method to throw an &lt;code>IIOException&lt;/code>.&#xA;&#xA;&lt;p> Localization is handled by associating a &lt;code>Locale&lt;/code>&#xA;with each &lt;code>IIOReadWarningListener&lt;/code> as it is registered&#xA;with an &lt;code>ImageReader&lt;/code>.  It is up to the&#xA;&lt;code>ImageReader&lt;/code> to provide localized messages.&#xA;&#xA;@see javax.imageio.ImageReader#addIIOReadWarningListener&#xA;@see javax.imageio.ImageReader#removeIIOReadWarningListener&#xA;&#xA;@version 0.5&#xA;" annotatedElement="c7c83991-d20e-4cd5-888b-9765b1c7c93b"/>
              <generalization xmi:id="1060f346-82dd-48ef-acb7-9782b30c5f90" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="904daa4e-2dd8-453e-8502-d96e70c6417f" name="IIOException">
            <ownedComment xmi:id="d159aa0a-409d-474a-a7fe-b7804b1dbb50" body="An exception class used for signaling run-time failure of reading&#xA;and writing operations.&#xA;&#xA;&lt;p> In addition to a message string, a reference to another&#xA;&lt;code>Throwable&lt;/code> (&lt;code>Error&lt;/code> or&#xA;&lt;code>Exception&lt;/code>) is maintained.  This reference, if&#xA;non-&lt;code>null&lt;/code>, refers to the event that caused this&#xA;exception to occur.  For example, an &lt;code>IOException&lt;/code> while&#xA;reading from a &lt;code>File&lt;/code> would be stored there.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="904daa4e-2dd8-453e-8502-d96e70c6417f"/>
            <generalization xmi:id="ce355b81-058b-49be-be3d-1d291f8324e6" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="e9ae3135-385f-4d3e-bacb-e85d187ceaa3" name="stream">
            <packagedElement xmi:type="uml:Class" xmi:id="a89c85ad-3a51-4688-ad83-2afad8d799d4" name="MemoryCache" visibility="package">
              <ownedComment xmi:id="a469c470-ca6e-4c69-b924-8f39a971c91e" body="Package-visible class consolidating common code for&#xA;&lt;code>MemoryCacheImageInputStream&lt;/code> and&#xA;&lt;code>MemoryCacheImageOutputStream&lt;/code>.&#xA;This class keeps an &lt;code>ArrayList&lt;/code> of 8K blocks,&#xA;loaded sequentially.  Blocks may only be disposed of&#xA;from the index 0 forward.  As blocks are freed, the&#xA;corresponding entries in the array list are set to&#xA;&lt;code>null&lt;/code>, but no compacting is performed.&#xA;This allows the index for each block to never change,&#xA;and the length of the cache is always the same as the&#xA;total amount of data ever cached.  Cached data is&#xA;therefore always contiguous from the point of last&#xA;disposal to the current length.&#xA;&#xA;&lt;p> The total number of blocks resident in the cache must not&#xA;exceed &lt;code>Integer.MAX_VALUE&lt;/code>.  In practice, the limit of&#xA;available memory will be exceeded long before this becomes an&#xA;issue, since a full cache would contain 8192*2^31 = 16 terabytes of&#xA;data.&#xA;&#xA;A &lt;code>MemoryCache&lt;/code> may be reused after a call&#xA;to &lt;code>reset()&lt;/code>.&#xA;" annotatedElement="a89c85ad-3a51-4688-ad83-2afad8d799d4"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ce820073-198c-42a7-9b03-e0a8c1e964dd" name="FileImageInputStream">
              <ownedComment xmi:id="0879bc1b-791e-45f2-8afe-fac9768b4286" body="An implementation of &lt;code>ImageInputStream&lt;/code> that gets its&#xA;input from a &lt;code>File&lt;/code> or &lt;code>RandomAccessFile&lt;/code>.&#xA;The file contents are assumed to be stable during the lifetime of&#xA;the object.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="ce820073-198c-42a7-9b03-e0a8c1e964dd"/>
              <generalization xmi:id="5757b0ae-08f7-452f-885c-322569048586" isSubstitutable="true" general="3013e795-304a-4642-9036-86d07f875e39"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="3013e795-304a-4642-9036-86d07f875e39" name="ImageInputStreamImpl" clientDependency="2abe1c18-d7e8-4b56-aff2-222bed87ed94" isAbstract="true">
              <ownedComment xmi:id="fb77c054-336b-48b1-9e26-5828ca96327a" body="An abstract class implementing the &lt;code>ImageInputStream&lt;/code> interface.&#xA;This class is designed to reduce the number of methods that must&#xA;be implemented by subclasses.&#xA;&#xA;&lt;p> In particular, this class handles most or all of the details of&#xA;byte order interpretation, buffering, mark/reset, discarding,&#xA;closing, and disposing.&#xA;" annotatedElement="3013e795-304a-4642-9036-86d07f875e39"/>
              <interfaceRealization xmi:id="2abe1c18-d7e8-4b56-aff2-222bed87ed94" name="" supplier="56aa6b67-1e88-44b8-b2d6-72be84bb009c" client="3013e795-304a-4642-9036-86d07f875e39" contract="56aa6b67-1e88-44b8-b2d6-72be84bb009c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7be6eda1-7f96-4694-ae4d-e494310a0bfb" name="IIOByteBuffer">
              <ownedComment xmi:id="e7de6d58-8a70-4332-a530-1bce8d533299" body="A class representing a mutable reference to an array of bytes and&#xA;an offset and length within that array.  &lt;code>IIOByteBuffer&lt;/code>&#xA;is used by &lt;code>ImageInputStream&lt;/code> to supply a sequence of bytes&#xA;to the caller, possibly with fewer copies than using the conventional&#xA;&lt;code>read&lt;/code> methods that take a user-supplied byte array.&#xA;&#xA;&lt;p> The byte array referenced by an &lt;code>IIOByteBuffer&lt;/code> will&#xA;generally be part of an internal data structure belonging to an&#xA;&lt;code>ImageReader&lt;/code> implementation; its contents should be&#xA;considered read-only and must not be modified.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="7be6eda1-7f96-4694-ae4d-e494310a0bfb"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8d225bb6-97ce-463c-b68e-5240260b5369" name="MemoryCacheImageOutputStream">
              <ownedComment xmi:id="f8ff7b14-d846-478f-a6a4-535972fd3672" body="An implementation of &lt;code>ImageOutputStream&lt;/code> that writes its&#xA;output to a regular &lt;code>OutputStream&lt;/code>.  A memory buffer is&#xA;used to cache at least the data between the discard position and&#xA;the current write position.  The only constructor takes an&#xA;&lt;code>OutputStream&lt;/code>, so this class may not be used for&#xA;read/modify/write operations.  Reading can occur only on parts of&#xA;the stream that have already been written to the cache and not&#xA;yet flushed.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="8d225bb6-97ce-463c-b68e-5240260b5369"/>
              <generalization xmi:id="311bd555-4f95-45c4-9b85-f66c941d6591" isSubstitutable="true" general="1799fbef-fa7c-4298-a962-f705f82666d4"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1799fbef-fa7c-4298-a962-f705f82666d4" name="ImageOutputStreamImpl" clientDependency="8cbb4b67-541b-4977-bbc4-ff9bd56f7272" isAbstract="true">
              <ownedComment xmi:id="72560a47-edd2-4f59-87d3-358e66d3ad8d" body="An abstract class implementing the &lt;code>ImageOutputStream&lt;/code> interface.&#xA;This class is designed to reduce the number of methods that must&#xA;be implemented by subclasses.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="1799fbef-fa7c-4298-a962-f705f82666d4"/>
              <generalization xmi:id="44be752b-03af-4451-a450-876658f09086" isSubstitutable="true" general="3013e795-304a-4642-9036-86d07f875e39"/>
              <interfaceRealization xmi:id="8cbb4b67-541b-4977-bbc4-ff9bd56f7272" name="" supplier="c6b3f595-a751-4938-ab34-2c59f285e727" client="1799fbef-fa7c-4298-a962-f705f82666d4" contract="c6b3f595-a751-4938-ab34-2c59f285e727"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="c6b3f595-a751-4938-ab34-2c59f285e727" name="ImageOutputStream" isAbstract="true">
              <ownedComment xmi:id="91373a94-911c-4201-a7db-a011bbaf1e01" body="A seekable output stream interface for use by&#xA;&lt;code>ImageWriter&lt;/code>s.  Various output destinations, such as&#xA;&lt;code>OutputStream&lt;/code>s and &lt;code>File&lt;/code>s, as well as&#xA;future fast I/O destinations may be &quot;wrapped&quot; by a suitable&#xA;implementation of this interface for use by the Image I/O API.&#xA;&#xA;&lt;p> Unlike a standard &lt;code>OutputStream&lt;/code>, ImageOutputStream&#xA;extends its counterpart, &lt;code>ImageInputStream&lt;/code>.  Thus it is&#xA;possible to read from the stream as it is being written.  The same&#xA;seek and flush positions apply to both reading and writing, although&#xA;the semantics for dealing with a non-zero bit offset before a byte-aligned&#xA;write are necessarily different from the semantics for dealing with&#xA;a non-zero bit offset before a byte-aligned read.  When reading bytes,&#xA;any bit offset is set to 0 before the read; when writing bytes, a&#xA;non-zero bit offset causes the remaining bits in the byte to be written&#xA;as 0s.  The byte-aligned write then starts at the next byte position.&#xA;&#xA;@see ImageInputStream&#xA;&#xA;@version 0.5&#xA;" annotatedElement="c6b3f595-a751-4938-ab34-2c59f285e727"/>
              <generalization xmi:id="679cac23-74dd-46db-8164-576019985f5f" isSubstitutable="true" general="56aa6b67-1e88-44b8-b2d6-72be84bb009c"/>
              <generalization xmi:id="a20bc375-4097-483e-8c3e-b9c4ce9197ce" isSubstitutable="true" general="dfd1d319-49a0-4fe5-a0e7-9b658c5d9c55"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8eb3424f-8c97-4ea7-9597-da7fdbd1190d" name="MemoryCacheImageInputStream">
              <ownedComment xmi:id="2770088d-ea74-4686-9fe2-15b06c14de1f" body="An implementation of &lt;code>ImageInputStream&lt;/code> that gets its&#xA;input from a regular &lt;code>InputStream&lt;/code>.  A memory buffer is&#xA;used to cache at least the data between the discard position and&#xA;the current read position.&#xA;&#xA;&lt;p> In general, it is preferable to use a&#xA;&lt;code>FileCacheImageInputStream&lt;/code> when reading from a regular&#xA;&lt;code>InputStream&lt;/code>.  This class is provided for cases where&#xA;it is not possible to create a writable temporary file.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="8eb3424f-8c97-4ea7-9597-da7fdbd1190d"/>
              <generalization xmi:id="80d68ada-b88e-4de8-a2b8-53fe692b3b93" isSubstitutable="true" general="3013e795-304a-4642-9036-86d07f875e39"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="851e6172-6d72-43e3-afab-e563e86d28b2" name="FileCacheImageOutputStream">
              <ownedComment xmi:id="227113c4-d798-4b87-8501-8c42707c8f59" body="An implementation of &lt;code>ImageOutputStream&lt;/code> that writes its&#xA;output to a regular &lt;code>OutputStream&lt;/code>.  A file is used to&#xA;cache data until it is flushed to the output stream.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="851e6172-6d72-43e3-afab-e563e86d28b2"/>
              <generalization xmi:id="10673d73-62a2-43fc-b0a6-be88f820118f" isSubstitutable="true" general="1799fbef-fa7c-4298-a962-f705f82666d4"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e6693c15-b51f-4b8a-a748-ad1a678efca7" name="FileImageOutputStream">
              <ownedComment xmi:id="039734cb-09d9-4d42-8349-a17ba37bcfbe" body="An implementation of &lt;code>ImageOutputStream&lt;/code> that writes its&#xA;output directly to a &lt;code>File&lt;/code> or&#xA;&lt;code>RandomAccessFile&lt;/code>.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="e6693c15-b51f-4b8a-a748-ad1a678efca7"/>
              <generalization xmi:id="171279e3-3957-49ca-9406-ab10aead2f55" isSubstitutable="true" general="1799fbef-fa7c-4298-a962-f705f82666d4"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="56aa6b67-1e88-44b8-b2d6-72be84bb009c" name="ImageInputStream" isAbstract="true">
              <ownedComment xmi:id="f266faed-07d6-4030-9807-4628f3da33c3" body="A seekable input stream interface for use by&#xA;&lt;code>ImageReader&lt;/code>s.  Various input sources, such as&#xA;&lt;code>InputStream&lt;/code>s and &lt;code>File&lt;/code>s,&#xA;as well as future fast I/O sources may be &quot;wrapped&quot; by a suitable&#xA;implementation of this interface for use by the Image I/O API.&#xA;&#xA;@see ImageInputStreamImpl&#xA;@see FileImageInputStream&#xA;@see FileCacheImageInputStream&#xA;@see MemoryCacheImageInputStream&#xA;&#xA;@version 0.5&#xA;" annotatedElement="56aa6b67-1e88-44b8-b2d6-72be84bb009c"/>
              <generalization xmi:id="4710d3e9-3057-4cc8-991f-ca38ec511819" isSubstitutable="true" general="ddbf85e6-73c0-419b-886a-3a984aa68e0d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="27b93cad-39ac-42d4-8b26-6c59a0fd885a" name="FileCacheImageInputStream">
              <ownedComment xmi:id="9567867a-86b8-4ff6-aa2d-ba2ca3ca95ce" body="An implementation of &lt;code>ImageInputStream&lt;/code> that gets its&#xA;input from a regular &lt;code>InputStream&lt;/code>.  A file is used to&#xA;cache previously read data.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="27b93cad-39ac-42d4-8b26-6c59a0fd885a"/>
              <generalization xmi:id="232a6932-d1e1-4b49-b22f-cea3649600bc" isSubstitutable="true" general="3013e795-304a-4642-9036-86d07f875e39"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="462c5f8c-f459-40b5-b348-75a7c7dd04d6" name="spi">
            <packagedElement xmi:type="uml:Class" xmi:id="50933b7a-2568-4491-b201-149933d69720" name="ImageInputStreamSpi" isAbstract="true">
              <ownedComment xmi:id="4f7fe5e8-f64b-4c33-a8ab-dd31bd19e48b" body="The service provider interface (SPI) for&#xA;&lt;code>ImageInputStream&lt;/code>s.  For more information on service&#xA;provider interfaces, see the class comment for the&#xA;&lt;code>IIORegistry&lt;/code> class.&#xA;&#xA;&lt;p> This interface allows arbitrary objects to be &quot;wrapped&quot; by&#xA;instances of &lt;code>ImageInputStream&lt;/code>.  For example,&#xA;a particular &lt;code>ImageInputStreamSpi&lt;/code> might allow&#xA;a generic &lt;code>InputStream&lt;/code> to be used as an input source;&#xA;another might take input from a &lt;code>URL&lt;/code>.&#xA;&#xA;&lt;p> By treating the creation of &lt;code>ImageInputStream&lt;/code>s as a&#xA;pluggable service, it becomes possible to handle future input&#xA;sources without changing the API.  Also, high-performance&#xA;implementations of &lt;code>ImageInputStream&lt;/code> (for example,&#xA;native implementations for a particular platform) can be installed&#xA;and used transparently by applications.&#xA;&#xA;@see IIORegistry&#xA;@see javax.imageio.stream.ImageInputStream&#xA;&#xA;@version 0.5&#xA;" annotatedElement="50933b7a-2568-4491-b201-149933d69720"/>
              <generalization xmi:id="e618c863-0a3c-4582-ae36-2711add75ab5" isSubstitutable="true" general="225fbe5f-7cbd-49eb-9600-323bec613778"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="79c6838f-cdf9-4c17-b506-b14cbc0a1769" name="PartialOrderIterator" visibility="package" clientDependency="d84d69b2-199f-49bd-8a12-adca19c5b0d4">
              <interfaceRealization xmi:id="d84d69b2-199f-49bd-8a12-adca19c5b0d4" name="" supplier="68be2fb3-d9b5-43e8-ba81-15535e34b87a" client="79c6838f-cdf9-4c17-b506-b14cbc0a1769" contract="68be2fb3-d9b5-43e8-ba81-15535e34b87a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e81b413d-2fa1-4439-93ad-788214257ca1" name="PartiallyOrderedSet" visibility="package">
              <ownedComment xmi:id="0917dd10-6ac4-4469-b836-05b0aa159cfe" body="A set of &lt;code>Object&lt;/code>s with pairwise orderings between them.&#xA;The &lt;code>iterator&lt;/code> method provides the elements in&#xA;topologically sorted order.  Elements participating in a cycle&#xA;are not returned.&#xA;&#xA;Unlike the &lt;code>SortedSet&lt;/code> and &lt;code>SortedMap&lt;/code>&#xA;interfaces, which require their elements to implement the&#xA;&lt;code>Comparable&lt;/code> interface, this class receives ordering&#xA;information via its &lt;code>setOrdering&lt;/code> and&#xA;&lt;code>unsetPreference&lt;/code> methods.  This difference is due to&#xA;the fact that the relevant ordering between elements is unlikely to&#xA;be inherent in the elements themselves; rather, it is set&#xA;dynamically accoring to application policy.  For example, in a&#xA;service provider registry situation, an application might allow the&#xA;user to set a preference order for service provider objects&#xA;supplied by a trusted vendor over those supplied by another.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="e81b413d-2fa1-4439-93ad-788214257ca1"/>
              <generalization xmi:id="07e5443c-ad70-4fbc-9712-21c863f87aa2" isSubstitutable="true" general="a44e7a8f-24fa-45cd-b665-af0b7a72a836"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="225fbe5f-7cbd-49eb-9600-323bec613778" name="IIOServiceProvider" clientDependency="dcfd9429-0f13-46af-8fb1-17c590cf63b3" isAbstract="true">
              <ownedComment xmi:id="1717488f-e828-4262-96c6-7e8c15a780c9" body="A superinterface for functionality common to all Image I/O service&#xA;provider interfaces (SPIs).  For more information on service&#xA;provider classes, see the class comment for the&#xA;&lt;code>IIORegistry&lt;/code> class.&#xA;&#xA;@see IIORegistry&#xA;@see javax.imageio.spi.ImageReaderSpi&#xA;@see javax.imageio.spi.ImageWriterSpi&#xA;@see javax.imageio.spi.ImageTranscoderSpi&#xA;@see javax.imageio.spi.ImageInputStreamSpi&#xA;&#xA;@version 0.5&#xA;" annotatedElement="225fbe5f-7cbd-49eb-9600-323bec613778"/>
              <interfaceRealization xmi:id="dcfd9429-0f13-46af-8fb1-17c590cf63b3" name="" supplier="f13008e3-1145-433d-baca-b679e9c6cb18" client="225fbe5f-7cbd-49eb-9600-323bec613778" contract="f13008e3-1145-433d-baca-b679e9c6cb18"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="cf52db45-2ad6-44c0-abe6-8104d41370e5" name="ImageWriterSpi" isAbstract="true">
              <ownedComment xmi:id="20f5ba14-7c55-42b0-ad67-3af59392bb21" body="The service provider interface (SPI) for &lt;code>ImageWriter&lt;/code>s.&#xA;For more information on service provider classes, see the class comment&#xA;for the &lt;code>IIORegistry&lt;/code> class.&#xA;&#xA;&lt;p> Each &lt;code>ImageWriterSpi&lt;/code> provides several types of information&#xA;about the &lt;code>ImageWriter&lt;/code> class with which it is associated.&#xA;&#xA;&lt;p> The name of the vendor who defined the SPI class and a&#xA;brief description of the class are available via the&#xA;&lt;code>getVendorName&lt;/code>, &lt;code>getDescription&lt;/code>,&#xA;and &lt;code>getVersion&lt;/code> methods.&#xA;These methods may be internationalized to provide locale-specific&#xA;output.  These methods are intended mainly to provide short,&#xA;human-writable information that might be used to organize a pop-up&#xA;menu or other list.&#xA;&#xA;&lt;p> Lists of format names, file suffixes, and MIME types associated&#xA;with the service may be obtained by means of the&#xA;&lt;code>getFormatNames&lt;/code>, &lt;code>getFileSuffixes&lt;/code>, and&#xA;&lt;code>getMIMEType&lt;/code> methods.  These methods may be used to&#xA;identify candidate &lt;code>ImageWriter&lt;/code>s for writing a&#xA;particular file or stream based on manual format selection, file&#xA;naming, or MIME associations.&#xA;&#xA;&lt;p> A more reliable way to determine which &lt;code>ImageWriter&lt;/code>s&#xA;are likely to be able to parse a particular data stream is provided&#xA;by the &lt;code>canEncodeImage&lt;/code> method.  This methods allows the&#xA;service provider to inspect the actual image contents.&#xA;&#xA;&lt;p> Finally, an instance of the &lt;code>ImageWriter&lt;/code> class&#xA;associated with this service provider may be obtained by calling&#xA;the &lt;code>createWriterInstance&lt;/code> method.  Any heavyweight&#xA;initialization, such as the loading of native libraries or creation&#xA;of large tables, should be deferred at least until the first&#xA;invocation of this method.&#xA;&#xA;@see IIORegistry&#xA;@see javax.imageio.ImageTypeSpecifier&#xA;@see javax.imageio.ImageWriter&#xA;&#xA;@version 0.5&#xA;" annotatedElement="cf52db45-2ad6-44c0-abe6-8104d41370e5"/>
              <generalization xmi:id="92317810-435c-45f3-9fb0-8160f4be736f" isSubstitutable="true" general="a081a30f-ddb0-4543-a82c-0bda0620d078"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="baa933c5-2a31-4ea7-b6bd-1b0c72d9d579" name="ImageOutputStreamSpi" isAbstract="true">
              <ownedComment xmi:id="ac88734e-bc24-4a71-8f1d-ba07f422722a" body="The service provider interface (SPI) for&#xA;&lt;code>ImageOutputStream&lt;/code>s.  For more information on service&#xA;provider interfaces, see the class comment for the&#xA;&lt;code>IIORegistry&lt;/code> class.&#xA;&#xA;&lt;p> This interface allows arbitrary objects to be &quot;wrapped&quot; by&#xA;instances of &lt;code>ImageOutputStream&lt;/code>.  For example, a&#xA;particular &lt;code>ImageOutputStreamSpi&lt;/code> might allow a generic&#xA;&lt;code>OutputStream&lt;/code> to be used as a destination; another&#xA;might output to a &lt;code>File&lt;/code> or to a device such as a serial&#xA;port.&#xA;&#xA;&lt;p> By treating the creation of &lt;code>ImageOutputStream&lt;/code>s as&#xA;a pluggable service, it becomes possible to handle future output&#xA;destinations without changing the API.  Also, high-performance&#xA;implementations of &lt;code>ImageOutputStream&lt;/code> (for example,&#xA;native implementations for a particular platform) can be installed&#xA;and used transparently by applications.&#xA;&#xA;@see IIORegistry&#xA;@see javax.imageio.stream.ImageOutputStream&#xA;&#xA;@version 0.5&#xA;" annotatedElement="baa933c5-2a31-4ea7-b6bd-1b0c72d9d579"/>
              <generalization xmi:id="1e5aa600-57d8-4f64-8a8b-4498229b587f" isSubstitutable="true" general="225fbe5f-7cbd-49eb-9600-323bec613778"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5d119de7-1533-493d-a002-daf30bf2888b" name="FilterIterator" visibility="package" clientDependency="ac34d6e9-c597-4ac7-8d9c-3fc00e2ed650">
              <ownedComment xmi:id="20b83880-bfde-4434-9b8e-46da462c575b" body="A class for wrapping &lt;code>Iterators&lt;/code> with a filter function.&#xA;This provides an iterator for a subset without duplication.&#xA;" annotatedElement="5d119de7-1533-493d-a002-daf30bf2888b"/>
              <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="aa3beca4-3572-411d-a77a-c6e6e23d3fe6" name="" parameter="b60fa0eb-53d0-4756-9808-3137afd3046d">
                <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="b60fa0eb-53d0-4756-9808-3137afd3046d" parameteredElement="4b525b37-4853-40db-b316-ac9ef7626b8b">
                  <ownedParameteredElement xmi:type="uml:Class" xmi:id="4b525b37-4853-40db-b316-ac9ef7626b8b" name="T" templateParameter="b60fa0eb-53d0-4756-9808-3137afd3046d"/>
                </ownedParameter>
              </ownedTemplateSignature>
              <interfaceRealization xmi:id="ac34d6e9-c597-4ac7-8d9c-3fc00e2ed650" name="" supplier="15581cb3-f33d-4deb-9456-fe83f0817c37" client="5d119de7-1533-493d-a002-daf30bf2888b" contract="15581cb3-f33d-4deb-9456-fe83f0817c37"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="50762bb8-06d1-44ab-a0e1-6f3f75f29c18" name="DigraphNode" visibility="package" clientDependency="aac3bbfe-5d35-43f3-a795-acedecb10f50 fa10813a-785d-44fa-b3a9-ce9d106cacc8">
              <ownedComment xmi:id="5b1a4e60-6352-467b-9351-3d1ac7bf1991" body="A node in a directed graph.  In addition to an arbitrary&#xA;&lt;code>Object&lt;/code> containing user data associated with the node,&#xA;each node maintains a &lt;code>Set&lt;/code>s of nodes which are pointed&#xA;to by the current node (available from &lt;code>getOutNodes&lt;/code>).&#xA;The in-degree of the node (that is, number of nodes that point to&#xA;the current node) may be queried.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="50762bb8-06d1-44ab-a0e1-6f3f75f29c18"/>
              <interfaceRealization xmi:id="aac3bbfe-5d35-43f3-a795-acedecb10f50" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="50762bb8-06d1-44ab-a0e1-6f3f75f29c18" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <interfaceRealization xmi:id="fa10813a-785d-44fa-b3a9-ce9d106cacc8" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="50762bb8-06d1-44ab-a0e1-6f3f75f29c18" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a081a30f-ddb0-4543-a82c-0bda0620d078" name="ImageReaderWriterSpi" isAbstract="true">
              <ownedComment xmi:id="5fd4aae4-fa2b-4290-9b61-f25db2c7b2f4" body="A superclass containing instance variables and methods common to&#xA;&lt;code>ImageReaderSpi&lt;/code> and &lt;code>ImageWriterSpi&lt;/code>.&#xA;&#xA;@see IIORegistry&#xA;@see ImageReaderSpi&#xA;@see ImageWriterSpi&#xA;&#xA;@version 0.5&#xA;" annotatedElement="a081a30f-ddb0-4543-a82c-0bda0620d078"/>
              <generalization xmi:id="6d670a47-6e86-431d-bade-f8b1b013aa83" isSubstitutable="true" general="225fbe5f-7cbd-49eb-9600-323bec613778"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a310ac8c-a4b3-42d0-9f29-a8b55093cd2f" name="ImageReaderSpi" isAbstract="true">
              <ownedComment xmi:id="58e20344-73b8-4bbf-ba49-b80eac0ce68f" body="The service provider interface (SPI) for &lt;code>ImageReader&lt;/code>s.&#xA;For more information on service provider classes, see the class comment&#xA;for the &lt;code>IIORegistry&lt;/code> class.&#xA;&#xA;&lt;p> Each &lt;code>ImageReaderSpi&lt;/code> provides several types of information&#xA;about the &lt;code>ImageReader&lt;/code> class with which it is associated.&#xA;&#xA;&lt;p> The name of the vendor who defined the SPI class and a&#xA;brief description of the class are available via the&#xA;&lt;code>getVendorName&lt;/code>, &lt;code>getDescription&lt;/code>,&#xA;and &lt;code>getVersion&lt;/code> methods.&#xA;These methods may be internationalized to provide locale-specific&#xA;output.  These methods are intended mainly to provide short,&#xA;human-readable information that might be used to organize a pop-up&#xA;menu or other list.&#xA;&#xA;&lt;p> Lists of format names, file suffixes, and MIME types associated&#xA;with the service may be obtained by means of the&#xA;&lt;code>getFormatNames&lt;/code>, &lt;code>getFileSuffixes&lt;/code>, and&#xA;&lt;code>getMIMETypes&lt;/code> methods.  These methods may be used to&#xA;identify candidate &lt;code>ImageReader&lt;/code>s for decoding a&#xA;particular file or stream based on manual format selection, file&#xA;naming, or MIME associations (for example, when accessing a file&#xA;over HTTP or as an email attachment).&#xA;&#xA;&lt;p> A more reliable way to determine which &lt;code>ImageReader&lt;/code>s&#xA;are likely to be able to parse a particular data stream is provided&#xA;by the &lt;code>canDecodeInput&lt;/code> method.  This methods allows the&#xA;service provider to inspect the actual stream contents.&#xA;&#xA;&lt;p> Finally, an instance of the &lt;code>ImageReader&lt;/code> class&#xA;associated with this service provider may be obtained by calling&#xA;the &lt;code>createReaderInstance&lt;/code> method.  Any heavyweight&#xA;initialization, such as the loading of native libraries or creation&#xA;of large tables, should be deferred at least until the first&#xA;invocation of this method.&#xA;&#xA;@see IIORegistry&#xA;@see javax.imageio.ImageReader&#xA;&#xA;@version 0.5&#xA;" annotatedElement="a310ac8c-a4b3-42d0-9f29-a8b55093cd2f"/>
              <generalization xmi:id="538379a7-33c3-43d9-b4d9-324d109054f4" isSubstitutable="true" general="a081a30f-ddb0-4543-a82c-0bda0620d078"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="57812711-c230-4239-b434-999fdca13faf" name="ImageTranscoderSpi" isAbstract="true">
              <ownedComment xmi:id="ddd0898a-e4ba-4820-82b0-325dfbc893d6" body="The service provider interface (SPI) for &lt;code>ImageTranscoder&lt;/code>s.&#xA;For more information on service provider classes, see the class comment&#xA;for the &lt;code>IIORegistry&lt;/code> class.&#xA;&#xA;@see IIORegistry&#xA;@see javax.imageio.ImageTranscoder&#xA;&#xA;@version 0.5&#xA;" annotatedElement="57812711-c230-4239-b434-999fdca13faf"/>
              <generalization xmi:id="2c12bede-24af-4b2c-a3d6-1b3b60889ed9" isSubstitutable="true" general="225fbe5f-7cbd-49eb-9600-323bec613778"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="f13008e3-1145-433d-baca-b679e9c6cb18" name="RegisterableService" isAbstract="true">
              <ownedComment xmi:id="3e7b1a55-6519-4af4-b651-b8911ef24589" body="An optional interface that may be provided by service provider&#xA;objects that will be registered with a&#xA;&lt;code>ServiceRegistry&lt;/code>.  If this interface is present,&#xA;notification of registration and deregistration will be performed.&#xA;&#xA;@see ServiceRegistry&#xA;&#xA;@version 0.5&#xA;" annotatedElement="f13008e3-1145-433d-baca-b679e9c6cb18"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d57df86f-8013-4eec-b18a-b2a5c9359c19" name="IIORegistry" isLeaf="true">
              <ownedComment xmi:id="1523917f-eeff-401d-9145-e695609a683c" body="A registry for service provider instances.  Service provider&#xA;classes may be detected at run time by means of meta-information in&#xA;the JAR files containing them.  The intent is that it be relatively&#xA;inexpensive to load and inspect all available service provider&#xA;classes.  These classes may them be used to locate and instantiate&#xA;more heavyweight classes that will perform actual work, in this&#xA;case instances of &lt;code>ImageReader&lt;/code>,&#xA;&lt;code>ImageWriter&lt;/code>, &lt;code>ImageTranscoder&lt;/code>,&#xA;&lt;code>ImageInputStream&lt;/code>, and &lt;code>ImageOutputStream&lt;/code>.&#xA;&#xA;&lt;p> Service providers found on the system classpath (&lt;i>e.g.&lt;/i>,&#xA;the &lt;code>jre/lib/ext&lt;/code> directory in Sun's implementation of&#xA;JDK) are automatically loaded as soon as this class is&#xA;instantiated.&#xA;&#xA;&lt;p> When the &lt;code>registerApplicationClasspathSpis&lt;/code> method&#xA;is called, service provider instances declared in the&#xA;meta-information section of JAR files on the application class path&#xA;are loaded.  To declare a service provider, a &lt;code>services&lt;/code>&#xA;subdirectory is placed within the &lt;code>META-INF&lt;/code> directory&#xA;that is present in every JAR file.  This directory contains a file&#xA;for each service provider interface that has one or more&#xA;implementation classes present in the JAR file.  For example, if&#xA;the JAR file contained a class named&#xA;&lt;code>com.mycompany.imageio.MyFormatReaderSpi&lt;/code> which&#xA;implements the &lt;code>ImageReaderSpi&lt;/code> interface, the JAR file&#xA;would contain a file named:&#xA;&#xA;&lt;pre>&#xA;META-INF/services/javax.imageio.spi.ImageReaderSpi&#xA;&lt;/pre>&#xA;&#xA;containing the line:&#xA;&#xA;&lt;pre>&#xA;com.mycompany.imageio.MyFormatReaderSpi&#xA;&lt;/pre>&#xA;&#xA;&lt;p> The service provider classes are intended to be lightweight&#xA;and quick to load.  Implementations of these interfaces&#xA;should avoid complex dependencies on other classes and on&#xA;native code.&#xA;&#xA;&lt;p> It is also possible to manually add service providers not found&#xA;automatically, as well as to remove those that are using the&#xA;interfaces of the &lt;code>ServiceRegistry&lt;/code> class.  Thus&#xA;the application may customize the contents of the registry as it&#xA;sees fit.&#xA;&#xA;&lt;p> For more details on declaring service providers, and the JAR&#xA;format in general, see the &lt;a&#xA;href=&quot;{@docRoot}/../guide/jar/jar.html&quot;>&#xA;JAR File Specification&lt;/a>.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="d57df86f-8013-4eec-b18a-b2a5c9359c19"/>
              <generalization xmi:id="cd9cd2bb-468f-4cc0-9a05-21ce9a94b81f" isSubstitutable="true" general="24bc2607-031b-402f-a1d0-a05144a01359"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2d5ef453-142c-4213-adbd-486b361ab897" name="SubRegistry" visibility="package">
              <ownedComment xmi:id="79e861c9-d8b8-4168-b862-b43ebde19970" body="A portion of a registry dealing with a single superclass or&#xA;interface.&#xA;" annotatedElement="2d5ef453-142c-4213-adbd-486b361ab897"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="24bc2607-031b-402f-a1d0-a05144a01359" name="ServiceRegistry">
              <ownedComment xmi:id="98858983-5d4c-4f12-98f4-a8cf9129834f" body="A registry for service provider instances.&#xA;&#xA;&lt;p> A &lt;i>service&lt;/i> is a well-known set of interfaces and (usually&#xA;abstract) classes.  A &lt;i>service provider&lt;/i> is a specific&#xA;implementation of a service.  The classes in a provider typically&#xA;implement the interface or subclass the class defined by the&#xA;service itself.&#xA;&#xA;&lt;p> Service providers are stored in one or more &lt;i>categories&lt;/i>,&#xA;each of which is defined by a class of interface (described by a&#xA;&lt;code>Class&lt;/code> object) that all of its members must implement.&#xA;The set of categories may be changed dynamically.&#xA;&#xA;&lt;p> Only a single instance of a given leaf class (that is, the&#xA;actual class returned by &lt;code>getClass()&lt;/code>, as opposed to any&#xA;inherited classes or interfaces) may be registered.  That is,&#xA;suppose that the&#xA;&lt;code>com.mycompany.mypkg.GreenServiceProvider&lt;/code> class&#xA;implements the &lt;code>com.mycompany.mypkg.MyService&lt;/code>&#xA;interface.  If a &lt;code>GreenServiceProvider&lt;/code> instance is&#xA;registered, it will be stored in the category defined by the&#xA;&lt;code>MyService&lt;/code> class.  If a new instance of&#xA;&lt;code>GreenServiceProvider&lt;/code> is registered, it will replace&#xA;the previous instance.  In practice, service provider objects are&#xA;usually singletons so this behavior is appropriate.&#xA;&#xA;&lt;p> To declare a service provider, a &lt;code>services&lt;/code>&#xA;subdirectory is placed within the &lt;code>META-INF&lt;/code> directory&#xA;that is present in every JAR file.  This directory contains a file&#xA;for each service provider interface that has one or more&#xA;implementation classes present in the JAR file.  For example, if&#xA;the JAR file contained a class named&#xA;&lt;code>com.mycompany.mypkg.MyServiceImpl&lt;/code> which implements the&#xA;&lt;code>javax.someapi.SomeService&lt;/code> interface, the JAR file&#xA;would contain a file named: &lt;pre>&#xA;META-INF/services/javax.someapi.SomeService &lt;/pre>&#xA;&#xA;containing the line:&#xA;&#xA;&lt;pre>&#xA;com.mycompany.mypkg.MyService&#xA;&lt;/pre>&#xA;&#xA;&lt;p> The service provider classes should be to be lightweight and&#xA;quick to load.  Implementations of these interfaces should avoid&#xA;complex dependencies on other classes and on native code. The usual&#xA;pattern for more complex services is to register a lightweight&#xA;proxy for the heavyweight service.&#xA;&#xA;&lt;p> An application may customize the contents of a registry as it&#xA;sees fit, so long as it has the appropriate runtime permission.&#xA;&#xA;&lt;p> For more details on declaring service providers, and the JAR&#xA;format in general, see the &lt;a&#xA;href=&quot;http://java.sun.com/products/jdk/1.3/docs/guide/jar/jar.html&quot;>&#xA;JAR File Specification&lt;/a>.&#xA;&#xA;@see RegisterableService&#xA;&#xA;@version 0.5&#xA;" annotatedElement="24bc2607-031b-402f-a1d0-a05144a01359"/>
              <nestedClassifier xmi:type="uml:Interface" xmi:id="c4fe13f2-bf62-4d1e-b9c0-7bccf2156808" name="Filter" isAbstract="true">
                <ownedComment xmi:id="b88db19c-a625-4c55-9acf-90c9b39cfeb3" body="A simple filter interface used by&#xA;&lt;code>ServiceRegistry.getServiceProviders&lt;/code> to select&#xA;providers matching an arbitrary criterion.  Classes that&#xA;implement this interface should be defined in order to make use&#xA;of the &lt;code>getServiceProviders&lt;/code> method of&#xA;&lt;code>ServiceRegistry&lt;/code> that takes a &lt;code>Filter&lt;/code>.&#xA;&#xA;@see ServiceRegistry#getServiceProviders(Class, ServiceRegistry.Filter, boolean)&#xA;" annotatedElement="c4fe13f2-bf62-4d1e-b9c0-7bccf2156808"/>
              </nestedClassifier>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="62bef43c-b140-4822-a097-60c75337f5f0" name="ImageWriter" clientDependency="465bced5-d4d2-436f-8d8b-a3193d5e3d87" isAbstract="true">
            <ownedComment xmi:id="544011c8-d2d4-4617-b070-c22acbd7b2db" body="An abstract superclass for encoding and writing images.  This class&#xA;must be subclassed by classes that write out images in the context&#xA;of the Java Image I/O framework.&#xA;&#xA;&lt;p> &lt;code>ImageWriter&lt;/code> objects are normally instantiated by&#xA;the service provider class for the specific format.  Service&#xA;provider classes are registered with the &lt;code>IIORegistry&lt;/code>,&#xA;which uses them for format recognition and presentation of&#xA;available format readers and writers.&#xA;&#xA;&lt;p>&#xA;&#xA;@see ImageReader&#xA;@see ImageWriteParam&#xA;@see javax.imageio.spi.IIORegistry&#xA;@see javax.imageio.spi.ImageWriterSpi&#xA;&#xA;@version 0.5&#xA;" annotatedElement="62bef43c-b140-4822-a097-60c75337f5f0"/>
            <interfaceRealization xmi:id="465bced5-d4d2-436f-8d8b-a3193d5e3d87" name="" supplier="23307db6-8bb5-4676-a347-c9994470ce6e" client="62bef43c-b140-4822-a097-60c75337f5f0" contract="23307db6-8bb5-4676-a347-c9994470ce6e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="b8e13453-7768-4dd7-8acc-cc72beb706e7" name="Iterator&lt;ImageTranscoder>">
            <templateBinding xmi:id="8d3f6172-6c98-409e-848d-41a6a584abb4" signature="0f8c6981-4608-4e07-a119-f77e4e17cb2d">
              <parameterSubstitution xmi:id="738f4bb5-c7eb-481d-aacf-9b01bc8a9d4d" formal="3b71f5d7-d328-40b6-8dcc-6484e179fd5e" actual="23307db6-8bb5-4676-a347-c9994470ce6e"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f5ca3c9a-e31b-4e03-a32d-ab6ed5df6217" name="ImageTypeSpecifier">
            <ownedComment xmi:id="017b44de-bc2f-4b8b-ab62-8e216735b72b" body="A class that allows the format of an image (in particular, its&#xA;&lt;code>SampleModel&lt;/code> and &lt;code>ColorModel&lt;/code>) to be&#xA;specified in a convenient manner.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="f5ca3c9a-e31b-4e03-a32d-ab6ed5df6217"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="072c8003-3ece-4ac2-8da1-36db293b2b78" name="Packed" visibility="package">
              <generalization xmi:id="2b18ae8f-70a0-4abb-a1ee-3bc781b4b1c3" isSubstitutable="true" general="f5ca3c9a-e31b-4e03-a32d-ab6ed5df6217"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="b3cfa8a6-6602-4029-9de7-4d0936a94490" name="Interleaved" visibility="package">
              <generalization xmi:id="6126982a-944e-4b84-ba64-b721b2017ca1" isSubstitutable="true" general="f5ca3c9a-e31b-4e03-a32d-ab6ed5df6217"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="caafb296-2af4-4a26-a9c6-04af473746b7" name="Banded" visibility="package">
              <generalization xmi:id="f7861aac-3ba3-491f-af91-31b4364e87f5" isSubstitutable="true" general="f5ca3c9a-e31b-4e03-a32d-ab6ed5df6217"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="7adf8d8a-fa41-4e06-9c83-8e2dcabcba44" name="Grayscale" visibility="package">
              <generalization xmi:id="17865139-7771-4c8c-b63c-6aae2568b0d5" isSubstitutable="true" general="f5ca3c9a-e31b-4e03-a32d-ab6ed5df6217"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="e77f2402-3c95-4deb-9af7-63155862f722" name="Indexed" visibility="package">
              <generalization xmi:id="e32cde27-2b5b-4b56-97e3-0b6ab8cd06ea" isSubstitutable="true" general="f5ca3c9a-e31b-4e03-a32d-ab6ed5df6217"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="55cfa553-1362-462b-9396-075c95cbe037" name="ImageWriteParam">
            <ownedComment xmi:id="256fe9ef-3abc-4093-b4a7-8f8dbb2aaac7" body="A class describing how a stream is to be encoded.  Instances of&#xA;this class or its subclasses are used to supply prescriptive&#xA;&quot;how-to&quot; information to instances of &lt;code>ImageWriter&lt;/code>.&#xA;&#xA;&lt;p> A plug-in for a specific image format may define a subclass of&#xA;this class, and return objects of that class from the&#xA;&lt;code>getDefaultWriteParam&lt;/code> method of its&#xA;&lt;code>ImageWriter&lt;/code> implementation.  For example, the built-in&#xA;JPEG writer plug-in will return instances of&#xA;&lt;code>javax.imageio.plugins.jpeg.JPEGImageWriteParam&lt;/code>.&#xA;&#xA;&lt;p> The region of the image to be written is determined by first&#xA;intersecting the actual bounds of the image with the rectangle&#xA;specified by &lt;code>IIOParam.setSourceRegion&lt;/code>, if any.  If the&#xA;resulting rectangle has a width or height of zero, the writer will&#xA;throw an &lt;code>IIOException&lt;/code>. If the intersection is&#xA;non-empty, writing will commence with the first subsampled pixel&#xA;and include additional pixels within the intersected bounds&#xA;according to the horizontal and vertical subsampling factors&#xA;specified by {@link IIOParam#setSourceSubsampling&#xA;&lt;code>IIOParam.setSourceSubsampling&lt;/code>}.&#xA;&#xA;&lt;p> Individual features such as tiling, progressive encoding, and&#xA;compression may be set in one of four modes.&#xA;&lt;code>MODE_DISABLED&lt;/code> disables the features;&#xA;&lt;code>MODE_DEFAULT&lt;/code> enables the feature with&#xA;writer-controlled parameter values; &lt;code>MODE_EXPLICIT&lt;/code>&#xA;enables the feature and allows the use of a &lt;code>set&lt;/code> method&#xA;to provide additional parameters; and&#xA;&lt;code>MODE_COPY_FROM_METADATA&lt;/code> copies relevant parameter&#xA;values from the stream and image metadata objects passed to the&#xA;writer.  The default for all features is&#xA;&lt;code>MODE_COPY_FROM_METADATA&lt;/code>.  Non-standard features&#xA;supplied in subclasses are encouraged, but not required to use a&#xA;similar scheme.&#xA;&#xA;&lt;p> Plug-in writers may extend the functionality of&#xA;&lt;code>ImageWriteParam&lt;/code> by providing a subclass that implements&#xA;additional, plug-in specific interfaces.  It is up to the plug-in&#xA;to document what interfaces are available and how they are to be&#xA;used.  Writers will silently ignore any extended features of an&#xA;&lt;code>ImageWriteParam&lt;/code> subclass of which they are not aware.&#xA;Also, they may ignore any optional features that they normally&#xA;disable when creating their own &lt;code>ImageWriteParam&lt;/code>&#xA;instances via &lt;code>getDefaultWriteParam&lt;/code>.&#xA;&#xA;&lt;p> Note that unless a query method exists for a capability, it must&#xA;be supported by all &lt;code>ImageWriter&lt;/code> implementations&#xA;(&lt;i>e.g.&lt;/i> progressive encoding is optional, but subsampling must be&#xA;supported).&#xA;&#xA;@version 0.5&#xA;&#xA;@see ImageReadParam&#xA;" annotatedElement="55cfa553-1362-462b-9396-075c95cbe037"/>
            <generalization xmi:id="4343c8ec-9dfd-4d56-a393-e60190f249d2" isSubstitutable="true" general="cebc87ca-b49f-46fb-9737-d36100a9fdc9"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="5e2be17e-04ac-469a-b07b-393cf70d822a" name="Iterator&lt;ImageWriter>">
            <templateBinding xmi:id="1144ab47-330f-47a0-bac9-7f63873235a8" signature="0f8c6981-4608-4e07-a119-f77e4e17cb2d">
              <parameterSubstitution xmi:id="ea6a5def-80ce-4b4e-9112-a35e998427a2" formal="3b71f5d7-d328-40b6-8dcc-6484e179fd5e" actual="62bef43c-b140-4822-a097-60c75337f5f0"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="15b35883-40f9-473c-b095-8a8a0c97aad9" name="ImageReadParam">
            <ownedComment xmi:id="05fa6b24-9a0c-445a-8a54-74a4a3f0eca6" body="A class describing how a stream is to be decoded.  Instances of&#xA;this class or its subclasses are used to supply prescriptive&#xA;&quot;how-to&quot; information to instances of &lt;code>ImageReader&lt;/code>.&#xA;&#xA;&lt;p> An image encoded as part of a file or stream may be thought of&#xA;extending out in multiple dimensions: the spatial dimensions of&#xA;width and height, a number of bands, and a number of progressive&#xA;decoding passes.  This class allows a contiguous (hyper)rectangular&#xA;subarea of the image in all of these dimensions to be selected for&#xA;decoding.  Additionally, the spatial dimensions may be subsampled&#xA;discontinuously.  Finally, color and format conversions may be&#xA;specified by controlling the &lt;code>ColorModel&lt;/code> and&#xA;&lt;code>SampleModel&lt;/code> of the destination image, either by&#xA;providing a &lt;code>BufferedImage&lt;/code> or by using an&#xA;&lt;code>ImageTypeSpecifier&lt;/code>.&#xA;&#xA;&lt;p> An &lt;code>ImageReadParam&lt;/code> object is used to specify how an&#xA;image, or a set of images, will be converted on input from&#xA;a stream in the context of the Java Image I/O framework.  A plug-in for a&#xA;specific image format will return instances of&#xA;&lt;code>ImageReadParam&lt;/code> from the&#xA;&lt;code>getDefaultReadParam&lt;/code> method of its&#xA;&lt;code>ImageReader&lt;/code> implementation.&#xA;&#xA;&lt;p> The state maintained by an instance of&#xA;&lt;code>ImageReadParam&lt;/code> is independent of any particular image&#xA;being decoded.  When actual decoding takes place, the values set in&#xA;the read param are combined with the actual properties of the image&#xA;being decoded from the stream and the destination&#xA;&lt;code>BufferedImage&lt;/code> that will receive the decoded pixel&#xA;data.  For example, the source region set using&#xA;&lt;code>setSourceRegion&lt;/code> will first be intersected with the&#xA;actual valid source area.  The result will be translated by the&#xA;value returned by &lt;code>getDestinationOffset&lt;/code>, and the&#xA;resulting rectangle intersected with the actual valid destination&#xA;area to yield the destination area that will be written.&#xA;&#xA;&lt;p> The parameters specified by an &lt;code>ImageReadParam&lt;/code> are&#xA;applied to an image as follows.  First, if a rendering size has&#xA;been set by &lt;code>setSourceRenderSize&lt;/code>, the entire decoded&#xA;image is rendered at the size given by&#xA;&lt;code>getSourceRenderSize&lt;/code>.  Otherwise, the image has its&#xA;natural size given by &lt;code>ImageReader.getWidth&lt;/code> and&#xA;&lt;code>ImageReader.getHeight&lt;/code>.&#xA;&#xA;&lt;p> Next, the image is clipped against the source region&#xA;specified by &lt;code>getSourceXOffset&lt;/code>, &lt;code>getSourceYOffset&lt;/code>,&#xA;&lt;code>getSourceWidth&lt;/code>, and &lt;code>getSourceHeight&lt;/code>.&#xA;&#xA;&lt;p> The resulting region is then subsampled according to the&#xA;factors given in {@link IIOParam#setSourceSubsampling&#xA;&lt;code>IIOParam.setSourceSubsampling&lt;/code>}.  The first pixel,&#xA;the number of pixels per row, and the number of rows all depend&#xA;on the subsampling settings.&#xA;Call the minimum X and Y coordinates of the resulting rectangle&#xA;(&lt;code>minX&lt;/code>, &lt;code>minY&lt;/code>), its width &lt;code>w&lt;/code>&#xA;and its height &lt;code>h&lt;/code>.&#xA;&#xA;&lt;p> This rectangle is offset by&#xA;(&lt;code>getDestinationOffset().x&lt;/code>,&#xA;&lt;code>getDestinationOffset().y&lt;/code>) and clipped against the&#xA;destination bounds.  If no destination image has been set, the&#xA;destination is defined to have a width of&#xA;&lt;code>getDestinationOffset().x&lt;/code> + &lt;code>w&lt;/code>, and a&#xA;height of &lt;code>getDestinationOffset().y&lt;/code> + &lt;code>h&lt;/code> so&#xA;that all pixels of the source region may be written to the&#xA;destination.&#xA;&#xA;&lt;p> Pixels that land, after subsampling, within the destination&#xA;image, and that are written in one of the progressive passes&#xA;specified by &lt;code>getSourceMinProgressivePass&lt;/code> and&#xA;&lt;code>getSourceNumProgressivePasses&lt;/code> are passed along to the&#xA;next step.&#xA;&#xA;&lt;p> Finally, the source samples of each pixel are mapped into&#xA;destination bands according to the algorithm described in the&#xA;comment for &lt;code>setDestinationBands&lt;/code>.&#xA;&#xA;&lt;p> Plug-in writers may extend the functionality of&#xA;&lt;code>ImageReadParam&lt;/code> by providing a subclass that implements&#xA;additional, plug-in specific interfaces.  It is up to the plug-in&#xA;to document what interfaces are available and how they are to be&#xA;used.  Readers will silently ignore any extended features of an&#xA;&lt;code>ImageReadParam&lt;/code> subclass of which they are not aware.&#xA;Also, they may ignore any optional features that they normally&#xA;disable when creating their own &lt;code>ImageReadParam&lt;/code>&#xA;instances via &lt;code>getDefaultReadParam&lt;/code>.&#xA;&#xA;&lt;p> Note that unless a query method exists for a capability, it must&#xA;be supported by all &lt;code>ImageReader&lt;/code> implementations&#xA;(&lt;i>e.g.&lt;/i> source render size is optional, but subsampling must be&#xA;supported).&#xA;&#xA;@version 0.5&#xA;&#xA;@see ImageReader&#xA;@see ImageWriter&#xA;@see ImageWriteParam&#xA;" annotatedElement="15b35883-40f9-473c-b095-8a8a0c97aad9"/>
            <generalization xmi:id="4f8dac98-06ec-4e1b-b1f9-0926258c8417" isSubstitutable="true" general="cebc87ca-b49f-46fb-9737-d36100a9fdc9"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="cebc87ca-b49f-46fb-9737-d36100a9fdc9" name="IIOParam" isAbstract="true">
            <ownedComment xmi:id="8d236510-d670-4851-ba2a-b0190115f140" body="A superclass of all classes describing how streams should be&#xA;decoded or encoded.  This class contains all the variables and&#xA;methods that are shared by &lt;code>ImageReadParam&lt;/code> and&#xA;&lt;code>ImageWriteParam&lt;/code>.&#xA;&#xA;&lt;p> This class provides mechanisms to specify a source region and a&#xA;destination region.  When reading, the source is the stream and&#xA;the in-memory image is the destination.  When writing, these are&#xA;reversed.  In the case of writing, destination regions may be used&#xA;only with a writer that supports pixel replacement.&#xA;&lt;p>&#xA;Decimation subsampling may be specified for both readers&#xA;and writers, using a movable subsampling grid.&#xA;&lt;p>&#xA;Subsets of the source and destination bands may be selected.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="cebc87ca-b49f-46fb-9737-d36100a9fdc9"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="c5e749e0-06c0-4f45-8b10-83735be893b6" name="plugins">
            <packagedElement xmi:type="uml:Package" xmi:id="44729df3-1eca-48f6-b7e0-c9de9f5d034b" name="bmp">
              <packagedElement xmi:type="uml:Class" xmi:id="532f5c69-70fa-4539-9f64-2966c068c7b9" name="BMPImageWriteParam">
                <ownedComment xmi:id="c81c2fe1-0ec0-4a47-8ef8-12fc163f31f8" body="A subclass of &lt;code>ImageWriteParam&lt;/code> for encoding images in&#xA;the BMP format.&#xA;&#xA;&lt;p> This class allows for the specification of various parameters&#xA;while writing a BMP format image file.  By default, the data layout&#xA;is bottom-up, such that the pixels are stored in bottom-up order,&#xA;the first scanline being stored last.&#xA;&#xA;&lt;p>The particular compression scheme to be used can be specified by using&#xA;the &lt;code>setCompressionType()&lt;/code> method with the appropriate type&#xA;string.  The compression scheme specified will be honored if and only if it&#xA;is compatible with the type of image being written. If the specified&#xA;compression scheme is not compatible with the type of image being written&#xA;then the &lt;code>IOException&lt;/code> will be thrown by the BMP image writer.&#xA;If the compression type is not set explicitly then &lt;code>getCompressionType()&lt;/code>&#xA;will return &lt;code>null&lt;/code>. In this case the BMP image writer will select&#xA;a compression type that supports encoding of the given image without loss&#xA;of the color resolution.&#xA;&lt;p>The compression type strings and the image type(s) each supports are&#xA;listed in the following&#xA;table:&#xA;&#xA;&lt;p>&lt;table border=1>&#xA;&lt;caption>&lt;b>Compression Types&lt;/b>&lt;/caption>&#xA;&lt;tr>&lt;th>Type String&lt;/th> &lt;th>Description&lt;/th>  &lt;th>Image Types&lt;/th>&lt;/tr>&#xA;&lt;tr>&lt;td>BI_RGB&lt;/td>  &lt;td>Uncompressed RLE&lt;/td> &lt;td>&lt;= 8-bits/sample&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>BI_RLE8&lt;/td> &lt;td>8-bit Run Length Encoding&lt;/td> &lt;td>&lt;= 8-bits/sample&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>BI_RLE4&lt;/td> &lt;td>4-bit Run Length Encoding&lt;/td> &lt;td>&lt;= 4-bits/sample&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>BI_BITFIELDS&lt;/td> &lt;td>Packed data&lt;/td> &lt;td> 16 or 32 bits/sample&lt;/td>&lt;/tr>&#xA;&lt;/table>&#xA;" annotatedElement="532f5c69-70fa-4539-9f64-2966c068c7b9"/>
                <generalization xmi:id="a4af40bc-61d4-4334-a3ac-13e030f85f46" isSubstitutable="true" general="55cfa553-1362-462b-9396-075c95cbe037"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="d86e9de5-78ad-4c94-9148-cc9be2c9c57a" name="jpeg">
              <packagedElement xmi:type="uml:Class" xmi:id="2a166581-1774-4ef9-858c-ddc377b71458" name="JPEGQTable">
                <ownedComment xmi:id="5e1951a5-1e9c-4404-ab00-2d1d4b329dee" body="A class encapsulating a single JPEG quantization table.  The&#xA;elements appear in natural order (as opposed to zig-zag order).&#xA;Static variables are provided for the &quot;standard&quot; tables taken from&#xA;Annex K of the JPEG spec, as well as the default tables&#xA;conventionally used for visually lossless encoding.&#xA;&#xA;&lt;p>&#xA;For more information about the operation of the built-in JPEG plug-ins,&#xA;see the &lt;A HREF=&quot;../../metadata/doc-files/jpeg_metadata.html&quot;>JPEG&#xA;metadata format specification and usage notes&lt;/A>.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="2a166581-1774-4ef9-858c-ddc377b71458"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6a6deaea-ed61-4dfc-86a4-fa29041bcc40" name="JPEGImageReadParam">
                <ownedComment xmi:id="ceee225f-8d77-451f-9d15-48b5be00e7e6" body="This class adds the ability to set JPEG quantization and Huffman&#xA;tables when using the built-in JPEG reader plug-in.  An instance of&#xA;this class will be returned from the&#xA;&lt;code>getDefaultImageReadParam&lt;/code> methods of the built-in JPEG&#xA;&lt;code>ImageReader&lt;/code>.&#xA;&#xA;&lt;p> The sole purpose of these additions is to allow the&#xA;specification of tables for use in decoding abbreviated streams.&#xA;The built-in JPEG reader will also accept an ordinary&#xA;&lt;code>ImageReadParam&lt;/code>, which is sufficient for decoding&#xA;non-abbreviated streams.&#xA;&#xA;&lt;p> While tables for abbreviated streams are often obtained by&#xA;first reading another abbreviated stream containing only the&#xA;tables, in some applications the tables are fixed ahead of time.&#xA;This class allows the tables to be specified directly from client&#xA;code.  If no tables are specified either in the stream or in a&#xA;&lt;code>JPEGImageReadParam&lt;/code>, then the stream is presumed to use&#xA;the &quot;standard&quot; visually lossless tables.  See {@link JPEGQTable&#xA;&lt;code>JPEGQTable&lt;/code>} and {@link JPEGHuffmanTable&#xA;&lt;code>JPEGHuffmanTable&lt;/code>} for more information on the default&#xA;tables.&#xA;&#xA;&lt;p> The default &lt;code>JPEGImageReadParam&lt;/code> returned by the&#xA;&lt;code>getDefaultReadParam&lt;/code> method of the builtin JPEG reader&#xA;contains no tables.  Default tables may be obtained from the table&#xA;classes {@link JPEGQTable &lt;code>JPEGQTable&lt;/code>} and {@link&#xA;JPEGHuffmanTable &lt;code>JPEGHuffmanTable&lt;/code>}.&#xA;&#xA;&lt;p> If a stream does contain tables, the tables given in a&#xA;&lt;code>JPEGImageReadParam&lt;/code> are ignored.  Furthermore, if the&#xA;first image in a stream does contain tables and subsequent ones do&#xA;not, then the tables given in the first image are used for all the&#xA;abbreviated images.  Once tables have been read from a stream, they&#xA;can be overridden only by tables subsequently read from the same&#xA;stream.  In order to specify new tables, the {@link&#xA;javax.imageio.ImageReader#setInput &lt;code>setInput&lt;/code>} method of&#xA;the reader must be called to change the stream.&#xA;&#xA;&lt;p> Note that this class does not provide a means for obtaining the&#xA;tables found in a stream.  These may be extracted from a stream by&#xA;consulting the &lt;code>IIOMetadata&lt;/code> object returned by the&#xA;reader.&#xA;&#xA;&lt;p>&#xA;For more information about the operation of the built-in JPEG plug-ins,&#xA;see the &lt;A HREF=&quot;../../metadata/doc-files/jpeg_metadata.html&quot;>JPEG&#xA;metadata format specification and usage notes&lt;/A>.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="6a6deaea-ed61-4dfc-86a4-fa29041bcc40"/>
                <generalization xmi:id="28c42c41-433a-40a4-8978-5f93291ffac6" isSubstitutable="true" general="15b35883-40f9-473c-b095-8a8a0c97aad9"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4fd9663b-bc3c-4dc0-8c59-f6f3c0e09d5f" name="JPEGHuffmanTable">
                <ownedComment xmi:id="b275c71b-a17d-4b08-b975-6055623f8240" body="A class encapsulating a single JPEG Huffman table.  Fields are&#xA;provided for the &quot;standard&quot; tables from taken from Annex K of the&#xA;JPEG specification.  These are the tables used as defaults.&#xA;This class differs from the old unsupported&#xA;com.sun.image.codec.jpeg.JPEGHuffmanTable in two ways:&#xA;&lt;ol>&#xA;&lt;li>The lengths arrays for this class do not contain an ignored 0th&#xA;entry.  The lengths array in a JPEG stream does not contain an extra&#xA;entry, and this class is used to represent the contents of a JPEG&#xA;stream.&#xA;&lt;/li>&#xA;&lt;li>The old class incorrectly referred to Huffman &quot;symbols&quot;, while&#xA;expecting an array of values to be encoded.  This class has a&#xA;&lt;code>getValues&lt;/code> method instead of a &lt;code>getSymbols&lt;/code>&#xA;method.&#xA;&lt;/li>&#xA;&lt;/ol>&#xA;&#xA;&lt;p>&#xA;For more information about the operation of the built-in JPEG plug-ins,&#xA;see the &lt;A HREF=&quot;../../metadata/doc-files/jpeg_metadata.html&quot;>JPEG&#xA;metadata format specification and usage notes&lt;/A>.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="4fd9663b-bc3c-4dc0-8c59-f6f3c0e09d5f"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4519fbbb-6cef-4aa6-bd49-0032619ee124" name="JPEGImageWriteParam">
                <ownedComment xmi:id="316685ef-ae74-4932-9077-31e67e5c5b7f" body="This class adds the ability to set JPEG quantization and Huffman&#xA;tables when using the built-in JPEG writer plug-in, and to request that&#xA;optimized Huffman tables be computed for an image.  An instance of&#xA;this class will be returned from the&#xA;&lt;code>getDefaultImageWriteParam&lt;/code> methods of the built-in JPEG&#xA;&lt;code>ImageWriter&lt;/code>.&#xA;&lt;p> The principal purpose of these additions is to allow the&#xA;specification of tables to use in encoding abbreviated streams.&#xA;The built-in JPEG writer will also accept an ordinary&#xA;&lt;code>ImageWriteParam&lt;/code>, in which case the writer will&#xA;construct the necessary tables internally.&#xA;&#xA;&lt;p> In either case, the quality setting in an &lt;code>ImageWriteParam&lt;/code>&#xA;has the same meaning as for the underlying library: 1.00 means a&#xA;quantization table of all 1's, 0.75 means the &quot;standard&quot;, visually&#xA;lossless quantization table, and 0.00 means aquantization table of&#xA;all 255's.&#xA;&#xA;&lt;p> While tables for abbreviated streams are often specified by&#xA;first writing an abbreviated stream containing only the tables, in&#xA;some applications the tables are fixed ahead of time.  This class&#xA;allows the tables to be specified directly from client code.&#xA;&#xA;&lt;p> Normally, the tables are specified in the&#xA;&lt;code>IIOMetadata&lt;/code> objects passed in to the writer, and any&#xA;tables included in these objects are written to the stream.&#xA;If no tables are specified in the metadata, then an abbreviated&#xA;stream is written.  If no tables are included in the metadata and&#xA;no tables are specified in a &lt;code>JPEGImageWriteParam&lt;/code>, then&#xA;an abbreviated stream is encoded using the &quot;standard&quot; visually&#xA;lossless tables.  This class is necessary for specifying tables&#xA;when an abbreviated stream must be written without writing any tables&#xA;to a stream first.  In order to use this class, the metadata object&#xA;passed into the writer must contain no tables, and no stream metadata&#xA;must be provided.  See {@link JPEGQTable &lt;code>JPEGQTable&lt;/code>} and&#xA;{@link JPEGHuffmanTable &lt;code>JPEGHuffmanTable&lt;/code>} for more&#xA;information on the default tables.&#xA;&#xA;&lt;p> The default &lt;code>JPEGImageWriteParam&lt;/code> returned by the&#xA;&lt;code>getDefaultWriteParam&lt;/code> method of the writer contains no&#xA;tables.  Default tables are included in the default&#xA;&lt;code>IIOMetadata&lt;/code> objects returned by the writer.&#xA;&#xA;&lt;p> If the metadata does contain tables, the tables given in a&#xA;&lt;code>JPEGImageWriteParam&lt;/code> are ignored.  Furthermore, once a&#xA;set of tables has been written, only tables in the metadata can&#xA;override them for subsequent writes, whether to the same stream or&#xA;a different one.  In order to specify new tables using this class,&#xA;the {@link javax.imageio.ImageWriter#reset &lt;code>reset&lt;/code>}&#xA;method of the writer must be called.&#xA;&#xA;&lt;p>&#xA;For more information about the operation of the built-in JPEG plug-ins,&#xA;see the &lt;A HREF=&quot;../../metadata/doc-files/jpeg_metadata.html&quot;>JPEG&#xA;metadata format specification and usage notes&lt;/A>.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="4519fbbb-6cef-4aa6-bd49-0032619ee124"/>
                <generalization xmi:id="6858ef35-52ff-47dc-9136-76d6c11e2045" isSubstitutable="true" general="55cfa553-1362-462b-9396-075c95cbe037"/>
              </packagedElement>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8b1e5526-7b77-4d39-9bfd-4709fee2c160" name="ImageIO" isLeaf="true">
            <ownedComment xmi:id="a163933c-9c80-4223-ab5b-3689ebf4eaac" body="A class containing static convenience methods for locating&#xA;&lt;code>ImageReader&lt;/code>s and &lt;code>ImageWriter&lt;/code>s, and&#xA;performing simple encoding and decoding.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="8b1e5526-7b77-4d39-9bfd-4709fee2c160"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8d22eb15-663e-4ffb-b471-572779dd946f" name="CacheInfo" visibility="package">
              <ownedComment xmi:id="308d4744-d054-4252-89b5-03dec266177c" body="A class to hold information about caching.  Each&#xA;&lt;code>ThreadGroup&lt;/code> will have its own copy&#xA;via the &lt;code>AppContext&lt;/code> mechanism.&#xA;" annotatedElement="8d22eb15-663e-4ffb-b471-572779dd946f"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="f6a3ece7-87f9-4ecd-9c7d-84115083e641" name="ImageReaderIterator" visibility="package" clientDependency="7919e945-1ba2-4ba9-a9fb-086aa6f95a6d">
              <interfaceRealization xmi:id="7919e945-1ba2-4ba9-a9fb-086aa6f95a6d" name="" supplier="51f2d34f-8b0f-4040-baff-09658ddf3346" client="f6a3ece7-87f9-4ecd-9c7d-84115083e641" contract="51f2d34f-8b0f-4040-baff-09658ddf3346"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="0030adc7-af08-48cd-801b-6ca34adca14d" name="CanDecodeInputFilter" visibility="package" clientDependency="8b9fb778-5259-4ee3-b924-72b17889e0d5">
              <interfaceRealization xmi:id="8b9fb778-5259-4ee3-b924-72b17889e0d5" name="" supplier="c4fe13f2-bf62-4d1e-b9c0-7bccf2156808" client="0030adc7-af08-48cd-801b-6ca34adca14d" contract="c4fe13f2-bf62-4d1e-b9c0-7bccf2156808"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="5b36b920-b418-4bc6-92cc-414599efe3f1" name="CanEncodeImageAndFormatFilter" visibility="package" clientDependency="c0837b9e-19e9-42fb-811f-0720cf9cc167">
              <interfaceRealization xmi:id="c0837b9e-19e9-42fb-811f-0720cf9cc167" name="" supplier="c4fe13f2-bf62-4d1e-b9c0-7bccf2156808" client="5b36b920-b418-4bc6-92cc-414599efe3f1" contract="c4fe13f2-bf62-4d1e-b9c0-7bccf2156808"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="2bcec04f-2689-4d43-955d-153789fcbe8e" name="ContainsFilter" visibility="package" clientDependency="f3715143-5d4d-490f-8005-da7a6d9849bc">
              <interfaceRealization xmi:id="f3715143-5d4d-490f-8005-da7a6d9849bc" name="" supplier="c4fe13f2-bf62-4d1e-b9c0-7bccf2156808" client="2bcec04f-2689-4d43-955d-153789fcbe8e" contract="c4fe13f2-bf62-4d1e-b9c0-7bccf2156808"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="9e8dad88-a77f-4501-a886-ff350b61a970" name="ImageWriterIterator" visibility="package" clientDependency="5af6c9ad-22ec-4177-970c-1ec02f017f47">
              <interfaceRealization xmi:id="5af6c9ad-22ec-4177-970c-1ec02f017f47" name="" supplier="5e2be17e-04ac-469a-b07b-393cf70d822a" client="9e8dad88-a77f-4501-a886-ff350b61a970" contract="5e2be17e-04ac-469a-b07b-393cf70d822a"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8831c7dc-3e61-44ed-b512-150de1d9774e" name="ImageTranscoderIterator" visibility="package" clientDependency="bb8ad295-32f1-4ab8-8e8c-6fa033c966cf">
              <interfaceRealization xmi:id="bb8ad295-32f1-4ab8-8e8c-6fa033c966cf" name="" supplier="b8e13453-7768-4dd7-8acc-cc72beb706e7" client="8831c7dc-3e61-44ed-b512-150de1d9774e" contract="b8e13453-7768-4dd7-8acc-cc72beb706e7"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="6d94783f-f5e3-4411-9fc2-be2deca81d19" name="TranscoderFilter" visibility="package" clientDependency="ec7a0c5a-5f5e-4e66-86d0-bb56463872a4">
              <interfaceRealization xmi:id="ec7a0c5a-5f5e-4e66-86d0-bb56463872a4" name="" supplier="c4fe13f2-bf62-4d1e-b9c0-7bccf2156808" client="6d94783f-f5e3-4411-9fc2-be2deca81d19" contract="c4fe13f2-bf62-4d1e-b9c0-7bccf2156808"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="d9c79be9-d32b-4f02-9dfb-8c8252209b75" name="metadata">
            <packagedElement xmi:type="uml:Class" xmi:id="b3e3b181-0d9f-4c25-8b0c-2dd5197ff428" name="IIONodeList" visibility="package" clientDependency="de221620-93e8-4091-a174-ebf8111cfbe8">
              <interfaceRealization xmi:id="de221620-93e8-4091-a174-ebf8111cfbe8" name="" supplier="8d088edc-570f-4698-8de0-bbbb6246bbd5" client="b3e3b181-0d9f-4c25-8b0c-2dd5197ff428" contract="8d088edc-570f-4698-8de0-bbbb6246bbd5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="9bab5994-e693-416d-bc8f-726abc34ca0a" name="IIOMetadataFormat" isAbstract="true">
              <ownedComment xmi:id="a4cc5a97-a0a4-43e0-b377-88c2b36f66d7" body="An object describing the structure of metadata documents returned&#xA;from &lt;code>IIOMetadata.getAsTree&lt;/code> and passed to&#xA;&lt;code>IIOMetadata.setFromTree&lt;/code> and &lt;code>mergeTree&lt;/code>.&#xA;Document structures are described by a set of constraints on the&#xA;type and number of child elements that may belong to a given parent&#xA;element type, the names, types, and values of attributes that may&#xA;belong to an element, and the type and values of&#xA;&lt;code>Object&lt;/code> reference that may be stored at a node.&#xA;&#xA;&lt;p> N.B: classes that implement this interface should contain a&#xA;method declared as &lt;code>public static getInstance()&lt;/code> which&#xA;returns an instance of the class.  Commonly, an implentation will&#xA;construct only a single instance and cache it for future&#xA;invocations of &lt;code>getInstance&lt;/code>.&#xA;&#xA;&lt;p> The structures that may be described by this class are a subset&#xA;of those expressible using XML document type definitions (DTDs),&#xA;with the addition of some basic information on the datatypes of&#xA;attributes and the ability to store an &lt;code>Object&lt;/code>&#xA;reference within a node.  In the future, XML Schemas could be used&#xA;to represent these structures, and many others.&#xA;&#xA;&lt;p> The differences between&#xA;&lt;code>IIOMetadataFormat&lt;/code>-described structures and DTDs are as&#xA;follows:&#xA;&#xA;&lt;ul>&#xA;&lt;li> Elements may not contain text or mix text with embedded&#xA;tags.&#xA;&#xA;&lt;li> The children of an element must conform to one of a few simple&#xA;patterns, described in the documentation for the&#xA;&lt;code>CHILD_*&lt;/code> constants;&#xA;&#xA;&lt;li> The in-memory representation of an elements may contain a&#xA;reference to an &lt;code>Object&lt;/code>.  There is no provision for&#xA;representing such objects textually.&#xA;&lt;/ul>&#xA;&#xA;@version 0.5&#xA;" annotatedElement="9bab5994-e693-416d-bc8f-726abc34ca0a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d7f2efca-e0b6-4d36-8f82-362fe3cb1785" name="IIODOMException" visibility="package">
              <generalization xmi:id="b68403cd-a92d-44ea-bb37-45a466b7b700" isSubstitutable="true" general="eae12cb5-34ed-4889-a4ad-a0a319011f1b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b7b6af01-c9ac-4d7e-beb6-9a9ccae86a54" name="IIOAttr" visibility="package" clientDependency="9055cdf9-d34b-46d8-974a-838940298b1e">
              <generalization xmi:id="ed30a632-740a-481f-b3b8-76b2cc79dc04" isSubstitutable="true" general="c77cc220-1ede-4881-a4d8-2201f74b2659"/>
              <interfaceRealization xmi:id="9055cdf9-d34b-46d8-974a-838940298b1e" name="" supplier="af43cd7e-97ab-493f-b940-bdaded09b14d" client="b7b6af01-c9ac-4d7e-beb6-9a9ccae86a54" contract="af43cd7e-97ab-493f-b940-bdaded09b14d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="c4704269-161f-4873-a3bf-7e588dc8098f" name="IIOMetadataController" isAbstract="true">
              <ownedComment xmi:id="5a33a4f4-422c-4bca-b7ed-40f88e692d6a" body="An interface to be implemented by objects that can determine the&#xA;settings of an &lt;code>IIOMetadata&lt;/code> object, either by putting&#xA;up a GUI to obtain values from a user, or by other means.  This&#xA;interface merely specifies a generic &lt;code>activate&lt;/code> method&#xA;that invokes the controller, without regard for how the controller&#xA;obtains values (&lt;i>i.e.&lt;/i>, whether the controller puts up a GUI&#xA;or merely computes a set of values is irrelevant to this&#xA;interface).&#xA;&#xA;&lt;p> Within the &lt;code>activate&lt;/code> method, a controller obtains&#xA;initial values by querying the &lt;code>IIOMetadata&lt;/code> object's&#xA;settings, either using the XML DOM tree or a plug-in specific&#xA;interface, modifies values by whatever means, then modifies the&#xA;&lt;code>IIOMetadata&lt;/code> object's settings, using either the&#xA;&lt;code>setFromTree&lt;/code> or &lt;code>mergeTree&lt;/code> methods, or a&#xA;plug-in specific interface.  In general, applications may expect&#xA;that when the &lt;code>activate&lt;/code> method returns&#xA;&lt;code>true&lt;/code>, the &lt;code>IIOMetadata&lt;/code> object is ready for&#xA;use in a write operation.&#xA;&#xA;&lt;p> Vendors may choose to provide GUIs for the&#xA;&lt;code>IIOMetadata&lt;/code> subclasses they define for a particular&#xA;plug-in.  These can be set up as default controllers in the&#xA;corresponding &lt;code>IIOMetadata&lt;/code> subclasses.&#xA;&#xA;&lt;p> Alternatively, an algorithmic process such as a database lookup&#xA;or the parsing of a command line could be used as a controller, in&#xA;which case the &lt;code>activate&lt;/code> method would simply look up or&#xA;compute the settings, call methods on &lt;code>IIOMetadata&lt;/code> to&#xA;set its state, and return &lt;code>true&lt;/code>.&#xA;&#xA;@see IIOMetadata#setController&#xA;@see IIOMetadata#getController&#xA;@see IIOMetadata#getDefaultController&#xA;@see IIOMetadata#hasController&#xA;@see IIOMetadata#activateController&#xA;&#xA;@version 0.5&#xA;" annotatedElement="c4704269-161f-4873-a3bf-7e588dc8098f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="bcf7f325-d092-458b-86f3-e38f7a3ef6b9" name="IIONamedNodeMap" visibility="package" clientDependency="dbe8d42a-e60f-4228-afda-f60fb63bf407">
              <interfaceRealization xmi:id="dbe8d42a-e60f-4228-afda-f60fb63bf407" name="" supplier="161282e4-5c83-4b44-94ce-8c12fbe641c2" client="bcf7f325-d092-458b-86f3-e38f7a3ef6b9" contract="161282e4-5c83-4b44-94ce-8c12fbe641c2"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1e049a4c-3162-49c8-9cc1-8eb576bc234b" name="IIOMetadataFormatImpl" clientDependency="c9efb341-2e09-4b3a-a7c0-a9b1d9ad1819" isAbstract="true">
              <ownedComment xmi:id="bf911f01-f516-438c-a60b-ebc149be73f6" body="A concrete class providing a reusable implementation of the&#xA;&lt;code>IIOMetadataFormat&lt;/code> interface.  In addition, a static&#xA;instance representing the standard, plug-in neutral&#xA;&lt;code>javax_imageio_1.0&lt;/code> format is provided by the&#xA;&lt;code>getStandardFormatInstance&lt;/code> method.&#xA;&#xA;&lt;p> In order to supply localized descriptions of elements and&#xA;attributes, a &lt;code>ResourceBundle&lt;/code> with a base name of&#xA;&lt;code>this.getClass().getName() + &quot;Resources&quot;&lt;/code> should be&#xA;supplied via the usual mechanism used by&#xA;&lt;code>ResourceBundle.getBundle&lt;/code>.  Briefly, the subclasser&#xA;supplies one or more additional classes according to a naming&#xA;convention (by default, the fully-qualified name of the subclass&#xA;extending &lt;code>IIMetadataFormatImpl&lt;/code>, plus the string&#xA;&quot;Resources&quot;, plus the country, language, and variant codes&#xA;separated by underscores).  At run time, calls to&#xA;&lt;code>getElementDescription&lt;/code> or&#xA;&lt;code>getAttributeDescription&lt;/code> will attempt to load such&#xA;classes dynamically according to the supplied locale, and will use&#xA;either the element name, or the element name followed by a '/'&#xA;character followed by the attribute name as a key.  This key will&#xA;be supplied to the &lt;code>ResourceBundle&lt;/code>'s&#xA;&lt;code>getString&lt;/code> method, and the resulting localized&#xA;description of the node or attribute is returned.&#xA;&#xA;&lt;p> The subclass may supply a different base name for the resource&#xA;bundles using the &lt;code>setResourceBaseName&lt;/code> method.&#xA;&#xA;&lt;p> A subclass may choose its own localization mechanism, if so&#xA;desired, by overriding the supplied implementations of&#xA;&lt;code>getElementDescription&lt;/code> and&#xA;&lt;code>getAttributeDescription&lt;/code>.&#xA;&#xA;@see ResourceBundle#getBundle(String,Locale)&#xA;&#xA;@version 0.5&#xA;" annotatedElement="1e049a4c-3162-49c8-9cc1-8eb576bc234b"/>
              <interfaceRealization xmi:id="c9efb341-2e09-4b3a-a7c0-a9b1d9ad1819" name="" supplier="9bab5994-e693-416d-bc8f-726abc34ca0a" client="1e049a4c-3162-49c8-9cc1-8eb576bc234b" contract="9bab5994-e693-416d-bc8f-726abc34ca0a"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="503a4b54-8c08-4627-aab0-153318147c78" name="Element" visibility="package"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="d9ec26a4-8298-4a67-a30b-780936631449" name="Attribute" visibility="package"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="cb6019f4-3d72-44b3-a2a1-6656f04cb100" name="ObjectValue" visibility="package"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c77cc220-1ede-4881-a4d8-2201f74b2659" name="IIOMetadataNode" clientDependency="e02479ae-e0b7-4827-a6d5-86e6265ed4c3 6b65fb7f-3627-4c27-b40b-c4c7af748ce2">
              <ownedComment xmi:id="6c259e99-4019-4e03-b50d-e8a8a9d82a76" body="A class representing a node in a meta-data tree, which implements&#xA;the &lt;a&#xA;href=&quot;../../../../api/org/w3c/dom/Element.html&quot;>&#xA;&lt;code>org.w3c.dom.Element&lt;/code>&lt;/a> interface and additionally allows&#xA;for the storage of non-textual objects via the&#xA;&lt;code>getUserObject&lt;/code> and &lt;code>setUserObject&lt;/code> methods.&#xA;&#xA;&lt;p> This class is not intended to be used for general XML&#xA;processing. In particular, &lt;code>Element&lt;/code> nodes created&#xA;within the Image I/O API are not compatible with those created by&#xA;Sun's standard implementation of the &lt;code>org.w3.dom&lt;/code> API.&#xA;In particular, the implementation is tuned for simple uses and may&#xA;not perform well for intensive processing.&#xA;&#xA;&lt;p> Namespaces are ignored in this implementation.  The terms &quot;tag&#xA;name&quot; and &quot;node name&quot; are always considered to be synonymous.&#xA;&#xA;@see IIOMetadata#getAsTree&#xA;@see IIOMetadata#setFromTree&#xA;@see IIOMetadata#mergeTree&#xA;&#xA;@version 0.5&#xA;" annotatedElement="c77cc220-1ede-4881-a4d8-2201f74b2659"/>
              <interfaceRealization xmi:id="e02479ae-e0b7-4827-a6d5-86e6265ed4c3" name="" supplier="b16a24ef-01f8-4756-91f9-e573301bed83" client="c77cc220-1ede-4881-a4d8-2201f74b2659" contract="b16a24ef-01f8-4756-91f9-e573301bed83"/>
              <interfaceRealization xmi:id="6b65fb7f-3627-4c27-b40b-c4c7af748ce2" name="" supplier="8d088edc-570f-4698-8de0-bbbb6246bbd5" client="c77cc220-1ede-4881-a4d8-2201f74b2659" contract="8d088edc-570f-4698-8de0-bbbb6246bbd5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a25163c8-24c3-471d-bc51-8fbb9cbe3573" name="IIOInvalidTreeException">
              <ownedComment xmi:id="b2f6d2bb-97d1-4bd2-8adb-e1ddfea52039" body="An &lt;code>IIOInvalidTreeException&lt;/code> is thrown when an attempt&#xA;by an &lt;code>IIOMetadata&lt;/code> object to parse a tree of&#xA;&lt;code>IIOMetadataNode&lt;/code>s fails.  The node that led to the&#xA;parsing error may be stored.  As with any parsing error, the actual&#xA;error may occur at a different point that that where it is&#xA;detected.  The node returned by &lt;code>getOffendingNode&lt;/code>&#xA;should merely be considered as a clue to the actual nature of the&#xA;problem.&#xA;&#xA;@see IIOMetadata#setFromTree&#xA;@see IIOMetadata#mergeTree&#xA;@see IIOMetadataNode&#xA;&#xA;@version 0.5&#xA;" annotatedElement="a25163c8-24c3-471d-bc51-8fbb9cbe3573"/>
              <generalization xmi:id="8ff43e07-8df6-41ac-a08a-5f6303d198b7" isSubstitutable="true" general="904daa4e-2dd8-453e-8502-d96e70c6417f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="578dc690-32e6-454c-aead-3ae0e28b9f82" name="IIOMetadata" isAbstract="true">
              <ownedComment xmi:id="f8cc453a-e301-42cb-9397-8f42e5b40044" body="An abstract class to be extended by objects that represent metadata&#xA;(non-image data) associated with images and streams.  Plug-ins&#xA;represent metadata using opaque, plug-in specific objects.  These&#xA;objects, however, provide the ability to access their internal&#xA;information as a tree of &lt;code>IIOMetadataNode&lt;/code> objects that&#xA;support the XML DOM interfaces as well as additional interfaces for&#xA;storing non-textual data and retrieving information about legal&#xA;data values.  The format of such trees is plug-in dependent, but&#xA;plug-ins may choose to support a plug-in neutral format described&#xA;below.  A single plug-in may support multiple metadata formats,&#xA;whose names maybe determined by calling&#xA;&lt;code>getMetadataFormatNames&lt;/code>.  The plug-in may also support&#xA;a single special format, referred to as the &quot;native&quot; format, which&#xA;is designed to encode its metadata losslessly.  This format will&#xA;typically be designed specifically to work with a specific file&#xA;format, so that images may be loaded and saved in the same format&#xA;with no loss of metadata, but may be less useful for transfering&#xA;metadata between an &lt;code>ImageReader&lt;/code> and an&#xA;&lt;code>ImageWriter&lt;/code> for different image formats.  To convert&#xA;between two native formats as losslessly as the image file formats&#xA;will allow, an &lt;code>ImageTranscoder&lt;/code> object must be used.&#xA;&#xA;@see javax.imageio.ImageReader#getImageMetadata&#xA;@see javax.imageio.ImageReader#getStreamMetadata&#xA;@see javax.imageio.ImageReader#readAll&#xA;@see javax.imageio.ImageWriter#getDefaultStreamMetadata&#xA;@see javax.imageio.ImageWriter#getDefaultImageMetadata&#xA;@see javax.imageio.ImageWriter#write&#xA;@see javax.imageio.ImageWriter#convertImageMetadata&#xA;@see javax.imageio.ImageWriter#convertStreamMetadata&#xA;@see javax.imageio.IIOImage&#xA;@see javax.imageio.ImageTranscoder&#xA;&#xA;@version 0.5&#xA;" annotatedElement="578dc690-32e6-454c-aead-3ae0e28b9f82"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="46206f57-1abc-46a9-80f6-2d5c343b9a78" name="IIOImage">
            <ownedComment xmi:id="059344d4-ed5d-42ea-9171-cbc3cfd86419" body="A simple container class to aggregate an image, a set of&#xA;thumbnail (preview) images, and an object representing metadata&#xA;associated with the image.&#xA;&#xA;&lt;p> The image data may take the form of either a&#xA;&lt;code>RenderedImage&lt;/code>, or a &lt;code>Raster&lt;/code>.  Reader&#xA;methods that return an &lt;code>IIOImage&lt;/code> will always return a&#xA;&lt;code>BufferedImage&lt;/code> using the &lt;code>RenderedImage&lt;/code>&#xA;reference.  Writer methods that accept an &lt;code>IIOImage&lt;/code>&#xA;will always accept a &lt;code>RenderedImage&lt;/code>, and may optionally&#xA;accept a &lt;code>Raster&lt;/code>.&#xA;&#xA;&lt;p> Exactly one of &lt;code>getRenderedImage&lt;/code> and&#xA;&lt;code>getRaster&lt;/code> will return a non-&lt;code>null&lt;/code> value.&#xA;Subclasses are responsible for ensuring this behavior.&#xA;&#xA;@see ImageReader#readAll(int, ImageReadParam)&#xA;@see ImageReader#readAll(java.util.Iterator)&#xA;@see ImageWriter#write(javax.imageio.metadata.IIOMetadata,&#xA;IIOImage, ImageWriteParam)&#xA;@see ImageWriter#write(IIOImage)&#xA;@see ImageWriter#writeToSequence(IIOImage, ImageWriteParam)&#xA;@see ImageWriter#writeInsert(int, IIOImage, ImageWriteParam)&#xA;&#xA;@version 0.5&#xA;" annotatedElement="46206f57-1abc-46a9-80f6-2d5c343b9a78"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="488b489e-1317-4268-8855-80bc306a5021" name="ImageReader" isAbstract="true">
            <ownedComment xmi:id="0dde2e9d-e49d-4c3c-b1f5-82407fee5676" body="An abstract superclass for parsing and decoding of images.  This&#xA;class must be subclassed by classes that read in images in the&#xA;context of the Java Image I/O framework.&#xA;&#xA;&lt;p> &lt;code>ImageReader&lt;/code> objects are normally instantiated by&#xA;the service provider interface (SPI) class for the specific format.&#xA;Service provider classes (e.g., instances of&#xA;&lt;code>ImageReaderSpi&lt;/code>) are registered with the&#xA;&lt;code>IIORegistry&lt;/code>, which uses them for format recognition&#xA;and presentation of available format readers and writers.&#xA;&#xA;&lt;p> When an input source is set (using the &lt;code>setInput&lt;/code>&#xA;method), it may be marked as &quot;seek forward only&quot;.  This setting&#xA;means that images contained within the input source will only be&#xA;read in order, possibly allowing the reader to avoid caching&#xA;portions of the input containing data associated with images that&#xA;have been read previously.&#xA;&#xA;@see ImageWriter&#xA;@see javax.imageio.spi.IIORegistry&#xA;@see javax.imageio.spi.ImageReaderSpi&#xA;&#xA;@version 0.5&#xA;" annotatedElement="488b489e-1317-4268-8855-80bc306a5021"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="51f2d34f-8b0f-4040-baff-09658ddf3346" name="Iterator&lt;ImageReader>">
            <templateBinding xmi:id="7862fdc6-fcea-40bf-9c09-6b37da8d04a7" signature="0f8c6981-4608-4e07-a119-f77e4e17cb2d">
              <parameterSubstitution xmi:id="d6140b9a-e749-4009-8b86-f70d29e3b576" formal="3b71f5d7-d328-40b6-8dcc-6484e179fd5e" actual="488b489e-1317-4268-8855-80bc306a5021"/>
            </templateBinding>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="23307db6-8bb5-4676-a347-c9994470ce6e" name="ImageTranscoder" isAbstract="true">
            <ownedComment xmi:id="4340ff3f-6925-402f-9742-a90eb099b41d" body="An interface providing metadata transcoding capability.&#xA;&#xA;&lt;p> Any image may be transcoded (written to a different format&#xA;than the one it was originally stored in) simply by performing&#xA;a read operation followed by a write operation.  However, loss&#xA;of data may occur in this process due to format differences.&#xA;&#xA;&lt;p> In general, the best results will be achieved when&#xA;format-specific metadata objects can be created to encapsulate as&#xA;much information about the image and its associated metadata as&#xA;possible, in terms that are understood by the specific&#xA;&lt;code>ImageWriter&lt;/code> used to perform the encoding.&#xA;&#xA;&lt;p> An &lt;code>ImageTranscoder&lt;/code> may be used to convert the&#xA;&lt;code>IIOMetadata&lt;/code> objects supplied by the&#xA;&lt;code>ImageReader&lt;/code> (representing per-stream and per-image&#xA;metadata) into corresponding objects suitable for encoding by a&#xA;particular &lt;code>ImageWriter&lt;/code>.  In the case where the methods&#xA;of this interface are being called directly on an&#xA;&lt;code>ImageWriter&lt;/code>, the output will be suitable for that&#xA;writer.&#xA;&#xA;&lt;p> The internal details of converting an &lt;code>IIOMetadata&lt;/code>&#xA;object into a writer-specific format will vary according to the&#xA;context of the operation.  Typically, an &lt;code>ImageWriter&lt;/code>&#xA;will inspect the incoming object to see if it implements additional&#xA;interfaces with which the writer is familiar.  This might be the&#xA;case, for example, if the object was obtained by means of a read&#xA;operation on a reader plug-in written by the same vendor as the&#xA;writer.  In this case, the writer may access the incoming object by&#xA;means of its plug-in specific interfaces.  In this case, the&#xA;re-encoding may be close to lossless if the image file format is&#xA;kept constant.  If the format is changing, the writer may still&#xA;attempt to preserve as much information as possible.&#xA;&#xA;&lt;p> If the incoming object does not implement any additional&#xA;interfaces known to the writer, the writer has no choice but to&#xA;access it via the standard &lt;code>IIOMetadata&lt;/code> interfaces such&#xA;as the tree view provided by &lt;code>IIOMetadata.getAsTree&lt;/code>.&#xA;In this case, there is likely to be significant loss of&#xA;information.&#xA;&#xA;&lt;p> An independent &lt;code>ImageTranscoder&lt;/code> essentially takes&#xA;on the same role as the writer plug-in in the above examples.  It&#xA;must be familiar with the private interfaces used by both the&#xA;reader and writer plug-ins, and manually instantiate an object that&#xA;will be usable by the writer.  The resulting metadata objects may&#xA;be used by the writer directly.&#xA;&#xA;&lt;p> No independent implementations of &lt;code>ImageTranscoder&lt;/code>&#xA;are provided as part of the standard API.  Instead, the intention&#xA;of this interface is to provide a way for implementations to be&#xA;created and discovered by applications as the need arises.&#xA;&#xA;@version 0.5&#xA;" annotatedElement="23307db6-8bb5-4676-a347-c9994470ce6e"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="ad9b4287-86f5-458a-9bc5-9663093ab094" name="sql">
          <packagedElement xmi:type="uml:Interface" xmi:id="6c320e03-6b81-441d-b8c9-0a9c507b12c9" name="XADataSource" isAbstract="true">
            <ownedComment xmi:id="9687469d-34c0-4edd-bc35-60044b1a6f57" body="A factory for &lt;code>XAConnection&lt;/code> objects that is used internally.&#xA;An object that implements the &lt;code>XADataSource&lt;/code> interface is&#xA;typically registered with a naming service that uses the&#xA;Java Naming and Directory Interface&lt;sup>&lt;font size=-3>TM&lt;/font>&lt;/sup>&#xA;(JNDI).&#xA;&#xA;@since 1.4&#xA;" annotatedElement="6c320e03-6b81-441d-b8c9-0a9c507b12c9"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="f0d1187e-8188-482e-8fe4-004923186969" name="XAConnection" isAbstract="true">
            <ownedComment xmi:id="70aa754f-dc14-4cb1-a8e2-4c2f0257dcb3" body="An object that provides support for distributed&#xA;transactions.  An &lt;code>XAConnection&lt;/code> object  may be enlisted&#xA;in a distributed transaction by means of an &lt;code>XAResource&lt;/code> object.&#xA;A transaction manager, usually part of a middle tier server, manages an&#xA;&lt;code>XAConnection&lt;/code> object through the &lt;code>XAResource&lt;/code> object.&#xA;&lt;P>&#xA;An application programmer does not use this interface directly; rather,&#xA;it is used by a transaction manager working in the middle tier server.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="f0d1187e-8188-482e-8fe4-004923186969"/>
            <generalization xmi:id="69fcaa24-17b0-4ca6-aa1a-5406e58f9536" isSubstitutable="true" general="64768ad2-6d46-439c-9f88-3bf1cc0afae0"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f0c42ac7-4178-4359-89d0-153aa3c54e0c" name="ConnectionEvent">
            <ownedComment xmi:id="dea5d7bc-5ee5-4903-ad45-9c5826fcf88b" body="&lt;P>An &lt;code>Event&lt;/code> object that provides information about the&#xA;source of a connection-related event.  &lt;code>ConnectionEvent&lt;/code>&#xA;objects are generated when an application closes a pooled connection&#xA;and when an error occurs.  The &lt;code>ConnectionEvent&lt;/code> object&#xA;contains two kinds of information:&#xA;&lt;UL>&#xA;&lt;LI>The pooled connection closed by the application&#xA;&lt;LI>In the case of an error event, the &lt;code>SQLException&lt;/code>&#xA;about to be thrown to the application&#xA;&lt;/UL>&#xA;&#xA;@since 1.4&#xA;" annotatedElement="f0c42ac7-4178-4359-89d0-153aa3c54e0c"/>
            <generalization xmi:id="101d288f-85fe-4501-a865-98d1161c64e6" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="a02e568f-5f1c-4883-bb32-a4e0eb876fab" name="DataSource" isAbstract="true">
            <ownedComment xmi:id="08609f17-b0ec-43bc-a26f-97def07b9751" body="&lt;p>A factory for connections to the physical data source that this&#xA;&lt;code>DataSource&lt;/code> object represents.  An alternative to the&#xA;&lt;code>DriverManager&lt;/code> facility, a &lt;code>DataSource&lt;/code> object&#xA;is the preferred means of getting a connection. An object that implements&#xA;the &lt;code>DataSource&lt;/code> interface will typically be&#xA;registered with a naming service based on the&#xA;Java&lt;sup>&lt;font size=-2>TM&lt;/font>&lt;/sup> Naming and Directory (JNDI) API.&#xA;&lt;P>&#xA;The &lt;code>DataSource&lt;/code> interface is implemented by a driver vendor.&#xA;There are three types of implementations:&#xA;&lt;OL>&#xA;&lt;LI>Basic implementation -- produces a standard &lt;code>Connection&lt;/code>&#xA;object&#xA;&lt;LI>Connection pooling implementation -- produces a &lt;code>Connection&lt;/code>&#xA;object that will automatically participate in connection pooling.  This&#xA;implementation works with a middle-tier connection pooling manager.&#xA;&lt;LI>Distributed transaction implementation -- produces a&#xA;&lt;code>Connection&lt;/code> object that may be used for distributed&#xA;transactions and almost always participates in connection pooling.&#xA;This implementation works with a middle-tier&#xA;transaction manager and almost always with a connection&#xA;pooling manager.&#xA;&lt;/OL>&#xA;&lt;P>&#xA;A &lt;code>DataSource&lt;/code> object has properties that can be modified&#xA;when necessary.  For example, if the data source is moved to a different&#xA;server, the property for the server can be changed.  The benefit is that&#xA;because the data source's properties can be changed, any code accessing&#xA;that data source does not need to be changed.&#xA;&lt;P>&#xA;A driver that is accessed via a &lt;code>DataSource&lt;/code> object does not&#xA;register itself with the &lt;code>DriverManager&lt;/code>.  Rather, a&#xA;&lt;code>DataSource&lt;/code> object is retrieved though a lookup operation&#xA;and then used to create a &lt;code>Connection&lt;/code> object.  With a basic&#xA;implementation, the connection obtained through a &lt;code>DataSource&lt;/code>&#xA;object is identical to a connection obtained through the&#xA;&lt;code>DriverManager&lt;/code> facility.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="a02e568f-5f1c-4883-bb32-a4e0eb876fab"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="64768ad2-6d46-439c-9f88-3bf1cc0afae0" name="PooledConnection" isAbstract="true">
            <ownedComment xmi:id="267240e1-cbda-4b63-a84b-aff770b24f78" body="An object that provides hooks for connection pool management.&#xA;A &lt;code>PooledConnection&lt;/code> object&#xA;represents a physical connection to a data source.  The connection&#xA;can be recycled rather than being closed when an application is&#xA;finished with it, thus reducing the number of connections that&#xA;need to be made.&#xA;&lt;P>&#xA;An application programmer does not use the &lt;code>PooledConnection&lt;/code>&#xA;interface directly; rather, it is used by a middle tier infrastructure&#xA;that manages the pooling of connections.&#xA;&lt;P>&#xA;When an application calls the method &lt;code>DataSource.getConnection&lt;/code>,&#xA;it gets back a &lt;code>Connection&lt;/code> object.  If connection pooling is&#xA;being done, that &lt;code>Connection&lt;/code> object is actually a handle to&#xA;a &lt;code>PooledConnection&lt;/code> object, which is a physical connection.&#xA;&lt;P>&#xA;The connection pool manager, typically the application server, maintains&#xA;a pool of &lt;code>PooledConnection&lt;/code> objects.  If there is a&#xA;&lt;code>PooledConnection&lt;/code> object available in the pool, the&#xA;connection pool manager returns a &lt;code>Connection&lt;/code> object that&#xA;is a handle to that physical connection.&#xA;If no &lt;code>PooledConnection&lt;/code> object is available, the&#xA;connection pool manager calls the &lt;code>PooledConnection&lt;/code>&#xA;method &lt;code>getConnection&lt;/code> to create a new physical connection and&#xA;returns a handle to it.&#xA;&lt;P>&#xA;When an application closes a connection, it calls the &lt;code>Connection&lt;/code>&#xA;method &lt;code>close&lt;/code>. When connection pooling is being done,&#xA;the connection pool manager is notified because it has registered itself as&#xA;a &lt;code>ConnectionEventListener&lt;/code> object using the&#xA;&lt;code>ConnectionPool&lt;/code> method &lt;code>addConnectionEventListener&lt;/code>.&#xA;The connection pool manager deactivates the handle to&#xA;the &lt;code>PooledConnection&lt;/code> object and  returns the&#xA;&lt;code>PooledConnection&lt;/code> object to the pool of connections so that&#xA;it can be used again.  Thus, when an application closes its connection,&#xA;the underlying physical connection is recycled rather than being closed.&#xA;&lt;P>&#xA;The physical connection is not closed until the connection pool manager&#xA;calls the &lt;code>PooledConnection&lt;/code> method &lt;code>close&lt;/code>.&#xA;This method is generally called to have an orderly shutdown of the server or&#xA;if a fatal error has made the connection unusable.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="64768ad2-6d46-439c-9f88-3bf1cc0afae0"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="52dbf75a-316b-41b8-9815-c629022caf2f" name="RowSetMetaData" isAbstract="true">
            <ownedComment xmi:id="1bdb107f-c024-4f0c-909e-79ef8edf8837" body="An object that contains information about the columns in a&#xA;&lt;code>RowSet&lt;/code> object.  This interface is&#xA;an extension of the &lt;code>ResultSetMetaData&lt;/code> interface with&#xA;methods for setting the values in a &lt;code>RowSetMetaData&lt;/code> object.&#xA;When a &lt;code>RowSetReader&lt;/code> object reads data into a &lt;code>RowSet&lt;/code>&#xA;object, it creates a &lt;code>RowSetMetaData&lt;/code> object and initializes it&#xA;using the methods in the &lt;code>RowSetMetaData&lt;/code> interface.  Then the&#xA;reader passes the &lt;code>RowSetMetaData&lt;/code> object to the rowset.&#xA;&lt;P>&#xA;The methods in this interface are invoked internally when an application&#xA;calls the method &lt;code>RowSet.execute&lt;/code>; an application&#xA;programmer would not use them directly.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="52dbf75a-316b-41b8-9815-c629022caf2f"/>
            <generalization xmi:id="a8732bfd-1a9a-49bf-8b60-f719f241abe5" isSubstitutable="true" general="82d078ad-44b0-4d42-8c7f-162d2a0a1a13"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="a7ba63fd-a7b7-4911-a82c-a72bd3255c2a" name="RowSetWriter" isAbstract="true">
            <ownedComment xmi:id="bd366140-7628-4d33-a012-089924498287" body="An object that implements the &lt;code>RowSetWriter&lt;/code> interface,&#xA;called a &lt;i>writer&lt;/i>. A writer may be registered with a &lt;code>RowSet&lt;/code>&#xA;object that supports the reader/writer paradigm.&#xA;&lt;P>&#xA;If a disconnected &lt;code>RowSet&lt;/code> object modifies some of its data,&#xA;and it has a writer associated with it, it may be implemented so that it&#xA;calls on the writer's &lt;code>writeData&lt;/code> method internally&#xA;to write the updates back to the data source. In order to do this, the writer&#xA;must first establish a connection with the rowset's data source.&#xA;&lt;P>&#xA;If the data to be updated has already been changed in the data source, there&#xA;is a conflict, in which case the writer will not write&#xA;the changes to the data source.  The algorithm the writer uses for preventing&#xA;or limiting conflicts depends entirely on its implementation.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="a7ba63fd-a7b7-4911-a82c-a72bd3255c2a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="740c6a94-b9b2-4878-89c7-39515536ed91" name="RowSetEvent">
            <ownedComment xmi:id="baea2622-dfc0-48a3-b9d1-47127afc8033" body="An &lt;code>Event&lt;/code> object generated when an event occurs to a&#xA;&lt;code>RowSet&lt;/code> object.  A &lt;code>RowSetEvent&lt;/code> object is&#xA;generated when a single row in a rowset is changed, the whole rowset&#xA;is changed, or the rowset cursor moves.&#xA;&lt;P>&#xA;When an event occurs on a &lt;code>RowSet&lt;/code> object, one of the&#xA;&lt;code>RowSetListener&lt;/code> methods will be sent to all registered&#xA;listeners to notify them of the event.  An &lt;code>Event&lt;/code> object&#xA;is supplied to the &lt;code>RowSetListener&lt;/code> method so that the&#xA;listener can use it to find out which &lt;code>RowSet&lt;/code> object is&#xA;the source of the event.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="740c6a94-b9b2-4878-89c7-39515536ed91"/>
            <generalization xmi:id="f1e0fddc-58f8-45e2-aee6-b92da843e1eb" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="0ab543cc-72d3-457a-a254-1903dbc0d5da" name="RowSetListener" isAbstract="true">
            <ownedComment xmi:id="83c3744a-fc34-43aa-9420-61514abaf1a6" body="An interface that must be implemented by a&#xA;component that wants to be notified when a significant&#xA;event happens in the life of a &lt;code>RowSet&lt;/code> object.&#xA;A component becomes a listener by being registered with a&#xA;&lt;code>RowSet&lt;/code> object via the method &lt;code>RowSet.addRowSetListener&lt;/code>.&#xA;How a registered component implements this interface determines what it does&#xA;when it is notified of an event.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="0ab543cc-72d3-457a-a254-1903dbc0d5da"/>
            <generalization xmi:id="d01c0495-1a88-472b-b01d-6134a272aa4f" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="e616baf7-9c01-483d-965e-e9423d225417" name="RowSet" isAbstract="true">
            <ownedComment xmi:id="35fcf8d8-e6db-4cc1-9d15-60166110b890" body="The interface that adds support to the JDBC API for the&#xA;JavaBeans&lt;sup>&lt;font size=-2>TM&lt;/font>&lt;/sup> component model.&#xA;A rowset, which can be used as a JavaBeans component in&#xA;a visual Bean development environment, can be created and&#xA;configured at design time and executed at run time.&#xA;&lt;P>&#xA;The &lt;code>RowSet&lt;/code>&#xA;interface provides a set of JavaBeans properties that allow a &lt;code>RowSet&lt;/code>&#xA;instance to be configured to connect to a JDBC data source and read&#xA;some data from the data source.  A group of setter methods (&lt;code>setInt&lt;/code>,&#xA;&lt;code>setBytes&lt;/code>, &lt;code>setString&lt;/code>, and so on)&#xA;provide a way to pass input parameters to a rowset's command property.&#xA;This command is the SQL query the rowset uses when it gets its data from&#xA;a relational database, which is generally the case.&#xA;&lt;P>&#xA;The &lt;code>RowSet&lt;/code>&#xA;interface supports JavaBeans events, allowing other components in an&#xA;application to be notified when an event occurs on a rowset,&#xA;such as a change in its value.&#xA;&#xA;&lt;P>The &lt;code>RowSet&lt;/code> interface is unique in that it is intended to be&#xA;implemented using the rest of the JDBC API.  In other words, a&#xA;&lt;code>RowSet&lt;/code> implementation is a layer of software that executes &quot;on top&quot;&#xA;of a JDBC driver.  Implementations of the &lt;code>RowSet&lt;/code> interface can&#xA;be provided by anyone, including JDBC driver vendors who want to&#xA;provide a &lt;code>RowSet&lt;/code> implementation as part of their JDBC products.&#xA;&lt;P>&#xA;A &lt;code>RowSet&lt;/code> object may make a connection with a data source and&#xA;maintain that connection throughout its life cycle, in which case it is&#xA;called a &lt;i>connected&lt;/i> rowset.  A rowset may also make a connection with&#xA;a data source, get data from it, and then close the connection. Such a rowset&#xA;is called a &lt;i>disconnected&lt;/i> rowset.  A disconnected rowset may make&#xA;changes to its data while it is disconnected and then send the changes back&#xA;to the original source of the data, but it must reestablish a connection to do so.&#xA;&lt;P>&#xA;A disconnected rowset may have a reader (a &lt;code>RowSetReader&lt;/code> object)&#xA;and a writer (a &lt;code>RowSetWriter&lt;/code> object) associated with it.&#xA;The reader may be implemented in many different ways to populate a rowset&#xA;with data, including getting data from a non-relational data source. The&#xA;writer can also be implemented in many different ways to propagate changes&#xA;made to the rowset's data back to the underlying data source.&#xA;&lt;P>&#xA;Rowsets are easy to use.  The &lt;code>RowSet&lt;/code> interface extends the standard&#xA;&lt;code>java.sql.ResultSet&lt;/code> interface.  The &lt;code>RowSetMetaData&lt;/code>&#xA;interface extends the &lt;code>java.sql.ResultSetMetaData&lt;/code> interface.&#xA;Thus, developers familiar&#xA;with the JDBC API will have to learn a minimal number of new APIs to&#xA;use rowsets.  In addition, third-party software tools that work with&#xA;JDBC &lt;code>ResultSet&lt;/code> objects will also easily be made to work with rowsets.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="e616baf7-9c01-483d-965e-e9423d225417"/>
            <generalization xmi:id="e8773ffd-770e-4a4b-adb1-99f63dd2fb37" isSubstitutable="true" general="fce59589-58ac-4064-b872-079441b58b6f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="da2fabb0-b6fc-478b-8d99-91963778a693" name="ConnectionPoolDataSource" isAbstract="true">
            <ownedComment xmi:id="09c3fdf6-fb71-4e75-aaf5-467abe454673" body="A factory for &lt;code>PooledConnection&lt;/code>&#xA;objects.  An object that implements this interface will typically be&#xA;registered with a naming service that is based on the&#xA;Java&lt;sup>&lt;font size=-2>TM&lt;/font>&lt;/sup> Naming and Directory Interface&#xA;(JNDI).&#xA;&#xA;@since 1.4&#xA;" annotatedElement="da2fabb0-b6fc-478b-8d99-91963778a693"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="eeddb334-aba4-4b37-9b75-5f6192f22f5a" name="RowSetReader" isAbstract="true">
            <ownedComment xmi:id="8b678ee9-898e-446f-ae49-deffc16b9782" body="The facility that a disconnected &lt;code>RowSet&lt;/code> object calls on&#xA;to populate itself with rows of data. A reader (an object implementing the&#xA;&lt;code>RowSetReader&lt;/code> interface) may be registered with&#xA;a &lt;code>RowSet&lt;/code> object that supports the reader/writer paradigm.&#xA;When the &lt;code>RowSet&lt;/code> object's &lt;code>execute&lt;/code> method is&#xA;called, it in turn calls the reader's &lt;code>readData&lt;/code> method.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="eeddb334-aba4-4b37-9b75-5f6192f22f5a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="63302986-f652-4270-926e-e217df4f8cc6" name="rowset">
            <packagedElement xmi:type="uml:Interface" xmi:id="2e561e16-9f1c-41dd-bc04-35182ca31cc0" name="FilteredRowSet" isAbstract="true">
              <ownedComment xmi:id="1050136e-333d-402d-ada2-277d5bfef279" body="The standard interface that all standard implementations of&#xA;&lt;code>FilteredRowSet&lt;/code> must implement. The &lt;code>FilteredRowSetImpl&lt;/code> class&#xA;provides the reference implementation which may be extended if required.&#xA;Alternatively, a vendor is free to implement its own version&#xA;by implementing this interface.&#xA;&#xA;&lt;h3>1.0 Background&lt;/h3>&#xA;&#xA;There are occasions when a &lt;code>RowSet&lt;/code> object has a need to provide a degree&#xA;of filtering to its contents. One possible solution is to provide&#xA;a query language for all standard &lt;code>RowSet&lt;/code> implementations; however,&#xA;this is an impractical approach for lightweight components such as disconnected&#xA;&lt;code>RowSet&lt;/code>&#xA;objects. The &lt;code>FilteredRowSet&lt;/code> interface seeks to address this need&#xA;without supplying a heavyweight query language along with the processing that&#xA;such a query language would require.&#xA;&lt;p>&#xA;A JDBC &lt;code>FilteredRowSet&lt;/code> standard implementation implements the&#xA;&lt;code>RowSet&lt;/code> interfaces and extends the&#xA;&lt;code>CachedRowSet&lt;/code>&lt;sup>&lt;font size=-2>TM&lt;/font>&lt;/sup> class. The&#xA;&lt;code>CachedRowSet&lt;/code> class provides a set of protected cursor manipulation&#xA;methods, which a &lt;code>FilteredRowSet&lt;/code> implementation can override&#xA;to supply filtering support.&#xA;&#xA;&lt;h3>2.0 Predicate Sharing&lt;/h3>&#xA;&#xA;If a &lt;code>FilteredRowSet&lt;/code> implementation is shared using the&#xA;inherited &lt;code>createShared&lt;/code> method in parent interfaces, the&#xA;&lt;code>Predicate&lt;/code> should be shared without modification by all&#xA;&lt;code>FilteredRowSet&lt;/code> instance clones.&#xA;&#xA;&lt;h3>3.0 Usage&lt;/h3>&#xA;&lt;p>&#xA;By implementing a &lt;code>Predicate&lt;/code> (see example in &lt;a href=&quot;Predicate.html&quot;>Predicate&lt;/a>&#xA;class JavaDoc), a &lt;code>FilteredRowSet&lt;/code> could then be used as described&#xA;below.&#xA;&lt;P>&#xA;&lt;code>&#xA;&lt;pre>&#xA;FilteredRowSet frs = new FilteredRowSetImpl();&#xA;frs.populate(rs);&#xA;&#xA;Range name = new Range(&quot;Alpha&quot;, &quot;Bravo&quot;, &quot;columnName&quot;);&#xA;frs.setFilter(name);&#xA;&#xA;frs.next() // only names from &quot;Alpha&quot; to &quot;Bravo&quot; will be returned&#xA;&lt;/pre>&#xA;&lt;/code>&#xA;In the example above, we initialize a &lt;code>Range&lt;/code> object which&#xA;implements the &lt;code>Predicate&lt;/code> interface. This object expresses&#xA;the following constraints: All rows outputted or modified from this&#xA;&lt;code>FilteredRowSet&lt;/code> object must fall between the values 'Alpha' and&#xA;'Bravo' both values inclusive, in the column 'columnName'. If a filter is&#xA;applied to a &lt;code>FilteredRowSet&lt;/code> object that contains no data that&#xA;falls within the range of the filter, no rows are returned.&#xA;&lt;p>&#xA;This framework allows multiple classes implementing predicates to be&#xA;used in combination to achieved the required filtering result with&#xA;out the need for query language processing.&#xA;&lt;p>&#xA;&lt;h3>4.0 Updating a &lt;code>FilteredRowSet&lt;/code> Object&lt;/h3>&#xA;The predicate set on a &lt;code>FilteredRowSet&lt;/code> object&#xA;applies a criterion on all rows in a&#xA;&lt;code>RowSet&lt;/code> object to manage a subset of rows in a &lt;code>RowSet&lt;/code>&#xA;object. This criterion governs the subset of rows that are visible and also&#xA;defines which rows can be modified, deleted or inserted.&#xA;&lt;p>&#xA;Therefore, the predicate set on a &lt;code>FilteredRowSet&lt;/code> object must be&#xA;considered as bi-directional and the set criterion as the gating mechanism&#xA;for all views and updates to the &lt;code>FilteredRowSet&lt;/code> object. Any attempt&#xA;to update the &lt;code>FilteredRowSet&lt;/code> that violates the criterion will&#xA;result in a &lt;code>SQLException&lt;/code> object being thrown.&#xA;&lt;p>&#xA;The &lt;code>FilteredRowSet&lt;/code> range criterion can be modified by applying&#xA;a new &lt;code>Predicate&lt;/code> object to the &lt;code>FilteredRowSet&lt;/code>&#xA;instance at any time. This is  possible if no additional references to the&#xA;&lt;code>FilteredRowSet&lt;/code> object are detected. A new filter has has an&#xA;immediate effect on criterion enforcement within the&#xA;&lt;code>FilteredRowSet&lt;/code> object, and all subsequent views and updates will be&#xA;subject to similar enforcement.&#xA;&lt;p>&#xA;&lt;h3>5.0 Behavior of Rows Outside the Filter&lt;/h3>&#xA;Rows that fall outside of the filter set on a &lt;code>FilteredRowSet&lt;/code>&#xA;object cannot be modified until the filter is removed or a&#xA;new filter is applied.&#xA;&lt;p>&#xA;Furthermore, only rows that fall within the bounds of a filter will be&#xA;synchronized with the data source.&#xA;&#xA;@author Jonathan Bruce&#xA;" annotatedElement="2e561e16-9f1c-41dd-bc04-35182ca31cc0"/>
              <generalization xmi:id="47e0ce69-0a9f-4192-a91c-fa9f8ad1f140" isSubstitutable="true" general="977d38e5-8805-422b-b43d-1a8cec20c119"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="11897243-c796-4fa7-be72-b62845af6569" name="RowSetWarning">
              <ownedComment xmi:id="b5a7a302-3ce1-4387-8f9d-a58e2c1d3e2e" body="An extension of &lt;code>SQLException&lt;/code> that provides information&#xA;about database warnings set on &lt;code>RowSet&lt;/code> objects.&#xA;Warnings are silently chained to the object whose method call&#xA;caused it to be reported.&#xA;This class complements the &lt;code>SQLWarning&lt;/code> class.&#xA;&lt;P>&#xA;Rowset warnings may be retrieved from &lt;code>JdbcRowSet&lt;/code>,&#xA;&lt;code>CachedRowSet&lt;/code>&lt;sup>&lt;font size=-2>TM&lt;/font>&lt;/sup>,&#xA;&lt;code>WebRowSet&lt;/code>, &lt;code>FilteredRowSet&lt;/code>, or &lt;code>JoinRowSet&lt;/code>&#xA;implementations. To retrieve the first warning reported on any&#xA;&lt;code>RowSet&lt;/code>&#xA;implementation,  use the method &lt;code>getRowSetWarnings&lt;/code> defined&#xA;in the &lt;code>JdbcRowSet&lt;/code> interface or the &lt;code>CachedRowSet&lt;/code>&#xA;interface. To retrieve a warning chained to the first warning, use the&#xA;&lt;code>RowSetWarning&lt;/code> method&#xA;&lt;code>getNextWarning&lt;/code>. To retrieve subsequent warnings, call&#xA;&lt;code>getNextWarning&lt;/code> on each &lt;code>RowSetWarning&lt;/code> object that is&#xA;returned.&#xA;&lt;P>&#xA;The inherited methods &lt;code>getMessage&lt;/code>, &lt;code>getSQLState&lt;/code>,&#xA;and &lt;code>getErrorCode&lt;/code> retrieve information contained in a&#xA;&lt;code>RowSetWarning&lt;/code> object.&#xA;" annotatedElement="11897243-c796-4fa7-be72-b62845af6569"/>
              <generalization xmi:id="85c38a34-e247-4f3b-a791-05b7df3af8fc" isSubstitutable="true" general="9c8e52a6-a87b-425b-8824-99198fff353f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="f1573f8c-4703-4a14-889b-0bbfe0dccf8f" name="JdbcRowSet" isAbstract="true">
              <ownedComment xmi:id="6100805c-15e1-403d-a94a-4f59dc275c45" body="The standard interface that all standard implementations of&#xA;&lt;code>JdbcRowSet&lt;/code> must implement.&#xA;&#xA;&lt;h3>1.0 Overview&lt;/h3>&#xA;A wrapper around a &lt;code>ResultSet&lt;/code> object that makes it possible&#xA;to use the result set as a JavaBeans&lt;sup>&lt;font size=-2>TM&lt;/font>&lt;/sup>&#xA;component.  Thus, a &lt;code>JdbcRowSet&lt;/code> object can be one of the Beans that&#xA;a tool makes available for composing an application.  Because&#xA;a &lt;code>JdbcRowSet&lt;/code> is a connected rowset, that is, it continually&#xA;maintains its connection to a database using a JDBC technology-enabled&#xA;driver, it also effectively makes the driver a JavaBeans component.&#xA;&lt;P>&#xA;Because it is always connected to its database, an instance of&#xA;&lt;code>JdbcRowSet&lt;/code>&#xA;can simply take calls invoked on it and in turn call them on its&#xA;&lt;code>ResultSet&lt;/code> object. As a consequence, a result set can, for&#xA;example, be a component in a Swing application.&#xA;&lt;P>&#xA;Another advantage of a &lt;code>JdbcRowSet&lt;/code> object is that it can be&#xA;used to make a &lt;code>ResultSet&lt;/code> object scrollable and updatable.  All&#xA;&lt;code>RowSet&lt;/code> objects are by default scrollable and updatable. If&#xA;the driver and database being used do not support scrolling and/or updating&#xA;of result sets, an application can populate a &lt;code>JdbcRowSet&lt;/code> object&#xA;with the data of a &lt;code>ResultSet&lt;/code> object and then operate on the&#xA;&lt;code>JdbcRowSet&lt;/code> object as if it were the &lt;code>ResultSet&lt;/code>&#xA;object.&#xA;&lt;P>&#xA;&lt;h3>2.0 Creating a &lt;code>JdbcRowSet&lt;/code> Object&lt;/h3>&#xA;The reference implementation of the &lt;code>JdbcRowSet&lt;/code> interface,&#xA;&lt;code>JdbcRowSetImpl&lt;/code>, provides an implementation of&#xA;the default constructor.  A new instance is initialized with&#xA;default values, which can be set with new values as needed. A&#xA;new instance is not really functional until its &lt;code>execute&lt;/code>&#xA;method is called. In general, this method does the following:&#xA;&lt;UL>&#xA;&lt;LI> establishes a connection with a database&#xA;&lt;LI> creates a &lt;code>PreparedStatement&lt;/code> object and sets any of its&#xA;placeholder parameters&#xA;&lt;LI> executes the statement to create a &lt;code>ResultSet&lt;/code> object&#xA;&lt;/UL>&#xA;If the &lt;code>execute&lt;/code> method is successful, it will set the&#xA;appropriate private &lt;code>JdbcRowSet&lt;/code> fields with the following:&#xA;&lt;UL>&#xA;&lt;LI> a &lt;code>Connection&lt;/code> object -- the connection between the rowset&#xA;and the database&#xA;&lt;LI> a &lt;code>PreparedStatement&lt;/code> object -- the query that produces&#xA;the result set&#xA;&lt;LI> a &lt;code>ResultSet&lt;/code> object -- the result set that the rowset's&#xA;command produced and that is being made, in effect, a JavaBeans&#xA;component&#xA;&lt;/UL>&#xA;If these fields have not been set, meaning that the &lt;code>execute&lt;/code>&#xA;method has not executed successfully, no methods other than&#xA;&lt;code>execute&lt;/code> and &lt;code>close&lt;/code> may be called on the&#xA;rowset.  All other public methods will throw an exception.&#xA;&lt;P>&#xA;Before calling the &lt;code>execute&lt;/code> method, however, the command&#xA;and properties needed for establishing a connection must be set.&#xA;The following code fragment creates a &lt;code>JdbcRowSetImpl&lt;/code> object,&#xA;sets the command and connection properties, sets the placeholder parameter,&#xA;and then invokes the method &lt;code>execute&lt;/code>.&#xA;&lt;PRE>&#xA;JdbcRowSetImpl jrs = new JdbcRowSetImpl();&#xA;jrs.setCommand(&quot;SELECT * FROM TITLES WHERE TYPE = ?&quot;);&#xA;jrs.setURL(&quot;jdbc:myDriver:myAttribute&quot;);&#xA;jrs.setUsername(&quot;cervantes&quot;);&#xA;jrs.setPassword(&quot;sancho&quot;);&#xA;jrs.setString(1, &quot;BIOGRAPHY&quot;);&#xA;jrs.execute();&#xA;&lt;/PRE>&#xA;The variable &lt;code>jrs&lt;/code> now represents an instance of&#xA;&lt;code>JdbcRowSetImpl&lt;/code> that is a thin wrapper around the&#xA;&lt;code>ResultSet&lt;/code> object containing all the rows in the&#xA;table &lt;code>TITLES&lt;/code> where the type of book is biography.&#xA;At this point, operations called on &lt;code>jrs&lt;/code> will&#xA;affect the rows in the result set, which is effectively a JavaBeans&#xA;component.&#xA;&lt;P>&#xA;The implementation of the &lt;code>RowSet&lt;/code> method &lt;code>execute&lt;/code> in the&#xA;&lt;code>JdbcRowSet&lt;/code> reference implementation differs from that in the&#xA;&lt;code>CachedRowSet&lt;/code>&lt;sup>&lt;font size=-2>TM&lt;/font>&lt;/sup>&#xA;reference implementation to account for the different&#xA;requirements of connected and disconnected &lt;code>RowSet&lt;/code> objects.&#xA;&lt;p>&#xA;&#xA;@author Jonathan Bruce&#xA;" annotatedElement="f1573f8c-4703-4a14-889b-0bbfe0dccf8f"/>
              <generalization xmi:id="4960b400-5ff0-4f8b-abc8-92731ba07235" isSubstitutable="true" general="e616baf7-9c01-483d-965e-e9423d225417"/>
              <generalization xmi:id="fa20b5ba-b7cf-4e0b-8f9e-fa4a1a617df1" isSubstitutable="true" general="003824a9-a8bb-4ab9-ae74-9187dfffd05e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="b527a319-fb2f-4c77-bba9-c74889c9cf98" name="spi">
              <packagedElement xmi:type="uml:Interface" xmi:id="5c04875d-ff77-438e-ab5b-afddf94aa488" name="XmlWriter" isAbstract="true">
                <ownedComment xmi:id="8cc55a19-457b-45ad-b23e-0a6829c79b67" body="A specialized interface that facilitates an extension of the&#xA;&lt;code>SyncProvider&lt;/code> abstract class for XML orientated&#xA;synchronization providers.&#xA;&lt;p>&#xA;&lt;code>SyncProvider&lt;/code>  implementations that supply XML data writer&#xA;capabilities such as output XML stream capabilities can implement this&#xA;interface to provider standard &lt;code>XmlWriter&lt;/code> objects to&#xA;&lt;code>WebRowSet&lt;/code> implementations.&#xA;&lt;P>&#xA;Writing a &lt;code>WebRowSet&lt;/code> object includes printing the&#xA;rowset's data, metadata, and properties, all with the&#xA;appropriate XML tags.&#xA;" annotatedElement="5c04875d-ff77-438e-ab5b-afddf94aa488"/>
                <generalization xmi:id="7bc0e407-71d9-4263-a3dd-b6fd1900071e" isSubstitutable="true" general="a7ba63fd-a7b7-4911-a82c-a72bd3255c2a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="05d1cb44-0d6a-4ca9-bd04-6cd0d3932070" name="SyncFactory">
                <ownedComment xmi:id="4e57c012-0199-4906-9e85-3eae5e302c9c" body="The Service Provider Interface (SPI) mechanism that generates &lt;code>SyncProvider&lt;/code>&#xA;instances to be used by disconnected &lt;code>RowSet&lt;/code> objects.&#xA;The &lt;code>SyncProvider&lt;/code> instances in turn provide the&#xA;&lt;code>javax.sql.RowSetReader&lt;/code> object the &lt;code>RowSet&lt;/code> object&#xA;needs to populate itself with data and the&#xA;&lt;code>javax.sql.RowSetWriter&lt;/code> object it needs to&#xA;propagate changes to its&#xA;data back to the underlying data source.&#xA;&lt;P>&#xA;Because the methods in the &lt;code>SyncFactory&lt;/code> class are all static,&#xA;there is only one &lt;code>SyncFactory&lt;/code> object&#xA;per Java VM at any one time. This ensures that there is a single source from which a&#xA;&lt;code>RowSet&lt;/code> implementation can obtain its &lt;code>SyncProvider&lt;/code>&#xA;implementation.&#xA;&lt;p>&#xA;&lt;h3>1.0 Overview&lt;/h3>&#xA;The &lt;code>SyncFactory&lt;/code> class provides an internal registry of available&#xA;synchronization provider implementations (&lt;code>SyncProvider&lt;/code> objects).&#xA;This registry may be queried to determine which&#xA;synchronization providers are available.&#xA;The following line of code gets an enumeration of the providers currently registered.&#xA;&lt;PRE>&#xA;java.util.Enumeration e = SyncFactory.getRegisteredProviders();&#xA;&lt;/PRE>&#xA;All standard &lt;code>RowSet&lt;/code> implementations must provide at least two providers:&#xA;&lt;UL>&#xA;&lt;LI>an optimistic provider for use with a &lt;code>CachedRowSet&lt;/code> implementation&#xA;or an implementation derived from it&#xA;&lt;LI>an XML provider, which is used for reading and writing XML, such as with&#xA;&lt;code>WebRowSet&lt;/code> objects&#xA;&lt;/UL>&#xA;Note that the JDBC RowSet Implementations include the &lt;code>SyncProvider&lt;/code>&#xA;implemtations &lt;code>RIOptimisticProvider&lt;/code> and &lt;code>RIXmlProvider&lt;/code>,&#xA;which satisfy this requirement.&#xA;&lt;P>&#xA;The &lt;code>SyncFactory&lt;/code> class provides accessor methods to assist&#xA;applications in determining which synchronization providers are currently&#xA;registered with the &lt;code>SyncFactory&lt;/code>.&#xA;&lt;p>&#xA;Other methods let &lt;code>RowSet&lt;/code> persistence providers be&#xA;registered or de-registered with the factory mechanism. This&#xA;allows additional synchronization provider implementations to be made&#xA;available to &lt;code>RowSet&lt;/code> objects at run time.&#xA;&lt;p>&#xA;Applications can apply a degree of filtering to determine the level of&#xA;synchronization that a &lt;code>SyncProvider&lt;/code> implementation offers.&#xA;The following criteria determine whether a provider is&#xA;made available to a &lt;code>RowSet&lt;/code> object:&#xA;&lt;ol>&#xA;&lt;li>If a particular provider is specified by a &lt;code>RowSet&lt;/code> object, and&#xA;the &lt;code>SyncFactory&lt;/code> does not contain a reference to this provider,&#xA;a &lt;code>SyncFactoryException&lt;/code> is thrown stating that the synchronization&#xA;provider could not be found.&#xA;&lt;p>&#xA;&lt;li>If a &lt;code>RowSet&lt;/code> implementation is instantiated with a specified&#xA;provider and the specified provider has been properly registered, the&#xA;requested provider is supplied. Otherwise a &lt;code>SyncFactoryException&lt;/code>&#xA;is thrown.&#xA;&lt;p>&#xA;&lt;li>If a &lt;code>RowSet&lt;/code> object does not specify a&#xA;&lt;code>SyncProvider&lt;/code> implementation and no additional&#xA;&lt;code>SyncProvider&lt;/code> implementations are available, the reference&#xA;implementation providers are supplied.&#xA;&lt;/ol>&#xA;&lt;h3>2.0 Registering &lt;code>SyncProvider&lt;/code> Implementations&lt;/h3>&#xA;&lt;p>&#xA;Both vendors and developers can register &lt;code>SyncProvider&lt;/code>&#xA;implementations using one of the following mechanisms.&#xA;&lt;ul>&#xA;&lt;LI>&lt;B>Using the command line&lt;/B>&lt;BR>&#xA;The name of the provider is supplied on the command line, which will add&#xA;the provider to the system properties.&#xA;For example:&#xA;&lt;PRE>&#xA;-Drowset.provider.classname=com.fred.providers.HighAvailabilityProvider&#xA;&lt;/PRE>&#xA;&lt;li>&lt;b>Using the Standard Properties File&lt;/b>&lt;BR>&#xA;The reference implementation is targeted&#xA;to ship with J2SE 1.5, which will include an additional resource file&#xA;that may be edited by hand. Here is an example of the properties file&#xA;included in the reference implementation:&#xA;&lt;PRE>&#xA;#Default JDBC RowSet sync providers listing&#xA;#&#xA;&#xA;# Optimistic synchronization provider&#xA;rowset.provider.classname.0=com.sun.rowset.providers.RIOptimisticProvider&#xA;rowset.provider.vendor.0=Sun Microsystems Inc&#xA;rowset.provider.version.0=1.0&#xA;&#xA;# XML Provider using standard XML schema&#xA;rowset.provider.classname.1=com.sun.rowset.providers.RIXMLProvider&#xA;rowset.provider.vendor.1=Sun Microsystems Inc.&#xA;rowset.provider.version.1=1.0&#xA;&lt;/PRE>&#xA;The &lt;code>SyncFactory&lt;/code> checks this file and registers the&#xA;&lt;code>SyncProvider&lt;/code> implementations that it contains. A&#xA;developer or vendor can add other implementations to this file.&#xA;For example, here is a possible addition:&#xA;&lt;PRE>&#xA;rowset.provider.classname.2=com.fred.providers.HighAvailabilityProvider&#xA;rowset.provider.vendor.2=Fred, Inc.&#xA;rowset.provider.version.2=1.0&#xA;&lt;/PRE>&#xA;&lt;p>&#xA;&lt;li>&lt;b>Using a JNDI Context&lt;/b>&lt;BR>&#xA;Available providers can be registered on a JNDI&#xA;context, and the &lt;code>SyncFactory&lt;/code> will attempt to load&#xA;&lt;code>SyncProvider&lt;/code> implementations from that JNDI context.&#xA;For example, the following code fragment registers a provider implementation&#xA;on a JNDI context.  This is something a deployer would normally do. In this&#xA;example, &lt;code>MyProvider&lt;/code> is being registered on a CosNaming&#xA;namespace, which is the namespace used by J2EE resources.&#xA;&lt;PRE>&#xA;import javax.naming.*;&#xA;&#xA;Hashtable svrEnv = new  Hashtable();&#xA;srvEnv.put(Context.INITIAL_CONTEXT_FACTORY, &quot;CosNaming&quot;);&#xA;&#xA;Context ctx = new InitialContext(svrEnv);&#xA;com.fred.providers.MyProvider = new MyProvider();&#xA;ctx.rebind(&quot;providers/MyProvider&quot;, syncProvider);&#xA;&lt;/PRE>&#xA;&lt;/ul>&#xA;Next, an application will register the JNDI context with the&#xA;&lt;code>SyncFactory&lt;/code> instance.  This allows the &lt;code>SyncFactory&lt;/code>&#xA;to browse within the JNDI context looking for &lt;code>SyncProvider&lt;/code>&#xA;implementations.&#xA;&lt;PRE>&#xA;Hashtable appEnv = new Hashtable();&#xA;appEnv.put(Context.INITIAL_CONTEXT_FACTORY, &quot;CosNaming&quot;);&#xA;appEnv.put(Context.PROVIDER_URL, &quot;iiop://hostname/providers&quot;);&#xA;Context ctx = new InitialContext(appEnv);&#xA;&#xA;SyncFactory.registerJNDIContext(ctx);&#xA;&lt;/PRE>&#xA;If a &lt;code>RowSet&lt;/code> object attempts to obtain a &lt;code>MyProvider&lt;/code>&#xA;object, the &lt;code>SyncFactory&lt;/code> will try to locate it. First it searches&#xA;for it in the system properties, then it looks in the resource files, and&#xA;finally it checks the JNDI context that has been set. The &lt;code>SyncFactory&lt;/code>&#xA;instance verifies that the requested provider is a valid extension of the&#xA;&lt;code>SyncProvider&lt;/code> abstract class and then gives it to the&#xA;&lt;code>RowSet&lt;/code> object. In the following code fragment, a new&#xA;&lt;code>CachedRowSet&lt;/code> object is created and initialized with&#xA;&lt;i>env&lt;/i>, which contains the binding to &lt;code>MyProvider&lt;/code>.&#xA;&lt;PRE>&#xA;Hashtable env = new Hashtable();&#xA;env.put(SyncFactory.ROWSET_SYNC_PROVIDER, &quot;com.fred.providers.MyProvider&quot;);&#xA;CachedRowSet crs = new com.sun.rowset.CachedRowSetImpl(env);&#xA;&lt;/PRE>&#xA;Further details on these mechanisms are available in the&#xA;&lt;code>javax.sql.rowset.spi&lt;/code> package specification.&#xA;&#xA;@author  Jonathan Bruce&#xA;@see javax.sql.rowset.spi.SyncProvider&#xA;@see javax.sql.rowset.spi.SyncFactoryException&#xA;" annotatedElement="05d1cb44-0d6a-4ca9-bd04-6cd0d3932070"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="54455cd4-08a7-49be-8ad9-f60f7a76339f" name="TransactionalWriter" isAbstract="true">
                <ownedComment xmi:id="96303466-5f74-4b42-9811-e144c3afae3e" body="A specialized interface that facilitates an extension of the standard&#xA;&lt;code>SyncProvider&lt;/code> abstract class so that it has finer grained&#xA;transaction control.&#xA;&lt;p>&#xA;If one or more disconnected &lt;code>RowSet&lt;/code> objects are particating&#xA;in a global transaction, they may wish to coordinate their synchronization&#xA;commits to preserve data integrity and reduce the number of&#xA;sychronization exceptions. If this is the case, an application should set&#xA;the &lt;code>CachedRowSet&lt;/code> constant &lt;code>COMMIT_ON_ACCEPT_CHANGES&lt;/code>&#xA;to &lt;code>false&lt;/code> and use the &lt;code>commit&lt;/code> and &lt;code>rollback&lt;/code>&#xA;methods defined in this interface to manage transaction boundaries.&#xA;" annotatedElement="54455cd4-08a7-49be-8ad9-f60f7a76339f"/>
                <generalization xmi:id="7be2b3b0-2aec-4d27-b07d-b46749e4b5d6" isSubstitutable="true" general="a7ba63fd-a7b7-4911-a82c-a72bd3255c2a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f4d43989-2603-4f6a-8529-ecedff87e6be" name="SyncProviderException">
                <ownedComment xmi:id="2881ed04-80a7-4ced-a40e-9d7042bb512f" body="Indicates an error with the &lt;code>SyncProvider&lt;/code> mechanism. This exception&#xA;is created by a &lt;code>SyncProvider&lt;/code> abstract class extension if it&#xA;encounters violations in reading from or writing to the originating data source.&#xA;&lt;P>&#xA;If it is implemented to do so, the &lt;code>SyncProvider&lt;/code> object may also create a&#xA;&lt;code>SyncResolver&lt;/code> object and either initialize the &lt;code>SyncProviderException&lt;/code>&#xA;object with it at construction time or set it with the &lt;code>SyncProvider&lt;/code> object at&#xA;a later time.&#xA;&lt;P>&#xA;The method &lt;code>acceptChanges&lt;/code> will throw this exception after the writer&#xA;has finished checking for conflicts and has found one or more conflicts. An&#xA;application may catch a &lt;code>SyncProviderException&lt;/code> object and call its&#xA;&lt;code>getSyncResolver&lt;/code> method to get its &lt;code>SyncResolver&lt;/code> object.&#xA;See the code fragment in the interface comment for&#xA;&lt;a href=&quot;SyncResolver.java&quot;>&lt;code>SyncResolver&lt;/code>&lt;/a> for an example.&#xA;This &lt;code>SyncResolver&lt;/code> object will mirror the &lt;code>RowSet&lt;/code>&#xA;object that generated the exception, except that it will contain only the values&#xA;from the data source that are in conflict.  All other values in the &lt;code>SyncResolver&lt;/code>&#xA;object will be &lt;code>null&lt;/code>.&#xA;&lt;P>&#xA;The &lt;code>SyncResolver&lt;/code> object may be used to examine and resolve&#xA;each conflict in a row and then go to the next row with a conflict to&#xA;repeat the procedure.&#xA;&lt;P>&#xA;A &lt;code>SyncProviderException&lt;/code> object may or may not contain a description of the&#xA;condition causing the exception.  The inherited method &lt;code>getMessage&lt;/code> may be&#xA;called to retrieve the description if there is one.&#xA;&#xA;@author Jonathan Bruce&#xA;@see javax.sql.rowset.spi.SyncFactory&#xA;@see javax.sql.rowset.spi.SyncResolver&#xA;@see javax.sql.rowset.spi.SyncFactoryException&#xA;" annotatedElement="f4d43989-2603-4f6a-8529-ecedff87e6be"/>
                <generalization xmi:id="68ff3d7e-4d20-480d-8a55-9b30b2895ca1" isSubstitutable="true" general="9c8e52a6-a87b-425b-8824-99198fff353f"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="612d4a8f-349e-41ba-b9e4-72dc7231dd11" name="SyncProvider" isAbstract="true">
                <ownedComment xmi:id="e708a519-6947-44b6-a935-8fb3abfde193" body="The synchronization mechanism that provides reader/writer capabilities for&#xA;disconnected &lt;code>RowSet&lt;/code> objects.&#xA;A &lt;code>SyncProvider&lt;/code> implementation is a class that extends the&#xA;&lt;code>SyncProvider&lt;/code> abstract class.&#xA;&lt;P>&#xA;A &lt;code>SyncProvider&lt;/code> implementation is&#xA;identified by a unique ID, which is its fully qualified class name.&#xA;This name must be registered with the&#xA;&lt;code>SyncFactory&lt;/code> SPI, thus making the implementation available to&#xA;all &lt;code>RowSet&lt;/code> implementations.&#xA;The factory mechanism in the reference implementation uses this name to instantiate&#xA;the implementation, which can then provide a &lt;code>RowSet&lt;/code> object with its&#xA;reader (a &lt;code>javax.sql.RowSetReader&lt;/code> object) and its writer (a&#xA;&lt;code>javax.sql.RowSetWriter&lt;/code> object).&#xA;&lt;P>&#xA;The Jdbc &lt;code>RowSet&lt;/code> Implementations specification provides two&#xA;reference implementations of the &lt;code>SyncProvider&lt;/code> abstract class:&#xA;&lt;code>RIOptimisticProvider&lt;/code> and &lt;code>RIXMLProvider&lt;/code>.&#xA;The &lt;code>RIOptimisticProvider&lt;/code> can set any &lt;code>RowSet&lt;/code>&#xA;implementation with a &lt;code>RowSetReader&lt;/code> object and a&#xA;&lt;code>RowSetWriter&lt;/code> object.  However, only the &lt;code>RIXMLProvider&lt;/code>&#xA;implementation can set an &lt;code>XmlReader&lt;/code> object and an&#xA;&lt;code>XmlWriter&lt;/code> object. A &lt;code>WebRowSet&lt;/code> object uses the&#xA;&lt;code>XmlReader&lt;/code> object to read data in XML format to populate itself with that&#xA;data.  It uses the &lt;code>XmlWriter&lt;/code> object to write itself to a stream or&#xA;&lt;code>java.io.Writer&lt;/code> object in XML format.&#xA;&lt;P>&#xA;&lt;h3>1.0 Naming Convention for Implementations&lt;/h3>&#xA;As a guide  to naming &lt;code>SyncProvider&lt;/code>&#xA;implementations, the following should be noted:&#xA;&lt;UL>&#xA;&lt;li>The name for a &lt;code>SyncProvider&lt;/code> implementation&#xA;is its fully qualified class name.&#xA;&lt;li>It is recommended that vendors supply a&#xA;&lt;code>SyncProvider&lt;/code> implementation in a package named &lt;code>providers&lt;/code>.&#xA;&lt;/UL>&#xA;&lt;p>&#xA;For instance, if a vendor named Fred, Inc. offered a&#xA;&lt;code>SyncProvider&lt;/code> implementation, you could have the following:&#xA;&lt;PRE>&#xA;Vendor name:  Fred, Inc.&#xA;Domain name of vendor:  com.fred&#xA;Package name:  com.fred.providers&#xA;SyncProvider implementation class name:  HighAvailabilityProvider&#xA;&#xA;Fully qualified class name of SyncProvider implementation:&#xA;com.fred.providers.HighAvailabilityProvider&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;The following line of code uses the fully qualified name to register&#xA;this implementation with the &lt;code>SyncFactory&lt;/code> static instance.&#xA;&lt;PRE>&#xA;SyncFactory.registerProvider(&#xA;&quot;com.fred.providers.HighAvailabilityProvider&quot;);&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;The default &lt;code>SyncProvider&lt;/code> object provided with the reference&#xA;implementation uses the following name:&#xA;&lt;pre>&#xA;com.sun.rowset.providers.RIOptimisticProvider&#xA;&lt;/pre>&#xA;&lt;p>&#xA;A vendor can register a &lt;code>SyncProvider&lt;/code> implementation class name&#xA;with Sun Microsystems, Inc. by sending email to jdbc@sun.com.&#xA;Sun will maintain a database listing the&#xA;available &lt;code>SyncProvider&lt;/code> implementations for use with compliant&#xA;&lt;code>RowSet&lt;/code> implementations.  This database will be similar to the&#xA;one already maintained to list available JDBC drivers.&#xA;&lt;P>&#xA;Vendors should refer to the reference implementation synchronization&#xA;providers for additional guidance on how to implement a new&#xA;&lt;code>SyncProvider&lt;/code> implementation.&#xA;&#xA;&lt;h3>2.0 How a &lt;code>RowSet&lt;/code> Object Gets Its Provider&lt;/h3>&#xA;&#xA;A disconnected &lt;code>Rowset&lt;/code> object may get access to a&#xA;&lt;code>SyncProvider&lt;/code> object in one of the following two ways:&#xA;&lt;UL>&#xA;&lt;LI>Using a constructor&lt;BR>&#xA;&lt;PRE>&#xA;CachedRowSet crs = new CachedRowSet(&#xA;&quot;com.fred.providers.HighAvailabilitySyncProvider&quot;);&#xA;&lt;/PRE>&#xA;&lt;LI>Using the &lt;code>setSyncProvider&lt;/code> method&#xA;&lt;PRE>&#xA;CachedRowSet crs = new CachedRowSet();&#xA;crs.setSyncProvider(&quot;com.fred.providers.HighAvailabilitySyncProvider&quot;);&#xA;&lt;/PRE>&#xA;&lt;/UL>&#xA;&lt;p>&#xA;By default, the reference implementations of the &lt;code>RowSet&lt;/code> synchronization&#xA;providers are always available to the Java platform.&#xA;If no other pluggable synchronization providers have been correctly&#xA;registered, the &lt;code>SyncFactory&lt;/code> will automatically generate&#xA;an instance of the default &lt;code>SyncProvider&lt;/code> reference implementation.&#xA;Thus, in the preceding code fragment, if no implementation named&#xA;&lt;code>com.fred.providers.HighAvailabilitySyncProvider&lt;/code> has been&#xA;registered with the &lt;code>SyncFactory&lt;/code> instance, &lt;i>crs&lt;/i> will be&#xA;assigned the default provider in the reference implementation, which is&#xA;&lt;code>com.sun.rowset.providers.RIOptimisticProvider&lt;/code>.&#xA;&lt;p>&#xA;&lt;h3>3.0 Violations and Synchronization Issues&lt;/h3>&#xA;If an update between a disconnected &lt;code>RowSet&lt;/code> object&#xA;and a data source violates&#xA;the original query or the underlying data source constraints, this will&#xA;result in undefined behavior for all disconnected &lt;code>RowSet&lt;/code> implementations&#xA;and their designated &lt;code>SyncProvider&lt;/code> implementations.&#xA;Not defining the behavior when such violations occur offers greater flexibility&#xA;for a &lt;code>SyncProvider&lt;/code>&#xA;implementation to determine its own best course of action.&#xA;&lt;p>&#xA;A &lt;code>SyncProvider&lt;/code> implementation&#xA;may choose to implement a specific handler to&#xA;handle a subset of query violations.&#xA;However if an original query violation or a more general data source constraint&#xA;violation is not handled by the &lt;code>SyncProvider&lt;/code> implementation,&#xA;all &lt;code>SyncProvider&lt;/code>&#xA;objects must throw a &lt;code>SyncProviderException&lt;/code>.&#xA;&lt;p>&#xA;&lt;h3>4.0 Updatable SQL VIEWs&lt;/h3>&#xA;It is possible for any disconnected or connected &lt;code>RowSet&lt;/code> object to be populated&#xA;from an SQL query that is formulated originally from an SQL &lt;code>VIEW&lt;/code>.&#xA;While in many cases it is possible for an update to be performed to an&#xA;underlying view, such an update requires additional metadata, which may vary.&#xA;The &lt;code>SyncProvider&lt;/code> class provides two constants to indicate whether&#xA;an implementation supports updating an SQL &lt;code>VIEW&lt;/code>.&#xA;&lt;ul>&#xA;&lt;li>&lt;code>&lt;b>NONUPDATABLE_VIEW_SYNC&lt;/b>&lt;/code> - Indicates that a &lt;code>SyncProvider&lt;/code>&#xA;implementation does not support synchronization with an SQL &lt;code>VIEW&lt;/code> as the&#xA;underlying source of data for the &lt;code>RowSet&lt;/code> object.&#xA;&lt;li>&lt;code>&lt;b>UPDATABLE_VIEW_SYNC&lt;/b>&lt;/code> - Indicates that a&#xA;&lt;code>SyncProvider&lt;/code> implementation&#xA;supports synchronization with an SQL &lt;code>VIEW&lt;/code> as the underlying source&#xA;of data.&#xA;&lt;/ul>&#xA;&lt;P>&#xA;The default is for a &lt;code>RowSet&lt;/code> object not to be updatable if it was&#xA;populated with data from an SQL &lt;code>VIEW&lt;/code>.&#xA;&lt;P>&#xA;&lt;h3>5.0 &lt;code>SyncProvider&lt;/code> Constants&lt;/h3>&#xA;The &lt;code>SyncProvider&lt;/code> class provides three sets of constants that&#xA;are used as return values or parameters for &lt;code>SyncProvider&lt;/code> methods.&#xA;&lt;code>SyncProvider&lt;/code> objects may be implemented to perform synchronization&#xA;between a &lt;code>RowSet&lt;/code> object and its underlying data source with varying&#xA;degrees of of care. The first group of constants indicate how synchronization&#xA;is handled. For example, &lt;code>GRADE_NONE&lt;/code> indicates that a&#xA;&lt;code>SyncProvider&lt;/code> object will not take any care to see what data is&#xA;valid and will simply write the &lt;code>RowSet&lt;/code> data to the data source.&#xA;&lt;code>GRADE_MODIFIED_AT_COMMIT&lt;/code> indicates that the provider will check&#xA;only modified data for validity.  Other grades check all data for validity&#xA;or set locks when data is modified or loaded.&#xA;&lt;OL>&#xA;&lt;LI>Constants to indicate the synchronization grade of a&#xA;&lt;code>SyncProvider&lt;/code> object&#xA;&lt;UL>&#xA;&lt;LI>SyncProvider.GRADE_NONE&#xA;&lt;LI>SyncProvider.GRADE_MODIFIED_AT_COMMIT&#xA;&lt;LI>SyncProvider.GRADE_CHECK_ALL_AT_COMMIT&#xA;&lt;LI>SyncProvider.GRADE_LOCK_WHEN_MODIFIED&#xA;&lt;LI>SyncProvider.GRADE_LOCK_WHEN_LOADED&#xA;&lt;/UL>&#xA;&lt;LI>Constants to indicate what locks are set on the data source&#xA;&lt;UL>&#xA;&lt;LI>SyncProvider.DATASOURCE_NO_LOCK&#xA;&lt;LI>SyncProvider.DATASOURCE_ROW_LOCK&#xA;&lt;LI>SyncProvider.DATASOURCE_TABLE_LOCK&#xA;&lt;LI>SyncProvider.DATASOURCE_DB_LOCK&#xA;&lt;/UL>&#xA;&lt;LI>Constants to indicate whether a &lt;code>SyncProvider&lt;/code> object can&#xA;perform updates to an SQL &lt;code>VIEW&lt;/code> &lt;BR>&#xA;These constants are explained in the preceding section (4.0).&#xA;&lt;UL>&#xA;&lt;LI>SyncProvider.UPDATABLE_VIEW_SYNC&#xA;&lt;LI>SyncProvider.NONUPDATABLE_VIEW_SYNC&#xA;&lt;/UL>&#xA;&lt;/OL>&#xA;&#xA;@author Jonathan Bruce&#xA;@see javax.sql.rowset.spi.SyncFactory&#xA;@see javax.sql.rowset.spi.SyncFactoryException&#xA;" annotatedElement="612d4a8f-349e-41ba-b9e4-72dc7231dd11"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="93e30953-6cb3-442b-99e7-2fb2b46d1df1" name="XmlReader" isAbstract="true">
                <ownedComment xmi:id="14e802d7-c458-4c82-899c-f311cb29392b" body="A specialized interface that facilitates an extension of the&#xA;&lt;code>SyncProvider&lt;/code> abstract class for XML orientated&#xA;synchronization providers.&#xA;&lt;P>&#xA;&lt;code>SyncProvider&lt;/code>  implementations that supply XML data reader&#xA;capabilities such as output XML stream capabilities can implement this&#xA;interface to provider standard &lt;code>XmlReader&lt;/code> objects to&#xA;&lt;code>WebRowSet&lt;/code> implementations.&#xA;&lt;p>&#xA;An &lt;code>XmlReader&lt;/code> object is registered as the&#xA;XML reader for a &lt;code>WebRowSet&lt;/code> by being assigned to the&#xA;rowset's &lt;code>xmlReader&lt;/code> field. When the &lt;code>WebRowSet&lt;/code>&#xA;object's &lt;code>readXml&lt;/code> method is invoked, it in turn invokes&#xA;its XML reader's &lt;code>readXML&lt;/code> method.&#xA;" annotatedElement="93e30953-6cb3-442b-99e7-2fb2b46d1df1"/>
                <generalization xmi:id="b1a7eac1-b298-41af-adb4-983c5f44955a" isSubstitutable="true" general="eeddb334-aba4-4b37-9b75-5f6192f22f5a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="6f8b9ce7-a531-4476-8a28-4720a76f8f2b" name="SyncResolver" isAbstract="true">
                <ownedComment xmi:id="abb0b3b7-50a7-4500-b2ef-5426fb0b8948" body="Defines a framework that allows applications to use a manual decision tree&#xA;to decide what should be done when a synchronization conflict occurs.&#xA;Although it is not mandatory for&#xA;applications to resolve synchronization conflicts manually, this&#xA;framework provides the means to delegate to the application when conflicts&#xA;arise.&#xA;&lt;p>&#xA;Note that a conflict is a situation where the &lt;code>RowSet&lt;/code> object's original&#xA;values for a row do not match the values in the data source, which indicates that&#xA;the data source row has been modified since the last synchronization. Note also that&#xA;a &lt;code>RowSet&lt;/code> object's original values are the values it had just prior to the&#xA;the last synchronization, which are not necessarily its initial values.&#xA;&lt;p>&#xA;&#xA;&lt;H2>Description of a &lt;code>SyncResolver&lt;/code> Object&lt;/H2>&#xA;&#xA;A &lt;code>SyncResolver&lt;/code> object is a specialized &lt;code>RowSet&lt;/code> object&#xA;that implements the &lt;code>SyncResolver&lt;/code> interface.&#xA;It &lt;b>may&lt;/b> operate as either a connected &lt;code>RowSet&lt;/code> object (an&#xA;implementation of the &lt;code>JdbcRowSet&lt;/code> interface) or a connected&#xA;&lt;code>RowSet&lt;/code> object (an implementation of the&#xA;&lt;code>CachedRowSet&lt;/code> interface or one of its subinterfaces). For information&#xA;on the subinterfaces, see the&#xA;&lt;a href=&quot;../package-summary.html&quot;>&lt;code>javax.sql.rowset&lt;/code>&lt;/a> package&#xA;description. The reference implementation for &lt;code>SyncResolver&lt;/code> implements&#xA;the &lt;code>CachedRowSet&lt;/code> interface, but other implementations&#xA;may choose to implement the &lt;code>JdbcRowSet&lt;/code> interface to satisfy&#xA;particular needs.&#xA;&lt;P>&#xA;After an application has attempted to synchronize a &lt;code>RowSet&lt;/code> object with&#xA;the data source (by calling the &lt;code>CachedRowSet&lt;/code>&#xA;method &lt;code>acceptChanges&lt;/code>), and one or more conflicts have been found,&#xA;a rowset's &lt;code>SyncProvider&lt;/code> object creates an instance of&#xA;&lt;code>SyncResolver&lt;/code>. This new &lt;code>SyncResolver&lt;/code> object has&#xA;the same number of rows and columns as the&#xA;&lt;code>RowSet&lt;/code> object that was attempting the synchronization. The&#xA;&lt;code>SyncResolver&lt;/code> object contains the values from the data source that caused&#xA;the conflict(s) and &lt;code>null&lt;/code> for all other values.&#xA;In addition, it contains information about each conflict.&#xA;&lt;P>&#xA;&#xA;&lt;H2>Getting and Using a &lt;code>SyncResolver&lt;/code> Object&lt;/H2>&#xA;&#xA;When the method &lt;code>acceptChanges&lt;/code> encounters conflicts, the&#xA;&lt;code>SyncProvider&lt;/code> object creates a &lt;code>SyncProviderException&lt;/code>&#xA;object and sets it with the new &lt;code>SyncResolver&lt;/code> object. The method&#xA;&lt;code>acceptChanges&lt;/code> will throw this exception, which&#xA;the application can then catch and use to retrieve the&#xA;&lt;code>SyncResolver&lt;/code> object it contains. The following code snippet uses the&#xA;&lt;code>SyncProviderException&lt;/code> method &lt;code>getSyncResolver&lt;/code> to get&#xA;the &lt;code>SyncResolver&lt;/code> object &lt;i>resolver&lt;/i>.&#xA;&lt;PRE>&#xA;} catch (SyncProviderException spe) {&#xA;SyncResolver resolver = spe.getSyncResolver();&#xA;...&#xA;}&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;With &lt;i>resolver&lt;/i> in hand, an application can use it to get the information&#xA;it contains about the conflict or conflicts.  A &lt;code>SyncResolver&lt;/code> object&#xA;such as &lt;i>resolver&lt;/i> keeps&#xA;track of the conflicts for each row in which there is a conflict.  It also places a&#xA;lock on the table or tables affected by the rowset's command so that no more&#xA;conflicts can occur while the current conflicts are being resolved.&#xA;&lt;P>&#xA;The following kinds of information can be obtained from a &lt;code>SyncResolver&lt;/code>&#xA;object:&#xA;&lt;P>&#xA;&lt;LI>What operation was being attempted when a conflict occurred&lt;BR>&#xA;The &lt;code>SyncProvider&lt;/code> interface defines four constants&#xA;describing states that may occur. Three&#xA;constants describe the type of operation (update, delete, or insert) that a&#xA;&lt;code>RowSet&lt;/code> object was attempting to perform when a conflict was discovered,&#xA;and the fourth indicates that there is no conflict.&#xA;These constants are the possible return values when a &lt;code>SyncResolver&lt;/code> object&#xA;calls the method &lt;code>getStatus&lt;/code>.&#xA;&lt;PRE>&#xA;int operation = resolver.getStatus();&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;&lt;LI>The value in the data source that caused a conflict&lt;BR>&#xA;A conflict exists when a value that a &lt;code>RowSet&lt;/code> object has changed&#xA;and is attempting to write to the data source&#xA;has also been changed in the data source since the last synchronization.  An&#xA;application can call the &lt;code>SyncResolver&lt;/code> method&#xA;&lt;code>getConflictValue&lt;/code > to retrieve the&#xA;value in the data source that is the cause of the conflict because the values in a&#xA;&lt;code>SyncResolver&lt;/code> object are the conflict values from the data source.&#xA;&lt;PRE>&#xA;java.lang.Object conflictValue = resolver.getConflictValue(2);&#xA;&lt;/PRE>&#xA;Note that the column in &lt;i>resolver&lt;/i> can be designated by the column number,&#xA;as is done in the preceding line of code, or by the column name.&#xA;&lt;/UL>&#xA;&lt;P>&#xA;With the information retrieved from the methods &lt;code>getStatus&lt;/code> and&#xA;&lt;code>getConflictValue&lt;/code>, the application may make a determination as to&#xA;which value should be persisted in the data source. The application then calls the&#xA;&lt;code>SyncResolver&lt;/code> method &lt;code>setResolvedValue&lt;/code>, which sets the value&#xA;to be persisted in the &lt;code>RowSet&lt;/code> object and also in the data source.&#xA;&lt;PRE>&#xA;resolver.setResolvedValue(&quot;DEPT&quot;, 8390426);&#xA;&lt;/PRE>&#xA;In the preceding line of code,&#xA;the column name designates the column in the &lt;code>RowSet&lt;/code> object&#xA;that is to be set with the given value. The column number can also be used to&#xA;designate the column.&#xA;&lt;P>&#xA;An application calls the method &lt;code>setResolvedValue&lt;/code> after it has&#xA;resolved all of the conflicts in the current conflict row and repeats this process&#xA;for each conflict row in the &lt;code>SyncResolver&lt;/code> object.&#xA;&lt;P>&#xA;&#xA;&lt;H2>Navigating a &lt;code>SyncResolver&lt;/code> Object&lt;/H2>&#xA;&#xA;Because a &lt;code>SyncResolver&lt;/code> object is a &lt;code>RowSet&lt;/code> object, an&#xA;application can use all of the &lt;code>RowSet&lt;/code> methods for moving the cursor&#xA;to navigate a &lt;code>SyncResolver&lt;/code> object. For example, an application can&#xA;use the &lt;code>RowSet&lt;/code> method &lt;code>next&lt;/code> to get to each row and then&#xA;call the &lt;code>SyncResolver&lt;/code> method &lt;code>getStatus&lt;/code> to see if the row&#xA;contains a conflict.  In a row with one or more conflicts, the application can&#xA;iterate through the columns to find any non-null values, which will be the values&#xA;from the data source that are in conflict.&#xA;&lt;P>&#xA;To make it easier to navigate a &lt;code>SyncResolver&lt;/code> object, especially when&#xA;there are large numbers of rows with no conflicts, the &lt;code>SyncResolver&lt;/code>&#xA;interface defines the methods &lt;code>nextConflict&lt;/code> and&#xA;&lt;code>previousConflict&lt;/code>, which move only to rows&#xA;that contain at least one conflict value. Then an application can call the&#xA;&lt;code>SyncResolver&lt;/code> method &lt;code>getConflictValue&lt;/code>, supplying it&#xA;with the column number, to get the conflict value itself. The code fragment in the&#xA;next section gives an example.&#xA;&#xA;&lt;H2>Code Example&lt;/H2>&#xA;&#xA;The following code fragment demonstrates how a disconnected &lt;code>RowSet&lt;/code>&#xA;object &lt;i>crs&lt;/i> might attempt to synchronize itself with the&#xA;underlying data source and then resolve the conflicts. In the &lt;code>try&lt;/code>&#xA;block, &lt;i>crs&lt;/i> calls the method &lt;code>acceptChanges&lt;/code>, passing it the&#xA;&lt;code>Connection&lt;/code> object &lt;i>con&lt;/i>.  If there are no conflicts, the&#xA;changes in &lt;i>crs&lt;/i> are simply written to the data source.  However, if there&#xA;is a conflict, the method &lt;code>acceptChanges&lt;/code> throws a&#xA;&lt;code>SyncProviderException&lt;/code> object, and the&#xA;&lt;code>catch&lt;/code> block takes effect.  In this example, which&#xA;illustrates one of the many ways a &lt;code>SyncResolver&lt;/code> object can be used,&#xA;the &lt;code>SyncResolver&lt;/code> method &lt;code>nextConflict&lt;/code> is used in a&#xA;&lt;code>while&lt;/code> loop. The loop will end when &lt;code>nextConflict&lt;/code> returns&#xA;&lt;code>false&lt;/code>, which will occur when there are no more conflict rows in the&#xA;&lt;code>SyncResolver&lt;/code> object &lt;i>resolver&lt;/i>. In This particular code fragment,&#xA;&lt;i>resolver&lt;/i> looks for rows that have update conflicts (rows with the status&#xA;&lt;code>SyncResolver.UPDATE_ROW_CONFLICT&lt;/code>), and the rest of this code fragment&#xA;executes only for rows where conflicts occurred because &lt;i>crs&lt;/i> was attempting an&#xA;update.&#xA;&lt;P>&#xA;After the cursor for &lt;i>resolver&lt;/i> has moved to the next conflict row that&#xA;has an update conflict, the method &lt;code>getRow&lt;/code> indicates the number of the&#xA;current row, and&#xA;the cursor for the &lt;code>CachedRowSet&lt;/code> object &lt;i>crs&lt;/i> is moved to&#xA;the comparable row in &lt;i>crs&lt;/i>. By iterating&#xA;through the columns of that row in both &lt;i>resolver&lt;/i> and &lt;i>crs&lt;/i>, the conflicting&#xA;values can be retrieved and compared to decide which one should be persisted. In this&#xA;code fragment, the value in &lt;i>crs&lt;/i> is the one set as the resolved value, which means&#xA;that it will be used to overwrite the conflict value in the data source.&#xA;&#xA;&lt;PRE>&#xA;try {&#xA;&#xA;crs.acceptChanges(con);&#xA;&#xA;} catch (SyncProviderException spe) {&#xA;&#xA;SyncResolver resolver = spe.getSyncResolver();&#xA;&#xA;Object crsValue;  // value in the &lt;code>RowSet&lt;/code> object&#xA;Object resolverValue:  // value in the &lt;code>SyncResolver&lt;/code> object&#xA;Object resolvedValue:  // value to be persisted&#xA;&#xA;while(resolver.nextConflict())  {&#xA;if(resolver.getStatus() == SyncResolver.UPDATE_ROW_CONFLICT)  {&#xA;int row = resolver.getRow();&#xA;crs.absolute(row);&#xA;&#xA;int colCount = crs.getMetaData().getColumnCount();&#xA;for(int j = 1; j &lt;= colCount; j++) {&#xA;if (resolver.getConflictValue(j) != null)  {&#xA;crsValue = crs.getObject(j);&#xA;resolverValue = resolver.getConflictValue(j);&#xA;. . .&#xA;compare crsValue and resolverValue to determine&#xA;which should be the resolved value (the value to persist)&#xA;resolvedValue = crsValue;&#xA;&#xA;resolver.setResolvedValue(j, resolvedValue);&#xA;}&#xA;}&#xA;}&#xA;}&#xA;}&#xA;&lt;/PRE>&#xA;@author  Jonathan Bruce&#xA;" annotatedElement="6f8b9ce7-a531-4476-8a28-4720a76f8f2b"/>
                <generalization xmi:id="e7e10629-357a-4d80-b4bb-43d34e190f8d" isSubstitutable="true" general="e616baf7-9c01-483d-965e-e9423d225417"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="03bd31fb-2808-4f0c-aa8f-d2bae0a109f3" name="SyncFactoryException">
                <ownedComment xmi:id="caeaac61-e356-4579-b0aa-470866febaf1" body="Indicates an error with &lt;code>SyncFactory&lt;/code> mechanism. A disconnected&#xA;RowSet implementation cannot be used  without a &lt;code>SyncProvider&lt;/code>&#xA;being successfully instantiated&#xA;&#xA;@version 0.2&#xA;@author Jonathan Bruce&#xA;@see javax.sql.rowset.spi.SyncFactory&#xA;@see javax.sql.rowset.spi.SyncFactoryException&#xA;" annotatedElement="03bd31fb-2808-4f0c-aa8f-d2bae0a109f3"/>
                <generalization xmi:id="4fcebde1-9919-4480-a08f-22199270a673" isSubstitutable="true" general="9c8e52a6-a87b-425b-8824-99198fff353f"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="7943b46c-b21a-489e-ab87-8b7cb8103f48" name="ProviderImpl" visibility="package">
                <ownedComment xmi:id="dd261c92-12c6-4947-86ad-afe561e611de" body="Internal class that defines the lazy reference construct for each registered&#xA;SyncProvider implementation.&#xA;" annotatedElement="7943b46c-b21a-489e-ab87-8b7cb8103f48"/>
                <generalization xmi:id="f2f311aa-695f-4592-a2b6-642fd16f4dea" isSubstitutable="true" general="612d4a8f-349e-41ba-b9e4-72dc7231dd11"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4857f275-d23d-4d17-a542-c06becd4db50" name="BaseRowSet" clientDependency="93de2ada-1eba-48fb-b08c-2d5a55e75e8e 8bfb01b4-fa0f-4196-bee9-7460083c6dcf" isAbstract="true">
              <ownedComment xmi:id="4b381468-c700-4d70-b42c-6dc02cb05f11" body="An abstract class providing a &lt;code>RowSet&lt;/code> object with its basic functionality.&#xA;The basic functions include having properties and sending event notifications,&#xA;which all JavaBeans&lt;sup>&lt;font size=-2>TM&lt;/font>&lt;/sup> components must implement.&#xA;&lt;P>&#xA;&lt;h3>1.0 Overview&lt;/h3>&#xA;The &lt;code>BaseRowSet&lt;/code> class provides the core functionality&#xA;for all &lt;code>RowSet&lt;/code> implementations,&#xA;and all standard implementations &lt;b>may&lt;/b> use this class in combination with&#xA;one or more &lt;code>RowSet&lt;/code> interfaces in order to provide a standard&#xA;vendor-specific implementation.  To clarify, all implementations must implement&#xA;at least one of the &lt;code>RowSet&lt;/code> interfaces (&lt;code>JdbcRowSet&lt;/code>,&#xA;&lt;code>CachedRowSet&lt;/code>, &lt;code>JoinRowSet&lt;/code>, &lt;code>FilteredRowSet&lt;/code>,&#xA;or &lt;code>WebRowSet&lt;/code>). This means that any implementation that extends&#xA;the &lt;code>BaseRowSet&lt;/code> class must also implement one of the &lt;code>RowSet&lt;/code>&#xA;interfaces.&#xA;&lt;p>&#xA;The &lt;code>BaseRowSet&lt;/code> class provides the following:&#xA;&lt;p>&#xA;&lt;UL>&#xA;&lt;LI>&lt;b>Properties&lt;/b>&#xA;&lt;ul>&#xA;&lt;li>Fields for storing current properties&#xA;&lt;li>Methods for getting and setting properties&#xA;&lt;/ul>&#xA;&lt;p>&#xA;&lt;LI>&lt;b>Event notification&lt;/b>&#xA;&lt;P>&#xA;&lt;LI>&lt;b>A complete set of setter methods&lt;/b> for setting the parameters in a&#xA;&lt;code>RowSet&lt;/code> object's command&#xA;&lt;p>&#xA;&lt;LI> &lt;b>Streams&lt;/b>&#xA;&lt;ul>&#xA;&lt;li>Fields for storing stream instances&#xA;&lt;li>Constants for indicating the type of a stream&#xA;&lt;/ul>&#xA;&lt;p>&#xA;&lt;/UL>&#xA;&#xA;&lt;h3>2.0 Setting Properties&lt;/h3>&#xA;All rowsets maintain a set of properties, which will usually be set using&#xA;a tool.  The number and kinds of properties a rowset has will vary,&#xA;depending on what the &lt;code>RowSet&lt;/code> implementation does and how it gets&#xA;its data.  For example,&#xA;rowsets that get their data from a &lt;code>ResultSet&lt;/code> object need to&#xA;set the properties that are required for making a database connection.&#xA;If a &lt;code>RowSet&lt;/code> object uses the &lt;code>DriverManager&lt;/code> facility to make a&#xA;connection, it needs to set a property for the JDBC URL that identifies the&#xA;appropriate driver, and it needs to set the properties that give the&#xA;user name and password.&#xA;If, on the other hand, the rowset uses a &lt;code>DataSource&lt;/code> object&#xA;to make the connection, which is the preferred method, it does not need to&#xA;set the property for the JDBC URL.  Instead, it needs to set the property&#xA;for the logical name of the data source along with the properties for&#xA;the user name and password.&#xA;&lt;P>&#xA;NOTE:  In order to use a &lt;code>DataSource&lt;/code> object for making a&#xA;connection, the &lt;code>DataSource&lt;/code> object must have been registered&#xA;with a naming service that uses the Java Naming and Directory&#xA;Interface&lt;sup>&lt;font size=-2>TM&lt;/font>&lt;/sup> (JNDI) API.  This registration&#xA;is usually done by a person acting in the capacity of a system administrator.&#xA;&lt;P>&#xA;&lt;h3>3.0 Setting the Command and Its Parameters&lt;/h3>&#xA;When a rowset gets its data from a relational database, it executes a command (a query)&#xA;that produces a &lt;code>ResultSet&lt;/code> object.  This query is the command that is set&#xA;for the &lt;code>RowSet&lt;/code> object's command property.  The rowset populates itself with data by reading the&#xA;data from the &lt;code>ResultSet&lt;/code> object into itself. If the query&#xA;contains placeholders for values to be set, the &lt;code>BaseRowSet&lt;/code> setter methods&#xA;are used to set these values. All setter methods allow these values to be set&#xA;to &lt;code>null&lt;/code> if required.&#xA;&lt;P>&#xA;The following code fragment illustrates how the&#xA;&lt;code>CachedRowSet&lt;/code>&lt;sup>&lt;font size=-2>TM&lt;/font>&lt;/sup>&#xA;object &lt;code>crs&lt;/code> might have its command property set.  Note that if a&#xA;tool is used to set properties, this is the code that the tool would use.&#xA;&lt;PRE>&#xA;crs.setCommand(&quot;SELECT FIRST_NAME, LAST_NAME, ADDRESS FROM CUSTOMERS&quot; +&#xA;&quot;WHERE CREDIT_LIMIT > ? AND REGION = ?&quot;);&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;In this example, the values for &lt;code>CREDIT_LIMIT&lt;/code> and&#xA;&lt;code>REGION&lt;/code> are placeholder parameters, which are indicated with a&#xA;question mark (?).  The first question mark is placeholder parameter number&#xA;&lt;code>1&lt;/code>, the second question mark is placeholder parameter number&#xA;&lt;code>2&lt;/code>, and so on.  Any placeholder parameters must be set with&#xA;values before the query can be executed. To set these&#xA;placeholder parameters, the &lt;code>BaseRowSet&lt;/code> class provides a set of setter&#xA;methods, similar to those provided by the &lt;code>PreparedStatement&lt;/code>&#xA;interface, for setting values of each data type.  A &lt;code>RowSet&lt;/code> object stores the&#xA;parameter values internally, and its &lt;code>execute&lt;/code> method uses them internally&#xA;to set values for the placeholder parameters&#xA;before it sends the command to the DBMS to be executed.&#xA;&lt;P>&#xA;The following code fragment demonstrates&#xA;setting the two parameters in the query from the previous example.&#xA;&lt;PRE>&#xA;crs.setInt(1, 5000);&#xA;crs.setString(2, &quot;West&quot;);&#xA;&lt;/PRE>&#xA;If the &lt;code>execute&lt;/code> method is called at this point, the query&#xA;sent to the DBMS will be:&#xA;&lt;PRE>&#xA;&quot;SELECT FIRST_NAME, LAST_NAME, ADDRESS FROM CUSTOMERS&quot; +&#xA;&quot;WHERE CREDIT_LIMIT > 5000 AND REGION = 'West'&quot;&#xA;&lt;/PRE>&#xA;NOTE: Setting &lt;code>Array&lt;/code>, &lt;code>Clob&lt;/code>, &lt;code>Blob&lt;/code> and&#xA;&lt;code>Ref&lt;/code> objects as a command parameter, stores these values as&#xA;&lt;code>SerialArray&lt;/code>, &lt;code>SerialClob&lt;/code>, &lt;code>SerialBlob&lt;/code>&#xA;and &lt;code>SerialRef&lt;/code> objects respectively.&#xA;&#xA;&lt;h3>4.0 Handling of Parameters Behind the Scenes&lt;/h3>&#xA;&#xA;NOTE: The &lt;code>BaseRowSet&lt;/code> class provides two kinds of setter methods,&#xA;those that set properties and those that set placeholder parameters. The setter&#xA;methods discussed in this section are those that set placeholder parameters.&#xA;&lt;P>&#xA;The placeholder parameters set with the &lt;code>BaseRowSet&lt;/code> setter methods&#xA;are stored as objects in an internal &lt;code>Hashtable&lt;/code> object.&#xA;Primitives are stored as their &lt;code>Object&lt;/code> type. For example, &lt;code>byte&lt;/code>&#xA;is stored as &lt;code>Byte&lt;/code> object, and &lt;code>int&lt;/code> is stored as&#xA;an &lt;code>Integer&lt;/code> object.&#xA;When the method &lt;code>execute&lt;/code> is called, the values in the&#xA;&lt;code>Hashtable&lt;/code> object are substituted for the appropriate placeholder&#xA;parameters in the command.&#xA;&lt;P)>&#xA;A call to the method &lt;code>getParams&lt;/code> returns the values stored in the&#xA;&lt;code>Hashtable&lt;/code> object as an array of &lt;code>Object&lt;/code> instances.&#xA;An element in this array may be a simple &lt;code>Object&lt;/code> instance or an&#xA;array (which is a type of &lt;code>Object&lt;/code>). The particular setter method used&#xA;determines whether an element in this array is an &lt;code>Object&lt;/code> or an array.&#xA;&lt;P>&#xA;The majority of methods for setting placeholder parameters take two parameters,&#xA;with the first parameter&#xA;indicating which placeholder parameter is to be set, and the second parameter&#xA;giving the value to be set.  Methods such as &lt;code>getInt&lt;/code>,&#xA;&lt;code>getString&lt;/code>, &lt;code>getBoolean&lt;/code>, and &lt;code>getLong&lt;/code> fall into&#xA;this category.  After these methods have been called, a call to the method&#xA;&lt;code>getParams&lt;/code> will return an array with the values that have been set. Each&#xA;element in the array is an &lt;code>Object&lt;/code> instance representing the&#xA;values that have been set. The order of these values in the array is determined by the&#xA;&lt;code>int&lt;/code> (the first parameter) passed to the setter method. The values in the&#xA;array are the values (the second parameter) passed to the setter method.&#xA;In other words, the first element in the array is the value&#xA;to be set for the first placeholder parameter in the &lt;code>RowSet&lt;/code> object's&#xA;command. The second element is the value to&#xA;be set for the second placeholder parameter, and so on.&#xA;&lt;P>&#xA;Several setter methods send the driver and DBMS information beyond the value to be set.&#xA;When the method &lt;code>getParams&lt;/code> is called after one of these setter methods has&#xA;been used, the elements in the array will themselves be arrays to accommodate the&#xA;additional information. In this category, the method &lt;code>setNull&lt;/code> is a special case&#xA;because one version takes only&#xA;two parameters (&lt;code>setNull(int parameterIndex, int SqlType)&lt;/code>). Nevertheless,&#xA;it requires&#xA;an array to contain the information that will be passed to the driver and DBMS.  The first&#xA;element in this array is the value to be set, which is &lt;code>null&lt;/code>, and the&#xA;second element is the &lt;code>int&lt;/code> supplied for &lt;i>sqlType&lt;/i>, which&#xA;indicates the type of SQL value that is being set to &lt;code>null&lt;/code>. This information&#xA;is needed by some DBMSs and is therefore required in order to ensure that applications&#xA;are portable.&#xA;The other version is intended to be used when the value to be set to &lt;code>null&lt;/code>&#xA;is a user-defined type. It takes three parameters&#xA;(&lt;code>setNull(int parameterIndex, int sqlType, String typeName)&lt;/code>) and also&#xA;requires an array to contain the information to be passed to the driver and DBMS.&#xA;The first two elements in this array are the same as for the first version of&#xA;&lt;code>setNull&lt;/code>.  The third element, &lt;i>typeName&lt;/i>, gives the SQL name of&#xA;the user-defined type. As is true with the other setter methods, the number of the&#xA;placeholder parameter to be set is indicated by an element's position in the array&#xA;returned by &lt;code>getParams&lt;/code>.  So, for example, if the parameter&#xA;supplied to &lt;code>setNull&lt;/code> is &lt;code>2&lt;/code>, the second element in the array&#xA;returned by &lt;code>getParams&lt;/code> will be an array of two or three elements.&#xA;&lt;P>&#xA;Some methods, such as &lt;code>setObject&lt;/code> and &lt;code>setDate&lt;/code> have versions&#xA;that take more than two parameters, with the extra parameters giving information&#xA;to the driver or the DBMS. For example, the methods &lt;code>setDate&lt;/code>,&#xA;&lt;code>setTime&lt;/code>, and &lt;code>setTimestamp&lt;/code> can take a &lt;code>Calendar&lt;/code>&#xA;object as their third parameter.  If the DBMS does not store time zone information,&#xA;the drivern uses the &lt;code>Calendar&lt;/code> object to construct the &lt;code>Date&lt;/code>,&#xA;&lt;code>Time&lt;/code>, or &lt;code>Timestamp&lt;/code> object being set. As is true with other&#xA;methods that provide additional information, the element in the array returned&#xA;by &lt;code>getParams&lt;/code> is an array instead of a simple &lt;code>Object&lt;/code> instance.&#xA;&lt;P>&#xA;The methods &lt;code>setAsciiStream&lt;/code>, &lt;code>setBinaryStream&lt;/code>,&#xA;&lt;code>setCharacterStream&lt;/code>, and &lt;code>setUnicodeStream&lt;/code> (which is&#xA;deprecated, so applications should use &lt;code>getCharacterStream&lt;/code> instead)&#xA;take three parameters, so for them, the element in the array returned by&#xA;&lt;code>getParams&lt;/code> is also an array.  What is different about these setter&#xA;methods is that in addition to the information provided by parameters, the array contains&#xA;one of the &lt;code>BaseRowSet&lt;/code> constants indicating the type of stream being set.&#xA;&lt;p>&#xA;NOTE: The method &lt;code>getParams&lt;/code> is called internally by&#xA;&lt;code>RowSet&lt;/code> implementations extending this class; it is not normally called by an&#xA;application programmer directly.&#xA;&#xA;&lt;h3>5.0 Event Notification&lt;/h3>&#xA;The &lt;code>BaseRowSet&lt;/code> class provides the event notification&#xA;mechanism for rowsets.  It contains the field&#xA;&lt;code>listeners&lt;/code>, methods for adding and removing listeners, and&#xA;methods for notifying listeners of changes.&#xA;&lt;P>&#xA;A listener is an object that has implemented the &lt;code>RowSetListener&lt;/code> interface.&#xA;If it has been added to a &lt;code>RowSet&lt;/code> object's list of listeners, it will be notified&#xA;when an event occurs on that &lt;code>RowSet&lt;/code> object.  Each listener's&#xA;implementation of the &lt;code>RowSetListener&lt;/code> methods defines what that object&#xA;will do when it is notified that an event has occurred.&#xA;&lt;P>&#xA;There are three possible events for a &lt;code>RowSet&lt;/code> object:&#xA;&lt;OL>&#xA;&lt;LI>the cursor moves&#xA;&lt;LI>an individual row is changed (updated, deleted, or inserted)&#xA;&lt;LI>the contents of the entire &lt;code>RowSet&lt;/code> object  are changed&#xA;&lt;/OL>&#xA;&lt;P>&#xA;The &lt;code>BaseRowSet&lt;/code> method used for the notification indicates the&#xA;type of event that has occurred.  For example, the method&#xA;&lt;code>notifyRowChanged&lt;/code> indicates that a row has been updated,&#xA;deleted, or inserted.  Each of the notification methods creates a&#xA;&lt;code>RowSetEvent&lt;/code> object, which is supplied to the listener in order to&#xA;identify the &lt;code>RowSet&lt;/code> object on which the event occurred.&#xA;What the listener does with this information, which may be nothing, depends on how it was&#xA;implemented.&#xA;&lt;p>&#xA;&lt;h3>6.0 Default Behavior&lt;/h3>&#xA;A default &lt;code>BaseRowSet&lt;/code> object is initialized with many starting values.&#xA;&#xA;The following is true of a default &lt;code>RowSet&lt;/code> instance that extends&#xA;the &lt;code>BaseRowSet&lt;/code> class:&#xA;&lt;UL>&#xA;&lt;LI>Has a scrollable cursor and does not show changes&#xA;made by others.&#xA;&lt;LI>Is updatable.&#xA;&lt;LI>Does not show rows that have been deleted.&#xA;&lt;LI>Has no time limit for how long a driver may take to&#xA;execute the &lt;code>RowSet&lt;/code> object's command.&#xA;&lt;LI>Has no limit for the number of rows it may contain.&#xA;&lt;LI>Has no limit for the number of bytes a column may contain. NOTE: This&#xA;limit applies only to columns that hold values of the&#xA;following types:  &lt;code>BINARY&lt;/code>, &lt;code>VARBINARY&lt;/code>,&#xA;&lt;code>LONGVARBINARY&lt;/code>, &lt;code>CHAR&lt;/code>, &lt;code>VARCHAR&lt;/code>,&#xA;and &lt;code>LONGVARCHAR&lt;/code>.&#xA;&lt;LI>Will not see uncommitted data (make &quot;dirty&quot; reads).&#xA;&lt;LI>Has escape processing turned on.&#xA;&lt;LI>Has its connection's type map set to &lt;code>null&lt;/code>.&#xA;&lt;LI>Has an empty &lt;code>Vector&lt;/code> object for storing the values set&#xA;for the placeholder parameters in the &lt;code>RowSet&lt;/code> object's command.&#xA;&lt;/UL>&#xA;&lt;p>&#xA;If other values are desired, an application must set the property values&#xA;explicitly. For example, the following line of code sets the maximum number&#xA;of rows for the &lt;code>CachedRowSet&lt;/code> object &lt;i>crs&lt;/i> to 500.&#xA;&lt;PRE>&#xA;crs.setMaxRows(500);&#xA;&lt;/PRE>&#xA;Methods implemented in extensions of this &lt;code>BaseRowSet&lt;/code> class &lt;b>must&lt;/b> throw an&#xA;&lt;code>SQLException&lt;/code> object for any violation of the defined assertions.  Also, if the&#xA;extending class overrides and reimplements any &lt;code>BaseRowSet&lt;/code> method and encounters&#xA;connectivity or underlying data source issues, that method &lt;b>may&lt;/b> in addition throw an&#xA;&lt;code>SQLException&lt;/code> object for that reason.&#xA;" annotatedElement="4857f275-d23d-4d17-a542-c06becd4db50"/>
              <interfaceRealization xmi:id="8bfb01b4-fa0f-4196-bee9-7460083c6dcf" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4857f275-d23d-4d17-a542-c06becd4db50" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="93de2ada-1eba-48fb-b08c-2d5a55e75e8e" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="4857f275-d23d-4d17-a542-c06becd4db50" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="7fcc22de-9af2-4ec4-90a8-b930e17a0bdd" name="JoinRowSet" isAbstract="true">
              <ownedComment xmi:id="26f5005e-b1eb-4c52-bf80-819669c5779d" body="The &lt;code>JoinRowSet&lt;/code> interface provides a mechanism for combining related&#xA;data from different &lt;code>RowSet&lt;/code> objects into one &lt;code>JoinRowSet&lt;/code>&#xA;object, which represents an SQL &lt;code>JOIN&lt;/code>.&#xA;In other words, a &lt;code>JoinRowSet&lt;/code> object acts as a&#xA;container for the data from &lt;code>RowSet&lt;/code> objects that form an SQL&#xA;&lt;code>JOIN&lt;/code> relationship.&#xA;&lt;P>&#xA;The &lt;code>Joinable&lt;/code> interface provides the methods for setting,&#xA;retrieving, and unsetting a match column, the basis for&#xA;establishing an SQL &lt;code>JOIN&lt;/code> relationship. The match column may&#xA;alternatively be set by supplying it to the appropriate version of the&#xA;&lt;code>JointRowSet&lt;/code> method &lt;code>addRowSet&lt;/code>.&#xA;&lt;P>&#xA;&lt;p>&#xA;&lt;h3>1.0 Overview&lt;/h3>&#xA;Disconnected &lt;code>RowSet&lt;/code> objects (&lt;code>CachedRowSet&lt;/code> objects&#xA;and implementations extending the &lt;code>CachedRowSet&lt;/code> interface)&#xA;do not have a standard way to establish an SQL &lt;code>JOIN&lt;/code> between&#xA;&lt;code>RowSet&lt;/code> objects without the expensive operation of&#xA;reconnecting to the data source. The &lt;code>JoinRowSet&lt;/code>&#xA;interface is specifically designed to address this need.&#xA;&lt;P>&#xA;Any &lt;code>RowSet&lt;/code> object&#xA;can be added to a &lt;code>JoinRowSet&lt;/code> object to become&#xA;part of an SQL &lt;code>JOIN&lt;/code> relationship. This means that both connected&#xA;and disconnected &lt;code>RowSet&lt;/code> objects can be part of a &lt;code>JOIN&lt;/code>.&#xA;&lt;code>RowSet&lt;/code> objects operating in a connected environment&#xA;(&lt;code>JdbcRowSet&lt;/code> objects) are&#xA;encouraged to use the database to which they are already&#xA;connected to establish SQL &lt;code>JOIN&lt;/code> relationships between&#xA;tables directly. However, it is possible for a&#xA;&lt;code>JdbcRowSet&lt;/code> object to be added to a &lt;code>JoinRowSet&lt;/code> object&#xA;if necessary.&#xA;&lt;P>&#xA;Any number of &lt;code>RowSet&lt;/code> objects can be added to an&#xA;instance of &lt;code>JoinRowSet&lt;/code> provided that they&#xA;can be related in an SQL &lt;code>JOIN&lt;/code>.&#xA;By definition, the SQL &lt;code>JOIN&lt;/code> statement is used to&#xA;combine the data contained in two or more relational database tables based&#xA;upon a common attribute. The &lt;code>Joinable&lt;/code> interface provides the methods&#xA;for establishing a common attribute, which is done by setting a&#xA;&lt;i>match column&lt;/i>. The match column commonly coincides with&#xA;the primary key, but there is&#xA;no requirement that the match column be the same as the primary key.&#xA;By establishing and then enforcing column matches,&#xA;a &lt;code>JoinRowSet&lt;/code> object establishes &lt;code>JOIN&lt;/code> relationships&#xA;between &lt;code>RowSet&lt;/code> objects without the assistance of an available&#xA;relational database.&#xA;&lt;P>&#xA;The type of &lt;code>JOIN&lt;/code> to be established is determined by setting&#xA;one of the &lt;code>JoinRowSet&lt;/code> constants using the method&#xA;&lt;code>setJoinType&lt;/code>. The following SQL &lt;code>JOIN&lt;/code> types can be set:&#xA;&lt;UL>&#xA;&lt;LI>&lt;code>CROSS_JOIN&lt;/code>&#xA;&lt;LI>&lt;code>FULL_JOIN&lt;/code>&#xA;&lt;LI>&lt;code>INNER_JOIN&lt;/code> - the default if no &lt;code>JOIN&lt;/code> type has been set&#xA;&lt;LI>&lt;code>LEFT_OUTER_JOIN&lt;/code>&#xA;&lt;LI>&lt;code>RIGHT_OUTER_JOIN&lt;/code>&#xA;&lt;/UL>&#xA;Note that if no type is set, the &lt;code>JOIN&lt;/code> will automatically be an&#xA;inner join. The comments for the fields in the&#xA;&lt;code>JoinRowSet&lt;/code> interface explain these &lt;code>JOIN&lt;/code> types, which are&#xA;standard SQL &lt;code>JOIN&lt;/code> types.&#xA;&lt;P>&#xA;&lt;h3>2.0 Using a &lt;code>JoinRowSet&lt;/code> Object for Creating a &lt;code>JOIN&lt;/code>&lt;/h3>&#xA;When a &lt;code>JoinRowSet&lt;/code> object is created, it is empty.&#xA;The first &lt;code>RowSet&lt;/code> object to be added becomes the basis for the&#xA;&lt;code>JOIN&lt;/code> relationship.&#xA;Applications must determine which column in each of the&#xA;&lt;code>RowSet&lt;/code> objects to be added to the &lt;code>JoinRowSet&lt;/code> object&#xA;should be the match column. All of the&#xA;&lt;code>RowSet&lt;/code> objects must contain a match column, and the values in&#xA;each match column must be ones that can be compared to values in the other match&#xA;columns. The columns do not have to have the same name, though they often do,&#xA;and they do not have to store the exact same data type as long as the data types&#xA;can be compared.&#xA;&lt;P>&#xA;A match column can be be set in two ways:&#xA;&lt;ul>&#xA;&lt;li>By calling the &lt;code>Joinable&lt;/code> method &lt;code>setMatchColumn&lt;/code>&lt;br>&#xA;This is the only method that can set the match column before a &lt;code>RowSet&lt;/code>&#xA;object is added to a &lt;code>JoinRowSet&lt;/code> object. The &lt;code>RowSet&lt;/code> object&#xA;must have implemented the &lt;code>Joinable&lt;/code> interface in order to use the method&#xA;&lt;code>setMatchColumn&lt;/code>. Once the match column value&#xA;has been set, this method can be used to reset the match column at any time.&#xA;&lt;li>By calling one of the versions of the &lt;code>JoinRowSet&lt;/code> method&#xA;&lt;code>addRowSet&lt;/code> that takes a column name or number (or an array of&#xA;column names or numbers)&lt;BR>&#xA;Four of the five &lt;code>addRowSet&lt;/code> methods take a match column as a parameter.&#xA;These four methods set or reset the match column at the time a &lt;code>RowSet&lt;/code>&#xA;object is being added to a &lt;code>JoinRowSet&lt;/code> object.&#xA;&lt;/ul>&#xA;&lt;h3>3.0 Sample Usage&lt;/h3>&#xA;&lt;p>&#xA;The following code fragment adds two &lt;code>CachedRowSet&lt;/code>&#xA;objects to a &lt;code>JoinRowSet&lt;/code> object. Note that in this example,&#xA;no SQL &lt;code>JOIN&lt;/code> type is set, so the default &lt;code>JOIN&lt;/code> type,&#xA;which is &lt;i>INNER_JOIN&lt;/i>, is established.&#xA;&lt;p>&#xA;In the following code fragment, the table &lt;code>EMPLOYEES&lt;/code>, whose match&#xA;column is set to the first column (&lt;code>EMP_ID&lt;/code>), is added to the&#xA;&lt;code>JoinRowSet&lt;/code> object &lt;i>jrs&lt;/i>. Then&#xA;the table &lt;code>ESSP_BONUS_PLAN&lt;/code>, whose match column is likewise&#xA;the &lt;code>EMP_ID&lt;/code> column, is added. When this second&#xA;table is added to &lt;i>jrs&lt;/i>, only the rows in&#xA;&lt;code>ESSP_BONUS_PLAN&lt;/code> whose &lt;code>EMP_ID&lt;/code> value matches an&#xA;&lt;code>EMP_ID&lt;/code> value in the &lt;code>EMPLOYEES&lt;/code> table are added.&#xA;In this case, everyone in the bonus plan is an employee, so all of the rows&#xA;in the table &lt;code>ESSP_BONUS_PLAN&lt;/code> are added to the &lt;code>JoinRowSet&lt;/code>&#xA;object.  In this example, both &lt;code>CachedRowSet&lt;/code> objects being added&#xA;have implemented the &lt;code>Joinable&lt;/code> interface and can therefore call&#xA;the &lt;code>Joinable&lt;/code> method &lt;code>setMatchColumn&lt;/code>.&#xA;&lt;PRE>&#xA;JoinRowSet jrs = new JoinRowSetImpl();&#xA;&#xA;ResultSet rs1 = stmt.executeQuery(&quot;SELECT * FROM EMPLOYEES&quot;);&#xA;CachedRowSet empl = new CachedRowSetImpl();&#xA;empl.populate(rs1);&#xA;empl.setMatchColumn(1);&#xA;jrs.addRowSet(empl);&#xA;&#xA;ResultSet rs2 = stmt.executeQuery(&quot;SELECT * FROM ESSP_BONUS_PLAN&quot;);&#xA;CachedRowSet bonus = new CachedRowSetImpl();&#xA;bonus.populate(rs2);&#xA;bonus.setMatchColumn(1); // EMP_ID is the first column&#xA;jrs.addRowSet(bonus);&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;At this point, &lt;i>jrs&lt;/i> is an inside JOIN of the two &lt;code>RowSet&lt;/code> objects&#xA;based on their &lt;code>EMP_ID&lt;/code> columns. The application can now browse the&#xA;combined data as if it were browsing one single &lt;code>RowSet&lt;/code> object.&#xA;Because &lt;i>jrs&lt;/i> is itself a &lt;code>RowSet&lt;/code> object, an application can&#xA;navigate or modify it using &lt;code>RowSet&lt;/code> methods.&#xA;&lt;PRE>&#xA;jrs.first();&#xA;int employeeID = jrs.getInt(1);&#xA;String employeeName = jrs.getString(2);&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;Note that because the SQL &lt;code>JOIN&lt;/code> must be enforced when an application&#xA;adds a second or subsequent &lt;code>RowSet&lt;/code> object, there&#xA;may be an initial degradation in performance while the &lt;code>JOIN&lt;/code> is&#xA;being performed.&#xA;&lt;P>&#xA;The following code fragment adds an additional &lt;code>CachedRowSet&lt;/code> object.&#xA;In this case, the match column (&lt;code>EMP_ID&lt;/code>) is set when the&#xA;&lt;code>CachedRowSet&lt;/code> object is added to the &lt;code>JoinRowSet&lt;/code> object.&#xA;&lt;PRE>&#xA;ResultSet rs3 = stmt.executeQuery(&quot;SELECT * FROM 401K_CONTRIB&quot;);&#xA;CachedRowSet fourO1k = new CachedRowSetImpl();&#xA;four01k.populate(rs3);&#xA;jrs.addRowSet(four01k, 1);&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;The &lt;code>JoinRowSet&lt;/code> object &lt;i>jrs&lt;/i> now contains values from all three&#xA;tables. The data in each row in &lt;i>four01k&lt;/i> in which the value for the&#xA;&lt;code>EMP_ID&lt;/code> column matches a value for the &lt;code>EMP_ID&lt;/code> column&#xA;in &lt;i>jrs&lt;/i> has been added to &lt;i>jrs&lt;/i>.&#xA;&lt;P>&#xA;&lt;h3>4.0 &lt;code>JoinRowSet&lt;/code> Methods&lt;/h3>&#xA;The &lt;code>JoinRowSet&lt;/code> interface supplies several methods for adding&#xA;&lt;code>RowSet&lt;/code> objects and for getting information about the&#xA;&lt;code>JoinRowSet&lt;/code> object.&#xA;&lt;UL>&#xA;&lt;LI>Methods for adding one or more &lt;code>RowSet&lt;/code> objects&lt;BR>&#xA;These methods allow an application to add one &lt;code>RowSet&lt;/code> object&#xA;at a time or to add multiple &lt;code>RowSet&lt;/code> objects at one time. In&#xA;either case, the methods may specify the match column for each&#xA;&lt;code>RowSet&lt;/code> object being added.&#xA;&lt;LI>Methods for getting information&lt;BR>&#xA;One method retrieves the &lt;code>RowSet&lt;/code> objects in the&#xA;&lt;code>JoinRowSet&lt;/code> object, and another method retrieves the&#xA;&lt;code>RowSet&lt;/code> names.  A third method retrieves either the SQL&#xA;&lt;code>WHERE&lt;/code> clause used behind the scenes to form the&#xA;&lt;code>JOIN&lt;/code> or a text description of what the &lt;code>WHERE&lt;/code>&#xA;clause does.&#xA;&lt;LI>Methods related to the type of &lt;code>JOIN&lt;/code>&lt;BR>&#xA;One method sets the &lt;code>JOIN&lt;/code> type, and five methods find out whether&#xA;the &lt;code>JoinRowSet&lt;/code> object supports a given type.&#xA;&lt;LI>A method to make a separate copy of the &lt;code>JoinRowSet&lt;/code> object&lt;BR>&#xA;This method creates a copy that can be persisted to the data source.&#xA;&lt;/UL>&#xA;&lt;P>&#xA;" annotatedElement="7fcc22de-9af2-4ec4-90a8-b930e17a0bdd"/>
              <generalization xmi:id="16f70934-8e72-43b4-813b-7f72b6ea5f64" isSubstitutable="true" general="977d38e5-8805-422b-b43d-1a8cec20c119"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="56ab6cb0-25c7-4272-ba2c-edda5baa2e6b" name="Predicate" isAbstract="true">
              <ownedComment xmi:id="338bc4c6-3913-4acd-bef6-f7381f7855ab" body="The standard interface that provides the framework for all&#xA;&lt;code>FilteredRowSet&lt;/code> objects to describe their filters.&#xA;&lt;p>&#xA;&lt;h3>1.0 Background&lt;/h3>&#xA;The &lt;code>Predicate&lt;/code> interface is a standard interface that&#xA;applications can implement to define the filter they wish to apply to a&#xA;a &lt;code>FilteredRowSet&lt;/code> object. A &lt;code>FilteredRowSet&lt;/code>&#xA;object consumes implementations of this interface and enforces the&#xA;constraints defined in the implementation of the method &lt;code>evaluate&lt;/code>.&#xA;A &lt;code>FilteredRowSet&lt;/code> object enforces the filter constraints in a&#xA;bi-directional manner: It outputs only rows that are within&#xA;the constraints of the filter; and conversely, it inserts, modifies, or updates&#xA;only rows that are within the constraints of the filter.&#xA;&#xA;&lt;h3>2.0 Implementation Guidelines&lt;/h3>&#xA;In order to supply a predicate for the &lt;code>FilteredRowSet&lt;/code>.&#xA;this interface must be implemented.  At this time, the JDBC RowSet&#xA;Implementations (JSR-114) does not specify any standard filters definitions.&#xA;By specifying a standard means and mechanism for a range of filters to be&#xA;defined and deployed with both the reference and vendor implementations&#xA;of the &lt;code>FilteredRowSet&lt;/code> interface, this allows for a flexible&#xA;and application motivated implementations of &lt;code>Predicate&lt;/code> to emerge.&#xA;&lt;p>&#xA;A sample implementation would look something like this:&#xA;&lt;pre>&#xA;&lt;code>&#xA;public class Range implements Predicate {&#xA;&#xA;private Object lo[];&#xA;private Object hi[];&#xA;private int idx[];&#xA;&#xA;public Range(Object[] lo, Object[] hi, int[] idx) {&#xA;this.lo = lo;&#xA;this.hi = hi;&#xA;this.idx = idx;&#xA;}&#xA;&#xA;public boolean evaluate(RowSet rs) {&#xA;CachedRowSet crs = (CachedRowSet)rs;&#xA;boolean bool1,bool2;&#xA;&#xA;Check the present row determine if it lies&#xA;within the filtering criteria.&#xA;&#xA;for (int i = 0; i &lt; idx.length; i++) {&#xA;&#xA;if ((rs.getObject(idx[i]) >= lo[i]) &amp;&amp;&#xA;(rs.getObject(idx[i]) >= hi[i]) {&#xA;bool1 = true; // within filter constraints&#xA;} else {&#xA;bool2 = true; // outside of filter constraints&#xA;}&#xA;}&#xA;&#xA;if (bool2) {&#xA;return false;&#xA;} else {&#xA;return true;&#xA;}&#xA;}&#xA;&lt;/code>&#xA;&lt;/pre>&#xA;&lt;P>&#xA;The example above implements a simple range predicate. Note, that&#xA;implementations should but are not required to provider &lt;code>String&lt;/code>&#xA;and integer index based constructors to provide for JDBC RowSet Implementation&#xA;applications that use both column identification conventions.&#xA;&#xA;@author Jonathan Bruce, Amit Handa&#xA;&#xA;" annotatedElement="56ab6cb0-25c7-4272-ba2c-edda5baa2e6b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f8c93522-7683-4dda-90ab-f35b4542c696" name="RowSetMetaDataImpl" clientDependency="1ffeaaed-f33e-4e9a-a059-cd29d9c0f89a cec6e077-e4c9-4a7e-b1f9-1b016b07b21b">
              <ownedComment xmi:id="783a753b-9a78-44fe-8420-6a61be5e69a6" body="Provides implementations for the methods that set and get&#xA;metadata information about a &lt;code>RowSet&lt;/code> object's columns.&#xA;A &lt;code>RowSetMetaDataImpl&lt;/code> object keeps track of the&#xA;number of columns in the rowset and maintains an internal array&#xA;of column attributes for each column.&#xA;&lt;P>&#xA;A &lt;code>RowSet&lt;/code> object creates a &lt;code>RowSetMetaDataImpl&lt;/code>&#xA;object internally in order to set and retrieve information about&#xA;its columns.&#xA;&lt;P>&#xA;NOTE: All metadata in a &lt;code>RowSetMetaDataImpl&lt;/code> object&#xA;should be considered as unavailable until the &lt;code>RowSet&lt;/code> object&#xA;that it describes is populated.&#xA;Therefore, any &lt;code>RowSetMetaDataImpl&lt;/code> method that retrieves information&#xA;is defined as having unspecified behavior when it is called&#xA;before the &lt;code>RowSet&lt;/code> object contains data.&#xA;" annotatedElement="f8c93522-7683-4dda-90ab-f35b4542c696"/>
              <interfaceRealization xmi:id="cec6e077-e4c9-4a7e-b1f9-1b016b07b21b" name="" supplier="52dbf75a-316b-41b8-9815-c629022caf2f" client="f8c93522-7683-4dda-90ab-f35b4542c696" contract="52dbf75a-316b-41b8-9815-c629022caf2f"/>
              <interfaceRealization xmi:id="1ffeaaed-f33e-4e9a-a059-cd29d9c0f89a" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f8c93522-7683-4dda-90ab-f35b4542c696" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="79820060-4c4a-487b-8fa1-cfcbfda1f138" name="ColInfo" visibility="private" clientDependency="f38f9ca3-4240-4c4e-afc0-e18d765d7b2c">
                <interfaceRealization xmi:id="f38f9ca3-4240-4c4e-afc0-e18d765d7b2c" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="79820060-4c4a-487b-8fa1-cfcbfda1f138" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="977d38e5-8805-422b-b43d-1a8cec20c119" name="WebRowSet" isAbstract="true">
              <ownedComment xmi:id="04f5722b-f022-4546-b14b-f439e8743419" body="The standard interface that all implementations of a &lt;code>WebRowSet&lt;/code>&#xA;must implement.&#xA;&lt;P>&#xA;&lt;h3>1.0 Overview&lt;/h3>&#xA;The &lt;code>WebRowSetImpl&lt;/code> provides the standard&#xA;reference implementation, which may be extended if required.&#xA;&lt;P>&#xA;The standard WebRowSet XML Schema definition is available at the following&#xA;URI:&#xA;&lt;ul>&#xA;&lt;pre>&#xA;&lt;a href=&quot;http://java.sun.com/xml/ns/jdbc/webrowset.xsd&quot;>http://java.sun.com/xml/ns/jdbc/webrowset.xsd&lt;/a>&#xA;&lt;/pre>&#xA;&lt;/ul>&#xA;It describes the standard XML document format required when describing a&#xA;&lt;code>RowSet&lt;/code> object in XML and must be used be all standard implementations&#xA;of the &lt;code>WebRowSet&lt;/code> interface to ensure interoperability. In addition,&#xA;the &lt;code>WebRowSet&lt;/code> schema uses specific SQL/XML Schema annotations,&#xA;thus ensuring greater cross&#xA;platform inter-operability. This is an effort currently under way at the ISO&#xA;organization. The SQL/XML definition is available at the following URI:&#xA;&lt;ul>&#xA;&lt;pre>&#xA;&lt;a href=&quot;http://standards.iso.org/iso/9075/2002/12/sqlxml&quot;>http://standards.iso.org/iso/9075/2002/12/sqlxml&lt;/a>&#xA;&lt;/pre>&#xA;&lt;/ul>&#xA;The schema definition describes the internal data of a &lt;code>RowSet&lt;/code> object&#xA;in three distinct areas:&#xA;&lt;UL>&#xA;&lt;li>&lt;b>properties&lt;/b>&lt;/li>&#xA;These properties describe the standard synchronization provider properties in&#xA;addition to the more general &lt;code>RowSet&lt;/code> properties.&#xA;&lt;p>&#xA;&lt;li>&lt;b>metadata&lt;/b>&lt;/li>&#xA;This describes the metadata associated with the tabular structure governed by a&#xA;&lt;code>WebRowSet&lt;/code> object. The metadata described is closely aligned with the&#xA;metadata accessible in the underlying &lt;code>java.sql.ResultSet&lt;/code> interface.&#xA;&lt;p>&#xA;&lt;li>&lt;b>data&lt;/b>&lt;/li>&#xA;This describes the original data (the state of data since the last population&#xA;or last synchronization of the &lt;code>WebRowSet&lt;/code> object) and the current&#xA;data. By keeping track of the delta between the original data and the current data,&#xA;a &lt;code>WebRowSet&lt;/code> maintains&#xA;the ability to synchronize changes in its data back to the originating data source.&#xA;&lt;/ul>&#xA;&lt;P>&#xA;&lt;h3>2.0 WebRowSet States&lt;/h3>&#xA;The following sections demonstrates how a &lt;code>WebRowSet&lt;/code> implementation&#xA;should use the XML Schema to describe update, insert, and delete operations&#xA;and to describe the state of a &lt;code>WebRowSet&lt;/code> object in XML.&#xA;&lt;p>&#xA;&lt;h4>2.1 State 1 - Outputting a &lt;code>WebRowSet&lt;/code> Object to XML&lt;/h3>&#xA;In this example, a &lt;code>WebRowSet&lt;/code> object is created and populated with a simple 2 column,&#xA;5 row table from a data source. Having the 5 rows in a &lt;code>WebRowSet&lt;/code> object&#xA;makes it possible to describe them in XML. The&#xA;metadata describing the various standard JavaBeans properties as defined&#xA;in the RowSet interface plus the standard properties defined in&#xA;the &lt;code>CachedRowSet&lt;/code>&lt;sup>&lt;font size=-2>TM&lt;/font>&lt;/sup> interface&#xA;provide key details that describe WebRowSet&#xA;properties. Outputting the WebRowSet object to XML using the standard&#xA;&lt;code>writeXml&lt;/code> methods describes the internal properties as follows:&#xA;&lt;PRE>&#xA;&lt;&lt;font color=red>properties&lt;/font>>&#xA;&lt;&lt;font color=red>command&lt;/font>>select co1, col2 from test_table&lt;&lt;font color=red>/command&lt;/font>>&#xA;&lt;&lt;font color=red>concurrency&lt;/font>>1&lt;&lt;font color=red>/concurrency&lt;/font>>&#xA;&lt;&lt;font color=red>datasource/&lt;/font>>&#xA;&lt;&lt;font color=red>escape-processing&lt;/font>>true&lt;&lt;font color=red>/escape-processing&lt;/font>>&#xA;&lt;&lt;font color=red>fetch-direction&lt;/font>>0&lt;&lt;font color=red>/fetch-direction&lt;/font>>&#xA;&lt;&lt;font color=red>fetch-size&lt;/font>>0&lt;&lt;font color=red>/fetch-size&lt;/font>>&#xA;&lt;&lt;font color=red>isolation-level&lt;/font>>1&lt;&lt;font color=red>/isolation-level&lt;/font>>&#xA;&lt;&lt;font color=red>key-columns/&lt;/font>>&#xA;&lt;&lt;font color=red>map/&lt;/font>>&#xA;&lt;&lt;font color=red>max-field-size&lt;/font>>0&lt;&lt;font color=red>/max-field-size&lt;/font>>&#xA;&lt;&lt;font color=red>max-rows&lt;/font>>0&lt;&lt;font color=red>/max-rows&lt;/font>>&#xA;&lt;&lt;font color=red>query-timeout&lt;/font>>0&lt;&lt;font color=red>/query-timeout&lt;/font>>&#xA;&lt;&lt;font color=red>read-only&lt;/font>>false&lt;&lt;font color=red>/read-only&lt;/font>>&#xA;&lt;&lt;font color=red>rowset-type&lt;/font>>TRANSACTION_READ_UNCOMMITED&lt;&lt;font color=red>/rowset-type&lt;/font>>&#xA;&lt;&lt;font color=red>show-deleted&lt;/font>>false&lt;&lt;font color=red>/show-deleted&lt;/font>>&#xA;&lt;&lt;font color=red>table-name/&lt;/font>>&#xA;&lt;&lt;font color=red>url&lt;/font>>jdbc:thin:oracle&lt;&lt;font color=red>/url&lt;/font>>&#xA;&lt;&lt;font color=red>sync-provider&lt;/font>>&#xA;&lt;&lt;font color=red>sync-provider-name&lt;/font>>.com.rowset.provider.RIOptimisticProvider&lt;&lt;font color=red>/sync-provider-name&lt;/font>>&#xA;&lt;&lt;font color=red>sync-provider-vendor&lt;/font>>Sun Microsystems&lt;&lt;font color=red>/sync-provider-vendor&lt;/font>>&#xA;&lt;&lt;font color=red>sync-provider-version&lt;/font>>1.0&lt;&lt;font color=red>/sync-provider-name&lt;/font>>&#xA;&lt;&lt;font color=red>sync-provider-grade&lt;/font>>LOW&lt;&lt;font color=red>/sync-provider-grade&lt;/font>>&#xA;&lt;&lt;font color=red>data-source-lock&lt;/font>>NONE&lt;&lt;font color=red>/data-source-lock&lt;/font>>&#xA;&lt;&lt;font color=red>/sync-provider&lt;/font>>&#xA;&lt;&lt;font color=red>/properties&lt;/font>>&#xA;&lt;/PRE>&#xA;The meta-data describing the make up of the WebRowSet is described&#xA;in XML as detailed below. Note both columns are described between the&#xA;&lt;code>column-definition&lt;/code> tags.&#xA;&lt;PRE>&#xA;&lt;&lt;font color=red>metadata&lt;/font>>&#xA;&lt;&lt;font color=red>column-count&lt;/font>>2&lt;&lt;font color=red>/column-count&lt;/font>>&#xA;&lt;&lt;font color=red>column-definition&lt;/font>>&#xA;&lt;&lt;font color=red>column-index&lt;/font>>1&lt;&lt;font color=red>/column-index&lt;/font>>&#xA;&lt;&lt;font color=red>auto-increment&lt;/font>>false&lt;&lt;font color=red>/auto-increment&lt;/font>>&#xA;&lt;&lt;font color=red>case-sensitive&lt;/font>>true&lt;&lt;font color=red>/case-sensitive&lt;/font>>&#xA;&lt;&lt;font color=red>currency&lt;/font>>false&lt;&lt;font color=red>/currency&lt;/font>>&#xA;&lt;&lt;font color=red>nullable&lt;/font>>1&lt;&lt;font color=red>/nullable&lt;/font>>&#xA;&lt;&lt;font color=red>signed&lt;/font>>false&lt;&lt;font color=red>/signed&lt;/font>>&#xA;&lt;&lt;font color=red>searchable&lt;/font>>true&lt;&lt;font color=red>/searchable&lt;/font>>&#xA;&lt;&lt;font color=red>column-display-size&lt;/font>>10&lt;&lt;font color=red>/column-display-size&lt;/font>>&#xA;&lt;&lt;font color=red>column-label&lt;/font>>COL1&lt;&lt;font color=red>/column-label&lt;/font>>&#xA;&lt;&lt;font color=red>column-name&lt;/font>>COL1&lt;&lt;font color=red>/column-name&lt;/font>>&#xA;&lt;&lt;font color=red>schema-name/&lt;/font>>&#xA;&lt;&lt;font color=red>column-precision&lt;/font>>10&lt;&lt;font color=red>/column-precision&lt;/font>>&#xA;&lt;&lt;font color=red>column-scale&lt;/font>>0&lt;&lt;font color=red>/column-scale&lt;/font>>&#xA;&lt;&lt;font color=red>table-name/&lt;/font>>&#xA;&lt;&lt;font color=red>catalog-name/&lt;/font>>&#xA;&lt;&lt;font color=red>column-type&lt;/font>>1&lt;&lt;font color=red>/column-type&lt;/font>>&#xA;&lt;&lt;font color=red>column-type-name&lt;/font>>CHAR&lt;&lt;font color=red>/column-type-name&lt;/font>>&#xA;&lt;&lt;font color=red>/column-definition&lt;/font>>&#xA;&lt;&lt;font color=red>column-definition&lt;/font>>&#xA;&lt;&lt;font color=red>column-index&lt;/font>>2&lt;&lt;font color=red>/column-index&lt;/font>>&#xA;&lt;&lt;font color=red>auto-increment&lt;/font>>false&lt;&lt;font color=red>/auto-increment&lt;/font>>&#xA;&lt;&lt;font color=red>case-sensitive&lt;/font>>false&lt;&lt;font color=red>/case-sensitive&lt;/font>>&#xA;&lt;&lt;font color=red>currency&lt;/font>>false&lt;&lt;font color=red>/currency&lt;/font>>&#xA;&lt;&lt;font color=red>nullable&lt;/font>>1&lt;&lt;font color=red>/nullable&lt;/font>>&#xA;&lt;&lt;font color=red>signed&lt;/font>>true&lt;&lt;font color=red>/signed&lt;/font>>&#xA;&lt;&lt;font color=red>searchable&lt;/font>>true&lt;&lt;font color=red>/searchable&lt;/font>>&#xA;&lt;&lt;font color=red>column-display-size&lt;/font>>39&lt;&lt;font color=red>/column-display-size&lt;/font>>&#xA;&lt;&lt;font color=red>column-label&lt;/font>>COL2&lt;&lt;font color=red>/column-label&lt;/font>>&#xA;&lt;&lt;font color=red>column-name&lt;/font>>COL2&lt;&lt;font color=red>/column-name&lt;/font>>&#xA;&lt;&lt;font color=red>schema-name/&lt;/font>>&#xA;&lt;&lt;font color=red>column-precision&lt;/font>>38&lt;&lt;font color=red>/column-precision&lt;/font>>&#xA;&lt;&lt;font color=red>column-scale&lt;/font>>0&lt;&lt;font color=red>/column-scale&lt;/font>>&#xA;&lt;&lt;font color=red>table-name/&lt;/font>>&#xA;&lt;&lt;font color=red>catalog-name/&lt;/font>>&#xA;&lt;&lt;font color=red>column-type&lt;/font>>3&lt;&lt;font color=red>/column-type&lt;/font>>&#xA;&lt;&lt;font color=red>column-type-name&lt;/font>>NUMBER&lt;&lt;font color=red>/column-type-name&lt;/font>>&#xA;&lt;&lt;font color=red>/column-definition&lt;/font>>&#xA;&lt;&lt;font color=red>/metadata&lt;/font>>&#xA;&lt;/PRE>&#xA;Having detailed how the properties and metadata are described, the following details&#xA;how the contents of a &lt;code>WebRowSet&lt;/code> object is described in XML. Note, that&#xA;this describes a &lt;code>WebRowSet&lt;/code> object that has not undergone any&#xA;modifications since its instantiation.&#xA;A &lt;code>currentRow&lt;/code> tag is mapped to each row of the table structure that the&#xA;&lt;code>WebRowSet&lt;/code> object provides. A &lt;code>columnValue&lt;/code> tag may contain&#xA;either the &lt;code>stringData&lt;/code> or &lt;code>binaryData&lt;/code> tag, according to&#xA;the SQL type that&#xA;the XML value is mapping back to. The &lt;code>binaryData&lt;/code> tag contains data in the&#xA;Base64 encoding and is typically used for &lt;code>BLOB&lt;/code> and &lt;code>CLOB&lt;/code> type data.&#xA;&lt;PRE>&#xA;&lt;&lt;font color=red>data&lt;/font>>&#xA;&lt;&lt;font color=red>currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;firstrow&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;1&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>/currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;secondrow&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;2&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>/currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;thirdrow&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;3&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>/currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;fourthrow&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;4&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>/currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>/data&lt;/font>>&#xA;&lt;/PRE>&#xA;&lt;h4>2.2 State 2 - Deleting a Row&lt;/h4>&#xA;Deleting a row in a &lt;code>WebRowSet&lt;/code> object involves simply moving to the row&#xA;to be deleted and then calling the method &lt;code>deleteRow&lt;/code>, as in any other&#xA;&lt;code>RowSet&lt;/code> object.  The following&#xA;two lines of code, in which &lt;i>wrs&lt;/i> is a &lt;code>WebRowSet&lt;/code> object, delete&#xA;the third row.&#xA;&lt;PRE>&#xA;wrs.absolute(3);&#xA;wrs.deleteRow();&#xA;&lt;/PRE>&#xA;The XML description shows the third row is marked as a &lt;code>deleteRow&lt;/code>,&#xA;which eliminates the third row in the &lt;code>WebRowSet&lt;/code> object.&#xA;&lt;PRE>&#xA;&lt;&lt;font color=red>data&lt;/font>>&#xA;&lt;&lt;font color=red>currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;firstrow&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;1&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>/currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;secondrow&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;2&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>/currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>deleteRow&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;thirdrow&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;3&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>/deleteRow&lt;/font>>&#xA;&lt;&lt;font color=red>currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;fourthrow&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;4&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>/currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>/data&lt;/font>>&#xA;&lt;/PRE>&#xA;&lt;h4>2.3 State 3 - Inserting a Row&lt;/h4>&#xA;A &lt;codeWebRowSet&lt;/code> object can insert a new row by moving to the insert row,&#xA;calling the appropriate updater methods for each column in the row, and then&#xA;calling the method &lt;code>insertRow&lt;/code>.&#xA;&lt;PRE>&#xA;wrs.moveToInsertRow();&#xA;wrs.updateString(1, &quot;fifththrow&quot;);&#xA;wrs.updateString(2, &quot;5&quot;);&#xA;wrs.insertRow();&#xA;&lt;/PRE>&#xA;The following code fragment changes the second column value in the row just inserted.&#xA;Note that this code applies when new rows are inserted right after the current row,&#xA;which is why the method &lt;code>next&lt;/code> moves the cursor to the correct row.&#xA;Calling the method &lt;code>acceptChanges&lt;/code> writes the change to the data source.&#xA;&#xA;&lt;PRE>&#xA;wrs.moveToCurrentRow();&#xA;wrs.next();&#xA;wrs.updateString(2, &quot;V&quot;);&#xA;wrs.acceptChanges();&#xA;:&#xA;&lt;/PRE>&#xA;Describing this in XML demonstrates where the Java code inserts a new row and then&#xA;performs an update on the newly inserted row on an individual field.&#xA;&lt;PRE>&#xA;&lt;&lt;font color=red>data&lt;/font>>&#xA;&lt;&lt;font color=red>currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;firstrow&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;1&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>/currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;secondrow&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;2&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>/currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;newthirdrow&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;III&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>/currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>insertRow&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;fifthrow&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;5&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>updateValue&lt;/font>>&#xA;V&#xA;&lt;&lt;font color=red>/updateValue&lt;/font>>&#xA;&lt;&lt;font color=red>/insertRow&lt;/font>>&#xA;&lt;&lt;font color=red>currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;fourthrow&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;4&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>/currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>/date&lt;/font>>&#xA;&lt;/PRE>&#xA;&lt;h4>2.4 State 4 - Modifying a Row&lt;/h4>&#xA;Modifying a row produces specific XML that records both the new value and the&#xA;value that was replaced.  The value that was replaced becomes the original value,&#xA;and the new value becomes the current value. The following&#xA;code moves the cursor to a specific row, performs some modifications, and updates&#xA;the row when complete.&#xA;&lt;PRE>&#xA;wrs.absolute(5);&#xA;wrs.updateString(1, &quot;new4thRow&quot;);&#xA;wrs.updateString(2, &quot;IV&quot;);&#xA;wrs.updateRow();&#xA;&lt;/PRE>&#xA;In XML, this is described by the &lt;code>modifyRow&lt;/code> tag. Both the original and new&#xA;values are contained within the tag for original row tracking purposes.&#xA;&lt;PRE>&#xA;&lt;&lt;font color=red>data&lt;/font>>&#xA;&lt;&lt;font color=red>currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;firstrow&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;1&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>/currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;secondrow&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;2&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>/currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;newthirdrow&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;III&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>/currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;fifthrow&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;5&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>/currentRow&lt;/font>>&#xA;&lt;&lt;font color=red>modifyRow&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;fourthrow&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>updateValue&lt;/font>>&#xA;new4thRow&#xA;&lt;&lt;font color=red>/updateValue&lt;/font>>&#xA;&lt;&lt;font color=red>columnValue&lt;/font>>&#xA;4&#xA;&lt;&lt;font color=red>/columnValue&lt;/font>>&#xA;&lt;&lt;font color=red>updateValue&lt;/font>>&#xA;IV&#xA;&lt;&lt;font color=red>/updateValue&lt;/font>>&#xA;&lt;&lt;font color=red>/modifyRow&lt;/font>>&#xA;&lt;&lt;font color=red>/data&lt;/font>>&#xA;&lt;/PRE>&#xA;&#xA;@see javax.sql.rowset.JdbcRowSet&#xA;@see javax.sql.rowset.CachedRowSet&#xA;@see javax.sql.rowset.FilteredRowSet&#xA;@see javax.sql.rowset.JoinRowSet&#xA;" annotatedElement="977d38e5-8805-422b-b43d-1a8cec20c119"/>
              <generalization xmi:id="21507cb0-656c-4335-af32-f7a69fd7cc40" isSubstitutable="true" general="b5aff68f-f29e-42dc-aea6-560b548f03fa"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="b5aff68f-f29e-42dc-aea6-560b548f03fa" name="CachedRowSet" isAbstract="true">
              <ownedComment xmi:id="1eb8043f-0fb0-46c2-8f26-7dee9dbfa123" body="The interface that all standard implementations of&#xA;&lt;code>CachedRowSet&lt;/code> must implement.&#xA;&lt;P>&#xA;The reference implementation of the &lt;code>CachedRowSet&lt;/code> interface provided&#xA;by Sun Microsystems is a standard implementation. Developers may use this implementation&#xA;just as it is, they may extend it, or they may choose to write their own implementations&#xA;of this interface.&#xA;&lt;P>&#xA;A &lt;code>CachedRowSet&lt;/code> object is a container for rows of data&#xA;that caches its rows in memory, which makes it possible to operate without always being&#xA;connected to its data source. Further, it is a&#xA;JavaBeans&lt;sup>&lt;font size=-2>TM&lt;/font>&lt;/sup> component and is scrollable,&#xA;updatable, and serializable. A &lt;code>CachedRowSet&lt;/code> object typically&#xA;contains rows from a result set, but it can also contain rows from any file&#xA;with a tabular format, such as a spread sheet.  The reference implementation&#xA;supports getting data only from a &lt;code>ResultSet&lt;/code> object, but&#xA;developers can extend the &lt;code>SyncProvider&lt;/code> implementations to provide&#xA;access to other tabular data sources.&#xA;&lt;P>&#xA;An application can modify the data in a &lt;code>CachedRowSet&lt;/code> object, and&#xA;those modifications can then be propagated back to the source of the data.&#xA;&lt;P>&#xA;A &lt;code>CachedRowSet&lt;/code> object is a &lt;i>disconnected&lt;/i> rowset, which means&#xA;that it makes use of a connection to its data source only briefly. It connects to its&#xA;data source while it is reading data to populate itself with rows and again&#xA;while it is propagating changes back to its underlying data source. The rest&#xA;of the time, a &lt;code>CachedRowSet&lt;/code> object is disconnected, including&#xA;while its data is being modified. Being disconnected makes a &lt;code>RowSet&lt;/code>&#xA;object much leaner and therefore much easier to pass to another component.  For&#xA;example, a disconnected &lt;code>RowSet&lt;/code> object can be serialized and passed&#xA;over the wire to a thin client such as a personal digital assistant (PDA).&#xA;&lt;P>&#xA;&#xA;&lt;h3>1.0 Creating a &lt;code>CachedRowSet&lt;/code> Object&lt;/h3>&#xA;The following line of code uses the default constructor for&#xA;&lt;code>CachedRowSet&lt;/code>&#xA;supplied in the reference implementation (RI) to create a default&#xA;&lt;code>CachedRowSet&lt;/code> object.&#xA;&lt;PRE>&#xA;CachedRowSetImpl crs = new CachedRowSetImpl();&#xA;&lt;/PRE>&#xA;This new &lt;code>CachedRowSet&lt;/code> object will have its properties set to the&#xA;default properties of a &lt;code>BaseRowSet&lt;/code> object, and, in addition, it will&#xA;have an &lt;code>RIOptimisticProvider&lt;/code> object as its synchronization provider.&#xA;&lt;code>RIOptimisticProvider&lt;/code>, one of two &lt;code>SyncProvider&lt;/code>&#xA;implementations included in the RI, is the default provider that the&#xA;&lt;code>SyncFactory&lt;/code> singleton will supply when no synchronization&#xA;provider is specified.&#xA;&lt;P>&#xA;A &lt;code>SyncProvider&lt;/code> object provides a &lt;code>CachedRowSet&lt;/code> object&#xA;with a reader (a &lt;code>RowSetReader&lt;/code> object) for reading data from a&#xA;data source to populate itself with data. A reader can be implemented to read&#xA;data from a &lt;code>ResultSet&lt;/code> object or from a file with a tabular format.&#xA;A &lt;code>SyncProvider&lt;/code> object also provides&#xA;a writer (a &lt;code>RowSetWriter&lt;/code> object) for synchronizing any&#xA;modifications to the &lt;code>CachedRowSet&lt;/code> object's data made while it was&#xA;disconnected with the data in the underlying data source.&#xA;&lt;P>&#xA;A writer can be implemented to exercise various degrees of care in checking&#xA;for conflicts and in avoiding them.&#xA;(A conflict occurs when a value in the data source has been changed after&#xA;the rowset populated itself with that value.)&#xA;The &lt;code>RIOptimisticProvider&lt;/code> implementation assumes there will be&#xA;few or no conflicts and therefore sets no locks. It updates the data source&#xA;with values from the &lt;code>CachedRowSet&lt;/code> object only if there are no&#xA;conflicts.&#xA;Other writers can be implemented so that they always write modified data to&#xA;the data source, which can be accomplished either by not checking for conflicts&#xA;or, on the other end of the spectrum, by setting locks sufficient to prevent data&#xA;in the data source from being changed. Still other writer implementations can be&#xA;somewhere in between.&#xA;&lt;P>&#xA;A &lt;code>CachedRowSet&lt;/code> object may use any&#xA;&lt;code>SyncProvider&lt;/code> implementation that has been registered&#xA;with the &lt;code>SyncFactory&lt;/code> singleton. An application&#xA;can find out which &lt;code>SyncProvider&lt;/code> implementations have been&#xA;registered by calling the following line of code.&#xA;&lt;PRE>&#xA;java.util.Enumeration providers = SyncFactory.getRegisteredProviders();&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;There are two ways for a &lt;code>CachedRowSet&lt;/code> object to specify which&#xA;&lt;code>SyncProvider&lt;/code> object it will use.&#xA;&lt;UL)&#xA;&lt;LI>Supplying the name of the implementation to the constructor&lt;BR>&#xA;The following line of code creates the &lt;code>CachedRowSet&lt;/code>&#xA;object &lt;i>crs2&lt;/i> that is initialized with default values except that its&#xA;&lt;code>SyncProvider&lt;/code> object is the one specified.&#xA;&lt;PRE>&#xA;CachedRowSetImpl crs2 = new CachedRowSetImpl(&#xA;&quot;com.fred.providers.HighAvailabilityProvider&quot;);&#xA;&lt;/PRE>&#xA;&lt;LI>Setting the &lt;code>SyncProvider&lt;/code> using the &lt;code>CachedRowSet&lt;/code>&#xA;method &lt;code>setSyncProvider&lt;/code>&lt;BR>&#xA;The following line of code resets the &lt;code>SyncProvider&lt;/code> object&#xA;for &lt;i>crs&lt;/i>, the &lt;code>CachedRowSet&lt;/code> object created with the&#xA;default constructor.&#xA;&lt;PRE>&#xA;crs.setSyncProvider(&quot;com.fred.providers.HighAvailabilityProvider&quot;);&#xA;&lt;/PRE>&#xA;&lt;/UL)&#xA;See the comments for &lt;code>SyncFactory&lt;/code> and &lt;code>SyncProvider&lt;/code> for&#xA;more details.&#xA;&#xA;&lt;P>&#xA;&lt;h3>2.0 Retrieving Data from a &lt;code>CachedRowSet&lt;/code> Object&lt;/h3>&#xA;Data is retrieved from a &lt;code>CachedRowSet&lt;/code> object by using the&#xA;getter methods inherited from the &lt;code>ResultSet&lt;/code>&#xA;interface.  The following examples, in which &lt;code>crs&lt;/code> is a&#xA;&lt;code>CachedRowSet&lt;/code>&#xA;object, demonstrate how to iterate through the rows, retrieving the column&#xA;values in each row.  The first example uses the version of the&#xA;getter methods that take a column number; the second example&#xA;uses the version that takes a column name. Column numbers are generally&#xA;used when the &lt;code>RowSet&lt;/code> object's command&#xA;is of the form &lt;code>SELECT * FROM TABLENAME&lt;/code>; column names are most&#xA;commonly used when the command specifies columns by name.&#xA;&lt;PRE>&#xA;while (crs.next()) {&#xA;String name = crs.getString(1);&#xA;int id = crs.getInt(2);&#xA;Clob comment = crs.getClob(3);&#xA;short dept = crs.getShort(4);&#xA;System.out.println(name + &quot;  &quot; + id + &quot;  &quot; + comment + &quot;  &quot; + dept);&#xA;}&#xA;&lt;/PRE>&#xA;&#xA;&lt;PRE>&#xA;while (crs.next()) {&#xA;String name = crs.getString(&quot;NAME&quot;);&#xA;int id = crs.getInt(&quot;ID&quot;);&#xA;Clob comment = crs.getClob(&quot;COM&quot;);&#xA;short dept = crs.getShort(&quot;DEPT&quot;);&#xA;System.out.println(name + &quot;  &quot; + id + &quot;  &quot; + comment + &quot;  &quot; + dept);&#xA;}&#xA;&lt;/PRE>&#xA;&lt;h4>2.1 Retrieving &lt;code>RowSetMetaData&lt;/code>&lt;/h4>&#xA;An application can get information about the columns in a &lt;code>CachedRowSet&lt;/code>&#xA;object by calling &lt;code>ResultSetMetaData&lt;/code> and &lt;code>RowSetMetaData&lt;/code>&#xA;methods on a &lt;code>RowSetMetaData&lt;/code> object. The following code fragment,&#xA;in which &lt;i>crs&lt;/i> is a &lt;code>CachedRowSet&lt;/code> object, illustrates the process.&#xA;The first line creates a &lt;code>RowSetMetaData&lt;/code> object with information&#xA;about the columns in &lt;i>crs&lt;/i>.  The method &lt;code>getMetaData&lt;/code>,&#xA;inherited from the &lt;code>ResultSet&lt;/code> interface, returns a&#xA;&lt;code>ResultSetMetaData&lt;/code> object, which is cast to a&#xA;&lt;code>RowSetMetaData&lt;/code> object before being assigned to the variable&#xA;&lt;i>rsmd&lt;/i>.  The second line finds out how many columns &lt;i>jrs&lt;/i> has, and&#xA;the third line gets the JDBC type of values stored in the second column of&#xA;&lt;code>jrs&lt;/code>.&#xA;&lt;PRE>&#xA;RowSetMetaData rsmd = (RowSetMetaData)crs.getMetaData();&#xA;int count = rsmd.getColumnCount();&#xA;int type = rsmd.getColumnType(2);&#xA;&lt;/PRE>&#xA;The &lt;code>RowSetMetaData&lt;/code> interface differs from the&#xA;&lt;code>ResultSetMetaData&lt;/code> interface in two ways.&#xA;&lt;UL>&#xA;&lt;LI>&lt;i>It includes &lt;code>setter&lt;/code> methods:&lt;/i> A &lt;code>RowSet&lt;/code>&#xA;object uses these methods internally when it is populated with data from a&#xA;different &lt;code>ResultSet&lt;/code> object.&#xA;&lt;P>&#xA;&lt;LI>&lt;i>It contains fewer &lt;code>getter&lt;/code> methods:&lt;/i> Some&#xA;&lt;code>ResultSetMetaData&lt;/code> methods to not apply to a &lt;code>RowSet&lt;/code>&#xA;object. For example, methods retrieving whether a column value is writable&#xA;or read only do not apply because all of a &lt;code>RowSet&lt;/code> object's&#xA;columns will be writable or read only, depending on whether the rowset is&#xA;updatable or not.&#xA;&lt;/UL>&#xA;NOTE: In order to return a &lt;code>RowSetMetaData&lt;/code> object, implementations must&#xA;override the &lt;code>getMetaData()&lt;/code> method defined in&#xA;&lt;code>java.sql.ResultSet&lt;/code> and return a &lt;code>RowSetMetaData&lt;/code> object.&#xA;&#xA;&lt;h3>3.0 Updating a &lt;code>CachedRowSet&lt;/code> Object&lt;/h3>&#xA;Updating a &lt;code>CachedRowSet&lt;/code> object is similar to updating a&#xA;&lt;code>ResultSet&lt;/code> object, but because the rowset is not connected to&#xA;its data source while it is being updated, it must take an additional step&#xA;to effect changes in its underlying data source. After calling the method&#xA;&lt;code>updateRow&lt;/code> or &lt;code>insertRow&lt;/code>, a&#xA;&lt;code>CachedRowSet&lt;/code>&#xA;object must also call the method &lt;code>acceptChanges&lt;/code> to have updates&#xA;written to the data source. The following example, in which the cursor is&#xA;on a row in the &lt;code>CachedRowSet&lt;/code> object &lt;i>crs&lt;/i>, shows&#xA;the code required to update two column values in the current row and also&#xA;update the &lt;code>RowSet&lt;/code> object's underlying data source.&#xA;&lt;PRE>&#xA;crs.updateShort(3, 58);&#xA;crs.updateInt(4, 150000);&#xA;crs.updateRow();&#xA;crs.acceptChanges();&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;The next example demonstrates moving to the insert row, building a new&#xA;row on the insert row, inserting it into the rowset, and then calling the&#xA;method &lt;code>acceptChanges&lt;/code> to add the new row to the underlying data&#xA;source.  Note that as with the getter methods, the  updater methods may take&#xA;either a column index or a column name to designate the column being acted upon.&#xA;&lt;PRE>&#xA;crs.moveToInsertRow();&#xA;crs.updateString(&quot;Name&quot;, &quot;Shakespeare&quot;);&#xA;crs.updateInt(&quot;ID&quot;, 10098347);&#xA;crs.updateShort(&quot;Age&quot;, 58);&#xA;crs.updateInt(&quot;Sal&quot;, 150000);&#xA;crs.insertRow();&#xA;crs.moveToCurrentRow();&#xA;crs.acceptChanges();&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;NOTE: Where the &lt;code>insertRow()&lt;/code> method inserts the contents of a&#xA;&lt;code>CachedRowSet&lt;/code> object's insert row is implementation-defined.&#xA;The reference implementation for the &lt;code>CachedRowSet&lt;/code> interface&#xA;inserts a new row immediately following the current row, but it could be&#xA;implemented to insert new rows in any number of other places.&#xA;&lt;P>&#xA;Another thing to note about these examples is how they use the method&#xA;&lt;code>acceptChanges&lt;/code>.  It is this method that propagates changes in&#xA;a &lt;code>CachedRowSet&lt;/code> object back to the underlying data source,&#xA;calling on the &lt;code>RowSet&lt;/code> object's writer internally to write&#xA;changes to the data source. To do this, the writer has to incur the expense&#xA;of establishing a connection with that data source. The&#xA;preceding two code fragments call the method &lt;code>acceptChanges&lt;/code>&#xA;immediately after calling &lt;code>updateRow&lt;/code> or &lt;code>insertRow&lt;/code>.&#xA;However, when there are multiple rows being changed, it is more efficient to call&#xA;&lt;code>acceptChanges&lt;/code> after all calls to &lt;code>updateRow&lt;/code>&#xA;and &lt;code>insertRow&lt;/code> have been made.  If &lt;code>acceptChanges&lt;/code>&#xA;is called only once, only one connection needs to be established.&#xA;&lt;P>&#xA;&lt;h3>4.0 Updating the Underlying Data Source&lt;/h3>&#xA;When the method &lt;code>acceptChanges&lt;/code> is executed, the&#xA;&lt;code>CachedRowSet&lt;/code> object's writer, a &lt;code>RowSetWriterImpl&lt;/code>&#xA;object, is called behind the scenes to write the changes made to the&#xA;rowset to the underlying data source. The writer is implemented to make a&#xA;connection to the data source and write updates to it.&#xA;&lt;P>&#xA;A writer is made available through an implementation of the&#xA;&lt;code>SyncProvider&lt;/code> interface, as discussed in section 1,&#xA;&quot;Creating a &lt;code>CachedRowSet&lt;/code> Object.&quot;&#xA;The default reference implementation provider, &lt;code>RIOptimisticProvider&lt;/code>,&#xA;has its writer implemented to use an optimistic concurrency control&#xA;mechanism. That is, it maintains no locks in the underlying database while&#xA;the rowset is disconnected from the database and simply checks to see if there&#xA;are any conflicts before writing data to the data source.  If there are any&#xA;conflicts, it does not write anything to the data source.&#xA;&lt;P>&#xA;The reader/writer facility&#xA;provided by the &lt;code>SyncProvider&lt;/code> class is pluggable, allowing for the&#xA;customization of data retrieval and updating. If a different concurrency&#xA;control mechanism is desired, a different implementation of&#xA;&lt;code>SyncProvider&lt;/code> can be plugged in using the method&#xA;&lt;code>setSyncProvider&lt;/code>.&#xA;&lt;P>&#xA;In order to use the optimistic concurrency control routine, the&#xA;&lt;code>RIOptismisticProvider&lt;/code> maintains both its current&#xA;value and its original value (the value it had immediately preceding the&#xA;current value). Note that if no changes have been made to the data in a&#xA;&lt;code>RowSet&lt;/code> object, its current values and its original values are the same,&#xA;both being the values with which the &lt;code>RowSet&lt;/code> object was initially&#xA;populated.  However, once any values in the &lt;code>RowSet&lt;/code> object have been&#xA;changed, the current values and the original values will be different, though at&#xA;this stage, the original values are still the initial values. With any subsequent&#xA;changes to data in a &lt;code>RowSet&lt;/code> object, its original values and current&#xA;values will still differ, but its original values will be the values that&#xA;were previously the current values.&#xA;&lt;P>&#xA;Keeping track of original values allows the writer to compare the &lt;code>RowSet&lt;/code>&#xA;object's original value with the value in the database. If the values in&#xA;the database differ from the &lt;code>RowSet&lt;/code> object's original values, which means that&#xA;the values in the database have been changed, there is a conflict.&#xA;Whether a writer checks for conflicts, what degree of checking it does, and how&#xA;it handles conflicts all depend on how it is implemented.&#xA;&lt;P>&#xA;&lt;h3>5.0 Registering and Notifying Listeners&lt;/h3>&#xA;Being JavaBeans components, all rowsets participate in the JavaBeans event&#xA;model, inheriting methods for registering listeners and notifying them of&#xA;changes from the &lt;code>BaseRowSet&lt;/code> class.  A listener for a&#xA;&lt;code>CachedRowSet&lt;/code> object is a component that wants to be notified&#xA;whenever there is a change in the rowset.  For example, if a&#xA;&lt;code>CachedRowSet&lt;/code> object contains the results of a query and&#xA;those&#xA;results are being displayed in, say, a table and a bar graph, the table and&#xA;bar graph could be registered as listeners with the rowset so that they can&#xA;update themselves to reflect changes. To become listeners, the table and&#xA;bar graph classes must implement the &lt;code>RowSetListener&lt;/code> interface.&#xA;Then they can be added to the &lt;Code>CachedRowSet&lt;/code> object's list of&#xA;listeners, as is illustrated in the following lines of code.&#xA;&lt;PRE>&#xA;crs.addRowSetListener(table);&#xA;crs.addRowSetListener(barGraph);&#xA;&lt;/PRE>&#xA;Each &lt;code>CachedRowSet&lt;/code> method that moves the cursor or changes&#xA;data also notifies registered listeners of the changes, so&#xA;&lt;code>table&lt;/code> and &lt;code>barGraph&lt;/code> will be notified when there is&#xA;a change in &lt;code>crs&lt;/code>.&#xA;&lt;P>&#xA;&lt;h3>6.0 Passing Data to Thin Clients&lt;/h3>&#xA;One of the main reasons to use a &lt;code>CachedRowSet&lt;/code> object is to&#xA;pass data between different components of an application. Because it is&#xA;serializable, a &lt;code>CachedRowSet&lt;/code> object can be used, for example,&#xA;to send the result of a query executed by an enterprise JavaBeans component&#xA;running in a server environment over a network to a client running in a&#xA;web browser.&#xA;&lt;P>&#xA;While a &lt;code>CachedRowSet&lt;/code> object is disconnected, it can be much&#xA;leaner than a &lt;code>ResultSet&lt;/code> object with the same data.&#xA;As a result, it can be especially suitable for sending data to a thin client&#xA;such as a PDA, where it would be inappropriate to use a JDBC driver&#xA;due to resource limitations or security considerations.&#xA;Thus, a &lt;code>CachedRowSet&lt;/code> object provides a means to &quot;get rows in&quot;&#xA;without the need to implement the full JDBC API.&#xA;&lt;P>&#xA;&lt;h3>7.0 Scrolling and Updating&lt;/h3>&#xA;A second major use for &lt;code>CachedRowSet&lt;/code> objects is to provide&#xA;scrolling and updating for &lt;code>ResultSet&lt;/code> objects that&#xA;do not provide these capabilities themselves.  In other words, a&#xA;&lt;code>CachedRowSet&lt;/code> object can be used to augment the&#xA;capabilities of a JDBC technology-enabled driver (hereafter called a&#xA;&quot;JDBC driver&quot;) when the DBMS does not provide full support for scrolling and&#xA;updating. To achieve the effect of making a non-scrollble and read-only&#xA;&lt;code>ResultSet&lt;/code> object scrollable and updatable, a programmer&#xA;simply needs to create a &lt;code>CachedRowSet&lt;/code> object populated&#xA;with that &lt;code>ResultSet&lt;/code> object's data.  This is demonstrated&#xA;in the following code fragment, where &lt;code>stmt&lt;/code> is a&#xA;&lt;code>Statement&lt;/code> object.&#xA;&lt;PRE>&#xA;ResultSet rs = stmt.executeQuery(&quot;SELECT * FROM EMPLOYEES&quot;);&#xA;CachedRowSetImpl crs = new CachedRowSetImpl();&#xA;crs.populate(rs);&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;The object &lt;code>crs&lt;/code> now contains the data from the table&#xA;&lt;code>EMPLOYEES&lt;/code>, just as the object &lt;code>rs&lt;/code> does.&#xA;The difference is that the cursor for &lt;code>crs&lt;/code> can be moved&#xA;forward, backward, or to a particular row even if the cursor for&#xA;&lt;code>rs&lt;/code> can move only forward.  In addition, &lt;code>crs&lt;/code> is&#xA;updatable even if &lt;code>rs&lt;/code> is not because by default, a&#xA;&lt;code>CachedRowSet&lt;/code> object is both scrollable and updatable.&#xA;&lt;P>&#xA;In summary, a &lt;code>CachedRowSet&lt;/code> object can be thought of as simply&#xA;a disconnected set of rows that are being cached outside of a data source.&#xA;Being thin and serializable, it can easily be sent across a wire,&#xA;and it is well suited to sending data to a thin client. However, a&#xA;&lt;code>CachedRowSet&lt;/code> object does have a limitation: It is limited in&#xA;size by the amount of data it can store in memory at one time.&#xA;&lt;P>&#xA;&lt;h3>8.0 Getting Universal Data Access&lt;/h3>&#xA;Another advantage of the &lt;code>CachedRowSet&lt;/code> class is that it makes it&#xA;possible to retrieve and store data from sources other than a relational&#xA;database. The reader for a rowset can be implemented to read and populate&#xA;its rowset with data from any tabular data source, including a spreadsheet&#xA;or flat file.&#xA;Because both a &lt;code>CachedRowSet&lt;/code> object and its metadata can be&#xA;created from scratch, a component that acts as a factory for rowsets&#xA;can use this capability to create a rowset containing data from&#xA;non-SQL data sources. Nevertheless, it is expected that most of the time,&#xA;&lt;code>CachedRowSet&lt;/code> objects will contain data that was fetched&#xA;from an SQL database using the JDBC API.&#xA;&lt;P>&#xA;&lt;h3>9.0 Setting Properties&lt;/h3>&#xA;All rowsets maintain a set of properties, which will usually be set using&#xA;a tool.  The number and kinds of properties a rowset has will vary,&#xA;depending on what the rowset does and how it gets its data.  For example,&#xA;rowsets that get their data from a &lt;code>ResultSet&lt;/code> object need to&#xA;set the properties that are required for making a database connection.&#xA;If a rowset uses the &lt;code>DriverManager&lt;/code> facility to make a&#xA;connection, it needs to set a property for the JDBC URL that identifies&#xA;the appropriate driver, and it needs to set the properties that give the&#xA;user name and password.&#xA;If, on the other hand, the rowset uses a &lt;code>DataSource&lt;/code> object&#xA;to make the connection, which is the preferred method, it does not need to&#xA;set the property for the JDBC URL.  Instead, it needs to set&#xA;properties for the logical name of the data source, for the user name,&#xA;and for the password.&#xA;&lt;P>&#xA;NOTE:  In order to use a &lt;code>DataSource&lt;/code> object for making a&#xA;connection, the &lt;code>DataSource&lt;/code> object must have been registered&#xA;with a naming service that uses the Java Naming and Directory&#xA;Interface&lt;sup>&lt;font size=-2>TM&lt;/font>&lt;/sup> (JNDI) API.  This registration&#xA;is usually done by a person acting in the capacity of a system&#xA;administrator.&#xA;&lt;P>&#xA;In order to be able to populate itself with data from a database, a rowset&#xA;needs to set a command property.  This property is a query that is a&#xA;&lt;code>PreparedStatement&lt;/code> object, which allows the query to have&#xA;parameter placeholders that are set at run time, as opposed to design time.&#xA;To set these placeholder parameters with values, a rowset provides&#xA;setter methods for setting values of each data type,&#xA;similar to the setter methods provided by the &lt;code>PreparedStatement&lt;/code>&#xA;interface.&#xA;&lt;P>&#xA;The following code fragment illustrates how the &lt;code>CachedRowSet&lt;/code>&#xA;object &lt;code>crs&lt;/code> might have its command property set.  Note that if a&#xA;tool is used to set properties, this is the code that the tool would use.&#xA;&lt;PRE>&#xA;crs.setCommand(&quot;SELECT FIRST_NAME, LAST_NAME, ADDRESS FROM CUSTOMERS &quot; +&#xA;&quot;WHERE CREDIT_LIMIT > ? AND REGION = ?&quot;);&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;The values that will be used to set the command's placeholder parameters are&#xA;contained in the &lt;code>RowSet&lt;/code> object's &lt;code>params&lt;/code> field, which is a&#xA;&lt;code>Vector&lt;/code> object.&#xA;The &lt;code>CachedRowSet&lt;/code> class provides a set of setter&#xA;methods for setting the elements in its &lt;code>params&lt;/code> field.  The&#xA;following code fragment demonstrates setting the two parameters in the&#xA;query from the previous example.&#xA;&lt;PRE>&#xA;crs.setInt(1, 5000);&#xA;crs.setString(2, &quot;West&quot;);&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;The &lt;code>params&lt;/code> field now contains two elements, each of which is&#xA;an array two elements long.  The first element is the parameter number;&#xA;the second is the value to be set.&#xA;In this case, the first element of &lt;code>params&lt;/code> is&#xA;&lt;code>1&lt;/code>, &lt;code>5000&lt;/code>, and the second element is &lt;code>2&lt;/code>,&#xA;&lt;code>&quot;West&quot;&lt;/code>.  When an application calls the method&#xA;&lt;code>execute&lt;/code>, it will in turn call on this &lt;code>RowSet&lt;/code> object's reader,&#xA;which will in turn invoke its &lt;code>readData&lt;/code> method. As part of&#xA;its implementation, &lt;code>readData&lt;/code> will get the values in&#xA;&lt;code>params&lt;/code> and use them to set the command's placeholder&#xA;parameters.&#xA;The following code fragment gives an idea of how the reader&#xA;does this, after obtaining the &lt;code>Connection&lt;/code> object&#xA;&lt;code>con&lt;/code>.&#xA;&lt;PRE>&#xA;PreparedStatement pstmt = con.prepareStatement(crs.getCommand());&#xA;reader.decodeParams();&#xA;decodeParams figures out which setter methods to use and does something&#xA;like the following:&#xA;for (i = 0; i &lt; params.length; i++) {&#xA;pstmt.setObject(i + 1, params[i]);&#xA;}&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;At this point, the command for &lt;code>crs&lt;/code> is the query &lt;code>&quot;SELECT&#xA;FIRST_NAME, LAST_NAME, ADDRESS FROM CUSTOMERS WHERE CREDIT_LIMIT > 5000&#xA;AND REGION = &quot;West&quot;&lt;/code>.  After the &lt;code>readData&lt;/code> method executes&#xA;this command with the following line of code, it will have the data from&#xA;&lt;code>rs&lt;/code> with which to populate &lt;code>crs&lt;/code>.&#xA;&lt;PRE>&#xA;ResultSet rs = pstmt.executeQuery();&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;The preceding code fragments give an idea of what goes on behind the&#xA;scenes; they would not appear in an application, which would not invoke&#xA;methods like &lt;code>readData&lt;/code> and &lt;code>decodeParams&lt;/code>.&#xA;In contrast, the following code fragment shows what an application might do.&#xA;It sets the rowset's command, sets the command's parameters, and executes&#xA;the command. Simply by calling the &lt;code>execute&lt;/code> method,&#xA;&lt;code>crs&lt;/code> populates itself with the requested data from the&#xA;table &lt;code>CUSTOMERS&lt;/code>.&#xA;&lt;PRE>&#xA;crs.setCommand(&quot;SELECT FIRST_NAME, LAST_NAME, ADDRESS FROM CUSTOMERS&quot; +&#xA;&quot;WHERE CREDIT_LIMIT > ? AND REGION = ?&quot;);&#xA;crs.setInt(1, 5000);&#xA;crs.setString(2, &quot;West&quot;);&#xA;crs.execute();&#xA;&lt;/PRE>&#xA;&#xA;&lt;h3>10.0 Paging Data&lt;/h3>&#xA;Because a &lt;code>CachedRowSet&lt;/code> object stores data in memory,&#xA;the amount of data that it can contain at any one&#xA;time is determined by the amount of memory available. To get around this limitation,&#xA;a &lt;code>CachedRowSet&lt;/code> object can retrieve data from a &lt;code>ResultSet&lt;/code>&#xA;object in chunks of data, called &lt;i>pages&lt;/i>. To take advantage of this mechanism,&#xA;an application sets the number of rows to be included in a page using the method&#xA;&lt;code>setPageSize&lt;/code>. In other words, if the page size is set to five, a chunk&#xA;of five rows of&#xA;data will be fetched from the data source at one time. An application can also&#xA;optionally set the maximum number of rows that may be fetched at one time.  If the&#xA;maximum number of rows is set to zero, or no maximum number of rows is set, there is&#xA;no limit to the number of rows that may be fetched at a time.&#xA;&lt;P>&#xA;After properties have been set,&#xA;the &lt;code>CachedRowSet&lt;/code> object must be populated with data&#xA;using either the method &lt;code>populate&lt;/code> or the method &lt;code>execute&lt;/code>.&#xA;The following lines of code demonstrate using the method &lt;code>populate&lt;/code>.&#xA;Note that this version of the method takes two parameters, a &lt;code>ResultSet&lt;/code>&#xA;handle and the row in the &lt;code>ResultSet&lt;/code> object from which to start&#xA;retrieving rows.&#xA;&lt;PRE>&#xA;CachedRowSet crs = new CachedRowSetImpl();&#xA;crs.setMaxRows(20);&#xA;crs.setPageSize(4);&#xA;crs.populate(rsHandle, 10);&#xA;&lt;/PRE>&#xA;When this code runs, &lt;i>crs&lt;/i> will be populated with four rows from&#xA;&lt;i>rsHandle&lt;/i> starting with the tenth row.&#xA;&lt;P>&#xA;The next code fragment shows populating a &lt;code>CachedRowSet&lt;/code> object using the&#xA;method &lt;code>execute&lt;/code>, which may or may not take a &lt;code>Connection&lt;/code>&#xA;object as a parameter.  This code passes &lt;code>execute&lt;/code> the &lt;code>Connection&lt;/code>&#xA;object &lt;i>conHandle&lt;/i>.&#xA;&lt;P>&#xA;Note that there are two differences between the following code&#xA;fragment and the previous one. First, the method &lt;code>setMaxRows&lt;/code> is not&#xA;called, so there is no limit set for the number of rows that &lt;i>crs&lt;/i> may contain.&#xA;(Remember that &lt;i>crs&lt;/i> always has the overriding limit of how much data it can&#xA;store in memory.) The second difference is that the you cannot pass the method&#xA;&lt;code>execute&lt;/code> the number of the row in the &lt;code>ResultSet&lt;/code> object&#xA;from which to start retrieving rows. This method always starts with the first row.&#xA;&lt;PRE>&#xA;CachedRowSet crs = new CachedRowSetImpl();&#xA;crs.setPageSize(5);&#xA;crs.execute(conHandle);&#xA;&lt;/PRE>&#xA;After this code has run, &lt;i>crs&lt;/i> will contain five rows of data from the&#xA;&lt;code>ResultSet&lt;/code> object produced by the command for &lt;i>crs&lt;/i>. The writer&#xA;for &lt;i>crs&lt;/i> will use &lt;i>conHandle&lt;/i> to connect to the data source and&#xA;execute the command for &lt;i>crs&lt;/i>. An application is then able to operate on the&#xA;data in &lt;i>crs&lt;/i> in the same way that it would operate on data in any other&#xA;&lt;code>CachedRowSet&lt;/code> object.&#xA;&lt;P>&#xA;To access the next page (chunk of data), an application calls the method&#xA;&lt;code>nextPage&lt;/code>.  This method creates a new &lt;code>CachedRowSet&lt;/code> object&#xA;and fills it with the next page of data.  For example, assume that the&#xA;&lt;code>CachedRowSet&lt;/code> object's command returns a &lt;code>ResultSet&lt;/code> object&#xA;&lt;i>rs&lt;/i> with 1000 rows of data.  If the page size has been set to 100, the first&#xA;call to the method &lt;code>nextPage&lt;/code> will create a &lt;code>CachedRowSet&lt;/code> object&#xA;containing the first 100 rows of &lt;i>rs&lt;/i>. After doing what it needs to do with the&#xA;data in these first 100 rows, the application can again call the method&#xA;&lt;code>nextPage&lt;/code> to create another &lt;code>CachedRowSet&lt;/code> object&#xA;with the second 100 rows from &lt;i>rs&lt;/i>. The data from the first &lt;code>CachedRowSet&lt;/code>&#xA;object will no longer be in memory because it is replaced with the data from the&#xA;second &lt;code>CachedRowSet&lt;/code> object. After the tenth call to the method &lt;code>nextPage&lt;/code>,&#xA;the tenth &lt;code>CachedRowSet&lt;/code> object will contain the last 100 rows of data from&#xA;&lt;i>rs&lt;/i>, which are stored in memory. At any given time, the data from only one&#xA;&lt;code>CachedRowSet&lt;/code> object is stored in memory.&#xA;&lt;P>&#xA;The method &lt;code>nextPage&lt;/code> returns &lt;code>true&lt;/code> as long as the current&#xA;page is not the last page of rows and &lt;code>false&lt;/code> when there are no more pages.&#xA;It can therefore be used in a &lt;code>while&lt;/code> loop to retrieve all of the pages,&#xA;as is demonstrated in the following lines of code.&#xA;&lt;PRE>&#xA;CachedRowSet crs = CachedRowSetImpl();&#xA;crs.setPageSize(100);&#xA;crs.execute(conHandle);&#xA;&#xA;while(crs.next() {&#xA;. . . // operate on first chunk of 100 rows in crs, row by row&#xA;}&#xA;&#xA;while(crs.nextPage()) {&#xA;while(crs.next()) {&#xA;. . . // operate on the subsequent chunks (of 100 rows each) in crs,&#xA;row by row&#xA;}&#xA;}&#xA;&lt;/PRE>&#xA;After this code fragment has been run, the application will have traversed all&#xA;1000 rows, but it will have had no more than 100 rows in memory at a time.&#xA;&lt;P>&#xA;The &lt;code>CachedRowSet&lt;/code> interface also defines the method &lt;code>previousPage&lt;/code>.&#xA;Just as the method &lt;code>nextPage&lt;/code> is analogous to the &lt;code>ResultSet&lt;/code>&#xA;method &lt;code>next&lt;/code>, the method &lt;code>previousPage&lt;/code> is analogous to&#xA;the &lt;code>ResultSet&lt;/code> method &lt;code>previous&lt;/code>.  Similar to the method&#xA;&lt;code>nextPage&lt;/code>, &lt;code>previousPage&lt;/code> creates a &lt;code>CachedRowSet&lt;/code>&#xA;object containing the number of rows set as the page size.  So, for instance, the&#xA;method &lt;code>previousPage&lt;/code> could be used in a &lt;code>while&lt;/code> loop at&#xA;the end of the preceding code fragment to navigate back through the pages from the last&#xA;page to the first page.&#xA;The method &lt;code>previousPage&lt;/code> is also similar to &lt;code>nextPage&lt;/code>&#xA;in that it can be used in a &lt;code>while&lt;/code>&#xA;loop, except that it returns &lt;code>true&lt;/code> as long as there is another page&#xA;preceding it and &lt;code>false&lt;/code> when there are no more pages ahead of it.&#xA;&lt;P>&#xA;By positioning the cursor after the last row for each page,&#xA;as is done in the following code fragment, the method &lt;code>previous&lt;/code>&#xA;navigates from the last row to the first row in each page.&#xA;The code could also have left the cursor before the first row on each page and then&#xA;used the method &lt;code>next&lt;/code> in a &lt;code>while&lt;/code> loop to navigate each page&#xA;from the first row to the last row.&#xA;&lt;P>&#xA;The following code fragment assumes a continuation from the previous code fragment,&#xA;meaning that the cursor for the tenth &lt;code>CachedRowSet&lt;/code> object is on the&#xA;last row.  The code moves the cursor to after the last row so that the first&#xA;call to the method &lt;code>previous&lt;/code> will put the cursor back on the last row.&#xA;After going through all of the rows in the last page (the &lt;code>CachedRowSet&lt;/code>&#xA;object &lt;i>crs&lt;/i>), the code then enters&#xA;the &lt;code>while&lt;/code> loop to get to the ninth page, go through the rows backwards,&#xA;go to the eighth page, go through the rows backwards, and so on to the first row&#xA;of the first page.&#xA;&#xA;&lt;PRE>&#xA;crs.afterLast();&#xA;while(crs.previous())  {&#xA;. . . // navigate through the rows, last to first&#xA;{&#xA;while(crs.previousPage())  {&#xA;crs.afterLast();&#xA;while(crs.previous())  {&#xA;. . . // go from the last row to the first row of each page&#xA;}&#xA;}&#xA;&lt;/PRE>&#xA;&#xA;@author Jonathan Bruce&#xA;" annotatedElement="b5aff68f-f29e-42dc-aea6-560b548f03fa"/>
              <generalization xmi:id="e9b65b2c-5ac3-4801-899c-56a8bd8e1829" isSubstitutable="true" general="e616baf7-9c01-483d-965e-e9423d225417"/>
              <generalization xmi:id="0e68fad3-eeff-417c-8e3b-fe65e49bd02e" isSubstitutable="true" general="003824a9-a8bb-4ab9-ae74-9187dfffd05e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="003824a9-a8bb-4ab9-ae74-9187dfffd05e" name="Joinable" isAbstract="true">
              <ownedComment xmi:id="c88a3b98-9a05-420e-857b-eabd436b8517" body="&lt;h3>1.0 Background&lt;/h3>&#xA;The &lt;code>Joinable&lt;/code> interface provides the methods for getting and&#xA;setting a match column, which is the basis for forming the SQL &lt;code>JOIN&lt;/code>&#xA;formed by adding &lt;code>RowSet&lt;/code> objects to a &lt;code>JoinRowSet&lt;/code>&#xA;object.&#xA;&lt;P>&#xA;Any standard &lt;code>RowSet&lt;/code> implementation &lt;b>may&lt;/b> implement&#xA;the &lt;code>Joinable&lt;/code> interface in order to be&#xA;added to a &lt;code>JoinRowSet&lt;/code> object. Implementing this interface gives&#xA;a &lt;code>RowSet&lt;/code> object the ability to use &lt;code>Joinable&lt;/code> methods,&#xA;which set, retrieve, and get information about match columns.  An&#xA;application may add a&#xA;&lt;code>RowSet&lt;/code> object that has not implemented the &lt;code>Joinable&lt;/code>&#xA;interface to a &lt;code>JoinRowSet&lt;/code> object, but to do so it must use one&#xA;of the &lt;code>JoinRowSet.addRowSet&lt;/code> methods that takes both a&#xA;&lt;code>RowSet&lt;/code> object and a match column or an array of &lt;code>RowSet&lt;/code>&#xA;objects and an array of match columns.&#xA;&lt;P>&#xA;To get access to the methods in the &lt;code>Joinable&lt;/code> interface, a&#xA;&lt;code>RowSet&lt;/code> object implements at least one of the&#xA;five standard &lt;code>RowSet&lt;/code> interfaces and also implements the&#xA;&lt;code>Joinable&lt;/code> interface.  In addition, most &lt;code>RowSet&lt;/code>&#xA;objects extend the &lt;code>BaseRowSet&lt;/code> class.  For example:&#xA;&lt;pre>&#xA;class MyRowSetImpl extends BaseRowSet implements CachedRowSet, Joinable {&#xA;:&#xA;:&#xA;}&#xA;&lt;/pre>&#xA;&lt;P>&#xA;&lt;h3>2.0 Usage Guidelines&lt;/h3>&#xA;&lt;P>&#xA;The methods in the &lt;code>Joinable&lt;/code> interface allow a &lt;code>RowSet&lt;/code> object&#xA;to set a match column, retrieve a match column, or unset a match column, which is&#xA;the column upon which an SQL &lt;code>JOIN&lt;/code> can be based.&#xA;An instance of a class that implements these methods can be added to a&#xA;&lt;code>JoinRowSet&lt;/code> object to allow an SQL &lt;code>JOIN&lt;/code> relationship to&#xA;be established.&#xA;&lt;p>&#xA;&lt;pre>&#xA;CachedRowSet crs = new MyRowSetImpl();&#xA;crs.populate((ResultSet)rs);&#xA;(Joinable)crs.setMatchColumnIndex(1);&#xA;&#xA;JoinRowSet jrs = new JoinRowSetImpl();&#xA;jrs.addRowSet(crs);&#xA;&lt;/pre>&#xA;In the previous example, &lt;i>crs&lt;/i> is a &lt;code>CachedRowSet&lt;/code> object that&#xA;has emplemented the &lt;code>Joinable&lt;/code> interface.  In the following example,&#xA;&lt;i>crs2&lt;/i> has not, so it must supply the match column as an argument to the&#xA;&lt;code>addRowSet&lt;/code> method. This example assumes that column 1 is the match&#xA;column.&#xA;&lt;PRE>&#xA;CachedRowSet crs2 = new MyRowSetImpl();&#xA;crs2.populate((ResultSet)rs);&#xA;&#xA;JoinRowSet jrs2 = new JoinRowSetImpl();&#xA;jrs2.addRowSet(crs2, 1);&#xA;&lt;/PRE>&#xA;&lt;p>&#xA;The &lt;code>JoinRowSet&lt;/code> interface makes it possible to get data from one or&#xA;more &lt;code>RowSet&lt;/code> objects consolidated into one table without having to incur&#xA;the expense of creating a connection to a database. It is therefore ideally suited&#xA;for use by disconnected &lt;code>RowSet&lt;/code> objects. Nevertheless, any&#xA;&lt;code>RowSet&lt;/code> object &lt;b>may&lt;/b> implement this interface&#xA;regardless of whether it is connected or disconnected. Note that a&#xA;&lt;code>JdbcRowSet&lt;/code> object, being always connected to its data source, can&#xA;become part of an SQL &lt;code>JOIN&lt;/code> directly without having to become part&#xA;of a &lt;code>JoinRowSet&lt;/code> object.&#xA;&lt;P>&#xA;&lt;h3>3.0 Managing Multiple Match Columns&lt;/h3>&#xA;The index array passed into the &lt;code>setMatchColumn&lt;/code> methods indicates&#xA;how many match columns are being set (the length of the array) in addition to&#xA;which columns will be used for the match. For example:&#xA;&lt;pre>&#xA;int[] i = {1, 2, 4, 7}; // indicates four match columns, with column&#xA;indexes 1, 2, 4, 7 participating in the JOIN.&#xA;Joinable.setMatchColumn(i);&#xA;&lt;/pre>&#xA;Subsequent match columns may be added as follows to a different &lt;code>Joinable&lt;/code>&#xA;object (a &lt;code>RowSet&lt;/code> object that has implemented the &lt;code>Joinable&lt;/code>&#xA;interface).&#xA;&lt;pre>&#xA;int[] w = {3, 2, 5, 3};&#xA;Joinable2.setMatchColumn(w);&#xA;&lt;/pre>&#xA;When an application adds two or more &lt;code>RowSet&lt;/code> objects to a&#xA;&lt;code>JoinRowSet&lt;/code> object, the order of the indexes in the array is&#xA;particularly important. Each index of&#xA;the array maps directly to the corresponding index of the previously added&#xA;&lt;code>RowSet&lt;/code> object. If overlap or underlap occurs, the match column&#xA;data is maintained in the event an additional &lt;code>Joinable&lt;/code> RowSet is&#xA;added and needs to relate to the match column data. Therefore, applications&#xA;can set multiple match columns in any order, but&#xA;this order has a direct effect on the outcome of the &lt;code>SQL&lt;/code> JOIN.&#xA;&lt;p>&#xA;This assertion applies in exactly the same manner when column names are used&#xA;rather than column indexes to indicate match columns.&#xA;&#xA;@see JoinRowSet&#xA;@author  Jonathan Bruce&#xA;" annotatedElement="003824a9-a8bb-4ab9-ae74-9187dfffd05e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="c5a73aa1-daca-47af-a545-6f1115c90ff5" name="serial">
              <packagedElement xmi:type="uml:Class" xmi:id="1fc2b52c-1ecc-4b22-8d3b-6b785ed2c4e7" name="SQLOutputImpl" clientDependency="3d83d63c-5591-4c94-bfad-ef1548471b07">
                <ownedComment xmi:id="d548d767-3e1f-4fc9-ab0d-89701df52c18" body="The output stream for writing the attributes of a&#xA;custom-mapped user-defined type (UDT) back to the database.&#xA;The driver uses this interface internally, and its&#xA;methods are never directly invoked by an application programmer.&#xA;&lt;p>&#xA;When an application calls the&#xA;method &lt;code>PreparedStatement.setObject&lt;/code>, the driver&#xA;checks to see whether the value to be written is a UDT with&#xA;a custom mapping.  If it is, there will be an entry in a&#xA;type map containing the &lt;code>Class&lt;/code> object for the&#xA;class that implements &lt;code>SQLData&lt;/code> for this UDT.&#xA;If the value to be written is an instance of &lt;code>SQLData&lt;/code>,&#xA;the driver will create an instance of &lt;code>SQLOutputImpl&lt;/code>&#xA;and pass it to the method &lt;code>SQLData.writeSQL&lt;/code>.&#xA;The method &lt;code>writeSQL&lt;/code> in turn calls the&#xA;appropriate &lt;code>SQLOutputImpl.writeXXX&lt;/code> methods&#xA;to write data from the &lt;code>SQLData&lt;/code> object to&#xA;the &lt;code>SQLOutputImpl&lt;/code> output stream as the&#xA;representation of an SQL user-defined type.&#xA;" annotatedElement="1fc2b52c-1ecc-4b22-8d3b-6b785ed2c4e7"/>
                <interfaceRealization xmi:id="3d83d63c-5591-4c94-bfad-ef1548471b07" name="" supplier="154e0014-868e-4c50-8149-712ad5eee1c6" client="1fc2b52c-1ecc-4b22-8d3b-6b785ed2c4e7" contract="154e0014-868e-4c50-8149-712ad5eee1c6"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="e22b4425-db34-4496-b54e-17b610b1f623" name="SerialClob" clientDependency="02efd97a-c4d8-403b-ac7e-8370275888a6 68ccfad1-9fe5-4cb7-a0a2-9f27d3256fea d9dbdc2c-0a33-4ddf-9f15-b5f2f350dcf1">
                <ownedComment xmi:id="e99be069-c9ee-4de3-abb8-5deab3c4048a" body="A serialized mapping in the Java programming language of an SQL&#xA;&lt;code>CLOB&lt;/code> value.&#xA;&lt;P>&#xA;The &lt;code>SerialClob&lt;/code> class provides a constructor for creating&#xA;an instance from a &lt;code>Clob&lt;/code> object.  Note that the &lt;code>Clob&lt;/code>&#xA;object should have brought the SQL &lt;code>CLOB&lt;/code> value's data over&#xA;to the client before a &lt;code>SerialClob&lt;/code> object&#xA;is constructed from it.  The data of an SQL &lt;code>CLOB&lt;/code> value can&#xA;be materialized on the client as a stream of Unicode characters.&#xA;&lt;P>&#xA;&lt;code>SerialClob&lt;/code> methods make it possible to get a substring&#xA;from a &lt;code>SerialClob&lt;/code> object or to locate the start of&#xA;a pattern of characters.&#xA;&#xA;@author Jonathan Bruce&#xA;" annotatedElement="e22b4425-db34-4496-b54e-17b610b1f623"/>
                <interfaceRealization xmi:id="02efd97a-c4d8-403b-ac7e-8370275888a6" name="" supplier="43489fcf-a0c2-4829-a3aa-2f9ba4a4ef1f" client="e22b4425-db34-4496-b54e-17b610b1f623" contract="43489fcf-a0c2-4829-a3aa-2f9ba4a4ef1f"/>
                <interfaceRealization xmi:id="68ccfad1-9fe5-4cb7-a0a2-9f27d3256fea" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="e22b4425-db34-4496-b54e-17b610b1f623" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <interfaceRealization xmi:id="d9dbdc2c-0a33-4ddf-9f15-b5f2f350dcf1" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="e22b4425-db34-4496-b54e-17b610b1f623" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="c89d25fe-ab1b-441d-a8b3-2fbabbba0f3b" name="SerialStruct" clientDependency="f0cc0e28-1fbf-4111-b7ab-f01b388fde6f d1fd9690-804d-4bb4-aeda-406628f6dcf8 4b5957c3-513b-4592-9afc-6e41d8bb9056">
                <ownedComment xmi:id="8f7e4f05-1ed0-4b86-9f5c-cb5801a5df9c" body="A serialized mapping in the Java programming language of an SQL&#xA;structured type. Each attribute that is not already serialized&#xA;is mapped to a serialized form, and if an attribute is itself&#xA;a structured type, each of its attributes that is not already&#xA;serialized is mapped to a serialized form.&#xA;&lt;P>&#xA;In addition, the structured type is custom mapped to a class in the&#xA;Java programming language if there is such a mapping, as are&#xA;its attributes, if appropriate.&#xA;&lt;P>&#xA;The &lt;code>SerialStruct&lt;/code> class provides a constructor for creating&#xA;an instance from a &lt;code>Struct&lt;/code> object, a method for retrieving&#xA;the SQL type name of the SQL structured type in the database, and methods&#xA;for retrieving its attribute values.&#xA;" annotatedElement="c89d25fe-ab1b-441d-a8b3-2fbabbba0f3b"/>
                <interfaceRealization xmi:id="f0cc0e28-1fbf-4111-b7ab-f01b388fde6f" name="" supplier="94008cf8-444e-408b-9bc6-c5000dadbf6a" client="c89d25fe-ab1b-441d-a8b3-2fbabbba0f3b" contract="94008cf8-444e-408b-9bc6-c5000dadbf6a"/>
                <interfaceRealization xmi:id="d1fd9690-804d-4bb4-aeda-406628f6dcf8" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="c89d25fe-ab1b-441d-a8b3-2fbabbba0f3b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <interfaceRealization xmi:id="4b5957c3-513b-4592-9afc-6e41d8bb9056" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="c89d25fe-ab1b-441d-a8b3-2fbabbba0f3b" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="fc971a83-4809-40eb-8ad0-5ec611821fd7" name="SerialRef" clientDependency="a760b327-5e4b-4022-8125-12ef009d6f1d 9ffc30db-4960-49d1-9007-ecbd1492252d 65482b85-4f66-4cb5-862a-3f9dc01f58bc">
                <ownedComment xmi:id="67e39bb2-91ed-49ce-b527-70e351392e9a" body="A serialized mapping of a &lt;code>Ref&lt;/code> object, which is the mapping in the&#xA;Java programming language of an SQL &lt;code>REF&lt;/code> value.&#xA;&lt;p>&#xA;The &lt;code>SerialRef&lt;/code> class provides a constructor  for&#xA;creating a &lt;code>SerialRef&lt;/code> instance from a &lt;code>Ref&lt;/code>&#xA;object and provides methods for getting and setting the &lt;code>Ref&lt;/code> object.&#xA;" annotatedElement="fc971a83-4809-40eb-8ad0-5ec611821fd7"/>
                <interfaceRealization xmi:id="a760b327-5e4b-4022-8125-12ef009d6f1d" name="" supplier="ca578bcb-922b-44b5-b011-e16452f5fe82" client="fc971a83-4809-40eb-8ad0-5ec611821fd7" contract="ca578bcb-922b-44b5-b011-e16452f5fe82"/>
                <interfaceRealization xmi:id="9ffc30db-4960-49d1-9007-ecbd1492252d" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="fc971a83-4809-40eb-8ad0-5ec611821fd7" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <interfaceRealization xmi:id="65482b85-4f66-4cb5-862a-3f9dc01f58bc" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="fc971a83-4809-40eb-8ad0-5ec611821fd7" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="395d1532-ca54-4bf2-b006-e9b8b730dcfa" name="SerialException">
                <ownedComment xmi:id="14e9b06b-8024-4553-b755-2e0bbc9147f9" body="Indicates and an error with the serialization or de-serialization of&#xA;SQL types such as &lt;code>BLOB, CLOB, STRUCT or ARRAY&lt;/code> in&#xA;addition to SQL types such as &lt;code>DATALINK and JAVAOBJECT&lt;/code>&#xA;&#xA;@version 0.1&#xA;" annotatedElement="395d1532-ca54-4bf2-b006-e9b8b730dcfa"/>
                <generalization xmi:id="c258ff91-a28b-41cc-811f-43fa63e5cfdd" isSubstitutable="true" general="9c8e52a6-a87b-425b-8824-99198fff353f"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="8284484c-516e-4256-967a-5e400db54135" name="SerialDatalink" clientDependency="abd8186a-81de-449d-b08c-329d056665c4 92e37062-7768-46f0-b8cf-78238f8e925a">
                <ownedComment xmi:id="23b174aa-4193-42b5-9bef-c2dd9008d5ff" body="A serialized mapping in the Java programming language of an SQL&#xA;&lt;code>DATALINK&lt;/code> value. A &lt;code>DATALINK&lt;/code> value&#xA;references a file outside of the underlying data source that the&#xA;data source manages.&#xA;&lt;P>&#xA;&lt;code>RowSet&lt;/code> implementations can use the method &lt;code>RowSet.getURL&lt;/code>&#xA;to retrieve a &lt;code>java.net.URL&lt;/code> object, which can be used&#xA;to manipulate the external data.&#xA;&lt;pre>&#xA;java.net.URL url = rowset.getURL(1);&#xA;&lt;/pre>&#xA;" annotatedElement="8284484c-516e-4256-967a-5e400db54135"/>
                <interfaceRealization xmi:id="abd8186a-81de-449d-b08c-329d056665c4" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="8284484c-516e-4256-967a-5e400db54135" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <interfaceRealization xmi:id="92e37062-7768-46f0-b8cf-78238f8e925a" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="8284484c-516e-4256-967a-5e400db54135" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f7af1e15-2433-43bc-91ee-abde384f3608" name="SerialArray" clientDependency="26711696-17f9-41ef-895b-750bbe8de233 c476ec03-3865-48d3-a3db-be73e5bccfc7 81f92e9d-231f-457d-a0b1-31e41f7b02b9">
                <ownedComment xmi:id="f3bbd24e-6713-4d02-a803-5909d767e385" body="A serialized version of an &lt;code>Array&lt;/code>&#xA;object, which is the mapping in the Java programming language of an SQL&#xA;&lt;code>ARRAY&lt;/code> value.&#xA;&lt;P>&#xA;The &lt;code>SerialArray&lt;/code> class provides a constructor for creating&#xA;a &lt;code>SerialArray&lt;/code> instance from an &lt;code>Array&lt;/code> object,&#xA;methods for getting the base type and the SQL name for the base type, and&#xA;methods for copying all or part of a &lt;code>SerialArray&lt;/code> object.&#xA;&lt;P>&#xA;Note: In order for this class to function correctly, a connection to the&#xA;data source&#xA;must be available in order for the SQL &lt;code>Array&lt;/code> object to be&#xA;materialized (have all of its elements brought to the client server)&#xA;if necessary. At this time, logical pointers to the data in the data source,&#xA;such as locators, are not currently supported.&#xA;" annotatedElement="f7af1e15-2433-43bc-91ee-abde384f3608"/>
                <interfaceRealization xmi:id="81f92e9d-231f-457d-a0b1-31e41f7b02b9" name="" supplier="26b4216f-0279-4b4a-aa2a-2d6fd1c81c48" client="f7af1e15-2433-43bc-91ee-abde384f3608" contract="26b4216f-0279-4b4a-aa2a-2d6fd1c81c48"/>
                <interfaceRealization xmi:id="26711696-17f9-41ef-895b-750bbe8de233" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f7af1e15-2433-43bc-91ee-abde384f3608" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <interfaceRealization xmi:id="c476ec03-3865-48d3-a3db-be73e5bccfc7" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="f7af1e15-2433-43bc-91ee-abde384f3608" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e1413104-7e18-4f24-83f4-12309a08fc96" name="InternalResultSetImpl" visibility="private" clientDependency="05966ab6-b791-44ca-becc-89787211cf18">
                  <ownedComment xmi:id="ca3d975e-a3cc-444d-b541-7fe2f2148b59" body="Internal ResultSet implementation to serve getResultSet(XXX) methods.&#xA;&#xA;Suggest we return a READ_ONLY array to start. We can migrate to a updatable&#xA;ResultSet later.&#xA;" annotatedElement="e1413104-7e18-4f24-83f4-12309a08fc96"/>
                  <interfaceRealization xmi:id="05966ab6-b791-44ca-becc-89787211cf18" name="" supplier="fce59589-58ac-4064-b872-079441b58b6f" client="e1413104-7e18-4f24-83f4-12309a08fc96" contract="fce59589-58ac-4064-b872-079441b58b6f"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4fef7938-1dd1-4692-af01-674b830b6b38" name="SQLInputImpl" clientDependency="555a3541-bb1e-4a8f-8a48-94deda5f54c7">
                <ownedComment xmi:id="54b8ddd8-5089-4293-9d06-ab3261870a24" body="An input stream used for custom mapping user-defined types (UDTs).&#xA;An &lt;code>SQLInputImpl&lt;/code> object is an input stream that contains a&#xA;stream of values that are the attributes of a UDT.&#xA;&lt;p>&#xA;This class is used by the driver behind the scenes when the method&#xA;&lt;code>getObject&lt;/code> is called on an SQL structured or distinct type&#xA;that has a custom mapping; a programmer never invokes&#xA;&lt;code>SQLInputImpl&lt;/code> methods directly. They are provided here as a&#xA;convenience for those who write &lt;code>RowSet&lt;/code> implementations.&#xA;&lt;P>&#xA;The &lt;code>SQLInputImpl&lt;/code> class provides a set of&#xA;reader methods analogous to the &lt;code>ResultSet&lt;/code> getter&#xA;methods.  These methods make it possible to read the values in an&#xA;&lt;code>SQLInputImpl&lt;/code> object.&#xA;&lt;P>&#xA;The method &lt;code>wasNull&lt;/code> is used to determine whether the&#xA;the last value read was SQL &lt;code>NULL&lt;/code>.&#xA;&lt;P>When the method &lt;code>getObject&lt;/code> is called with an&#xA;object of a class implementing the interface &lt;code>SQLData&lt;/code>,&#xA;the JDBC driver calls the method &lt;code>SQLData.getSQLType&lt;/code>&#xA;to determine the SQL type of the UDT being custom mapped. The driver&#xA;creates an instance of &lt;code>SQLInputImpl&lt;/code>, populating it with the&#xA;attributes of the UDT.  The driver then passes the input&#xA;stream to the method &lt;code>SQLData.readSQL&lt;/code>, which in turn&#xA;calls the &lt;code>SQLInputImpl&lt;/code> reader methods&#xA;to read the attributes from the input stream.&#xA;@see java.sql.SQLData&#xA;" annotatedElement="4fef7938-1dd1-4692-af01-674b830b6b38"/>
                <interfaceRealization xmi:id="555a3541-bb1e-4a8f-8a48-94deda5f54c7" name="" supplier="5e22bcb8-d64d-461d-82ae-c9b2eb35661c" client="4fef7938-1dd1-4692-af01-674b830b6b38" contract="5e22bcb8-d64d-461d-82ae-c9b2eb35661c"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="03cff9d9-fbdd-4d62-beaf-d63cdafa1d1d" name="SerialBlob" clientDependency="56b377ac-390a-4634-a6fc-f505f13ae767 2a26f970-c851-40af-a9cd-a4fd780da6d4 474bb51a-c0fa-4708-b9ea-3f100d2a984f">
                <ownedComment xmi:id="b9dd3e60-ea72-49f9-83e2-d5fd35573c46" body="A serialized mapping in the Java programming language of an SQL&#xA;&lt;code>BLOB&lt;/code> value.&#xA;&lt;P>&#xA;The &lt;code>SerialBlob&lt;/code> class provides a constructor for creating&#xA;an instance from a &lt;code>Blob&lt;/code> object.  Note that the&#xA;&lt;code>Blob&lt;/code>&#xA;object should have brought the SQL &lt;code>BLOB&lt;/code> value's data over&#xA;to the client before a &lt;code>SerialBlob&lt;/code> object&#xA;is constructed from it.  The data of an SQL &lt;code>BLOB&lt;/code> value can&#xA;be materialized on the client as an array of bytes (using the method&#xA;&lt;code>Blob.getBytes&lt;/code>) or as a stream of uninterpreted bytes&#xA;(using the method &lt;code>Blob.getBinaryStream&lt;/code>).&#xA;&lt;P>&#xA;&lt;code>SerialBlob&lt;/code> methods make it possible to make a copy of a&#xA;&lt;code>SerialBlob&lt;/code> object as an array of bytes or as a stream.&#xA;They also make it possible to locate a given pattern of bytes or a&#xA;&lt;code>Blob&lt;/code> object within a &lt;code>SerialBlob&lt;/code> object&#xA;and to update or truncate a &lt;code>Blob&lt;/code> object.&#xA;&#xA;@author Jonathan Bruce&#xA;" annotatedElement="03cff9d9-fbdd-4d62-beaf-d63cdafa1d1d"/>
                <interfaceRealization xmi:id="56b377ac-390a-4634-a6fc-f505f13ae767" name="" supplier="6c886c35-6a6a-4479-82a3-6f21ee71976a" client="03cff9d9-fbdd-4d62-beaf-d63cdafa1d1d" contract="6c886c35-6a6a-4479-82a3-6f21ee71976a"/>
                <interfaceRealization xmi:id="2a26f970-c851-40af-a9cd-a4fd780da6d4" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="03cff9d9-fbdd-4d62-beaf-d63cdafa1d1d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <interfaceRealization xmi:id="474bb51a-c0fa-4708-b9ea-3f100d2a984f" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="03cff9d9-fbdd-4d62-beaf-d63cdafa1d1d" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f7e0f08a-941b-4ec4-9eb1-c699ad9b79c9" name="SerialJavaObject" clientDependency="06f22b67-1c38-4bbe-8364-4ad16b202186 f70e26c7-5a46-439e-9646-29d52af0259f">
                <ownedComment xmi:id="51b33bac-fe65-4a38-ab2a-988da709a725" body="A serializable mapping in the Java programming language of an SQL&#xA;&lt;code>JAVA_OBJECT&lt;/code> value. Assuming the Java object&#xA;implements the &lt;code>Serializable&lt;/code> interface, this class simply wraps the&#xA;serialization process.&#xA;&lt;P>&#xA;If however, the serialization is not possible because&#xA;the Java object is not immediately serializable, this class will&#xA;attempt to serialize all non-static members to permit the object&#xA;state to be serialized.&#xA;Static or transient fields cannot be serialized; an attempt to serialize&#xA;them will result in a &lt;code>SerialException&lt;/code> object being thrown.&#xA;&#xA;@version 0.1&#xA;@author Jonathan Bruce&#xA;" annotatedElement="f7e0f08a-941b-4ec4-9eb1-c699ad9b79c9"/>
                <interfaceRealization xmi:id="f70e26c7-5a46-439e-9646-29d52af0259f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f7e0f08a-941b-4ec4-9eb1-c699ad9b79c9" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <interfaceRealization xmi:id="06f22b67-1c38-4bbe-8364-4ad16b202186" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="f7e0f08a-941b-4ec4-9eb1-c699ad9b79c9" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              </packagedElement>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="fc88210c-3640-4a82-a781-a11bd7ece7a9" name="ConnectionEventListener" isAbstract="true">
            <ownedComment xmi:id="3c7d68ac-ddfd-4ff0-ad50-6843b623d08e" body="&lt;P>&#xA;An object that registers to be notified of events generated by a&#xA;&lt;code>PooledConnection&lt;/code> object.&#xA;&lt;P>&#xA;The &lt;code>ConnectionEventListener&lt;/code> interface is implemented by a&#xA;connection pooling component.  A connection pooling component will&#xA;usually be provided by a JDBC driver vendor or another system software&#xA;vendor.  A JDBC driver notifies a &lt;code>ConnectionEventListener&lt;/code>&#xA;object when an application is finished using a pooled connection with&#xA;which the listener has registered.  The notification&#xA;occurs after the application calls the method &lt;code>close&lt;/code> on&#xA;its representation of a &lt;code>PooledConnection&lt;/code> object.  A&#xA;&lt;code>ConnectionEventListener&lt;/code> is also notified when a&#xA;connection error occurs due to the fact that the &lt;code>PooledConnection&lt;/code>&#xA;is unfit for future use---the server has crashed, for example.&#xA;The listener is notified by the JDBC driver just before the driver throws an&#xA;&lt;code>SQLException&lt;/code> to the application using the&#xA;&lt;code>PooledConnection&lt;/code> object.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="fc88210c-3640-4a82-a781-a11bd7ece7a9"/>
            <generalization xmi:id="f9efc80a-7dc6-494d-9c2c-831d95fbe2eb" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="66ffe1ba-eae6-454e-8a27-3a9fc40063b0" name="RowSetInternal" isAbstract="true">
            <ownedComment xmi:id="1e201f0d-e7cc-4f0e-96da-6411513871ca" body="The interface that a &lt;code>RowSet&lt;/code> object implements in order to&#xA;present itself to a &lt;code>RowSetReader&lt;/code> or &lt;code>RowSetWriter&lt;/code>&#xA;object. The &lt;code>RowSetInternal&lt;/code> interface contains&#xA;methods that let the reader or writer access and modify the internal&#xA;state of the rowset.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="66ffe1ba-eae6-454e-8a27-3a9fc40063b0"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="dcbc2d6a-0feb-4dd8-8430-8c6cc1d4376b" name="print">
          <packagedElement xmi:type="uml:Interface" xmi:id="960043f9-57bc-4f4b-b5cc-7393a6a5cd3e" name="AttributeException" isAbstract="true">
            <ownedComment xmi:id="9ea0cfe2-cded-49c4-98d8-5b10dc6910e4" body="Interface AttributeException is a mixin interface which a subclass of&#xA;{@link&#xA;PrintException PrintException} can implement to report an error condition&#xA;involving one or more printing attributes that a particular Print&#xA;Service instance does not support. Either the attribute is not supported at&#xA;all, or the attribute is supported but the particular specified value is not&#xA;supported. The Print Service API does not define any print exception&#xA;classes that implement interface AttributeException, that being left to the&#xA;Print Service implementor's discretion.&#xA;&#xA;" annotatedElement="960043f9-57bc-4f4b-b5cc-7393a6a5cd3e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="afdd2ba8-ebd4-4d5d-9506-0d55fabbc279" name="attribute">
            <packagedElement xmi:type="uml:Interface" xmi:id="5910eac1-3227-493f-a36a-23c3e5a7d89a" name="PrintJobAttributeSet" isAbstract="true">
              <ownedComment xmi:id="0e2f6cce-01bf-4ef2-9725-416f7746f3ed" body="Interface PrintJobAttributeSet specifies the interface for a set of print&#xA;job attributes, i.e. printing attributes that implement interface {@link&#xA;PrintJobAttribute PrintJobAttribute}. In the Print Service API, a&#xA;service uses a PrintJobAttributeSet to report the status of a print job.&#xA;&lt;P>&#xA;A PrintJobAttributeSet is just an {@link AttributeSet AttributeSet} whose&#xA;constructors and mutating operations guarantee an additional invariant,&#xA;namely that all attribute values in the PrintJobAttributeSet must be&#xA;instances of interface {@link PrintJobAttribute PrintJobAttribute}.&#xA;The {@link #add(Attribute) &lt;CODE>add(Attribute)&lt;/CODE>}, and&#xA;{@link #addAll(AttributeSet) &lt;CODE>addAll(AttributeSet)&lt;/CODE>} operations&#xA;are respecified below to guarantee this additional invariant.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="5910eac1-3227-493f-a36a-23c3e5a7d89a"/>
              <generalization xmi:id="b840245d-1a65-4aaa-a42a-55e9e6317952" isSubstitutable="true" general="178e9368-a7d5-409a-9275-e6274f53272c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d5dc0f81-7807-4f36-a20a-01c05a1a93bb" name="DocAttributeSet" isAbstract="true">
              <ownedComment xmi:id="4a0bd666-aea1-4dfe-805a-2f7677cd06f9" body="Interface DocAttributeSet specifies the interface for a set of doc&#xA;attributes, i.e. printing attributes that implement interface {@link&#xA;DocAttribute DocAttribute}. In the Print Service API, the client uses a&#xA;DocAttributeSet to specify the characteristics of an individual doc and&#xA;the print job settings to be applied to an individual doc.&#xA;&lt;P>&#xA;A DocAttributeSet is just an {@link AttributeSet AttributeSet} whose&#xA;constructors and mutating operations guarantee an additional invariant,&#xA;namely that all attribute values in the DocAttributeSet must be instances&#xA;of interface {@link DocAttribute DocAttribute}.&#xA;The {@link #add(Attribute) &lt;CODE>add(Attribute)&lt;/CODE>}, and&#xA;{@link #addAll(AttributeSet) &lt;CODE>addAll(AttributeSet)&lt;/CODE>} operations&#xA;are respecified below to guarantee this additional invariant.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="d5dc0f81-7807-4f36-a20a-01c05a1a93bb"/>
              <generalization xmi:id="f532944f-c82c-498e-9ba3-e9cd48114249" isSubstitutable="true" general="178e9368-a7d5-409a-9275-e6274f53272c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4736462f-f159-453e-b201-0a2172ad1aae" name="URISyntax" clientDependency="e4c1b7f0-713d-48c6-b6da-2e3088483011 116e9b02-b736-4483-a399-7ab3ba30ae91" isAbstract="true">
              <ownedComment xmi:id="11969e52-6c0a-4afd-848e-701112b927a3" body="Class URISyntax is an abstract base class providing the common&#xA;implementation of all attributes whose value is a Uniform Resource&#xA;Identifier (URI). Once constructed, a URI attribute's value is immutable.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="4736462f-f159-453e-b201-0a2172ad1aae"/>
              <interfaceRealization xmi:id="116e9b02-b736-4483-a399-7ab3ba30ae91" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4736462f-f159-453e-b201-0a2172ad1aae" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="e4c1b7f0-713d-48c6-b6da-2e3088483011" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="4736462f-f159-453e-b201-0a2172ad1aae" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="0e1939aa-60fe-4d79-9ebc-d405008fd692" name="PrintRequestAttributeSet" isAbstract="true">
              <ownedComment xmi:id="b8902679-f6ad-48d6-8d7a-6740c969466f" body="Interface PrintRequestAttributeSet specifies the interface for a set of&#xA;print request attributes, i.e. printing attributes that implement interface&#xA;{@link PrintRequestAttribute PrintRequestAttribute}.&#xA;The client uses a PrintRequestAttributeSet to specify the settings to be&#xA;applied to a whole print job and to all the docs in the print job.&#xA;&lt;P>&#xA;PrintRequestAttributeSet is just an {@link AttributeSet AttributeSet} whose&#xA;constructors and mutating operations guarantee an additional invariant,&#xA;namely that all attribute values in the PrintRequestAttributeSet must be&#xA;instances of interface {@link PrintRequestAttribute PrintRequestAttribute}.&#xA;The {@link #add(Attribute) &lt;CODE>add(Attribute)&lt;/CODE>}, and&#xA;{@link #addAll(AttributeSet) &lt;CODE>addAll(AttributeSet)&lt;/CODE>} operations&#xA;are respecified below to guarantee this additional invariant.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="0e1939aa-60fe-4d79-9ebc-d405008fd692"/>
              <generalization xmi:id="68cb0e05-9ce0-424d-82af-da4b0c0b79f3" isSubstitutable="true" general="178e9368-a7d5-409a-9275-e6274f53272c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc" name="Attribute" isAbstract="true">
              <ownedComment xmi:id="fca49dab-7a29-40fe-9740-c88d234424fb" body="Interface Attribute is the base interface implemented by any and every&#xA;printing attribute class to indicate that the class represents a&#xA;printing attribute. All printing attributes are serializable.&#xA;&lt;P>&#xA;&#xA;@author  David Mendenhall&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc"/>
              <generalization xmi:id="e96fd48e-80fb-4c52-a329-c16106fad6be" isSubstitutable="true" general="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d281a238-6e1f-44f5-a50e-db9f85d8500a" name="PrintServiceAttribute" isAbstract="true">
              <ownedComment xmi:id="d5977b68-f47b-4c2e-893e-63d2a7c606bb" body="Interface PrintServiceAttribute is a tagging interface which a printing&#xA;attribute class implements to indicate the attribute describes the status&#xA;of a Print Service or some other characteristic of a Print Service. A Print&#xA;Service instance adds a number of PrintServiceAttributes to a Print&#xA;service's attribute set to report the Print Service's status.&#xA;&lt;P>&#xA;&#xA;@see PrintServiceAttributeSet&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="d281a238-6e1f-44f5-a50e-db9f85d8500a"/>
              <generalization xmi:id="244d75cb-8be5-412c-b5cf-dd35f51c2f1e" isSubstitutable="true" general="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f5a85c08-e52e-4334-9549-002cc06b0e1c" name="AttributeSetUtilities" isLeaf="true">
              <ownedComment xmi:id="9f9e76c2-cb62-4e0c-93f6-c3dd349ff24e" body="Class AttributeSetUtilities provides static methods for manipulating&#xA;AttributeSets.&#xA;&lt;ul>&#xA;&lt;li>Methods for creating unmodifiable and synchronized views of attribute&#xA;sets.&#xA;&lt;li>operations useful for building&#xA;implementations of interface {@link AttributeSet AttributeSet}&#xA;&lt;/ul>&#xA;&lt;P>&#xA;An &lt;B>unmodifiable view&lt;/B> &lt;I>U&lt;/I> of an AttributeSet &lt;I>S&lt;/I> provides a&#xA;client with &quot;read-only&quot; access to &lt;I>S&lt;/I>. Query operations on &lt;I>U&lt;/I>&#xA;&quot;read through&quot; to &lt;I>S&lt;/I>; thus, changes in &lt;I>S&lt;/I> are reflected in&#xA;&lt;I>U&lt;/I>. However, any attempt to modify &lt;I>U&lt;/I>,&#xA;results in an UnmodifiableSetException.&#xA;The unmodifiable view object &lt;I>U&lt;/I> will be serializable if the&#xA;attribute set object &lt;I>S&lt;/I> is serializable.&#xA;&lt;P>&#xA;A &lt;B>synchronized view&lt;/B> &lt;I>V&lt;/I> of an attribute set &lt;I>S&lt;/I> provides a&#xA;client with synchronized (multiple thread safe) access to &lt;I>S&lt;/I>. Each&#xA;operation of &lt;I>V&lt;/I> is synchronized using &lt;I>V&lt;/I> itself as the lock&#xA;object and then merely invokes the corresponding operation of &lt;I>S&lt;/I>. In&#xA;order to guarantee mutually exclusive access, it is critical that all&#xA;access to &lt;I>S&lt;/I> is accomplished through &lt;I>V&lt;/I>. The synchronized view&#xA;object &lt;I>V&lt;/I> will be serializable if the attribute set object &lt;I>S&lt;/I>&#xA;is serializable.&#xA;&lt;P>&#xA;As mentioned in the package description of javax.print, a null reference&#xA;parameter to methods is&#xA;incorrect unless explicitly documented on the method as having a meaningful&#xA;interpretation.  Usage to the contrary is incorrect coding and may result in&#xA;a run time exception either immediately&#xA;or at some later time. IllegalArgumentException and NullPointerException&#xA;are examples of typical and acceptable run time exceptions for such cases.&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="f5a85c08-e52e-4334-9549-002cc06b0e1c"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6a102004-751e-4f43-80f2-fef7bde6291f" name="UnmodifiableAttributeSet" visibility="private" clientDependency="80e20fcb-9037-4e01-bb1f-068a5c4d04f0 7b29ea34-cfe7-4e11-8e5e-9f9e1425ca7e">
                <ownedComment xmi:id="d3b700fe-42bc-491b-be6d-dddf8795d568" body="@serial include&#xA;" annotatedElement="6a102004-751e-4f43-80f2-fef7bde6291f"/>
                <interfaceRealization xmi:id="80e20fcb-9037-4e01-bb1f-068a5c4d04f0" name="" supplier="178e9368-a7d5-409a-9275-e6274f53272c" client="6a102004-751e-4f43-80f2-fef7bde6291f" contract="178e9368-a7d5-409a-9275-e6274f53272c"/>
                <interfaceRealization xmi:id="7b29ea34-cfe7-4e11-8e5e-9f9e1425ca7e" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="6a102004-751e-4f43-80f2-fef7bde6291f" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="91aed805-822e-450d-8ce4-7ad671282d79" name="UnmodifiableDocAttributeSet" visibility="private" clientDependency="da72cbca-6866-4922-bbc2-dd8d2167b7c1 a762d28a-5bc7-454d-ad18-c51231062125">
                <ownedComment xmi:id="b00c997c-c6bb-490d-a3b9-44695f36b8ab" body="@serial include&#xA;" annotatedElement="91aed805-822e-450d-8ce4-7ad671282d79"/>
                <generalization xmi:id="9aed635a-2a86-4691-a166-a4512a024abe" isSubstitutable="true" general="6a102004-751e-4f43-80f2-fef7bde6291f"/>
                <interfaceRealization xmi:id="da72cbca-6866-4922-bbc2-dd8d2167b7c1" name="" supplier="d5dc0f81-7807-4f36-a20a-01c05a1a93bb" client="91aed805-822e-450d-8ce4-7ad671282d79" contract="d5dc0f81-7807-4f36-a20a-01c05a1a93bb"/>
                <interfaceRealization xmi:id="a762d28a-5bc7-454d-ad18-c51231062125" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="91aed805-822e-450d-8ce4-7ad671282d79" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="bab6798e-7371-4074-a1dc-bb3df1aee66e" name="UnmodifiablePrintRequestAttributeSet" visibility="private" clientDependency="78eccedd-2767-40da-b04a-adf8f9ceece9 c23596bb-64ca-4a7c-a169-a6846d95dbf9">
                <ownedComment xmi:id="f88659ec-02b5-4d0e-a626-ed053524924d" body="@serial include&#xA;" annotatedElement="bab6798e-7371-4074-a1dc-bb3df1aee66e"/>
                <generalization xmi:id="7e1cc7cd-e394-4341-a057-e73ba4479353" isSubstitutable="true" general="6a102004-751e-4f43-80f2-fef7bde6291f"/>
                <interfaceRealization xmi:id="78eccedd-2767-40da-b04a-adf8f9ceece9" name="" supplier="0e1939aa-60fe-4d79-9ebc-d405008fd692" client="bab6798e-7371-4074-a1dc-bb3df1aee66e" contract="0e1939aa-60fe-4d79-9ebc-d405008fd692"/>
                <interfaceRealization xmi:id="c23596bb-64ca-4a7c-a169-a6846d95dbf9" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="bab6798e-7371-4074-a1dc-bb3df1aee66e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="b6ab90ed-e70e-4358-b130-0076c907f17b" name="UnmodifiablePrintJobAttributeSet" visibility="private" clientDependency="d6f79321-a87c-40a0-ba95-8c07f1deaa22 d46814e5-abc1-4ad3-9e05-91e3f21c8804">
                <ownedComment xmi:id="c5bd25d9-0fb7-45f6-874b-7c9801ce3668" body="@serial include&#xA;" annotatedElement="b6ab90ed-e70e-4358-b130-0076c907f17b"/>
                <generalization xmi:id="83f27b55-6038-4f7b-8df9-835b4dd5cc86" isSubstitutable="true" general="6a102004-751e-4f43-80f2-fef7bde6291f"/>
                <interfaceRealization xmi:id="d6f79321-a87c-40a0-ba95-8c07f1deaa22" name="" supplier="5910eac1-3227-493f-a36a-23c3e5a7d89a" client="b6ab90ed-e70e-4358-b130-0076c907f17b" contract="5910eac1-3227-493f-a36a-23c3e5a7d89a"/>
                <interfaceRealization xmi:id="d46814e5-abc1-4ad3-9e05-91e3f21c8804" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="b6ab90ed-e70e-4358-b130-0076c907f17b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="078e8565-f9d1-4c9b-9ffd-7edbd3f71f1a" name="UnmodifiablePrintServiceAttributeSet" visibility="private" clientDependency="280acdbe-6b5a-49f5-9898-8e732c6f2609 4ed1266e-e2b9-4197-813c-3e07802e0687">
                <ownedComment xmi:id="0becdce5-1961-47c9-9c7e-be65e8da9f84" body="@serial include&#xA;" annotatedElement="078e8565-f9d1-4c9b-9ffd-7edbd3f71f1a"/>
                <generalization xmi:id="515cdeb3-7dac-48c7-8eec-6109e1ada974" isSubstitutable="true" general="6a102004-751e-4f43-80f2-fef7bde6291f"/>
                <interfaceRealization xmi:id="280acdbe-6b5a-49f5-9898-8e732c6f2609" name="" supplier="6d7fa354-9f67-4b45-a957-a34f1d8ec3f5" client="078e8565-f9d1-4c9b-9ffd-7edbd3f71f1a" contract="6d7fa354-9f67-4b45-a957-a34f1d8ec3f5"/>
                <interfaceRealization xmi:id="4ed1266e-e2b9-4197-813c-3e07802e0687" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="078e8565-f9d1-4c9b-9ffd-7edbd3f71f1a" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="58063c3e-5fcb-43df-8104-af807f5158b5" name="SynchronizedAttributeSet" visibility="private" clientDependency="6e416852-aac7-48d3-b6b1-6bd72164ae47 80a2a98d-3d52-49fd-ad58-f6ed80dfd14c">
                <ownedComment xmi:id="fa9c356d-d128-445d-af09-5c97b89c66f0" body="@serial include&#xA;" annotatedElement="58063c3e-5fcb-43df-8104-af807f5158b5"/>
                <interfaceRealization xmi:id="6e416852-aac7-48d3-b6b1-6bd72164ae47" name="" supplier="178e9368-a7d5-409a-9275-e6274f53272c" client="58063c3e-5fcb-43df-8104-af807f5158b5" contract="178e9368-a7d5-409a-9275-e6274f53272c"/>
                <interfaceRealization xmi:id="80a2a98d-3d52-49fd-ad58-f6ed80dfd14c" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="58063c3e-5fcb-43df-8104-af807f5158b5" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="ecf15fef-d866-4623-90df-a84ceea78efe" name="SynchronizedDocAttributeSet" visibility="private" clientDependency="cc891f64-8192-4f8c-becd-28a4a4e41553 fab13db1-9266-42bd-9efb-182e3d07af7e">
                <ownedComment xmi:id="1a8bd9c9-027f-4206-b1dc-aad3a5164ad2" body="@serial include&#xA;" annotatedElement="ecf15fef-d866-4623-90df-a84ceea78efe"/>
                <generalization xmi:id="cb20fec9-86a5-40a3-bd25-e448012645d8" isSubstitutable="true" general="58063c3e-5fcb-43df-8104-af807f5158b5"/>
                <interfaceRealization xmi:id="cc891f64-8192-4f8c-becd-28a4a4e41553" name="" supplier="d5dc0f81-7807-4f36-a20a-01c05a1a93bb" client="ecf15fef-d866-4623-90df-a84ceea78efe" contract="d5dc0f81-7807-4f36-a20a-01c05a1a93bb"/>
                <interfaceRealization xmi:id="fab13db1-9266-42bd-9efb-182e3d07af7e" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ecf15fef-d866-4623-90df-a84ceea78efe" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="c2a3a79a-f9cd-4a37-8673-d5e5bed0887e" name="SynchronizedPrintRequestAttributeSet" visibility="private" clientDependency="1e040c13-e679-4d3b-8758-75de40b834ff 189b9842-388b-4ce8-b2e3-e776ce30171e">
                <ownedComment xmi:id="e8c0d2d3-aaef-47de-a094-d7d33c658c50" body="@serial include&#xA;" annotatedElement="c2a3a79a-f9cd-4a37-8673-d5e5bed0887e"/>
                <generalization xmi:id="d9bfef5e-ec7d-435b-8184-6f427e8e8019" isSubstitutable="true" general="58063c3e-5fcb-43df-8104-af807f5158b5"/>
                <interfaceRealization xmi:id="1e040c13-e679-4d3b-8758-75de40b834ff" name="" supplier="0e1939aa-60fe-4d79-9ebc-d405008fd692" client="c2a3a79a-f9cd-4a37-8673-d5e5bed0887e" contract="0e1939aa-60fe-4d79-9ebc-d405008fd692"/>
                <interfaceRealization xmi:id="189b9842-388b-4ce8-b2e3-e776ce30171e" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="c2a3a79a-f9cd-4a37-8673-d5e5bed0887e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="4b82958a-cd70-4556-9f17-09c743bfa97a" name="SynchronizedPrintJobAttributeSet" visibility="private" clientDependency="3e3017fe-192c-4ddd-add0-b60613ea940f a7ab3157-a8ca-47fc-b198-413d1bd9ba36">
                <ownedComment xmi:id="033d000d-b158-4a26-8446-645e43414cec" body="@serial include&#xA;" annotatedElement="4b82958a-cd70-4556-9f17-09c743bfa97a"/>
                <generalization xmi:id="24dbd569-ff94-4bdd-9fe7-bd78da63458e" isSubstitutable="true" general="58063c3e-5fcb-43df-8104-af807f5158b5"/>
                <interfaceRealization xmi:id="3e3017fe-192c-4ddd-add0-b60613ea940f" name="" supplier="5910eac1-3227-493f-a36a-23c3e5a7d89a" client="4b82958a-cd70-4556-9f17-09c743bfa97a" contract="5910eac1-3227-493f-a36a-23c3e5a7d89a"/>
                <interfaceRealization xmi:id="a7ab3157-a8ca-47fc-b198-413d1bd9ba36" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4b82958a-cd70-4556-9f17-09c743bfa97a" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="90aed7c1-38e7-4248-836b-7d706016871d" name="SynchronizedPrintServiceAttributeSet" visibility="private" clientDependency="de4d9c55-ce12-47cc-be01-68bd9c15c80a f1ae9324-e6ed-4444-9b8d-193cb401e3d3">
                <ownedComment xmi:id="bd9ff4a7-773f-41bc-adac-ef2e0f6de82e" body="@serial include&#xA;" annotatedElement="90aed7c1-38e7-4248-836b-7d706016871d"/>
                <generalization xmi:id="8fc8eb9a-b11a-40ef-b1cd-7874ab8a2c40" isSubstitutable="true" general="58063c3e-5fcb-43df-8104-af807f5158b5"/>
                <interfaceRealization xmi:id="de4d9c55-ce12-47cc-be01-68bd9c15c80a" name="" supplier="6d7fa354-9f67-4b45-a957-a34f1d8ec3f5" client="90aed7c1-38e7-4248-836b-7d706016871d" contract="6d7fa354-9f67-4b45-a957-a34f1d8ec3f5"/>
                <interfaceRealization xmi:id="f1ae9324-e6ed-4444-9b8d-193cb401e3d3" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="90aed7c1-38e7-4248-836b-7d706016871d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="90301351-3c81-4d05-9c9a-bc73e11a6cbb" name="ResolutionSyntax" clientDependency="982dd433-fc07-4c9d-8501-17199641b614 3c3708c1-62cc-4775-a98b-74d69c7f7bd9" isAbstract="true">
              <ownedComment xmi:id="bb680e82-8e3a-4dd5-bdda-633ebf50cdb4" body="Class ResolutionSyntax is an abstract base class providing the common&#xA;implementation of all attributes denoting a printer resolution.&#xA;&lt;P>&#xA;A resolution attribute's value consists of two items, the cross feed&#xA;direction resolution and the feed direction resolution. A resolution&#xA;attribute may be constructed by supplying the two values and indicating the&#xA;units in which the values are measured. Methods are provided to return a&#xA;resolution attribute's values, indicating the units in which the values are&#xA;to be returned. The two most common resolution units are dots per inch (dpi)&#xA;and dots per centimeter (dpcm), and exported constants {@link #DPI&#xA;&lt;CODE>DPI&lt;/CODE>} and {@link #DPCM &lt;CODE>DPCM&lt;/CODE>} are provided for&#xA;indicating those units.&#xA;&lt;P>&#xA;Once constructed, a resolution attribute's value is immutable.&#xA;&lt;P>&#xA;&lt;B>Design&lt;/B>&#xA;&lt;P>&#xA;A resolution attribute's cross feed direction resolution and feed direction&#xA;resolution values are stored internally using units of dots per 100 inches&#xA;(dphi). Storing the values in dphi rather than, say, metric units allows&#xA;precise integer arithmetic conversions between dpi and dphi and between dpcm&#xA;and dphi: 1 dpi = 100 dphi, 1 dpcm = 254 dphi. Thus, the values can be stored&#xA;into and retrieved back from a resolution attribute in either units with no&#xA;loss of precision. This would not be guaranteed if a floating point&#xA;representation were used. However, roundoff error will in general occur if a&#xA;resolution attribute's values are created in one units and retrieved in&#xA;different units; for example, 600 dpi will be rounded to 236 dpcm, whereas&#xA;the true value (to five figures) is 236.22 dpcm.&#xA;&lt;P>&#xA;Storing the values internally in common units of dphi lets two resolution&#xA;attributes be compared without regard to the units in which they were&#xA;created; for example, 300 dpcm will compare equal to 762 dpi, as they both&#xA;are stored as 76200 dphi. In particular, a lookup service can&#xA;match resolution attributes based on equality of their serialized&#xA;representations regardless of the units in which they were created. Again,&#xA;using integers for internal storage allows precise equality comparisons to be&#xA;done, which would not be guaranteed if a floating point representation were&#xA;used.&#xA;&lt;P>&#xA;The exported constant {@link #DPI &lt;CODE>DPI&lt;/CODE>} is actually the&#xA;conversion factor by which to multiply a value in dpi to get the value in&#xA;dphi. Likewise, the exported constant {@link #DPCM &lt;CODE>DPCM&lt;/CODE>} is the&#xA;conversion factor by which to multiply a value in dpcm to get the value in&#xA;dphi. A client can specify a resolution value in units other than dpi or dpcm&#xA;by supplying its own conversion factor. However, since the internal units of&#xA;dphi was chosen with supporting only the external units of dpi and dpcm in&#xA;mind, there is no guarantee that the conversion factor for the client's units&#xA;will be an exact integer. If the conversion factor isn't an exact integer,&#xA;resolution values in the client's units won't be stored precisely.&#xA;&lt;P>&#xA;&#xA;@author  David Mendenhall&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="90301351-3c81-4d05-9c9a-bc73e11a6cbb"/>
              <interfaceRealization xmi:id="3c3708c1-62cc-4775-a98b-74d69c7f7bd9" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="90301351-3c81-4d05-9c9a-bc73e11a6cbb" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="982dd433-fc07-4c9d-8501-17199641b614" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="90301351-3c81-4d05-9c9a-bc73e11a6cbb" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1df31068-1ad7-4172-a75c-4c5254267490" name="HashPrintJobAttributeSet" clientDependency="386be186-98a1-4781-be72-402aff923723 ecc70626-0a05-4a5b-9630-7a2ebbb55e7f">
              <ownedComment xmi:id="f4f77685-a95b-43df-b885-d98dc3b2158d" body="Class HashPrintJobAttributeSet provides an attribute set&#xA;which inherits its implementation from class {@link HashAttributeSet&#xA;HashAttributeSet} and enforces the semantic restrictions of interface&#xA;{@link PrintJobAttributeSet PrintJobAttributeSet}.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="1df31068-1ad7-4172-a75c-4c5254267490"/>
              <generalization xmi:id="b48d094b-2001-497a-8898-2bfa1758c20b" isSubstitutable="true" general="55e98d4f-a0f9-44f2-9449-59a32d1c196d"/>
              <interfaceRealization xmi:id="386be186-98a1-4781-be72-402aff923723" name="" supplier="5910eac1-3227-493f-a36a-23c3e5a7d89a" client="1df31068-1ad7-4172-a75c-4c5254267490" contract="5910eac1-3227-493f-a36a-23c3e5a7d89a"/>
              <interfaceRealization xmi:id="ecc70626-0a05-4a5b-9630-7a2ebbb55e7f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="1df31068-1ad7-4172-a75c-4c5254267490" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="8d539910-38d8-47ff-bf19-0e21d741d2a8" name="PrintJobAttribute" isAbstract="true">
              <ownedComment xmi:id="e2a39b90-b326-4649-b750-e3e0fb4ae6e1" body="PrintJobAttribute is a tagging interface which a printing attribute&#xA;class implements to indicate the attribute describes the status of a Print&#xA;Job or some other characteristic of a Print Job. A Print Service&#xA;instance adds a number of PrintJobAttributes to a Print Job's attribute set&#xA;to report the Print Job's status. If an attribute implements {@link&#xA;PrintRequestAttribute PrintRequestAttribute} as well as PrintJobAttribute,&#xA;the client may include the attribute in a attribute set to&#xA;specify the attribute's value for the Print Job.&#xA;&lt;P>&#xA;&#xA;@see PrintRequestAttributeSet&#xA;@see PrintJobAttributeSet&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              <generalization xmi:id="45cd4600-d42f-4f92-bf82-8408a63c62df" isSubstitutable="true" general="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f259e040-d34e-479f-a1f6-c30ae579e9be" name="SetOfIntegerSyntax" clientDependency="14a0f487-940b-4509-bf20-cd9d235a245f 59a0b72e-3e08-4c6c-9951-337cc597f698" isAbstract="true">
              <ownedComment xmi:id="c011c36c-93af-4138-aa0c-ab8cefc23ee4" body="Class SetOfIntegerSyntax is an abstract base class providing the common&#xA;implementation of all attributes whose value is a set of nonnegative&#xA;integers. This includes attributes whose value is a single range of integers&#xA;and attributes whose value is a set of ranges of integers.&#xA;&lt;P>&#xA;You can construct an instance of SetOfIntegerSyntax by giving it in &quot;string&#xA;form.&quot; The string consists of zero or more comma-separated integer groups.&#xA;Each integer group consists of either one integer, two integers separated by&#xA;a hyphen (&lt;CODE>-&lt;/CODE>), or two integers separated by a colon&#xA;(&lt;CODE>:&lt;/CODE>). Each integer consists of one or more decimal digits&#xA;(&lt;CODE>0&lt;/CODE> through &lt;CODE>9&lt;/CODE>). Whitespace characters cannot&#xA;appear within an integer but are otherwise ignored. For example:&#xA;&lt;CODE>&quot;&quot;&lt;/CODE>, &lt;CODE>&quot;1&quot;&lt;/CODE>, &lt;CODE>&quot;5-10&quot;&lt;/CODE>, &lt;CODE>&quot;1:2,&#xA;4&quot;&lt;/CODE>.&#xA;&lt;P>&#xA;You can also construct an instance of SetOfIntegerSyntax by giving it in&#xA;&quot;array form.&quot; Array form consists of an array of zero or more integer groups&#xA;where each integer group is a length-1 or length-2 array of&#xA;&lt;CODE>int&lt;/CODE>s; for example, &lt;CODE>int[0][]&lt;/CODE>,&#xA;&lt;CODE>int[][]{{1}}&lt;/CODE>, &lt;CODE>int[][]{{5,10}}&lt;/CODE>,&#xA;&lt;CODE>int[][]{{1,2},{4}}&lt;/CODE>.&#xA;&lt;P>&#xA;In both string form and array form, each successive integer group gives a&#xA;range of integers to be included in the set. The first integer in each group&#xA;gives the lower bound of the range; the second integer in each group gives&#xA;the upper bound of the range; if there is only one integer in the group, the&#xA;upper bound is the same as the lower bound. If the upper bound is less than&#xA;the lower bound, it denotes a null range (no values). If the upper bound is&#xA;equal to the lower bound, it denotes a range consisting of a single value. If&#xA;the upper bound is greater than the lower bound, it denotes a range&#xA;consisting of more than one value. The ranges may appear in any order and are&#xA;allowed to overlap. The union of all the ranges gives the set's contents.&#xA;Once a SetOfIntegerSyntax instance is constructed, its value is immutable.&#xA;&lt;P>&#xA;The SetOfIntegerSyntax object's value is actually stored in &quot;&lt;I>canonical&lt;/I>&#xA;array form.&quot; This is the same as array form, except there are no null ranges;&#xA;the members of the set are represented in as few ranges as possible (i.e.,&#xA;overlapping ranges are coalesced); the ranges appear in ascending order; and&#xA;each range is always represented as a length-two array of &lt;CODE>int&lt;/CODE>s&#xA;in the form {lower bound, upper bound}. An empty set is represented as a&#xA;zero-length array.&#xA;&lt;P>&#xA;Class SetOfIntegerSyntax has operations to return the set's members in&#xA;canonical array form, to test whether a given integer is a member of the&#xA;set, and to iterate through the members of the set.&#xA;&lt;P>&#xA;&#xA;@author  David Mendenhall&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="f259e040-d34e-479f-a1f6-c30ae579e9be"/>
              <interfaceRealization xmi:id="14a0f487-940b-4509-bf20-cd9d235a245f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f259e040-d34e-479f-a1f6-c30ae579e9be" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="59a0b72e-3e08-4c6c-9951-337cc597f698" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="f259e040-d34e-479f-a1f6-c30ae579e9be" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="aef0d3b1-120f-4a82-8552-bf9249016b13" name="HashPrintRequestAttributeSet" clientDependency="f58fea91-5062-4589-a46d-d2a84b3800fb d3acb29c-b641-46aa-bcc0-5731465fa359">
              <ownedComment xmi:id="4fa95b9f-d2d3-46e6-8a28-4ad3665de45f" body="Class HashPrintRequestAttributeSet inherits its implementation from&#xA;class {@link HashAttributeSet HashAttributeSet} and enforces the&#xA;semantic restrictions of interface&#xA;{@link PrintRequestAttributeSet PrintRequestAttributeSet}.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="aef0d3b1-120f-4a82-8552-bf9249016b13"/>
              <generalization xmi:id="c912f3c2-5338-4aad-9fc8-82e513137022" isSubstitutable="true" general="55e98d4f-a0f9-44f2-9449-59a32d1c196d"/>
              <interfaceRealization xmi:id="f58fea91-5062-4589-a46d-d2a84b3800fb" name="" supplier="0e1939aa-60fe-4d79-9ebc-d405008fd692" client="aef0d3b1-120f-4a82-8552-bf9249016b13" contract="0e1939aa-60fe-4d79-9ebc-d405008fd692"/>
              <interfaceRealization xmi:id="d3acb29c-b641-46aa-bcc0-5731465fa359" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="aef0d3b1-120f-4a82-8552-bf9249016b13" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9abe0481-3755-438e-a144-c34bcda838a2" name="Size2DSyntax" clientDependency="50f049b9-d9cd-4854-a44a-52c3a9f1f500 b4ac3273-0f51-4715-bb54-ee38dffdf302" isAbstract="true">
              <ownedComment xmi:id="a37f1333-c065-4752-9443-1d2d0d1897ce" body="Class Size2DSyntax is an abstract base class providing the common&#xA;implementation of all attributes denoting a size in two dimensions.&#xA;&lt;P>&#xA;A two-dimensional size attribute's value consists of two items, the X&#xA;dimension and the Y dimension. A two-dimensional size attribute may be&#xA;constructed by supplying the two values and indicating the units in which the&#xA;values are measured. Methods are provided to return a two-dimensional size&#xA;attribute's values, indicating the units in which the values are to be&#xA;returned. The two most common size units are inches (in) and millimeters&#xA;(mm), and exported constants {@link #INCH &lt;CODE>INCH&lt;/CODE>} and {@link #MM&#xA;&lt;CODE>MM&lt;/CODE>} are provided for indicating those units.&#xA;&lt;P>&#xA;Once constructed, a two-dimensional size attribute's value is immutable.&#xA;&lt;P>&#xA;&lt;B>Design&lt;/B>&#xA;&lt;P>&#xA;A two-dimensional size attribute's X and Y dimension values are stored&#xA;internally as integers in units of micrometers (&amp;#181;m), where 1 micrometer&#xA;= 10&lt;SUP>-6&lt;/SUP> meter = 1/1000 millimeter = 1/25400 inch. This permits&#xA;dimensions to be represented exactly to a precision of 1/1000 mm (= 1&#xA;&amp;#181;m) or 1/100 inch (= 254 &amp;#181;m). If fractional inches are expressed in&#xA;negative powers of two, this permits dimensions to be represented exactly to&#xA;a precision of 1/8 inch (= 3175 &amp;#181;m) but not 1/16 inch (because 1/16 inch&#xA;does not equal an integral number of &amp;#181;m).&#xA;&lt;P>&#xA;Storing the dimensions internally in common units of &amp;#181;m lets two size&#xA;attributes be compared without regard to the units in which they were&#xA;created; for example, 8.5 in will compare equal to 215.9 mm, as they both are&#xA;stored as 215900 &amp;#181;m. For example, a lookup service can&#xA;match resolution attributes based on equality of their serialized&#xA;representations regardless of the units in which they were created. Using&#xA;integers for internal storage allows precise equality comparisons to be done,&#xA;which would not be guaranteed if an internal floating point representation&#xA;were used. Note that if you're looking for U.S. letter sized media in metric&#xA;units, you have to search for a media size of 215.9 x 279.4 mm; rounding off&#xA;to an integral 216 x 279 mm will not match.&#xA;&lt;P>&#xA;The exported constant {@link #INCH &lt;CODE>INCH&lt;/CODE>} is actually the&#xA;conversion factor by which to multiply a value in inches to get the value in&#xA;&amp;#181;m. Likewise, the exported constant {@link #MM &lt;CODE>MM&lt;/CODE>} is the&#xA;conversion factor by which to multiply a value in mm to get the value in&#xA;&amp;#181;m. A client can specify a resolution value in units other than inches&#xA;or mm by supplying its own conversion factor. However, since the internal&#xA;units of &amp;#181;m was chosen with supporting only the external units of inch&#xA;and mm in mind, there is no guarantee that the conversion factor for the&#xA;client's units will be an exact integer. If the conversion factor isn't an&#xA;exact integer, resolution values in the client's units won't be stored&#xA;precisely.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="9abe0481-3755-438e-a144-c34bcda838a2"/>
              <interfaceRealization xmi:id="50f049b9-d9cd-4854-a44a-52c3a9f1f500" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="9abe0481-3755-438e-a144-c34bcda838a2" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="b4ac3273-0f51-4715-bb54-ee38dffdf302" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="9abe0481-3755-438e-a144-c34bcda838a2" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="c9b665c6-bcbc-4f69-902d-7d54772daf75" name="SupportedValuesAttribute" isAbstract="true">
              <ownedComment xmi:id="4d5252da-b834-423c-9291-f072971a072c" body="Interface SupportedValuesAttribute is a tagging interface which a printing&#xA;attribute class implements to indicate the attribute describes the supported&#xA;values for another attribute. For example, if a Print Service instance&#xA;supports the {@link javax.print.attribute.standard.Copies Copies}&#xA;attribute, the Print Service instance will have a {@link&#xA;javax.print.attribute.standard.CopiesSupported CopiesSupported} attribute,&#xA;which is a SupportedValuesAttribute giving the legal values a client may&#xA;specify for the {@link javax.print.attribute.standard.Copies Copies}&#xA;attribute.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="c9b665c6-bcbc-4f69-902d-7d54772daf75"/>
              <generalization xmi:id="f0f125cb-e353-44ab-b0de-a2d66eb23530" isSubstitutable="true" general="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="3c1b1456-7781-4c4f-bbbc-e770265ee9dc" name="TextSyntax" clientDependency="d7a96bae-7d3b-4484-8a47-063c9c36a1cc ed0962cd-f940-42c0-994c-77f60946cf08" isAbstract="true">
              <ownedComment xmi:id="b1b49936-50e8-4c1e-8898-e23f123a413b" body="Class TextSyntax is an abstract base class providing the common&#xA;implementation of all attributes whose value is a string. The text attribute&#xA;includes a locale to indicate the natural language. Thus, a text attribute&#xA;always represents a localized string. Once constructed, a text attribute's&#xA;value is immutable.&#xA;&lt;P>&#xA;&#xA;@author  David Mendenhall&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="3c1b1456-7781-4c4f-bbbc-e770265ee9dc"/>
              <interfaceRealization xmi:id="ed0962cd-f940-42c0-994c-77f60946cf08" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="3c1b1456-7781-4c4f-bbbc-e770265ee9dc" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="d7a96bae-7d3b-4484-8a47-063c9c36a1cc" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="3c1b1456-7781-4c4f-bbbc-e770265ee9dc" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b9536239-4a63-43ae-8911-0d209f122530" name="IntegerSyntax" clientDependency="8da9ecde-22ce-4252-8cf3-501f81382026 a3c4d209-78a0-43d1-8799-9729b38675b3" isAbstract="true">
              <ownedComment xmi:id="834bc880-2066-4b3f-8bbb-b2e95862b2ad" body="Class IntegerSyntax is an abstract base class providing the common&#xA;implementation of all attributes with integer values.&#xA;&lt;P>&#xA;Under the hood, an integer attribute is just an integer. You can get an&#xA;integer attribute's integer value by calling {@link #getValue()&#xA;&lt;CODE>getValue()&lt;/CODE>}. An integer attribute's integer value is&#xA;established when it is constructed (see {@link #IntegerSyntax(int)&#xA;&lt;CODE>IntegerSyntax(int)&lt;/CODE>}). Once constructed, an integer attribute's&#xA;value is immutable.&#xA;&lt;P>&#xA;&#xA;@author  David Mendenhall&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="b9536239-4a63-43ae-8911-0d209f122530"/>
              <interfaceRealization xmi:id="8da9ecde-22ce-4252-8cf3-501f81382026" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="b9536239-4a63-43ae-8911-0d209f122530" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="a3c4d209-78a0-43d1-8799-9729b38675b3" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="b9536239-4a63-43ae-8911-0d209f122530" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="531ce670-aab5-482f-bf12-76679fd92c40" name="HashPrintServiceAttributeSet" clientDependency="fb7c6f31-e58f-4bb8-8fc7-5c8c6902819d 2fbd34e1-45d0-44da-a8e7-97b4701239d4">
              <ownedComment xmi:id="1ed5748b-8d83-4d74-b803-55e63076b206" body="Class HashPrintServiceAttributeSet provides an attribute set&#xA;which inherits its implementation from class {@link HashAttributeSet&#xA;HashAttributeSet} and enforces the semantic restrictions of interface&#xA;{@link PrintServiceAttributeSet PrintServiceAttributeSet}.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="531ce670-aab5-482f-bf12-76679fd92c40"/>
              <generalization xmi:id="215a5d22-b31f-4fd3-996e-4baecbfe290c" isSubstitutable="true" general="55e98d4f-a0f9-44f2-9449-59a32d1c196d"/>
              <interfaceRealization xmi:id="fb7c6f31-e58f-4bb8-8fc7-5c8c6902819d" name="" supplier="6d7fa354-9f67-4b45-a957-a34f1d8ec3f5" client="531ce670-aab5-482f-bf12-76679fd92c40" contract="6d7fa354-9f67-4b45-a957-a34f1d8ec3f5"/>
              <interfaceRealization xmi:id="2fbd34e1-45d0-44da-a8e7-97b4701239d4" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="531ce670-aab5-482f-bf12-76679fd92c40" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="bb53d781-f9dc-40de-953e-72e2be17289b" name="DateTimeSyntax" clientDependency="a3d2bbe4-9fc8-4bd9-9a94-f09717be59ad 1a8eae81-6823-44d0-9601-53abf2e1565a" isAbstract="true">
              <ownedComment xmi:id="16a04bad-c9c4-4b35-a4c4-d623809a565b" body="Class DateTimeSyntax is an abstract base class providing the common&#xA;implementation of all attributes whose value is a date and time.&#xA;&lt;P>&#xA;Under the hood, a date-time attribute is stored as a value of class &lt;code>&#xA;java.util.Date&lt;/code>}. You can get a date-time attribute's Date value by&#xA;calling {@link #getValue() &lt;CODE>getValue()&lt;/CODE>}. A date-time attribute's&#xA;Date value is established when it is constructed (see {@link&#xA;#DateTimeSyntax(Date) &lt;CODE>DateTimeSyntax(Date)&lt;/CODE>}). Once&#xA;constructed, a date-time attribute's value is immutable.&#xA;&lt;P>&#xA;To construct a date-time attribute from separate values of the year, month,&#xA;day, hour, minute, and so on, use a &lt;code>java.util.Calendar&lt;/code>&#xA;object to construct a &lt;code>java.util.Date&lt;/code> object, then use the&#xA;&lt;code>java.util.Date&lt;/code >object to construct the date-time attribute.&#xA;To convert&#xA;a date-time attribute to separate values of the year, month, day, hour,&#xA;minute, and so on, create a &lt;code>java.util.Calendar&lt;/code> object and&#xA;set it to the &lt;code>java.util.Date&lt;/code> from the date-time attribute. Class&#xA;DateTimeSyntax stores its value in the form of a &lt;code>java.util.Date&#xA;&lt;/code>&#xA;rather than a &lt;code>java.util.Calendar&lt;/code> because it typically takes&#xA;less memory to store and less time to compare a &lt;code>java.util.Date&lt;/code>&#xA;than a &lt;code>java.util.Calendar&lt;/code>.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="bb53d781-f9dc-40de-953e-72e2be17289b"/>
              <interfaceRealization xmi:id="1a8eae81-6823-44d0-9601-53abf2e1565a" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="bb53d781-f9dc-40de-953e-72e2be17289b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="a3d2bbe4-9fc8-4bd9-9a94-f09717be59ad" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="bb53d781-f9dc-40de-953e-72e2be17289b" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="55e98d4f-a0f9-44f2-9449-59a32d1c196d" name="HashAttributeSet" clientDependency="5f4a42e3-87cb-4192-80fd-cdc9015a3a30 0fb96fe4-281b-49e6-8f34-23aeecb795b9">
              <ownedComment xmi:id="caa9ee4f-03e2-4ec4-96c0-4b77070573d9" body="Class HashAttributeSet provides an &lt;code>AttributeSet&lt;/code>&#xA;implementation with characteristics of a hash map.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="55e98d4f-a0f9-44f2-9449-59a32d1c196d"/>
              <interfaceRealization xmi:id="5f4a42e3-87cb-4192-80fd-cdc9015a3a30" name="" supplier="178e9368-a7d5-409a-9275-e6274f53272c" client="55e98d4f-a0f9-44f2-9449-59a32d1c196d" contract="178e9368-a7d5-409a-9275-e6274f53272c"/>
              <interfaceRealization xmi:id="0fb96fe4-281b-49e6-8f34-23aeecb795b9" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="55e98d4f-a0f9-44f2-9449-59a32d1c196d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="6d7fa354-9f67-4b45-a957-a34f1d8ec3f5" name="PrintServiceAttributeSet" isAbstract="true">
              <ownedComment xmi:id="28db8532-4a56-4351-a53d-59d793fae999" body="Interface PrintServiceAttributeSet specifies the interface for a set of&#xA;print job attributes, i.e. printing attributes that implement interface&#xA;{@link&#xA;PrintServiceAttribute PrintServiceAttribute}. In the Print Service API,&#xA;the Print Service instance uses a PrintServiceAttributeSet to report the&#xA;status of the print service.&#xA;&lt;P>&#xA;A PrintServiceAttributeSet is just an {@link AttributeSet AttributeSet}&#xA;whose constructors and mutating operations guarantee an additional&#xA;invariant,&#xA;namely that all attribute values in the PrintServiceAttributeSet must be&#xA;instances of interface {@link PrintServiceAttribute PrintServiceAttribute}.&#xA;The {@link #add(Attribute) &lt;CODE>add(Attribute)&lt;/CODE>}, and&#xA;{@link #addAll(AttributeSet) &lt;CODE>addAll(AttributeSet)&lt;/CODE>} operations&#xA;are respecified below to guarantee this additional invariant.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="6d7fa354-9f67-4b45-a957-a34f1d8ec3f5"/>
              <generalization xmi:id="a655f8dc-93b3-4631-8a4d-04196f42a338" isSubstitutable="true" general="178e9368-a7d5-409a-9275-e6274f53272c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="178e9368-a7d5-409a-9275-e6274f53272c" name="AttributeSet" isAbstract="true">
              <ownedComment xmi:id="7f4b4dbd-68d3-4630-9d3d-0acb49117697" body="Interface AttributeSet specifies the interface for a set of printing&#xA;attributes. A printing attribute is an object whose class implements&#xA;interface {@link Attribute Attribute}.&#xA;&lt;P>&#xA;An attribute set contains a group of &lt;I>attribute values,&lt;/I>&#xA;where duplicate values are not allowed in the set.&#xA;Furthermore, each value in an attribute set is&#xA;a member of some &lt;I>category,&lt;/I> and at most one value in any particular&#xA;category is allowed in the set. For an attribute set, the values are {@link&#xA;Attribute Attribute} objects, and the categories are {@link java.lang.Class&#xA;Class} objects. An attribute's category is the class (or interface) at the&#xA;root of the class hierarchy for that kind of attribute. Note that an&#xA;attribute object's category may be a superclass of the attribute object's&#xA;class rather than the attribute object's class itself. An attribute&#xA;object's&#xA;category is determined by calling the {@link Attribute#getCategory()&#xA;&lt;CODE>getCategory()&lt;/CODE>} method defined in interface {@link Attribute&#xA;Attribute}.&#xA;&lt;P>&#xA;The interfaces of an AttributeSet resemble those of the Java Collections&#xA;API's java.util.Map interface, but is more restrictive in the types&#xA;it will accept, and combines keys and values into an Attribute.&#xA;&lt;P>&#xA;Attribute sets are used in several places in the Print Service API. In&#xA;each context, only certain kinds of attributes are allowed to appear in the&#xA;attribute set, as determined by the tagging interfaces which the attribute&#xA;class implements -- {@link DocAttribute DocAttribute}, {@link&#xA;PrintRequestAttribute PrintRequestAttribute}, {@link PrintJobAttribute&#xA;PrintJobAttribute}, and {@link PrintServiceAttribute&#xA;PrintServiceAttribute}.&#xA;There are four specializations of an attribute set that are restricted to&#xA;contain just one of the four kinds of attribute -- {@link DocAttributeSet&#xA;DocAttributeSet}, {@link PrintRequestAttributeSet&#xA;PrintRequestAttributeSet},&#xA;{@link PrintJobAttributeSet PrintJobAttributeSet}, and {@link&#xA;PrintServiceAttributeSet PrintServiceAttributeSet}, respectively. Note that&#xA;many attribute classes implement more than one tagging interface and so may&#xA;appear in more than one context.&#xA;&lt;UL>&#xA;&lt;LI>&#xA;A {@link DocAttributeSet DocAttributeSet}, containing {@link DocAttribute&#xA;DocAttribute}s, specifies the characteristics of an individual doc and the&#xA;print job settings to be applied to an individual doc.&#xA;&lt;P>&#xA;&lt;LI>&#xA;A {@link PrintRequestAttributeSet PrintRequestAttributeSet}, containing&#xA;{@link PrintRequestAttribute PrintRequestAttribute}s, specifies the&#xA;settings&#xA;to be applied to a whole print job and to all the docs in the print job.&#xA;&lt;P>&#xA;&lt;LI>&#xA;A {@link PrintJobAttributeSet PrintJobAttributeSet}, containing {@link&#xA;PrintJobAttribute PrintJobAttribute}s, reports the status of a print job.&#xA;&lt;P>&#xA;&lt;LI>&#xA;A {@link PrintServiceAttributeSet PrintServiceAttributeSet}, containing&#xA;{@link PrintServiceAttribute PrintServiceAttribute}s, reports the status of&#xA;a Print Service instance.&#xA;&lt;/UL>&#xA;&lt;P>&#xA;In some contexts, the client is only allowed to examine an attribute set's&#xA;contents but not change them (the set is read-only). In other places, the&#xA;client is allowed both to examine and to change an attribute set's contents&#xA;(the set is read-write). For a read-only attribute set, calling a mutating&#xA;operation throws an UnmodifiableSetException.&#xA;&lt;P>&#xA;The Print Service API provides one implementation of interface&#xA;AttributeSet, class {@link HashAttributeSet HashAttributeSet}.&#xA;A client can use class {@link&#xA;HashAttributeSet HashAttributeSet} or provide its own implementation of&#xA;interface AttributeSet. The Print Service API also provides&#xA;implementations of interface AttributeSet's subinterfaces -- classes {@link&#xA;HashDocAttributeSet HashDocAttributeSet},&#xA;{@link HashPrintRequestAttributeSet&#xA;HashPrintRequestAttributeSet}, {@link HashPrintJobAttributeSet&#xA;HashPrintJobAttributeSet}, and {@link HashPrintServiceAttributeSet&#xA;HashPrintServiceAttributeSet}.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="178e9368-a7d5-409a-9275-e6274f53272c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d503a871-39df-47b0-a4af-635b1932e97c" name="DocAttribute" isAbstract="true">
              <ownedComment xmi:id="64515cc3-beaa-4914-a84c-9c0c4c8ff5ed" body="Interface DocAttribute is a tagging interface which a printing attribute&#xA;class implements to indicate the attribute denotes a setting for a doc.&#xA;(&quot;Doc&quot; is a short, easy-to-pronounce term that means &quot;a piece of print&#xA;data.&quot;) The client may include a DocAttribute in a &lt;code>Doc&lt;/code>'s&#xA;attribute set to specify a characteristic of&#xA;that doc. If an attribute implements {@link PrintRequestAttribute&#xA;PrintRequestAttribute} as well as DocAttribute, the client may include the&#xA;attribute in a attribute set which specifies a print job&#xA;to specify a characteristic for all the docs in that job.&#xA;&lt;P>&#xA;&#xA;@see DocAttributeSet&#xA;@see PrintRequestAttributeSet&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="d503a871-39df-47b0-a4af-635b1932e97c"/>
              <generalization xmi:id="d1da04aa-1cad-4f2c-b4c6-3d8e510c1480" isSubstitutable="true" general="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a" name="EnumSyntax" clientDependency="4f85e2c1-0e16-4e92-80cb-cd91ece71947 d44f78e7-e1ee-4ad9-8db4-5badb5383880" isAbstract="true">
              <ownedComment xmi:id="8902575f-c5e8-4526-adc8-e720b49ff015" body="Class EnumSyntax is an abstract base class providing the common&#xA;implementation of all &quot;type safe enumeration&quot; objects. An enumeration class&#xA;(which extends class EnumSyntax) provides a group of enumeration values&#xA;(objects) that are singleton instances of the enumeration class; for example:&#xA;&lt;PRE>&#xA;public class Bach extends EnumSyntax {&#xA;public static final Bach JOHANN_SEBASTIAN     = new Bach(0);&#xA;public static final Bach WILHELM_FRIEDEMANN   = new Bach(1);&#xA;public static final Bach CARL_PHILIP_EMMANUEL = new Bach(2);&#xA;public static final Bach JOHANN_CHRISTIAN     = new Bach(3);&#xA;public static final Bach P_D_Q                = new Bach(4);&#xA;&#xA;private static final String[] stringTable = {&#xA;&quot;Johann Sebastian Bach&quot;,&#xA;&quot;Wilhelm Friedemann Bach&quot;,&#xA;&quot;Carl Philip Emmanuel Bach&quot;,&#xA;&quot;Johann Christian Bach&quot;,&#xA;&quot;P.D.Q. Bach&quot;&#xA;};&#xA;&#xA;protected String[] getStringTable() {&#xA;return stringTable;&#xA;}&#xA;&#xA;private static final Bach[] enumValueTable = {&#xA;JOHANN_SEBASTIAN,&#xA;WILHELM_FRIEDEMANN,&#xA;CARL_PHILIP_EMMANUEL,&#xA;JOHANN_CHRISTIAN,&#xA;P_D_Q&#xA;};&#xA;&#xA;protected EnumSyntax[] getEnumValueTable() {&#xA;return enumValueTable;&#xA;}&#xA;}&#xA;&lt;/PRE>&#xA;You can then write code that uses the &lt;CODE>==&lt;/CODE> and &lt;CODE>!=&lt;/CODE>&#xA;operators to test enumeration values; for example:&#xA;&lt;PRE>&#xA;Bach theComposer;&#xA;. . .&#xA;if (theComposer == Bach.JOHANN_SEBASTIAN) {&#xA;System.out.println (&quot;The greatest composer of all time!&quot;);&#xA;}&#xA;&lt;/PRE>&#xA;The &lt;CODE>equals()&lt;/CODE> method for an enumeration class just does a test&#xA;for identical objects (&lt;CODE>==&lt;/CODE>).&#xA;&lt;P>&#xA;You can convert an enumeration value to a string by calling {@link&#xA;#toString() &lt;CODE>toString()&lt;/CODE>}. The string is obtained from a table&#xA;supplied by the enumeration class.&#xA;&lt;P>&#xA;Under the hood, an enumeration value is just an integer, a different integer&#xA;for each enumeration value within an enumeration class. You can get an&#xA;enumeration value's integer value by calling {@link #getValue()&#xA;&lt;CODE>getValue()&lt;/CODE>}. An enumeration value's integer value is established&#xA;when it is constructed (see {@link #EnumSyntax(int)&#xA;&lt;CODE>EnumSyntax(int)&lt;/CODE>}). Since the constructor is protected, the only&#xA;possible enumeration values are the singleton objects declared in the&#xA;enumeration class; additional enumeration values cannot be created at run&#xA;time.&#xA;&lt;P>&#xA;You can define a subclass of an enumeration class that extends it with&#xA;additional enumeration values. The subclass's enumeration values' integer&#xA;values need not be distinct from the superclass's enumeration values' integer&#xA;values; the &lt;CODE>==&lt;/CODE>, &lt;CODE>!=&lt;/CODE>, &lt;CODE>equals()&lt;/CODE>, and&#xA;&lt;CODE>toString()&lt;/CODE> methods will still work properly even if the subclass&#xA;uses some of the same integer values as the superclass. However, the&#xA;application in which the enumeration class and subclass are used may need to&#xA;have distinct integer values in the superclass and subclass.&#xA;&lt;P>&#xA;&#xA;@author  David Mendenhall&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
              <interfaceRealization xmi:id="d44f78e7-e1ee-4ad9-8db4-5badb5383880" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="4f85e2c1-0e16-4e92-80cb-cd91ece71947" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="aac58395-9770-4b46-b08c-5a5c637ba66e" name="standard">
              <packagedElement xmi:type="uml:Class" xmi:id="f2f8b6fa-619e-4b42-8315-0b4f4d37e76f" name="JobImpressionsCompleted" clientDependency="4f2cb8c3-94a3-44ab-8753-ab5dc6f1b2ea" isLeaf="true">
                <ownedComment xmi:id="e711e16f-5282-4303-b0b4-6cdced87d110" body="Class JobImpressionsCompleted is an integer valued printing attribute class&#xA;that specifies the number of impressions completed for the job so far. For&#xA;printing devices, the impressions completed includes interpreting, marking,&#xA;and stacking the output.&#xA;&lt;P>&#xA;The JobImpressionsCompleted attribute describes the progress of the job. This&#xA;attribute is intended to be a counter. That is, the JobImpressionsCompleted&#xA;value for a job that has not started processing must be 0. When the job's&#xA;{@link JobState JobState} is PROCESSING or PROCESSING_STOPPED, the&#xA;JobImpressionsCompleted value is intended to increase as the job is&#xA;processed; it indicates the amount of the job that has been processed at the&#xA;time the Print Job's attribute set is queried or at the time a print job&#xA;event is reported. When the job enters the COMPLETED, CANCELED, or ABORTED&#xA;states, the JobImpressionsCompleted value is the final value for the job.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The integer value gives the IPP integer value. The&#xA;category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP attribute&#xA;name.&#xA;&lt;P>&#xA;&#xA;@see JobImpressions&#xA;@see JobImpressionsSupported&#xA;@see JobKOctetsProcessed&#xA;@see JobMediaSheetsCompleted&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="f2f8b6fa-619e-4b42-8315-0b4f4d37e76f"/>
                <generalization xmi:id="7463ff3b-4fcf-4382-a76e-87205a751a64" isSubstitutable="true" general="b9536239-4a63-43ae-8911-0d209f122530"/>
                <interfaceRealization xmi:id="4f2cb8c3-94a3-44ab-8753-ab5dc6f1b2ea" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="f2f8b6fa-619e-4b42-8315-0b4f4d37e76f" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="2e1c9826-4b1c-4b12-9b5a-5d8c4a5dbdf1" name="JobMessageFromOperator" clientDependency="8c908252-c6f0-437c-b858-05fa2fe73e60" isLeaf="true">
                <ownedComment xmi:id="ea43d153-522d-4f85-aa79-3a6ab1926b71" body="Class JobMessageFromOperator is a printing attribute class, a text attribute,&#xA;that provides a message from an operator, system administrator, or&#xA;&quot;intelligent&quot; process to indicate to the end user the reasons for&#xA;modification or other management action taken on a job.&#xA;&lt;P>&#xA;A Print Job's attribute set includes zero instances or one instance of a&#xA;JobMessageFromOperator attribute, not more than one instance. A new&#xA;JobMessageFromOperator attribute replaces an existing JobMessageFromOperator&#xA;attribute, if any. In other words, JobMessageFromOperator is not intended to&#xA;be a history log. If it wishes, the client can detect changes to a Print&#xA;Job's JobMessageFromOperator attribute and maintain the client's own history&#xA;log of the JobMessageFromOperator attribute values.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The string value gives the IPP name value. The&#xA;locale gives the IPP natural language. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="2e1c9826-4b1c-4b12-9b5a-5d8c4a5dbdf1"/>
                <generalization xmi:id="2493a3fc-413a-4424-afa0-32427521d7f7" isSubstitutable="true" general="3c1b1456-7781-4c4f-bbbc-e770265ee9dc"/>
                <interfaceRealization xmi:id="8c908252-c6f0-437c-b858-05fa2fe73e60" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="2e1c9826-4b1c-4b12-9b5a-5d8c4a5dbdf1" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="9ce65c4b-a65d-4327-9ef8-254f78d1b556" name="JobMediaSheetsSupported" clientDependency="1f42a5f8-91e4-4b9e-9208-1c6f4b6c6a6d" isLeaf="true">
                <ownedComment xmi:id="00b70dfd-756e-431e-b0c8-6d9cc9ef5968" body="Class JobMediaSheetsSupported is a printing attribute class, a set of&#xA;integers, that gives the supported values for a {@link JobMediaSheets&#xA;JobMediaSheets} attribute. It is restricted to a single contiguous range of&#xA;integers; multiple non-overlapping ranges are not allowed. This gives the&#xA;lower and upper bounds of the total sizes of print jobs in number of media&#xA;sheets that the printer will accept.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The JobMediaSheetsSupported attribute's canonical&#xA;array form gives the lower and upper bound for the range of values to be&#xA;included in an IPP &quot;job-media-sheets-supported&quot; attribute. See class {@link&#xA;javax.print.attribute.SetOfIntegerSyntax SetOfIntegerSyntax} for an&#xA;explanation of canonical array form. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="9ce65c4b-a65d-4327-9ef8-254f78d1b556"/>
                <generalization xmi:id="05c2ab21-cf8a-4c8c-a895-742dfd450a4f" isSubstitutable="true" general="f259e040-d34e-479f-a1f6-c30ae579e9be"/>
                <interfaceRealization xmi:id="1f42a5f8-91e4-4b9e-9208-1c6f4b6c6a6d" name="" supplier="c9b665c6-bcbc-4f69-902d-7d54772daf75" client="9ce65c4b-a65d-4327-9ef8-254f78d1b556" contract="c9b665c6-bcbc-4f69-902d-7d54772daf75"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="a9185816-0b12-420d-8d1a-d37f73db1365" name="Severity" clientDependency="85d8bbbd-9c31-4e4a-85f3-b11678cc411b" isLeaf="true">
                <ownedComment xmi:id="0bef6cc7-565f-4f1b-a26e-6ef93fa8306e" body="Class Severity is a printing attribute class, an enumeration, that denotes&#xA;the severity of a {@link PrinterStateReason PrinterStateReason} attribute.&#xA;&lt;P>&#xA;Instances of Severity do not appear in a Print Service's attribute set&#xA;directly. Rather, a {@link PrinterStateReasons PrinterStateReasons}&#xA;attribute appears in the Print Service's attribute set.&#xA;The {@link PrinterStateReasons&#xA;PrinterStateReasons} attribute contains zero, one, or more than one {@link&#xA;PrinterStateReason PrinterStateReason} objects which pertain to the Print&#xA;Service's status, and each {@link PrinterStateReason PrinterStateReason}&#xA;object is associated with a Severity level of REPORT (least severe),&#xA;WARNING, or ERROR (most severe).&#xA;The printer adds a {@link PrinterStateReason&#xA;PrinterStateReason} object to the Print Service's&#xA;{@link PrinterStateReasons PrinterStateReasons} attribute when the&#xA;corresponding condition becomes true&#xA;of the printer, and the printer removes the {@link PrinterStateReason&#xA;PrinterStateReason} object again when the corresponding condition becomes&#xA;false, regardless of whether the Print Service's overall&#xA;{@link PrinterState PrinterState} also changed.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B>&#xA;&lt;code>Severity.toString()&lt;/code> returns either &quot;error&quot;, &quot;warning&quot;, or&#xA;&quot;report&quot;.  The string values returned by&#xA;each individual {@link PrinterStateReason} and&#xA;associated {@link Severity} object's &lt;CODE>toString()&lt;/CODE>&#xA;methods, concatenated together with a hyphen (&lt;CODE>&quot;-&quot;&lt;/CODE>) in&#xA;between, gives the IPP keyword value for a {@link PrinterStateReasons}.&#xA;The category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP&#xA;attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="a9185816-0b12-420d-8d1a-d37f73db1365"/>
                <generalization xmi:id="58c287dd-eddd-478a-b3d0-0111804c9cf9" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="85d8bbbd-9c31-4e4a-85f3-b11678cc411b" name="" supplier="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc" client="a9185816-0b12-420d-8d1a-d37f73db1365" contract="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="c92aa8fa-f3f8-4fb4-bc11-76b2864d327b" name="JobKOctetsSupported" clientDependency="7143fbab-34ad-4a00-aac8-445c27fe4b0c" isLeaf="true">
                <ownedComment xmi:id="1fab6eb0-24b7-426e-b5d8-4a3c9ee35199" body="Class JobKOctetsSupported is a printing attribute class, a set of integers,&#xA;that gives the supported values for a {@link JobKOctets JobKOctets}&#xA;attribute. It is restricted to a single contiguous range of integers;&#xA;multiple non-overlapping ranges are not allowed. This gives the lower and&#xA;upper bounds of the total sizes of print jobs in units of K octets (1024&#xA;octets) that the printer will accept.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The JobKOctetsSupported attribute's canonical array&#xA;form gives the lower and upper bound for the range of values to be included&#xA;in an IPP &quot;job-k-octets-supported&quot; attribute. See class {@link&#xA;javax.print.attribute.SetOfIntegerSyntax SetOfIntegerSyntax} for an&#xA;explanation of canonical array form. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="c92aa8fa-f3f8-4fb4-bc11-76b2864d327b"/>
                <generalization xmi:id="b91783aa-d289-459c-acf7-27b2957e5f79" isSubstitutable="true" general="f259e040-d34e-479f-a1f6-c30ae579e9be"/>
                <interfaceRealization xmi:id="7143fbab-34ad-4a00-aac8-445c27fe4b0c" name="" supplier="c9b665c6-bcbc-4f69-902d-7d54772daf75" client="c92aa8fa-f3f8-4fb4-bc11-76b2864d327b" contract="c9b665c6-bcbc-4f69-902d-7d54772daf75"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="643e2cb7-00c3-41be-80fb-c76fd84a8c39" name="ReferenceUriSchemesSupported" clientDependency="9e4150f0-33f9-4c78-9d42-d9a236a88963">
                <ownedComment xmi:id="5b78e59b-959e-4757-8121-ee39a112cf3f" body="Class ReferenceUriSchemesSupported is a printing attribute class&#xA;an enumeration, that indicates a &quot;URI scheme,&quot; such as &quot;http:&quot; or &quot;ftp:&quot;,&#xA;that a printer can use to retrieve print data stored at a URI location.&#xA;If a printer supports doc flavors with a print data representation class of&#xA;&lt;CODE>&quot;java.net.URL&quot;&lt;/CODE>, the printer uses instances of class&#xA;ReferenceUriSchemesSupported to advertise the URI schemes it can accept.&#xA;The acceptable URI schemes are included as service attributes in the&#xA;lookup service; this lets clients search the&#xA;for printers that can get print data using a certain URI scheme. The&#xA;acceptable URI schemes can also be queried using the capability methods in&#xA;interface &lt;code>PrintService&lt;/code>. However,&#xA;ReferenceUriSchemesSupported attributes are used solely for determining&#xA;acceptable URI schemes, they are never included in a doc's,&#xA;print request's, print job's, or print service's attribute set.&#xA;&lt;P>&#xA;The Internet Assigned Numbers Authority maintains the&#xA;&lt;A HREF=&quot;http://www.isi.edu/in-notes/iana/assignments/url-schemes&quot;>official&#xA;list of URI schemes&lt;/A>.&#xA;&lt;p>&#xA;Class ReferenceUriSchemesSupported defines enumeration values for widely&#xA;used URI schemes. A printer that supports additional URI schemes&#xA;can define them in a subclass of class ReferenceUriSchemesSupported.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B>  The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> is the IPP attribute name.  The enumeration's&#xA;integer value is the IPP enum value.  The &lt;code>toString()&lt;/code> method&#xA;returns the IPP string representation of the attribute value.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="643e2cb7-00c3-41be-80fb-c76fd84a8c39"/>
                <generalization xmi:id="f5910d92-71c3-4057-94df-103b2ddac876" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="9e4150f0-33f9-4c78-9d42-d9a236a88963" name="" supplier="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc" client="643e2cb7-00c3-41be-80fb-c76fd84a8c39" contract="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="ce692c2d-6b8a-43f5-9fa6-66f85551a4db" name="OrientationRequested" clientDependency="cf45ec4c-a4f5-4acc-88ec-ba2378308fe9 f7d41d77-3895-4fde-80a3-44676bdf02b0 8b34734e-cdd9-4e71-b385-43bc0767e966" isLeaf="true">
                <ownedComment xmi:id="24181861-5ab1-450f-a577-97dafe4dbda4" body="Class OrientationRequested is a printing attribute class, an enumeration,&#xA;that indicates the desired orientation for printed print-stream pages; it&#xA;does not describe the orientation of the client-supplied print-stream&#xA;pages.&#xA;&lt;P>&#xA;For some document formats (such as &lt;CODE>&quot;application/postscript&quot;&lt;/CODE>),&#xA;the desired orientation of the print-stream pages is specified within the&#xA;document data. This information is generated by a device driver prior to&#xA;the submission of the print job. Other document formats (such as&#xA;&lt;CODE>&quot;text/plain&quot;&lt;/CODE>) do not include the notion of desired orientation&#xA;within the document data. In the latter case it is possible for the printer&#xA;to bind the desired orientation to the document data after it has been&#xA;submitted. It is expected that a printer would only support the&#xA;OrientationRequested attribute for some document formats (e.g.,&#xA;&lt;CODE>&quot;text/plain&quot;&lt;/CODE> or &lt;CODE>&quot;text/html&quot;&lt;/CODE>) but not others (e.g.&#xA;&lt;CODE>&quot;application/postscript&quot;&lt;/CODE>). This is no different from any other&#xA;job template attribute, since a print job can always impose constraints&#xA;among the values of different job template attributes.&#xA;However, a special mention&#xA;is made here since it is very likely that a printer will support the&#xA;OrientationRequested attribute for only a subset of the supported document&#xA;formats.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> is the IPP attribute name.  The enumeration's&#xA;integer value is the IPP enum value.  The &lt;code>toString()&lt;/code> method&#xA;returns the IPP string representation of the attribute value.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="ce692c2d-6b8a-43f5-9fa6-66f85551a4db"/>
                <generalization xmi:id="b8a63dbd-5525-487d-941a-7cd9a62208a6" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="f7d41d77-3895-4fde-80a3-44676bdf02b0" name="" supplier="d503a871-39df-47b0-a4af-635b1932e97c" client="ce692c2d-6b8a-43f5-9fa6-66f85551a4db" contract="d503a871-39df-47b0-a4af-635b1932e97c"/>
                <interfaceRealization xmi:id="8b34734e-cdd9-4e71-b385-43bc0767e966" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="ce692c2d-6b8a-43f5-9fa6-66f85551a4db" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="cf45ec4c-a4f5-4acc-88ec-ba2378308fe9" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="ce692c2d-6b8a-43f5-9fa6-66f85551a4db" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="278b8534-b3d6-4dc9-ab4b-88ae6d153c38" name="Copies" clientDependency="cbb928d4-6e9c-48ec-8b46-1d54d75687ec 4505b8b4-5d4d-4f88-b5ff-31072b14d9b7" isLeaf="true">
                <ownedComment xmi:id="e787ad20-de1e-4a9c-bfa5-010c36cc27eb" body="Class Copies is an integer valued printing attribute class that specifies the&#xA;number of copies to be printed.&#xA;&lt;P>&#xA;On many devices the supported number of collated copies will be limited by&#xA;the number of physical output bins on the device, and may be different from&#xA;the number of uncollated copies which can be supported.&#xA;&lt;P>&#xA;The effect of a Copies attribute with a value of &lt;I>n&lt;/I> on a multidoc print&#xA;job (a job with multiple documents) depends on the (perhaps defaulted) value&#xA;of the {@link MultipleDocumentHandling MultipleDocumentHandling} attribute:&#xA;&lt;UL>&#xA;&lt;LI>&#xA;SINGLE_DOCUMENT -- The result will be &lt;I>n&lt;/I> copies of a single output&#xA;document comprising all the input docs.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SINGLE_DOCUMENT_NEW_SHEET -- The result will be &lt;I>n&lt;/I> copies of a single&#xA;output document comprising all the input docs, and the first impression of&#xA;each input doc will always start on a new media sheet.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- The result will be &lt;I>n&lt;/I> copies of&#xA;the first input document, followed by &lt;I>n&lt;/I> copies of the second input&#xA;document, . . . followed by &lt;I>n&lt;/I> copies of the last input document.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SEPARATE_DOCUMENTS_COLLATED_COPIES -- The result will be the first input&#xA;document, the second input document, . . . the last input document, the group&#xA;of documents being repeated &lt;I>n&lt;/I> times.&#xA;&lt;/UL>&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The integer value gives the IPP integer value. The&#xA;category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP attribute&#xA;name.&#xA;&lt;P>&#xA;&#xA;@author  David Mendenhall&#xA;@author  Alan Kamihensky&#xA;" annotatedElement="278b8534-b3d6-4dc9-ab4b-88ae6d153c38"/>
                <generalization xmi:id="8c9d213a-043c-4ead-9433-a10e36482537" isSubstitutable="true" general="b9536239-4a63-43ae-8911-0d209f122530"/>
                <interfaceRealization xmi:id="cbb928d4-6e9c-48ec-8b46-1d54d75687ec" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="278b8534-b3d6-4dc9-ab4b-88ae6d153c38" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="4505b8b4-5d4d-4f88-b5ff-31072b14d9b7" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="278b8534-b3d6-4dc9-ab4b-88ae6d153c38" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="af9406da-8857-4dd6-9dbd-f23456344c75" name="JobPrioritySupported" clientDependency="e84b28fc-6bec-40c2-aca1-68e3a6f21010" isLeaf="true">
                <ownedComment xmi:id="26165264-e63e-4643-9cd3-a267e16ebaf0" body="Class JobPrioritySupported is an integer valued printing attribute class&#xA;that specifies whether a Print Service instance supports the {@link&#xA;JobPriority JobPriority} attribute and the number of different job priority&#xA;levels supported.&#xA;&lt;P>&#xA;The client can always specify any {@link JobPriority JobPriority} value&#xA;from 1 to 100 for a job. However, the Print Service instance may support&#xA;fewer than 100 different job priority levels. If this is the case, the&#xA;Print Service instance automatically maps the client-specified job priority&#xA;value to one of the supported job priority levels, dividing the 100 job&#xA;priority values equally among the available job priority levels.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The integer value gives the IPP integer value.&#xA;The category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP&#xA;attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="af9406da-8857-4dd6-9dbd-f23456344c75"/>
                <generalization xmi:id="7921792b-e79e-46f6-8299-eb737d9ede28" isSubstitutable="true" general="b9536239-4a63-43ae-8911-0d209f122530"/>
                <interfaceRealization xmi:id="e84b28fc-6bec-40c2-aca1-68e3a6f21010" name="" supplier="c9b665c6-bcbc-4f69-902d-7d54772daf75" client="af9406da-8857-4dd6-9dbd-f23456344c75" contract="c9b665c6-bcbc-4f69-902d-7d54772daf75"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="7e5f2d56-6a1c-46a6-b031-ec59ea4c719f" name="AbstractSet&lt;PrinterStateReason>">
                <templateBinding xmi:id="9e7ab090-0558-4612-949a-f37815c2a4fe" signature="77607dee-756d-445e-96f4-9b3b4e6fb80b">
                  <parameterSubstitution xmi:id="34f8694f-14d4-49a2-b190-c8c6d2abac19" formal="1c9b3942-53c2-4539-853b-a9aae2736fa2" actual="b8eb899c-1192-4735-a536-1a24aab7a3da"/>
                </templateBinding>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="64ed6b07-5c63-45e6-80f9-bb9f7e600df3" name="DocumentName" clientDependency="0b68e470-d4a7-43c2-95ea-e35bfaa07612" isLeaf="true">
                <ownedComment xmi:id="767e995b-386f-4edf-9121-84c560ae43e7" body="Class DocumentName is a printing attribute class, a text attribute, that&#xA;specifies the name of a document. DocumentName is an attribute of the print&#xA;data (the doc), not of the Print Job. A document's name is an arbitrary&#xA;string defined by the client.&#xA;However if a JobName is not specified, the DocumentName should be used&#xA;instead, which implies that supporting specification of DocumentName&#xA;requires reporting of JobName and vice versa.&#xA;See {@link JobName JobName} for more information.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The string value gives the IPP name value. The&#xA;locale gives the IPP natural language. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="64ed6b07-5c63-45e6-80f9-bb9f7e600df3"/>
                <generalization xmi:id="350d2405-4096-4058-ac88-9b5c5c1cd410" isSubstitutable="true" general="3c1b1456-7781-4c4f-bbbc-e770265ee9dc"/>
                <interfaceRealization xmi:id="0b68e470-d4a7-43c2-95ea-e35bfaa07612" name="" supplier="d503a871-39df-47b0-a4af-635b1932e97c" client="64ed6b07-5c63-45e6-80f9-bb9f7e600df3" contract="d503a871-39df-47b0-a4af-635b1932e97c"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="7e195fc3-66e6-420d-a842-482cc15a6dc8" name="JobState" clientDependency="3840bb8c-3b8f-4a22-8216-f7e13b974014">
                <ownedComment xmi:id="6b337121-ffcf-4a3a-b8c2-02b648ba9573" body="JobState is a printing attribute class, an enumeration, that identifies&#xA;the current state of a print job. Class JobState defines standard job state&#xA;values. A  Print Service implementation only needs to report those job&#xA;states which are appropriate for the particular implementation; it does not&#xA;have to report every defined job state. The {@link JobStateReasons&#xA;JobStateReasons} attribute augments the JobState attribute to give more&#xA;detailed information about the job in the given job state.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> is the IPP attribute name.  The enumeration's&#xA;integer value is the IPP enum value.  The &lt;code>toString()&lt;/code> method&#xA;returns the IPP string representation of the attribute value.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="7e195fc3-66e6-420d-a842-482cc15a6dc8"/>
                <generalization xmi:id="cbed2868-a7fd-4d8c-9315-b144c54cd89b" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="3840bb8c-3b8f-4a22-8216-f7e13b974014" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="7e195fc3-66e6-420d-a842-482cc15a6dc8" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="d6bbb0fc-135c-4ecc-97a8-c005e3a21cae" name="PrinterMakeAndModel" clientDependency="60126e63-a599-4150-ba9e-332261a4a01a" isLeaf="true">
                <ownedComment xmi:id="e57fe0c5-a55f-48da-8470-66528df3f7b5" body="Class PrinterMakeAndModel is a printing attribute class, a text attribute,&#xA;that the make and model of the printer.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The string value gives the IPP name value. The&#xA;locale gives the IPP natural language. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="d6bbb0fc-135c-4ecc-97a8-c005e3a21cae"/>
                <generalization xmi:id="11ef752f-e8ba-4978-9d24-dab857ea96ab" isSubstitutable="true" general="3c1b1456-7781-4c4f-bbbc-e770265ee9dc"/>
                <interfaceRealization xmi:id="60126e63-a599-4150-ba9e-332261a4a01a" name="" supplier="d281a238-6e1f-44f5-a50e-db9f85d8500a" client="d6bbb0fc-135c-4ecc-97a8-c005e3a21cae" contract="d281a238-6e1f-44f5-a50e-db9f85d8500a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="7413f8c7-1a5c-4656-843e-5609840c1673" name="QueuedJobCount" clientDependency="825215b5-d6c3-4ef8-a018-5bd96c679720" isLeaf="true">
                <ownedComment xmi:id="cf9ca957-a358-41b3-9b1a-80ab9e074e67" body="Class QueuedJobCount is an integer valued printing attribute that indicates&#xA;the number of jobs in the printer whose {@link JobState JobState} is either&#xA;PENDING, PENDING_HELD, PROCESSING, or PROCESSING_STOPPED.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The integer value gives the IPP integer value.&#xA;The category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP&#xA;attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="7413f8c7-1a5c-4656-843e-5609840c1673"/>
                <generalization xmi:id="3c8973eb-c2c0-467e-a55a-d994d0708c11" isSubstitutable="true" general="b9536239-4a63-43ae-8911-0d209f122530"/>
                <interfaceRealization xmi:id="825215b5-d6c3-4ef8-a018-5bd96c679720" name="" supplier="d281a238-6e1f-44f5-a50e-db9f85d8500a" client="7413f8c7-1a5c-4656-843e-5609840c1673" contract="d281a238-6e1f-44f5-a50e-db9f85d8500a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="dedf2bea-5950-4673-8633-a7c8b967d1b4" name="MediaPrintableArea" clientDependency="77312b70-699d-45e7-ae47-4003933e7544 fd2099af-1719-428b-a571-0c6c163650e1 9b8298e8-246a-4e63-90fb-925e19a8d5f8" isLeaf="true">
                <ownedComment xmi:id="7b357909-2e92-4d15-ade7-c513513e4c2e" body="Class MediaPrintableArea is a printing attribute used to distinguish&#xA;the printable and non-printable areas of media.&#xA;&lt;p>&#xA;The printable area is specified to be a rectangle, within the overall&#xA;dimensions of a media.&#xA;&lt;p>&#xA;Most printers cannot print on the entire surface of the media, due&#xA;to printer hardware limitations. This class can be used to query&#xA;the acceptable values for a supposed print job, and to request an area&#xA;within the constraints of the printable area to be used in a print job.&#xA;&lt;p>&#xA;To query for the printable area, a client must supply a suitable context.&#xA;Without specifying at the very least the size of the media being used&#xA;no meaningful value for printable area can be obtained.&#xA;&lt;p>&#xA;The attribute is not described in terms of the distance from the edge&#xA;of the paper, in part to emphasise that this attribute is not independent&#xA;of a particular media, but must be described within the context of a&#xA;choice of other attributes. Additionally it is usually more convenient&#xA;for a client to use the printable area.&#xA;&lt;p>&#xA;The hardware's minimum margins is not just a property of the printer,&#xA;but may be a function of the media size, orientation, media type, and&#xA;any specified finishings.&#xA;&lt;code>PrintService&lt;/code> provides the method to query the supported&#xA;values of an attribute in a suitable context :&#xA;See  {@link javax.print.PrintService#getSupportedAttributeValues(Class,DocFlavor, AttributeSet) &lt;code>PrintService.getSupportedAttributeValues()&lt;/code>}&#xA;&lt;p>&#xA;The rectangular printable area is defined thus:&#xA;The (x,y) origin is positioned at the top-left of the paper in portrait&#xA;mode regardless of the orientation specified in the requesting context.&#xA;For example a printable area for A4 paper in portrait or landscape&#xA;orientation will have height > width.&#xA;&lt;p>&#xA;A printable area attribute's values are stored&#xA;internally as integers in units of micrometers (&amp;#181;m), where 1 micrometer&#xA;= 10&lt;SUP>-6&lt;/SUP> meter = 1/1000 millimeter = 1/25400 inch. This permits&#xA;dimensions to be represented exactly to a precision of 1/1000 mm (= 1&#xA;&amp;#181;m) or 1/100 inch (= 254 &amp;#181;m). If fractional inches are expressed in&#xA;negative powers of two, this permits dimensions to be represented exactly to&#xA;a precision of 1/8 inch (= 3175 &amp;#181;m) but not 1/16 inch (because 1/16 inch&#xA;does not equal an integral number of &amp;#181;m).&#xA;&lt;p>&#xA;&lt;B>IPP Compatibility:&lt;/B> MediaPrintableArea is not an IPP attribute.&#xA;" annotatedElement="dedf2bea-5950-4673-8633-a7c8b967d1b4"/>
                <interfaceRealization xmi:id="77312b70-699d-45e7-ae47-4003933e7544" name="" supplier="d503a871-39df-47b0-a4af-635b1932e97c" client="dedf2bea-5950-4673-8633-a7c8b967d1b4" contract="d503a871-39df-47b0-a4af-635b1932e97c"/>
                <interfaceRealization xmi:id="fd2099af-1719-428b-a571-0c6c163650e1" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="dedf2bea-5950-4673-8633-a7c8b967d1b4" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="9b8298e8-246a-4e63-90fb-925e19a8d5f8" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="dedf2bea-5950-4673-8633-a7c8b967d1b4" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="940f8a4d-331d-4526-8713-2f1d23695b7a" name="JobName" clientDependency="079df8d7-dab5-46da-9c47-5d854aa2af0a 55d4b72f-7a68-4dac-870e-94f229d4f35d" isLeaf="true">
                <ownedComment xmi:id="bfb4cd27-b544-4349-86e5-7bc88edf61f9" body="Class JobName is a printing attribute class, a text attribute, that specifies&#xA;the name of a print job. A job's name is an arbitrary string defined by the&#xA;client. It does not need to be unique between different jobs. A Print Job's&#xA;JobName attribute is set to the value supplied by the client in the Print&#xA;Request's attribute set. If, however, the client does not supply a JobName&#xA;attribute in the Print Request, the printer, when it creates the Print Job,&#xA;must generate a JobName. The printer should generate the value of the Print&#xA;Job's JobName attribute from the first of the following sources that produces&#xA;a value: (1) the {@link DocumentName DocumentName} attribute of the first (or&#xA;only) doc in the job, (2) the URL of the first (or only) doc in the job, if&#xA;the doc's print data representation object is a URL, or (3) any other piece&#xA;of Print Job specific and/or document content information.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The string value gives the IPP name value. The&#xA;locale gives the IPP natural language. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="940f8a4d-331d-4526-8713-2f1d23695b7a"/>
                <generalization xmi:id="fdafb508-736d-41fe-ad1c-da384b5eec14" isSubstitutable="true" general="3c1b1456-7781-4c4f-bbbc-e770265ee9dc"/>
                <interfaceRealization xmi:id="079df8d7-dab5-46da-9c47-5d854aa2af0a" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="940f8a4d-331d-4526-8713-2f1d23695b7a" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="55d4b72f-7a68-4dac-870e-94f229d4f35d" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="940f8a4d-331d-4526-8713-2f1d23695b7a" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f4195e64-bbb6-4fab-aa5d-2c0ed354661e" name="MediaSizeName">
                <ownedComment xmi:id="123e5c9a-671a-40cc-a31c-9c9499fdd215" body="Class MediaSizeName is a subclass of Media.&#xA;&lt;P>&#xA;This attribute can be used instead of specifying MediaName or MediaTray.&#xA;&lt;p>&#xA;Class MediaSizeName currently declares a few standard media&#xA;name values.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> MediaSizeName is a representation class for&#xA;values of the IPP &quot;media&quot; attribute which names media sizes.&#xA;The names of the media sizes correspond to those in the IPP 1.1 RFC&#xA;&lt;a HREF=&quot;http://www.ietf.org/rfc/rfc2911.txt&quot;>RFC 2911&lt;/a>&#xA;&lt;P>&#xA;&#xA;" annotatedElement="f4195e64-bbb6-4fab-aa5d-2c0ed354661e"/>
                <generalization xmi:id="541aea70-19dd-4ec4-be2b-2f42bb31de93" isSubstitutable="true" general="3967a98d-c483-4a65-95a0-3f84bbfbb2f0"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="36c14d23-9810-471d-8663-be0c3a93812e" name="JobImpressions" clientDependency="7d1705f0-5307-4c1f-a8c2-d81fa33b8f15 b11dda8e-c9ba-4b40-8251-0afe29c95e3f" isLeaf="true">
                <ownedComment xmi:id="5aba2c58-5f3e-4379-9f35-dfbfaba1940a" body="Class JobImpressions is an integer valued printing attribute class that&#xA;specifies the total size in number of impressions of the document(s) being&#xA;submitted. An &quot;impression&quot; is the image (possibly many print-stream pages in&#xA;different configurations) imposed onto a single media page.&#xA;&lt;P>&#xA;The JobImpressions attribute describes the size of the job. This attribute is&#xA;not intended to be a counter; it is intended to be useful routing and&#xA;scheduling information if known. The printer may try to compute the&#xA;JobImpressions attribute's value if it is not supplied in the Print Request.&#xA;Even if the client does supply a value for the JobImpressions attribute in&#xA;the Print Request, the printer may choose to change the value if the printer&#xA;is able to compute a value which is more accurate than the client supplied&#xA;value. The printer may be able to determine the correct value for the&#xA;JobImpressions attribute either right at job submission time or at any later&#xA;point in time.&#xA;&lt;P>&#xA;As with {@link JobKOctets JobKOctets}, the JobImpressions value must not&#xA;include the multiplicative factors contributed by the number of copies&#xA;specified by the {@link Copies Copies} attribute, independent of whether the&#xA;device can process multiple copies without making multiple passes over the&#xA;job or document data and independent of whether the output is collated or&#xA;not. Thus the value is independent of the implementation and reflects the&#xA;size of the document(s) measured in impressions independent of the number of&#xA;copies.&#xA;&lt;P>&#xA;As with {@link JobKOctets JobKOctets}, the JobImpressions value must also not&#xA;include the multiplicative factor due to a copies instruction embedded in the&#xA;document data. If the document data actually includes replications of the&#xA;document data, this value will include such replication. In other words, this&#xA;value is always the number of impressions in the source document data, rather&#xA;than a measure of the number of impressions to be produced by the job.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The integer value gives the IPP integer value. The&#xA;category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP attribute&#xA;name.&#xA;&lt;P>&#xA;&#xA;@see JobImpressionsSupported&#xA;@see JobImpressionsCompleted&#xA;@see JobKOctets&#xA;@see JobMediaSheets&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="36c14d23-9810-471d-8663-be0c3a93812e"/>
                <generalization xmi:id="7bf184da-e70c-4173-8c35-a81b78b43e68" isSubstitutable="true" general="b9536239-4a63-43ae-8911-0d209f122530"/>
                <interfaceRealization xmi:id="7d1705f0-5307-4c1f-a8c2-d81fa33b8f15" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="36c14d23-9810-471d-8663-be0c3a93812e" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="b11dda8e-c9ba-4b40-8251-0afe29c95e3f" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="36c14d23-9810-471d-8663-be0c3a93812e" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="59af5a03-e067-453b-90f0-45fa277c67ff" name="MediaTray" clientDependency="094bfe98-5153-48d9-8096-67e000b46f18">
                <ownedComment xmi:id="8aafec0f-9fb5-4d22-a021-d553b13a4068" body="Class MediaTray is a subclass of Media.&#xA;Class MediaTray is a printing attribute class, an enumeration, that&#xA;specifies the media tray or bin for the job.&#xA;This attribute can be used instead of specifying MediaSize or MediaName.&#xA;&lt;p>&#xA;Class MediaTray declares keywords for standard media kind values.&#xA;Implementation- or site-defined names for a media kind attribute may also&#xA;be created by defining a subclass of class MediaTray.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> MediaTray is a representation class for&#xA;values of the IPP &quot;media&quot; attribute which name paper trays.&#xA;&lt;P>&#xA;&#xA;" annotatedElement="59af5a03-e067-453b-90f0-45fa277c67ff"/>
                <generalization xmi:id="e6105d00-8529-4c78-8039-e7892cdf642b" isSubstitutable="true" general="3967a98d-c483-4a65-95a0-3f84bbfbb2f0"/>
                <interfaceRealization xmi:id="094bfe98-5153-48d9-8096-67e000b46f18" name="" supplier="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc" client="59af5a03-e067-453b-90f0-45fa277c67ff" contract="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4e7af6be-8042-4873-b458-abd13c6a415f" name="PrinterIsAcceptingJobs" clientDependency="e74b7550-8064-4db9-ad66-be6121e58245" isLeaf="true">
                <ownedComment xmi:id="543df16d-655e-4401-b7d2-518f4f997902" body="Class PrinterIsAcceptingJobs is a printing attribute class, an enumeration,&#xA;that indicates whether the printer is currently able to accept jobs. This&#xA;value is independent of the {@link PrinterState PrinterState} and {@link&#xA;PrinterStateReasons PrinterStateReasons} attributes because its value does&#xA;not affect the current job; rather it affects future jobs. If the value is&#xA;NOT_ACCEPTING_JOBS, the printer will reject jobs even when the {@link&#xA;PrinterState PrinterState} is IDLE. If value is ACCEPTING_JOBS, the Printer&#xA;will accept jobs even when the {@link PrinterState PrinterState} is STOPPED.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The IPP boolean value is &quot;true&quot; for ACCEPTING_JOBS&#xA;and &quot;false&quot; for NOT_ACCEPTING_JOBS. TThe category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> is the IPP attribute name.  The enumeration's&#xA;integer value is the IPP enum value.  The &lt;code>toString()&lt;/code> method&#xA;returns the IPP string representation of the attribute value.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="4e7af6be-8042-4873-b458-abd13c6a415f"/>
                <generalization xmi:id="690febee-f049-47bb-b117-6a4c0adf7c08" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="e74b7550-8064-4db9-ad66-be6121e58245" name="" supplier="d281a238-6e1f-44f5-a50e-db9f85d8500a" client="4e7af6be-8042-4873-b458-abd13c6a415f" contract="d281a238-6e1f-44f5-a50e-db9f85d8500a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="b9cf7533-96a6-48e0-a946-7f311bc8b873" name="Finishings" clientDependency="40c5182a-49c8-49a9-a988-eec4125178fa 4e5c069b-5995-438d-a1b1-77663ce56df5 3e46dd96-ffb4-4509-8be2-986ab64c7d91">
                <ownedComment xmi:id="ed39572b-9ce1-4a01-b3c6-15805bdcb2d0" body="Class Finishings is a printing attribute class, an enumeration, that&#xA;identifies whether the printer applies a finishing operation of some kind&#xA;of binding to each copy of each printed document in the job. For multidoc&#xA;print jobs (jobs with multiple documents), the&#xA;{@link MultipleDocumentHandling&#xA;MultipleDocumentHandling} attribute determines what constitutes a &quot;copy&quot;&#xA;for purposes of finishing.&#xA;&lt;P>&#xA;Standard Finishings values are:&#xA;&lt;TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100% SUMMARY=&quot;layout&quot;>&#xA;&lt;TR>&#xA;&lt;TD WIDTH=10%>&#xA;&amp;nbsp;&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=27%>&#xA;{@link #NONE &lt;CODE>NONE&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=27%>&#xA;{@link #STAPLE &lt;CODE>STAPLE&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=36%>&#xA;{@link #EDGE_STITCH &lt;CODE>EDGE_STITCH&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>&#xA;&amp;nbsp;&#xA;&lt;/TD>&#xA;&lt;TD>&#xA;{@link #BIND &lt;CODE>BIND&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD>&#xA;{@link #SADDLE_STITCH &lt;CODE>SADDLE_STITCH&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD>&#xA;{@link #COVER &lt;CODE>COVER&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD>&#xA;&amp;nbsp;&#xA;&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;/TABLE>&#xA;&lt;P>&#xA;The following Finishings values are more specific; they indicate a&#xA;corner or an edge as if the document were a portrait document:&#xA;&lt;TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100% SUMMARY=&quot;layout&quot;>&#xA;&lt;TR>&#xA;&lt;TD WIDTH=10%>&#xA;&amp;nbsp;&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=27%>&#xA;{@link #STAPLE_TOP_LEFT &lt;CODE>STAPLE_TOP_LEFT&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=27%>&#xA;{@link #EDGE_STITCH_LEFT &lt;CODE>EDGE_STITCH_LEFT&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=27%>&#xA;{@link #STAPLE_DUAL_LEFT &lt;CODE>STAPLE_DUAL_LEFT&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=9%>&#xA;&amp;nbsp;&#xA;&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD WIDTH=10%>&#xA;&amp;nbsp;&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=27%>&#xA;{@link #STAPLE_BOTTOM_LEFT &lt;CODE>STAPLE_BOTTOM_LEFT&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=27%>&#xA;{@link #EDGE_STITCH_TOP &lt;CODE>EDGE_STITCH_TOP&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=27%>&#xA;{@link #STAPLE_DUAL_TOP &lt;CODE>STAPLE_DUAL_TOP&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=9%>&#xA;&amp;nbsp;&#xA;&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD WIDTH=10%>&#xA;&amp;nbsp;&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=27%>&#xA;{@link #STAPLE_TOP_RIGHT &lt;CODE>STAPLE_TOP_RIGHT&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=27%>&#xA;{@link #EDGE_STITCH_RIGHT &lt;CODE>EDGE_STITCH_RIGHT&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=27%>&#xA;{@link #STAPLE_DUAL_RIGHT &lt;CODE>STAPLE_DUAL_RIGHT&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=9%>&#xA;&amp;nbsp;&#xA;&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD WIDTH=10%>&#xA;&amp;nbsp;&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=27%>&#xA;{@link #STAPLE_BOTTOM_RIGHT &lt;CODE>STAPLE_BOTTOM_RIGHT&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=27%>&#xA;{@link #EDGE_STITCH_BOTTOM &lt;CODE>EDGE_STITCH_BOTTOM&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=27%>&#xA;{@link #STAPLE_DUAL_BOTTOM &lt;CODE>STAPLE_DUAL_BOTTOM&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD WIDTH=9%>&#xA;&amp;nbsp;&#xA;&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;/TABLE>&#xA;&lt;P>&#xA;The &lt;CODE>STAPLE_&lt;I>XXX&lt;/I>&lt;/CODE> values are specified with respect to the&#xA;document as if the document were a portrait document. If the document is&#xA;actually a landscape or a reverse-landscape document, the client supplies the&#xA;appropriate transformed value. For example, to position a staple in the upper&#xA;left hand corner of a landscape document when held for reading, the client&#xA;supplies the &lt;CODE>STAPLE_BOTTOM_LEFT&lt;/CODE> value (since landscape is&#xA;defined as a +90 degree rotation from portrait, i.e., anti-clockwise). On the&#xA;other hand, to position a staple in the upper left hand corner of a&#xA;reverse-landscape document when held for reading, the client supplies the&#xA;&lt;CODE>STAPLE_TOP_RIGHT&lt;/CODE> value (since reverse-landscape is defined as a&#xA;-90 degree rotation from portrait, i.e., clockwise).&#xA;&lt;P>&#xA;The angle (vertical, horizontal, angled) of each staple with respect to the&#xA;document depends on the implementation which may in turn depend on the value&#xA;of the attribute.&#xA;&lt;P>&#xA;The effect of a Finishings attribute on a multidoc print job (a job&#xA;with multiple documents) depends on whether all the docs have the same&#xA;binding specified or whether different docs have different bindings&#xA;specified, and on the (perhaps defaulted) value of the {@link&#xA;MultipleDocumentHandling MultipleDocumentHandling} attribute.&#xA;&lt;UL>&#xA;&lt;LI>&#xA;If all the docs have the same binding specified, then any value of {@link&#xA;MultipleDocumentHandling MultipleDocumentHandling} makes sense, and the&#xA;printer's processing depends on the {@link MultipleDocumentHandling&#xA;MultipleDocumentHandling} value:&#xA;&lt;UL>&#xA;&lt;LI>&#xA;SINGLE_DOCUMENT -- All the input docs will be bound together as one output&#xA;document with the specified binding.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be bound together as one&#xA;output document with the specified binding, and the first impression of each&#xA;input doc will always start on a new media sheet.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- Each input doc will be bound&#xA;separately with the specified binding.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SEPARATE_DOCUMENTS_COLLATED_COPIES -- Each input doc will be bound separately&#xA;with the specified binding.&#xA;&lt;/UL>&#xA;&lt;P>&#xA;&lt;LI>&#xA;If different docs have different bindings specified, then only two values of&#xA;{@link MultipleDocumentHandling MultipleDocumentHandling} make sense, and the&#xA;printer reports an error when the job is submitted if any other value is&#xA;specified:&#xA;&lt;UL>&#xA;&lt;LI>&#xA;SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- Each input doc will be bound&#xA;separately with its own specified binding.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SEPARATE_DOCUMENTS_COLLATED_COPIES -- Each input doc will be bound separately&#xA;with its own specified binding.&#xA;&lt;/UL>&#xA;&lt;/UL>&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> Class Finishings encapsulates some of the&#xA;IPP enum values that can be included in an IPP &quot;finishings&quot; attribute, which&#xA;is a set of enums. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> is the IPP attribute name.  The enumeration's&#xA;integer value is the IPP enum value.  The &lt;code>toString()&lt;/code> method&#xA;returns the IPP string representation of the attribute value.&#xA;In IPP Finishings is a multi-value attribute, this API currently allows&#xA;only one binding to be specified.&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="b9cf7533-96a6-48e0-a946-7f311bc8b873"/>
                <generalization xmi:id="4664d9bb-c26d-474d-a633-ec6f9eeaad25" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="4e5c069b-5995-438d-a1b1-77663ce56df5" name="" supplier="d503a871-39df-47b0-a4af-635b1932e97c" client="b9cf7533-96a6-48e0-a946-7f311bc8b873" contract="d503a871-39df-47b0-a4af-635b1932e97c"/>
                <interfaceRealization xmi:id="40c5182a-49c8-49a9-a988-eec4125178fa" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="b9cf7533-96a6-48e0-a946-7f311bc8b873" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="3e46dd96-ffb4-4509-8be2-986ab64c7d91" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="b9cf7533-96a6-48e0-a946-7f311bc8b873" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="8f4169a6-9152-4be9-9aa8-13e1a7957166" name="PrinterLocation" clientDependency="95216752-3b84-4fbd-ae3d-03245cf25c10" isLeaf="true">
                <ownedComment xmi:id="cdb25116-4077-4b37-90f9-623892c90ab1" body="Class PrinterLocation is a printing attribute class, a text attribute, that&#xA;identifies the location of the device. This could include things like:&#xA;&lt;CODE>&quot;in Room 123A, second floor of building XYZ&quot;&lt;/CODE>.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The string value gives the IPP name value. The&#xA;locale gives the IPP natural language. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="8f4169a6-9152-4be9-9aa8-13e1a7957166"/>
                <generalization xmi:id="e036a286-436a-420a-89df-1acbb13f79a6" isSubstitutable="true" general="3c1b1456-7781-4c4f-bbbc-e770265ee9dc"/>
                <interfaceRealization xmi:id="95216752-3b84-4fbd-ae3d-03245cf25c10" name="" supplier="d281a238-6e1f-44f5-a50e-db9f85d8500a" client="8f4169a6-9152-4be9-9aa8-13e1a7957166" contract="d281a238-6e1f-44f5-a50e-db9f85d8500a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="aca54d31-5b3a-4076-bc27-4a2e345d592e" name="JobStateReason" clientDependency="57e9e490-91f7-492a-9646-1b42a1b75e9d">
                <ownedComment xmi:id="ed4008a8-8a7b-4dfe-b5c4-1f3f3099ec48" body="Class JobStateReason is a printing attribute class, an enumeration, that&#xA;provides additional information about the job's current state, i.e.,&#xA;information that augments the value of the job's {@link JobState JobState}&#xA;attribute. Class JobStateReason defines standard job state reason values. A&#xA;Print Service implementation only needs to report those job state&#xA;reasons which are appropriate for the particular implementation; it does not&#xA;have to report every defined job state reason.&#xA;&lt;P>&#xA;Instances of JobStateReason do not appear in a Print Job's attribute set&#xA;directly. Rather, a {@link JobStateReasons JobStateReasons} attribute appears&#xA;in the Print Job's attribute set. The {@link JobStateReasons JobStateReasons}&#xA;attribute contains zero, one, or more than one JobStateReason objects which&#xA;pertain to the Print Job's status. The printer adds a JobStateReason object&#xA;to the Print Job's {@link JobStateReasons JobStateReasons} attribute when the&#xA;corresponding condition becomes true of the Print Job, and the printer&#xA;removes the JobStateReason object again when the corresponding condition&#xA;becomes false, regardless of whether the Print Job's overall {@link JobState&#xA;JobState} also changed.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> is the IPP attribute name.  The enumeration's&#xA;integer value is the IPP enum value.  The &lt;code>toString()&lt;/code> method&#xA;returns the IPP string representation of the attribute value.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="aca54d31-5b3a-4076-bc27-4a2e345d592e"/>
                <generalization xmi:id="f498758c-8a0f-49e2-9a2b-d0f1120eb98a" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="57e9e490-91f7-492a-9646-1b42a1b75e9d" name="" supplier="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc" client="aca54d31-5b3a-4076-bc27-4a2e345d592e" contract="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6cf693d6-fab3-410c-ba17-1cba05929589" name="PageRanges" clientDependency="32c3dc29-d7c5-4275-83c4-2804689bd400 5b0498b4-2ae3-4c26-9774-9a3830e289ef daff7725-a801-4794-9b5f-86045f7ea421" isLeaf="true">
                <ownedComment xmi:id="99cff399-13a9-4555-a179-0b6f156fc53b" body="Class PageRanges is a printing attribute class, a set of integers, that&#xA;identifies the range(s) of print-stream pages that the Printer object uses&#xA;for each copy of each document which are to be printed. Nothing is printed&#xA;for any pages identified that do not exist in the document(s). The attribute&#xA;is associated with &lt;I>print-stream&lt;/I> pages, not application-numbered pages&#xA;(for example, the page numbers found in the headers and or footers for&#xA;certain word processing applications).&#xA;&lt;P>&#xA;In most cases, the exact pages to be printed will be generated by a device&#xA;driver and this attribute would not be required. However, when printing an&#xA;archived document which has already been formatted, the end user may elect to&#xA;print just a subset of the pages contained in the document. In this case, if&#xA;a page range of &lt;CODE>&quot;&lt;I>n&lt;/I>-&lt;I>m&lt;/I>&quot;&lt;/CODE> is specified, the first page&#xA;to be printed will be page &lt;I>n.&lt;/I> All subsequent pages of the document&#xA;will be printed through and including page &lt;I>m.&lt;/I>&#xA;&lt;P>&#xA;If a PageRanges attribute is not specified for a print job, all pages of&#xA;the document will be printed. In other words, the default value for the&#xA;PageRanges attribute is always &lt;CODE>{{1, Integer.MAX_VALUE}}&lt;/CODE>.&#xA;&lt;P>&#xA;The effect of a PageRanges attribute on a multidoc print job (a job with&#xA;multiple documents) depends on whether all the docs have the same page ranges&#xA;specified or whether different docs have different page ranges specified, and&#xA;on the (perhaps defaulted) value of the {@link MultipleDocumentHandling&#xA;MultipleDocumentHandling} attribute.&#xA;&lt;UL>&#xA;&lt;LI>&#xA;If all the docs have the same page ranges specified, then any value of {@link&#xA;MultipleDocumentHandling MultipleDocumentHandling} makes sense, and the&#xA;printer's processing depends on the {@link MultipleDocumentHandling&#xA;MultipleDocumentHandling} value:&#xA;&lt;UL>&#xA;&lt;LI>&#xA;SINGLE_DOCUMENT -- All the input docs will be combined together into one&#xA;output document. The specified page ranges of that output document will be&#xA;printed.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be combined together&#xA;into one output document, and the first impression of each input doc will&#xA;always start on a new media sheet. The specified page ranges of that output&#xA;document will be printed.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- For each separate input doc, the&#xA;specified page ranges will be printed.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SEPARATE_DOCUMENTS_COLLATED_COPIES -- For each separate input doc, the&#xA;specified page ranges will be printed.&#xA;&lt;/UL>&#xA;&lt;UL>&#xA;&lt;LI>&#xA;SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- For each separate input doc, its own&#xA;specified page ranges will be printed..&#xA;&lt;P>&#xA;&lt;LI>&#xA;SEPARATE_DOCUMENTS_COLLATED_COPIES -- For each separate input doc, its own&#xA;specified page ranges will be printed..&#xA;&lt;/UL>&#xA;&lt;/UL>&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The PageRanges attribute's canonical array form&#xA;gives the lower and upper bound for each range of pages to be included in&#xA;and IPP &quot;page-ranges&quot; attribute. See class {@link&#xA;javax.print.attribute.SetOfIntegerSyntax SetOfIntegerSyntax} for an&#xA;explanation of canonical array form. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  David Mendenhall&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="6cf693d6-fab3-410c-ba17-1cba05929589"/>
                <generalization xmi:id="5262ede5-64f7-4f65-bd51-9f5ca6cbb479" isSubstitutable="true" general="f259e040-d34e-479f-a1f6-c30ae579e9be"/>
                <interfaceRealization xmi:id="5b0498b4-2ae3-4c26-9774-9a3830e289ef" name="" supplier="d503a871-39df-47b0-a4af-635b1932e97c" client="6cf693d6-fab3-410c-ba17-1cba05929589" contract="d503a871-39df-47b0-a4af-635b1932e97c"/>
                <interfaceRealization xmi:id="daff7725-a801-4794-9b5f-86045f7ea421" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="6cf693d6-fab3-410c-ba17-1cba05929589" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="32c3dc29-d7c5-4275-83c4-2804689bd400" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="6cf693d6-fab3-410c-ba17-1cba05929589" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="e9070fc9-8560-410a-885e-689c9a730220" name="PagesPerMinuteColor" clientDependency="4ba06c06-75b0-40c9-a4c7-26be5dc66088" isLeaf="true">
                <ownedComment xmi:id="7c444e1b-cd3b-43d5-ae73-11a35eecdd61" body="Class PagesPerMinuteColor is an integer valued printing attribute that&#xA;indicates the nominal number of pages per minute to the nearest whole number&#xA;which may be generated by this printer when printing color (e.g., simplex,&#xA;color). For purposes of this attribute, &quot;color&quot; means the same as for the&#xA;{@link ColorSupported ColorSupported} attribute, namely, the device is&#xA;capable of any type of color printing at all, including highlight color as&#xA;well as full process color. This attribute is informative, not a service&#xA;guarantee. Generally, it is the value used in the marketing literature to&#xA;describe the color capabilities of this device. A value of 0 indicates a&#xA;device that takes more than two minutes to process a page. If a color device&#xA;has several color modes, it may use the pages-per- minute value for this&#xA;attribute that corresponds to the mode that produces the highest number.&#xA;&lt;P>&#xA;A black and white only printer must not include the PagesPerMinuteColor&#xA;attribute in its attribute set or service registration. If this attribute is&#xA;present, then the {@link ColorSupported ColorSupported} printer description&#xA;attribute must also be present and have a value of SUPPORTED.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The integer value gives the IPP integer value. The&#xA;category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP attribute&#xA;name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="e9070fc9-8560-410a-885e-689c9a730220"/>
                <generalization xmi:id="bc3b7e3f-607b-4024-84d7-b70e6d686f2b" isSubstitutable="true" general="b9536239-4a63-43ae-8911-0d209f122530"/>
                <interfaceRealization xmi:id="4ba06c06-75b0-40c9-a4c7-26be5dc66088" name="" supplier="d281a238-6e1f-44f5-a50e-db9f85d8500a" client="e9070fc9-8560-410a-885e-689c9a730220" contract="d281a238-6e1f-44f5-a50e-db9f85d8500a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="579b96d1-8ae5-406e-ae4c-78fb7817f5cd" name="Fidelity" clientDependency="a75ef5dd-9396-49bc-bafd-eeb7f11929f0 c87be2df-7553-40c5-99fa-98c8a8254b6e" isLeaf="true">
                <ownedComment xmi:id="6063c075-6902-40dc-bf8a-dd2ada132ba6" body="Class Fidelity is a printing attribute class, an enumeration,&#xA;that indicates whether total fidelity to client supplied print request&#xA;attributes is required.&#xA;If FIDELITY_TRUE is specified and a service cannot print the job exactly&#xA;as specified it must reject the job.&#xA;If FIDELITY_FALSE is specified a reasonable attempt to print the job is&#xA;acceptable. If not supplied the default is FIDELITY_FALSE.&#xA;&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The IPP boolean value is &quot;true&quot; for FIDELITY_TRUE&#xA;and &quot;false&quot; for FIDELITY_FALSE. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> is the IPP attribute name.  The enumeration's&#xA;integer value is the IPP enum value.  The &lt;code>toString()&lt;/code> method&#xA;returns the IPP string representation of the attribute value.&#xA;See &lt;a href=&quot;www.ietf.org/rfc/rfc2911.txt&quot;>RFC 2911&lt;/a> Section 15.1 for&#xA;a fuller description of the IPP fidelity attribute.&#xA;&lt;P>&#xA;&#xA;" annotatedElement="579b96d1-8ae5-406e-ae4c-78fb7817f5cd"/>
                <generalization xmi:id="778908af-134d-44a6-a9f3-95981e861c63" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="a75ef5dd-9396-49bc-bafd-eeb7f11929f0" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="579b96d1-8ae5-406e-ae4c-78fb7817f5cd" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
                <interfaceRealization xmi:id="c87be2df-7553-40c5-99fa-98c8a8254b6e" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="579b96d1-8ae5-406e-ae4c-78fb7817f5cd" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="82f48662-cac0-46bc-9a3b-2808e581c8d2" name="Sides" clientDependency="29fbc960-f1e5-4f23-8a29-8bfd872f2ed0 9a09ac81-8cc0-4da3-917d-11c2bce02bfe 41a14366-9127-406a-8bf5-72dcb5e27455" isLeaf="true">
                <ownedComment xmi:id="fca86237-6cd2-443f-ade4-02d2df18bd61" body="Class Sides is a printing attribute class, an enumeration, that specifies&#xA;how print-stream pages are to be imposed upon the sides of an instance of a&#xA;selected medium, i.e., an impression.&#xA;&lt;P>&#xA;The effect of a Sides attribute on a multidoc print job (a job with multiple&#xA;documents) depends on whether all the docs have the same sides values&#xA;specified or whether different docs have different sides values specified,&#xA;and on the (perhaps defaulted) value of the {@link MultipleDocumentHandling&#xA;MultipleDocumentHandling} attribute.&#xA;&lt;UL>&#xA;&lt;LI>&#xA;If all the docs have the same sides value &lt;I>n&lt;/I> specified, then any value&#xA;of {@link MultipleDocumentHandling MultipleDocumentHandling} makes sense,&#xA;and the printer's processing depends on the {@link MultipleDocumentHandling&#xA;MultipleDocumentHandling} value:&#xA;&lt;UL>&#xA;&lt;LI>&#xA;SINGLE_DOCUMENT -- All the input docs will be combined together into one&#xA;output document. Each media sheet will consist of &lt;I>n&lt;/I> impressions from&#xA;the output document.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be combined together&#xA;into one output document. Each media sheet will consist of &lt;I>n&lt;/I>&#xA;impressions from the output document. However, the first impression of each&#xA;input doc will always start on a new media sheet; this means the last media&#xA;sheet of an input doc may have only one impression on it.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- The input docs will remain separate.&#xA;Each media sheet will consist of &lt;I>n&lt;/I> impressions from the input doc.&#xA;Since the input docs are separate, the first impression of each input doc&#xA;will always start on a new media sheet; this means the last media sheet of&#xA;an input doc may have only one impression on it.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SEPARATE_DOCUMENTS_COLLATED_COPIES -- The input docs will remain separate.&#xA;Each media sheet will consist of &lt;I>n&lt;/I> impressions from the input doc.&#xA;Since the input docs are separate, the first impression of each input doc&#xA;will always start on a new media sheet; this means the last media sheet of&#xA;an input doc may have only one impression on it.&#xA;&lt;/UL>&#xA;&lt;P>&#xA;&lt;UL>&#xA;&lt;LI>&#xA;SINGLE_DOCUMENT -- All the input docs will be combined together into one&#xA;output document. Each media sheet will consist of &lt;I>n&lt;SUB>i&lt;/SUB>&lt;/I>&#xA;impressions from the output document, where &lt;I>i&lt;/I> is the number of the&#xA;input doc corresponding to that point in the output document. When the next&#xA;input doc has a different sides value from the previous input doc, the first&#xA;print-stream page of the next input doc goes at the start of the next media&#xA;sheet, possibly leaving only one impression on the previous media sheet.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be combined together&#xA;into one output document. Each media sheet will consist of &lt;I>n&lt;/I>&#xA;impressions from the output document. However, the first impression of each&#xA;input doc will always start on a new media sheet; this means the last&#xA;impression of an input doc may have only one impression on it.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- The input docs will remain separate.&#xA;For input doc &lt;I>i,&lt;/I> each media sheet will consist of &lt;I>n&lt;SUB>i&lt;/SUB>&lt;/I>&#xA;impressions from the input doc. Since the input docs are separate, the first&#xA;impression of each input doc will always start on a new media sheet; this&#xA;means the last media sheet of an input doc may have only one impression on&#xA;it.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SEPARATE_DOCUMENTS_COLLATED_COPIES -- The input docs will remain separate.&#xA;For input doc &lt;I>i,&lt;/I> each media sheet will consist of &lt;I>n&lt;SUB>i&lt;/SUB>&lt;/I>&#xA;impressions from the input doc. Since the input docs are separate, the first&#xA;impression of each input doc will always start on a new media sheet; this&#xA;means the last media sheet of an input doc may have only one impression on&#xA;it.&#xA;&lt;/UL>&#xA;&lt;/UL>&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> is the IPP attribute name.  The enumeration's&#xA;integer value is the IPP enum value.  The &lt;code>toString()&lt;/code> method&#xA;returns the IPP string representation of the attribute value.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="82f48662-cac0-46bc-9a3b-2808e581c8d2"/>
                <generalization xmi:id="683894dd-4616-4951-ae84-cfed7b758ccc" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="29fbc960-f1e5-4f23-8a29-8bfd872f2ed0" name="" supplier="d503a871-39df-47b0-a4af-635b1932e97c" client="82f48662-cac0-46bc-9a3b-2808e581c8d2" contract="d503a871-39df-47b0-a4af-635b1932e97c"/>
                <interfaceRealization xmi:id="9a09ac81-8cc0-4da3-917d-11c2bce02bfe" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="82f48662-cac0-46bc-9a3b-2808e581c8d2" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="41a14366-9127-406a-8bf5-72dcb5e27455" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="82f48662-cac0-46bc-9a3b-2808e581c8d2" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="5b680bf4-a2df-4c0f-94e9-465c68936417" name="MediaName" clientDependency="1256504c-fdd7-4a4e-8081-7cd38fd999cb">
                <ownedComment xmi:id="31720217-e0fb-4ba1-8b89-bd81d38fdd44" body="Class MediaName is a subclass of Media, a printing attribute class (an&#xA;enumeration) that specifies the media for a print job as a name.&#xA;&lt;P>&#xA;This attribute can be used instead of specifying MediaSize or MediaTray.&#xA;&lt;p>&#xA;Class MediaName currently declares a few standard media names.&#xA;Implementation- or site-defined names for a media name attribute may also&#xA;be created by defining a subclass of class MediaName.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> MediaName is a representation class for&#xA;values of the IPP &quot;media&quot; attribute which names media.&#xA;&lt;P>&#xA;&#xA;" annotatedElement="5b680bf4-a2df-4c0f-94e9-465c68936417"/>
                <generalization xmi:id="dc148a68-f040-4346-9f5c-c45a51afa071" isSubstitutable="true" general="3967a98d-c483-4a65-95a0-3f84bbfbb2f0"/>
                <interfaceRealization xmi:id="1256504c-fdd7-4a4e-8081-7cd38fd999cb" name="" supplier="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc" client="5b680bf4-a2df-4c0f-94e9-465c68936417" contract="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="90fa31fd-357a-4360-97f9-a96e9310c53b" name="OutputDeviceAssigned" clientDependency="86a8bb88-9244-4335-a665-f3fed6b58fa5" isLeaf="true">
                <ownedComment xmi:id="f51e6110-3980-4e2a-9287-b4521d8f498b" body="Class OutputDeviceAssigned is a printing attribute class, a text attribute,&#xA;that identifies the output device to which the service has assigned this&#xA;job. If an output device implements an embedded Print Service instance, the&#xA;printer need not set this attribute. If a print server implements a&#xA;Print Service instance, the value may be empty (zero- length string) or not&#xA;returned until the service assigns an output device to the job. This&#xA;attribute is particularly useful when a single service supports multiple&#xA;devices (so called &quot;fan-out&quot;).&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The string value gives the IPP name value. The&#xA;locale gives the IPP natural language. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="90fa31fd-357a-4360-97f9-a96e9310c53b"/>
                <generalization xmi:id="6c446388-fec2-4099-9b15-e0f9d1d47dbc" isSubstitutable="true" general="3c1b1456-7781-4c4f-bbbc-e770265ee9dc"/>
                <interfaceRealization xmi:id="86a8bb88-9244-4335-a665-f3fed6b58fa5" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="90fa31fd-357a-4360-97f9-a96e9310c53b" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="a96316fa-38d5-4751-a0ae-9b7bdfd17e9d" name="DateTimeAtProcessing" clientDependency="58869813-cd49-4590-9da9-84e185c623c9" isLeaf="true">
                <ownedComment xmi:id="a5fea236-db1c-4080-bd8b-ac30812d2dcf" body="Class DateTimeAtProcessing is a printing attribute class, a date-time&#xA;attribute, that indicates the date and time at which the Print Job first&#xA;began processing.&#xA;&lt;P>&#xA;To construct a DateTimeAtProcessing attribute from separate values of the&#xA;year, month, day, hour, minute, and so on, use a {@link java.util.Calendar&#xA;Calendar} object to construct a {@link java.util.Date Date} object, then use&#xA;the {@link java.util.Date Date} object to construct the DateTimeAtProcessing&#xA;attribute. To convert a DateTimeAtProcessing attribute to separate values of&#xA;the year, month, day, hour, minute, and so on, create a {@link&#xA;java.util.Calendar Calendar} object and set it to the {@link java.util.Date&#xA;Date} from the DateTimeAtProcessing attribute.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The information needed to construct an IPP&#xA;&quot;date-time-at-processing&quot; attribute can be obtained as described above. The&#xA;category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP attribute&#xA;name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="a96316fa-38d5-4751-a0ae-9b7bdfd17e9d"/>
                <generalization xmi:id="732b0e74-d062-4acf-8efd-68d159ffc42c" isSubstitutable="true" general="bb53d781-f9dc-40de-953e-72e2be17289b"/>
                <interfaceRealization xmi:id="58869813-cd49-4590-9da9-84e185c623c9" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="a96316fa-38d5-4751-a0ae-9b7bdfd17e9d" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="b8eb899c-1192-4735-a536-1a24aab7a3da" name="PrinterStateReason" clientDependency="fee4da7f-82f8-4219-89e6-82bf6f07b54e">
                <ownedComment xmi:id="83d98809-3fc3-451e-9acc-7a7a631abd35" body="Class PrinterStateReason is a printing attribute class, an enumeration,&#xA;that provides additional information about the printer's current state,&#xA;i.e., information that augments the value of the printer's&#xA;{@link PrinterState PrinterState} attribute.&#xA;Class PrinterStateReason defines standard printer&#xA;state reason values. A Print Service implementation only needs to report&#xA;those printer state reasons which are appropriate for the particular&#xA;implementation; it does not have to report every defined printer state&#xA;reason.&#xA;&lt;P>&#xA;Instances of PrinterStateReason do not appear in a Print Service's&#xA;attribute set directly.&#xA;Rather, a {@link PrinterStateReasons PrinterStateReasons}&#xA;attribute appears in the Print Service's attribute set. The {@link&#xA;PrinterStateReasons PrinterStateReasons} attribute contains zero, one, or&#xA;more than one PrinterStateReason objects which pertain to the&#xA;Print Service's status, and each PrinterStateReason object is&#xA;associated with a {@link Severity Severity} level of REPORT (least severe),&#xA;WARNING, or ERROR (most severe). The printer adds a PrinterStateReason&#xA;object to the Print Service's&#xA;{@link PrinterStateReasons PrinterStateReasons} attribute when the&#xA;corresponding condition becomes true of the printer, and the printer&#xA;removesthe PrinterStateReason object again when the corresponding&#xA;condition becomes false, regardless of whether the Print Service's overall&#xA;{@link PrinterState PrinterState} also changed.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B>&#xA;The string values returned by each individual {@link PrinterStateReason} and&#xA;associated {@link Severity} object's &lt;CODE>toString()&lt;/CODE>&#xA;methods, concatenated together with a hyphen (&lt;CODE>&quot;-&quot;&lt;/CODE>) in&#xA;between, gives the IPP keyword value for a {@link PrinterStateReasons}.&#xA;The category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP&#xA;attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="b8eb899c-1192-4735-a536-1a24aab7a3da"/>
                <generalization xmi:id="7e9bbbda-205a-4eac-bdbf-948395f3d20e" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="fee4da7f-82f8-4219-89e6-82bf6f07b54e" name="" supplier="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc" client="b8eb899c-1192-4735-a536-1a24aab7a3da" contract="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6f1e30a8-7ee8-40fb-b9bc-13517976a5e1" name="PrinterName" clientDependency="cc4e0e42-6381-4d95-8faf-191475f80753" isLeaf="true">
                <ownedComment xmi:id="13aa5411-8ef9-4d64-a9e5-cd43e2bd76ed" body="Class PrinterName is a printing attribute class, a text attribute, that&#xA;specifies the name of a printer. It is a name that is more end-user friendly&#xA;than a URI. An administrator determines a printer's name and sets this&#xA;attribute to that name. This name may be the last part of the printer's URI&#xA;or it may be unrelated. In non-US-English locales, a name may contain&#xA;characters that are not allowed in a URI.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The string value gives the IPP name value. The&#xA;locale gives the IPP natural language. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="6f1e30a8-7ee8-40fb-b9bc-13517976a5e1"/>
                <generalization xmi:id="e1b5f0cb-c170-4807-b68d-ef37db0e30f0" isSubstitutable="true" general="3c1b1456-7781-4c4f-bbbc-e770265ee9dc"/>
                <interfaceRealization xmi:id="cc4e0e42-6381-4d95-8faf-191475f80753" name="" supplier="d281a238-6e1f-44f5-a50e-db9f85d8500a" client="6f1e30a8-7ee8-40fb-b9bc-13517976a5e1" contract="d281a238-6e1f-44f5-a50e-db9f85d8500a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="37b334e0-2533-4375-a80c-83ab282a166b" name="PrinterMessageFromOperator" clientDependency="4a2cf3e2-4158-450b-bf43-e1f891c64ee4" isLeaf="true">
                <ownedComment xmi:id="c336cc41-f6d8-43b7-a2ef-1d4677275c03" body="Class PrinterMessageFromOperator is a printing attribute class, a text&#xA;attribute, that provides a message from an operator, system administrator,&#xA;or &quot;intelligent&quot; process to indicate to the end user information about or&#xA;status of the printer, such as why it is unavailable or when it is&#xA;expected to be available.&#xA;&lt;P>&#xA;A Print Service's attribute set includes zero instances or one instance of&#xA;a&#xA;PrinterMessageFromOperator attribute, not more than one instance. A new&#xA;PrinterMessageFromOperator attribute replaces an existing&#xA;PrinterMessageFromOperator attribute, if any. In other words,&#xA;PrinterMessageFromOperator is not intended to be a history log.&#xA;If it wishes, the client can detect changes to a Print Service's&#xA;PrinterMessageFromOperator&#xA;attribute and maintain the client's own history log of the&#xA;PrinterMessageFromOperator attribute values.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The string value gives the IPP name value. The&#xA;locale gives the IPP natural language. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="37b334e0-2533-4375-a80c-83ab282a166b"/>
                <generalization xmi:id="f2b0ed8c-a37f-414b-b3b3-efb7387fc273" isSubstitutable="true" general="3c1b1456-7781-4c4f-bbbc-e770265ee9dc"/>
                <interfaceRealization xmi:id="4a2cf3e2-4158-450b-bf43-e1f891c64ee4" name="" supplier="d281a238-6e1f-44f5-a50e-db9f85d8500a" client="37b334e0-2533-4375-a80c-83ab282a166b" contract="d281a238-6e1f-44f5-a50e-db9f85d8500a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="8a663a31-6e44-4102-9846-44e507b7bfa4" name="PagesPerMinute" clientDependency="cf857a99-0fd4-4cac-8160-2ee32359f5fd" isLeaf="true">
                <ownedComment xmi:id="a8f438b4-e647-4ee9-9983-c47d39fbcc0c" body="Class PagesPerMinute is an integer valued printing attribute that indicates&#xA;the nominal number of pages per minute to the nearest whole number which may&#xA;be generated by this printer (e.g., simplex, black-and-white). This attribute&#xA;is informative, not a service guarantee. Generally, it is the value used in&#xA;the marketing literature to describe the device. A value of 0 indicates a&#xA;device that takes more than two minutes to process a page.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The integer value gives the IPP integer value. The&#xA;category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP attribute&#xA;name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="8a663a31-6e44-4102-9846-44e507b7bfa4"/>
                <generalization xmi:id="fe7c7c09-40e8-4c14-bf99-6f2e7a783995" isSubstitutable="true" general="b9536239-4a63-43ae-8911-0d209f122530"/>
                <interfaceRealization xmi:id="cf857a99-0fd4-4cac-8160-2ee32359f5fd" name="" supplier="d281a238-6e1f-44f5-a50e-db9f85d8500a" client="8a663a31-6e44-4102-9846-44e507b7bfa4" contract="d281a238-6e1f-44f5-a50e-db9f85d8500a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="3967a98d-c483-4a65-95a0-3f84bbfbb2f0" name="Media" clientDependency="edc3ca12-1719-4150-bcd3-08e3d5895b7f c095a055-148d-4ef6-acf7-8330acbf9bb8 bc6d44c1-f655-4c69-bdd4-aca3e9f6da8a" isAbstract="true">
                <ownedComment xmi:id="c5e2acf6-4b89-4461-8bd2-250fe565fd23" body="Class Media is a printing attribute class that specifies the&#xA;medium on which to print.&#xA;&lt;p>&#xA;Media may be specified in different ways.&#xA;&lt;ul>&#xA;&lt;li> it may be specified by paper source - eg paper tray&#xA;&lt;li> it may be specified by a standard size - eg &quot;A4&quot;&#xA;&lt;li> it may be specified by a name - eg &quot;letterhead&quot;&#xA;&lt;/ul>&#xA;Each of these corresponds to the IPP &quot;media&quot; attribute.&#xA;The current API does not support describing media by characteristics&#xA;(eg colour, opacity).&#xA;This may be supported in a later revision of the specification.&#xA;&lt;p>&#xA;A Media object is constructed with a value which represents&#xA;one of the ways in which the Media attribute can be specified.&#xA;&lt;p>&#xA;&lt;B>IPP Compatibility:&lt;/B>  The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> is the IPP attribute name.  The enumeration's&#xA;integer value is the IPP enum value.  The &lt;code>toString()&lt;/code> method&#xA;returns the IPP string representation of the attribute value.&#xA;&lt;P>&#xA;&#xA;@author Phil Race&#xA;" annotatedElement="3967a98d-c483-4a65-95a0-3f84bbfbb2f0"/>
                <generalization xmi:id="30389a65-6f17-4428-a28d-2768b1318af2" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="c095a055-148d-4ef6-acf7-8330acbf9bb8" name="" supplier="d503a871-39df-47b0-a4af-635b1932e97c" client="3967a98d-c483-4a65-95a0-3f84bbfbb2f0" contract="d503a871-39df-47b0-a4af-635b1932e97c"/>
                <interfaceRealization xmi:id="edc3ca12-1719-4150-bcd3-08e3d5895b7f" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="3967a98d-c483-4a65-95a0-3f84bbfbb2f0" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="bc6d44c1-f655-4c69-bdd4-aca3e9f6da8a" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="3967a98d-c483-4a65-95a0-3f84bbfbb2f0" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="958f0141-48fb-42f7-ba90-b25bb2f212db" name="MediaSize" clientDependency="464529ac-c33c-4fa9-86c7-70cc2f5ea651">
                <ownedComment xmi:id="d34fa1cd-ef49-4f88-b42e-eda14ead8464" body="Class MediaSize is a two-dimensional size valued printing attribute class&#xA;that indicates the dimensions of the medium in a portrait orientation, with&#xA;the X dimension running along the bottom edge and the Y dimension running&#xA;along the left edge. Thus, the Y dimension must be greater than or equal to&#xA;the X dimension. Class MediaSize declares many standard media size&#xA;values, organized into nested classes for ISO, JIS, North American,&#xA;engineering, and other media.&#xA;&lt;P>&#xA;MediaSize is not yet used to specify media. Its current role is&#xA;as a mapping for named media (see {@link MediaSizeName MediaSizeName}).&#xA;Clients can use the mapping method&#xA;&lt;code>MediaSize.getMediaSizeForName(MediaSizeName)&lt;/code>&#xA;to find the physical dimensions of the MediaSizeName instances&#xA;enumerated in this API. This is useful for clients which need this&#xA;information to format &amp; paginate printing.&#xA;&lt;P>&#xA;&#xA;@author  Phil Race, Alan Kaminsky&#xA;" annotatedElement="958f0141-48fb-42f7-ba90-b25bb2f212db"/>
                <generalization xmi:id="a502109c-1b83-4653-9cce-3b177baa8f02" isSubstitutable="true" general="9abe0481-3755-438e-a144-c34bcda838a2"/>
                <interfaceRealization xmi:id="464529ac-c33c-4fa9-86c7-70cc2f5ea651" name="" supplier="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc" client="958f0141-48fb-42f7-ba90-b25bb2f212db" contract="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="d0bae2d6-9386-41ab-a76a-319ba7e49289" name="ISO" isLeaf="true">
                  <ownedComment xmi:id="1225311d-f99d-425d-9c3b-b5ae8088d560" body="Class MediaSize.ISO includes {@link MediaSize MediaSize} values for ISO&#xA;media.&#xA;&lt;P>&#xA;" annotatedElement="d0bae2d6-9386-41ab-a76a-319ba7e49289"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1f9f0c7d-9446-47c3-bebf-f477fcb11e7d" name="JIS" isLeaf="true">
                  <ownedComment xmi:id="c0b98450-b934-47d7-9db8-a4386a942c40" body="Class MediaSize.JIS includes {@link MediaSize MediaSize} values for JIS&#xA;(Japanese) media.&#xA;" annotatedElement="1f9f0c7d-9446-47c3-bebf-f477fcb11e7d"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="28a2b905-6cc6-4f1e-9dc2-bfdac7e30457" name="NA" isLeaf="true">
                  <ownedComment xmi:id="af721565-908f-4b3b-b0fd-36d059523287" body="Class MediaSize.NA includes {@link MediaSize MediaSize} values for North&#xA;American media.&#xA;" annotatedElement="28a2b905-6cc6-4f1e-9dc2-bfdac7e30457"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="84d72fd4-26a6-4321-9b52-d4ef3f08936a" name="Engineering" isLeaf="true">
                  <ownedComment xmi:id="1567e0ac-5694-42fc-b82f-006fda065b3b" body="Class MediaSize.Engineering includes {@link MediaSize MediaSize} values&#xA;for engineering media.&#xA;" annotatedElement="84d72fd4-26a6-4321-9b52-d4ef3f08936a"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="74732be0-22c2-4ff3-be1a-be9ac264ee6f" name="Other" isLeaf="true">
                  <ownedComment xmi:id="c72fd83a-5445-49b7-b3bb-68f3aca808b7" body="Class MediaSize.Other includes {@link MediaSize MediaSize} values for&#xA;miscellaneous media.&#xA;" annotatedElement="74732be0-22c2-4ff3-be1a-be9ac264ee6f"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f24125b0-9fff-482a-87ef-2cf4667f8261" name="Chromaticity" clientDependency="8ee37521-aa9b-42b9-a7ea-0e22197d4c4d a12fa177-07ec-443e-9b4e-4c863ee4dfbc 2a0bc62d-b973-451f-832d-d371ca970e8c" isLeaf="true">
                <ownedComment xmi:id="8bae7d9b-05f3-4b63-845b-255efcf633e6" body="Class Chromaticity is a printing attribute class, an enumeration, that&#xA;specifies monochrome or color printing. This is used by a print client&#xA;to specify how the print data should be generated or processed. It is not&#xA;descriptive of the color capabilities of the device. Query the service's&#xA;{@link ColorSupported ColorSupported} attribute to determine if the device&#xA;can be verified to support color printing.&#xA;&lt;P>&#xA;The table below shows the effects of specifying a Chromaticity attribute of&#xA;{@link #MONOCHROME &lt;CODE>MONOCHROME&lt;/CODE>} or {@link #COLOR&#xA;&lt;CODE>COLOR&lt;/CODE>} for a monochrome or color document.&#xA;&lt;P>&#xA;&lt;TABLE BORDER=1 CELLPADDING=2 CELLSPACING=1 SUMMARY=&quot;Shows effects of specifying MONOCHROME or COLOR Chromaticity attributes&quot;>&#xA;&lt;TR BGCOLOR=&quot;#E5E5E5&quot;>&#xA;&lt;TH>&#xA;Chromaticity&lt;BR>Attribute&#xA;&lt;/TH>&#xA;&lt;TH>&#xA;Effect on&lt;BR>Monochrome Document&#xA;&lt;/TH>&#xA;&lt;TH>&#xA;Effect on&lt;BR>Color Document&#xA;&lt;/TH>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>&#xA;{@link #MONOCHROME &lt;CODE>MONOCHROME&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD>&#xA;Printed as is, in monochrome&#xA;&lt;/TD>&#xA;&lt;TD>&#xA;Printed in monochrome, with colors converted to shades of gray&#xA;&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>&#xA;{@link #COLOR &lt;CODE>COLOR&lt;/CODE>}&#xA;&lt;/TD>&#xA;&lt;TD>&#xA;Printed as is, in monochrome&#xA;&lt;/TD>&#xA;&lt;TD>&#xA;Printed as is, in color&#xA;&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;/TABLE>&#xA;&lt;P>&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> Chromaticity is not an IPP attribute at present.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="f24125b0-9fff-482a-87ef-2cf4667f8261"/>
                <generalization xmi:id="17f8ab39-7d7d-486e-8848-6c97a864e092" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="a12fa177-07ec-443e-9b4e-4c863ee4dfbc" name="" supplier="d503a871-39df-47b0-a4af-635b1932e97c" client="f24125b0-9fff-482a-87ef-2cf4667f8261" contract="d503a871-39df-47b0-a4af-635b1932e97c"/>
                <interfaceRealization xmi:id="2a0bc62d-b973-451f-832d-d371ca970e8c" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="f24125b0-9fff-482a-87ef-2cf4667f8261" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="8ee37521-aa9b-42b9-a7ea-0e22197d4c4d" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="f24125b0-9fff-482a-87ef-2cf4667f8261" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="84e4c97c-dd1d-4fc8-9ba0-4b9c06613c45" name="Destination" clientDependency="d231f010-b201-4485-af9e-bd2805db86f5 42ef0a84-ef27-43d3-8dbb-88201ba8fe52" isLeaf="true">
                <ownedComment xmi:id="761f178e-8cfd-4542-a6d8-9c251a62a1ee" body="Class Destination is a printing attribute class, a URI, that is used to&#xA;indicate an alternate destination for the spooled printer formatted&#xA;data. Many PrintServices will not support the notion of a destination&#xA;other than the printer device, and so will not support this attribute.&#xA;&lt;p>&#xA;A common use for this attribute will be applications which want&#xA;to redirect output to a local disk file : eg.&quot;file:out.prn&quot;.&#xA;Note that proper construction of &quot;file:&quot; scheme URI instances should&#xA;be performed using the &lt;code>toURI()&lt;/code> method of class&#xA;{@link java.io.File File}.&#xA;See the documentation on that class for more information.&#xA;&lt;p>&#xA;If a destination URI is specified in a PrintRequest and it is not&#xA;accessible for output by the PrintService, a PrintException will be thrown.&#xA;The PrintException may implement URIException to provide a more specific&#xA;cause.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> Destination is not an IPP attribute.&#xA;&lt;P>&#xA;&#xA;@author  Phil Race.&#xA;" annotatedElement="84e4c97c-dd1d-4fc8-9ba0-4b9c06613c45"/>
                <generalization xmi:id="bf691ade-d386-4167-95d2-5999544168f7" isSubstitutable="true" general="4736462f-f159-453e-b201-0a2172ad1aae"/>
                <interfaceRealization xmi:id="42ef0a84-ef27-43d3-8dbb-88201ba8fe52" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="84e4c97c-dd1d-4fc8-9ba0-4b9c06613c45" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
                <interfaceRealization xmi:id="d231f010-b201-4485-af9e-bd2805db86f5" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="84e4c97c-dd1d-4fc8-9ba0-4b9c06613c45" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="741f01f5-f3c7-4a19-9e8a-bc8eace44030" name="PrinterState" clientDependency="e6898af1-0472-47cb-88ee-a5bc37fc0c3e" isLeaf="true">
                <ownedComment xmi:id="09bb4d20-c5cf-4293-a616-4cabc849efd4" body="Class PrinterState is a printing attribute class, an enumeration, that&#xA;identifies the current state of a printer. Class PrinterState defines&#xA;standard printer state values. A Print Service implementation only needs&#xA;to report those printer states which are appropriate for the particular&#xA;implementation; it does not have to report every defined printer state. The&#xA;{@link PrinterStateReasons PrinterStateReasons} attribute augments the&#xA;PrinterState attribute to give more detailed information about the printer&#xA;in  given printer state.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> is the IPP attribute name.  The enumeration's&#xA;integer value is the IPP enum value.  The &lt;code>toString()&lt;/code> method&#xA;returns the IPP string representation of the attribute value.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="741f01f5-f3c7-4a19-9e8a-bc8eace44030"/>
                <generalization xmi:id="f77fb2fd-f19d-4ede-b9e8-e7e6c4c6863c" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="e6898af1-0472-47cb-88ee-a5bc37fc0c3e" name="" supplier="d281a238-6e1f-44f5-a50e-db9f85d8500a" client="741f01f5-f3c7-4a19-9e8a-bc8eace44030" contract="d281a238-6e1f-44f5-a50e-db9f85d8500a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="d84af919-94dd-4c1f-839d-390541bb32c7" name="PrinterResolution" clientDependency="51be0e4a-1a77-472c-a75e-d4a15bbfd552 ab295947-9f78-4f17-8e52-8e01e4e82a9c d4822887-d11c-4c21-8018-f6c18052e76f" isLeaf="true">
                <ownedComment xmi:id="869b3e07-3505-44bf-9caa-5656b5594d9f" body="Class PrinterResolution is a printing attribute class that specifies an&#xA;exact resolution supported by a printer or to be used for a print job.&#xA;This attribute assumes that printers have a small set of device resolutions&#xA;at which they can operate rather than a continuum.&#xA;&lt;p>&#xA;PrinterResolution is used in multiple ways:&#xA;&lt;OL TYPE=1>&#xA;&lt;LI>&#xA;When a client searches looking for a printer that supports the client's&#xA;desired resolution exactly (no more, no less), the client specifies&#xA;an instance of class PrinterResolution indicating the exact resolution the&#xA;client wants. Only printers supporting that exact resolution will match the&#xA;search.&#xA;&lt;P>&#xA;&lt;LI>&#xA;When a client needs to print a job using the client's desired resolution&#xA;exactly (no more, no less), the client specifies an instance of class&#xA;PrinterResolution as an attribute of the Print Job. This will fail if the&#xA;Print Job doesn't support that exact resolution, and Fidelity is set to&#xA;true.&#xA;&lt;/OL>&#xA;If a client wants to locate a printer supporting a resolution&#xA;greater than some required minimum, then it may be necessary to exclude&#xA;this attribute from a lookup request and to directly query the set of&#xA;supported resolutions, and specify the one that most closely meets&#xA;the client's requirements.&#xA;In some cases this may be more simply achieved by specifying a&#xA;PrintQuality attribute which often controls resolution.&#xA;&lt;P>&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The information needed to construct an IPP&#xA;&lt;CODE>&quot;printer-resolution&quot;&lt;/CODE> attribute can be obtained by calling&#xA;methods on the PrinterResolution object. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  David Mendenhall&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="d84af919-94dd-4c1f-839d-390541bb32c7"/>
                <generalization xmi:id="efc255a9-541d-43fc-9af4-72282b582739" isSubstitutable="true" general="90301351-3c81-4d05-9c9a-bc73e11a6cbb"/>
                <interfaceRealization xmi:id="ab295947-9f78-4f17-8e52-8e01e4e82a9c" name="" supplier="d503a871-39df-47b0-a4af-635b1932e97c" client="d84af919-94dd-4c1f-839d-390541bb32c7" contract="d503a871-39df-47b0-a4af-635b1932e97c"/>
                <interfaceRealization xmi:id="d4822887-d11c-4c21-8018-f6c18052e76f" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="d84af919-94dd-4c1f-839d-390541bb32c7" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="51be0e4a-1a77-472c-a75e-d4a15bbfd552" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="d84af919-94dd-4c1f-839d-390541bb32c7" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="8b11fd19-e530-415d-a5ea-ac3b1f8f1fac" name="PrinterStateReasons" clientDependency="7aa880fe-fe21-49f4-88f6-c9ba747f287a" isLeaf="true">
                <ownedComment xmi:id="5199c703-4676-4175-81f0-5cfdbee94e33" body="Class PrinterStateReasons is a printing attribute class, a set of&#xA;enumeration values, that provides additional information about the&#xA;printer's current state, i.e., information that augments the value of the&#xA;printer's {@link PrinterState PrinterState} attribute.&#xA;&lt;P>&#xA;Instances of {@link PrinterStateReason PrinterStateReason} do not appear in&#xA;a Print Service's attribute set directly. Rather, a PrinterStateReasons&#xA;attribute appears in the Print Service's attribute set. The&#xA;PrinterStateReasons attribute contains zero, one, or more than one {@link&#xA;PrinterStateReason PrinterStateReason} objects which pertain to the Print&#xA;Service's status, and each {@link PrinterStateReason PrinterStateReason}&#xA;object is associated with a {@link Severity Severity} level of REPORT&#xA;(least severe), WARNING, or ERROR (most severe). The printer adds a {@link&#xA;PrinterStateReason PrinterStateReason} object to the Print Service's&#xA;PrinterStateReasons attribute when the corresponding condition becomes true&#xA;of the printer, and the printer removes the {@link PrinterStateReason&#xA;PrinterStateReason} object again when the corresponding condition becomes&#xA;false, regardless of whether the Print Service's overall&#xA;{@link PrinterState PrinterState} also changed.&#xA;&lt;P>&#xA;Class PrinterStateReasons inherits its implementation from class {@link&#xA;java.util.HashMap java.util.HashMap}. Each entry in the map consists of a&#xA;{@link PrinterStateReason PrinterStateReason} object (key) mapping to a&#xA;{@link Severity Severity} object (value):&#xA;&lt;P>&#xA;Unlike most printing attributes which are immutable once constructed, class&#xA;PrinterStateReasons is designed to be mutable; you can add {@link&#xA;PrinterStateReason PrinterStateReason} objects to an existing&#xA;PrinterStateReasons object and remove them again. However, like class&#xA;{@link java.util.HashMap java.util.HashMap}, class PrinterStateReasons is&#xA;bot multiple thread safe. If a PrinterStateReasons object will be used by&#xA;multiple threads, be sure to synchronize its operations (e.g., using a&#xA;synchronized map view obtained from class {@link java.util.Collections&#xA;java.util.Collections}).&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The string values returned by each individual&#xA;{@link PrinterStateReason PrinterStateReason} object's and the associated&#xA;{@link Severity Severity} object's &lt;CODE>toString()&lt;/CODE> methods,&#xA;concatenated&#xA;together with a hyphen (&lt;CODE>&quot;-&quot;&lt;/CODE>) in between, gives the IPP keyword&#xA;value. The category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP&#xA;attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="8b11fd19-e530-415d-a5ea-ac3b1f8f1fac"/>
                <generalization xmi:id="85e24685-3ecd-4897-add5-9b287c023d39" isSubstitutable="true" general="6ed6f6dc-2360-4b08-a5ac-e3f768e44bc7"/>
                <interfaceRealization xmi:id="7aa880fe-fe21-49f4-88f6-c9ba747f287a" name="" supplier="d281a238-6e1f-44f5-a50e-db9f85d8500a" client="8b11fd19-e530-415d-a5ea-ac3b1f8f1fac" contract="d281a238-6e1f-44f5-a50e-db9f85d8500a"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="de2a7f7b-0ece-401f-823b-0379c0cee21b" name="PrinterStateReasonSet" visibility="private">
                  <generalization xmi:id="4d293567-802d-480d-a58e-69c26e62e79f" isSubstitutable="true" general="7e5f2d56-6a1c-46a6-b031-ec59ea4c719f"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="24dae0ac-9975-494a-91cc-2b7b7907c235" name="PrinterStateReasonSetIterator" visibility="private" clientDependency="9d39c1bd-fe26-460c-b2c9-e42f77c85e39">
                  <interfaceRealization xmi:id="9d39c1bd-fe26-460c-b2c9-e42f77c85e39" name="" supplier="68be2fb3-d9b5-43e8-ba81-15535e34b87a" client="24dae0ac-9975-494a-91cc-2b7b7907c235" contract="68be2fb3-d9b5-43e8-ba81-15535e34b87a"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="5e207985-bc49-4402-85bf-682c46ee4357" name="NumberUpSupported" clientDependency="185ef3e3-4257-4b51-8e99-f6d936a49091" isLeaf="true">
                <ownedComment xmi:id="f941e325-badf-43de-8b16-79e014969f5c" body="Class NumberUpSupported is a printing attribute class, a set of integers,&#xA;that gives the supported values for a {@link NumberUp NumberUp} attribute.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The NumberUpSupported attribute's canonical array&#xA;form gives the lower and upper bound for each range of number-up to be&#xA;included in an IPP &quot;number-up-supported&quot; attribute. See class {@link&#xA;javax.print.attribute.SetOfIntegerSyntax SetOfIntegerSyntax} for an&#xA;explanation of canonical array form. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="5e207985-bc49-4402-85bf-682c46ee4357"/>
                <generalization xmi:id="71dd97d5-0557-4084-b26a-591bda5c7fc3" isSubstitutable="true" general="f259e040-d34e-479f-a1f6-c30ae579e9be"/>
                <interfaceRealization xmi:id="185ef3e3-4257-4b51-8e99-f6d936a49091" name="" supplier="c9b665c6-bcbc-4f69-902d-7d54772daf75" client="5e207985-bc49-4402-85bf-682c46ee4357" contract="c9b665c6-bcbc-4f69-902d-7d54772daf75"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6fa43f53-c13f-486b-bdf4-e263789d39b2" name="PrinterURI" clientDependency="4f13cd6b-551e-41c8-b86a-328f60e06d8e" isLeaf="true">
                <ownedComment xmi:id="69bb30c4-27a4-4c07-baf0-0a9587ba019a" body="Class PrinterURI is a printing attribute class, a URI, that specifies the&#xA;globally unique name of a printer.  If it has such a name, an administrator&#xA;determines a printer's URI and sets this attribute to that name.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B>  This implements the&#xA;IPP printer-uri attribute. The string form returned by&#xA;&lt;CODE>toString()&lt;/CODE>  gives the IPP printer-uri value.&#xA;The category name returned by &lt;CODE>getName()&lt;/CODE>&#xA;gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Robert Herriot&#xA;" annotatedElement="6fa43f53-c13f-486b-bdf4-e263789d39b2"/>
                <generalization xmi:id="8602ab4b-396d-4228-8293-665654a17ea4" isSubstitutable="true" general="4736462f-f159-453e-b201-0a2172ad1aae"/>
                <interfaceRealization xmi:id="4f13cd6b-551e-41c8-b86a-328f60e06d8e" name="" supplier="d281a238-6e1f-44f5-a50e-db9f85d8500a" client="6fa43f53-c13f-486b-bdf4-e263789d39b2" contract="d281a238-6e1f-44f5-a50e-db9f85d8500a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="28779b85-9c14-4c7f-96aa-38567389d44a" name="DateTimeAtCreation" clientDependency="53dfc501-5cda-4eae-b1db-d4c99a366a38" isLeaf="true">
                <ownedComment xmi:id="df1f5c81-6a35-4ad1-b9c7-647eff6a3e26" body="Class DateTimeAtCreation is a printing attribute class, a date-time&#xA;attribute, that indicates the date and time at which the Print Job was&#xA;created.&#xA;&lt;P>&#xA;To construct a DateTimeAtCreation attribute from separate values of the year,&#xA;month, day, hour, minute, and so on, use a {@link java.util.Calendar&#xA;Calendar} object to construct a {@link java.util.Date Date} object, then use&#xA;the {@link java.util.Date Date} object to construct the DateTimeAtCreation&#xA;attribute. To convert a DateTimeAtCreation attribute to separate values of&#xA;the year, month, day, hour, minute, and so on, create a {@link&#xA;java.util.Calendar Calendar} object and set it to the {@link java.util.Date&#xA;Date} from the DateTimeAtCreation attribute.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The information needed to construct an IPP&#xA;&quot;date-time-at-creation&quot; attribute can be obtained as described above. The&#xA;category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP attribute&#xA;name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="28779b85-9c14-4c7f-96aa-38567389d44a"/>
                <generalization xmi:id="0ece83a2-772f-4d5c-9d73-d6814d9394c9" isSubstitutable="true" general="bb53d781-f9dc-40de-953e-72e2be17289b"/>
                <interfaceRealization xmi:id="53dfc501-5cda-4eae-b1db-d4c99a366a38" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="28779b85-9c14-4c7f-96aa-38567389d44a" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="b058be5a-68a9-4fa6-b4b0-7204a8641deb" name="JobOriginatingUserName" clientDependency="bf27632a-72f6-4bb7-b9b4-59e049e8948b" isLeaf="true">
                <ownedComment xmi:id="f6705290-573e-4b82-8d86-a059a784a426" body="Class JobOriginatingUserName is a printing attribute class, a text&#xA;attribute, that contains the name of the end user that submitted the&#xA;print job. If possible, the printer sets this attribute to the most&#xA;authenticated printable user name that it can obtain from the&#xA;authentication service that authenticated the submitted Print Request.&#xA;If such is not available, the printer uses the value of the&#xA;{@link RequestingUserName RequestingUserName}&#xA;attribute supplied by the client in the Print Request's attribute set.&#xA;If no authentication service is available, and the client did not supply&#xA;a {@link RequestingUserName RequestingUserName} attribute,&#xA;the printer sets the JobOriginatingUserName attribute to an empty&#xA;(zero-length) string.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The string value gives the IPP name value. The&#xA;locale gives the IPP natural language. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="b058be5a-68a9-4fa6-b4b0-7204a8641deb"/>
                <generalization xmi:id="ed807a79-2a2c-4dd7-a445-110f916f50a6" isSubstitutable="true" general="3c1b1456-7781-4c4f-bbbc-e770265ee9dc"/>
                <interfaceRealization xmi:id="bf27632a-72f6-4bb7-b9b4-59e049e8948b" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="b058be5a-68a9-4fa6-b4b0-7204a8641deb" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f83d1ea9-f9e3-430a-a4b9-f2faeb3c3d39" name="PrinterInfo" clientDependency="54ab5237-b0bf-47e0-a6e8-c96e339fe78d" isLeaf="true">
                <ownedComment xmi:id="cd2b8878-c8f7-404a-af27-a72673073714" body="Class PrinterInfo is a printing attribute class, a text attribute, that&#xA;provides descriptive information about a printer. This could include things&#xA;like: &lt;CODE>&quot;This printer can be used for printing color transparencies for&#xA;HR presentations&quot;&lt;/CODE>, or &lt;CODE>&quot;Out of courtesy for others, please&#xA;print only small (1-5 page) jobs at this printer&quot;&lt;/CODE>, or even \&#xA;&lt;CODE>&quot;This printer is going away on July 1, 1997, please find a new&#xA;printer&quot;&lt;/CODE>.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The string value gives the IPP name value. The&#xA;locale gives the IPP natural language. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="f83d1ea9-f9e3-430a-a4b9-f2faeb3c3d39"/>
                <generalization xmi:id="cc95dbab-03da-42e5-a124-6c8774c4e19e" isSubstitutable="true" general="3c1b1456-7781-4c4f-bbbc-e770265ee9dc"/>
                <interfaceRealization xmi:id="54ab5237-b0bf-47e0-a6e8-c96e339fe78d" name="" supplier="d281a238-6e1f-44f5-a50e-db9f85d8500a" client="f83d1ea9-f9e3-430a-a4b9-f2faeb3c3d39" contract="d281a238-6e1f-44f5-a50e-db9f85d8500a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="0e99b96a-2aa7-4153-a0c1-af44d1d67bf9" name="PrinterMoreInfoManufacturer" clientDependency="f1505f97-93ad-45b7-a2db-15d17c9d24c2" isLeaf="true">
                <ownedComment xmi:id="081ae70c-c7c7-43c9-828d-bb3a63987270" body="Class PrinterMoreInfoManufacturer is a printing attribute class, a URI,&#xA;that is used to obtain more information about this type of device.&#xA;The information obtained from this URI is intended for end user&#xA;consumption. Features outside the scope of the Print Service API&#xA;can be accessed from this URI (e.g.,&#xA;latest firmware, upgrades, service proxies, optional features available,&#xA;details on color support). The information is intended to be germane to&#xA;this kind of printer without regard to site specific modifications or&#xA;services.&#xA;&lt;P&#xA;In contrast, the {@link PrinterMoreInfo PrinterMoreInfo} attribute is used&#xA;to find out more information about this specific printer rather than this&#xA;general kind of printer.&#xA;&lt;P>&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The string form returned by&#xA;&lt;CODE>toString()&lt;/CODE> gives the IPP uri value.&#xA;The category name returned by &lt;CODE>getName()&lt;/CODE>&#xA;gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="0e99b96a-2aa7-4153-a0c1-af44d1d67bf9"/>
                <generalization xmi:id="5a2d11da-f4b3-4dc4-8ed1-e3c33e63195e" isSubstitutable="true" general="4736462f-f159-453e-b201-0a2172ad1aae"/>
                <interfaceRealization xmi:id="f1505f97-93ad-45b7-a2db-15d17c9d24c2" name="" supplier="d281a238-6e1f-44f5-a50e-db9f85d8500a" client="0e99b96a-2aa7-4153-a0c1-af44d1d67bf9" contract="d281a238-6e1f-44f5-a50e-db9f85d8500a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="72500aa3-4da9-44d7-9b5f-6057d34f594f" name="PresentationDirection" clientDependency="e7a71937-e093-4b05-993f-e5b5f6ebde9d 7d173c61-2583-4b94-9d9f-5d96eb89eb93" isLeaf="true">
                <ownedComment xmi:id="75431571-9714-492d-b5bc-8120b20702ec" body="Class PresentationDirection is a printing attribute class, an enumeration,&#xA;that is used in conjunction with the {@link  NumberUp NumberUp} attribute to&#xA;indicate the layout of multiple print-stream pages to impose upon a&#xA;single side of an instance of a selected medium.&#xA;This is useful to mirror the text layout conventions of different scripts.&#xA;For example, English is &quot;toright-tobottom&quot;, Hebrew is &quot;toleft-tobottom&quot;&#xA;and Japanese is usually &quot;tobottom-toleft&quot;.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B>  This attribute is not an IPP 1.1&#xA;attribute; it is an attribute in the Production Printing Extension&#xA;(&lt;a href=&quot;ftp://ftp.pwg.org/pub/pwg/standards/pwg5100.3.pdf&quot;>PDF&lt;/a>)&#xA;of IPP 1.1.  The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> is the IPP attribute name.  The enumeration's&#xA;integer value is the IPP enum value.  The &lt;code>toString()&lt;/code> method&#xA;returns the IPP string representation of the attribute value.&#xA;&lt;P>&#xA;&#xA;@author  Phil Race.&#xA;" annotatedElement="72500aa3-4da9-44d7-9b5f-6057d34f594f"/>
                <generalization xmi:id="a725f81b-857c-4598-ad4d-13c75f6b1133" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="e7a71937-e093-4b05-993f-e5b5f6ebde9d" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="72500aa3-4da9-44d7-9b5f-6057d34f594f" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
                <interfaceRealization xmi:id="7d173c61-2583-4b94-9d9f-5d96eb89eb93" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="72500aa3-4da9-44d7-9b5f-6057d34f594f" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="56dfcd23-9012-4148-b930-9039471d442d" name="JobHoldUntil" clientDependency="09a848d1-12a6-4df1-b718-c2519e0e5ec6 e45bc656-db5a-4bb4-85d0-a5209c22185f" isLeaf="true">
                <ownedComment xmi:id="590cbcf9-d544-442c-b46c-2eb14be68cf5" body="Class JobHoldUntil is a printing attribute class, a date-time attribute, that&#xA;specifies the exact date and time at which the job must become a candidate&#xA;for printing.&#xA;&lt;P>&#xA;If the value of this attribute specifies a date-time that is in the future,&#xA;the printer should add the {@link JobStateReason JobStateReason} value of&#xA;JOB_HOLD_UNTIL_SPECIFIED to the job's {@link JobStateReasons JobStateReasons}&#xA;attribute, must move the job to the PENDING_HELD state, and must not schedule&#xA;the job for printing until the specified date-time arrives.&#xA;&lt;P>&#xA;When the specified date-time arrives, the printer must remove the {@link&#xA;JobStateReason JobStateReason} value of JOB_HOLD_UNTIL_SPECIFIED from the&#xA;job's {@link JobStateReasons JobStateReasons} attribute, if present. If there&#xA;are no other job state reasons that keep the job in the PENDING_HELD state,&#xA;the printer must consider the job as a candidate for processing by moving the&#xA;job to the PENDING state.&#xA;&lt;P>&#xA;If the specified date-time has already passed, the job must be a candidate&#xA;for processing immediately. Thus, one way to make the job immediately become&#xA;a candidate for processing is to specify a JobHoldUntil attribute constructed&#xA;like this (denoting a date-time of January 1, 1970, 00:00:00 GMT):&#xA;&lt;PRE>&#xA;JobHoldUntil immediately = new JobHoldUntil (new Date (0L));&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;If the client does not supply this attribute in a Print Request and the&#xA;printer supports this attribute, the printer must use its&#xA;(implementation-dependent) default JobHoldUntil value at job submission time&#xA;(unlike most job template attributes that are used if necessary at job&#xA;processing time).&#xA;&lt;P>&#xA;To construct a JobHoldUntil attribute from separate values of the year,&#xA;month, day, hour, minute, and so on, use a {@link java.util.Calendar&#xA;Calendar} object to construct a {@link java.util.Date Date} object, then use&#xA;the {@link java.util.Date Date} object to construct the JobHoldUntil&#xA;attribute. To convert a JobHoldUntil attribute to separate values of the&#xA;year, month, day, hour, minute, and so on, create a {@link java.util.Calendar&#xA;Calendar} object and set it to the {@link java.util.Date Date} from the&#xA;JobHoldUntil attribute.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> Although IPP supports a &quot;job-hold-until&quot; attribute&#xA;specified as a keyword, IPP does not at this time support a &quot;job-hold-until&quot;&#xA;attribute specified as a date and time. However, the date and time can be&#xA;converted to one of the standard IPP keywords with some loss of precision;&#xA;for example, a JobHoldUntil value with today's date and 9:00pm local time&#xA;might be converted to the standard IPP keyword &quot;night&quot;. The category name&#xA;returned by &lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="56dfcd23-9012-4148-b930-9039471d442d"/>
                <generalization xmi:id="73a9e21a-cc74-4e5d-a064-3f1a03494151" isSubstitutable="true" general="bb53d781-f9dc-40de-953e-72e2be17289b"/>
                <interfaceRealization xmi:id="09a848d1-12a6-4df1-b718-c2519e0e5ec6" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="56dfcd23-9012-4148-b930-9039471d442d" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="e45bc656-db5a-4bb4-85d0-a5209c22185f" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="56dfcd23-9012-4148-b930-9039471d442d" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6ed6f6dc-2360-4b08-a5ac-e3f768e44bc7" name="HashMap&lt;PrinterStateReason, Severity>">
                <templateBinding xmi:id="3c527b04-d31b-4132-be9f-ae0561f02ae6" signature="728ca417-c96f-45a1-8e42-8731b30e61ee">
                  <parameterSubstitution xmi:id="51263457-8da0-4a33-aac6-7588f9477505" formal="941bb1e1-6bf3-431a-9e39-f73396ea1874" actual="b8eb899c-1192-4735-a536-1a24aab7a3da"/>
                  <parameterSubstitution xmi:id="668b2c58-2c2f-49fd-971a-f377d72a085d" formal="3e4536b5-4534-4015-85ed-a0cb7c4d8ff9" actual="a9185816-0b12-420d-8d1a-d37f73db1365"/>
                </templateBinding>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="40856bb5-a102-412e-a36c-97824cf86f2e" name="PrintQuality" clientDependency="15f13a37-65d1-43d5-a891-580c9f62cc26 186808f5-102d-484b-b645-cd5ed663de4d 5828cc5b-668d-431a-911b-c98c295b3cf1">
                <ownedComment xmi:id="fc7b9419-aed1-454e-9a7c-22e0a449360d" body="Class PrintQuality is a printing attribute class, an enumeration,&#xA;that specifies the print quality that the printer uses for the job.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> is the IPP attribute name.  The enumeration's&#xA;integer value is the IPP enum value.  The &lt;code>toString()&lt;/code> method&#xA;returns the IPP string representation of the attribute value.&#xA;&lt;P>&#xA;&#xA;@author  David Mendenhall&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="40856bb5-a102-412e-a36c-97824cf86f2e"/>
                <generalization xmi:id="8843fc83-a0a3-424d-a912-b99bbfed1330" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="15f13a37-65d1-43d5-a891-580c9f62cc26" name="" supplier="d503a871-39df-47b0-a4af-635b1932e97c" client="40856bb5-a102-412e-a36c-97824cf86f2e" contract="d503a871-39df-47b0-a4af-635b1932e97c"/>
                <interfaceRealization xmi:id="186808f5-102d-484b-b645-cd5ed663de4d" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="40856bb5-a102-412e-a36c-97824cf86f2e" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="5828cc5b-668d-431a-911b-c98c295b3cf1" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="40856bb5-a102-412e-a36c-97824cf86f2e" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="378d04ce-d7a4-40e3-ba7c-b22ef901aa6c" name="PrinterMoreInfo" clientDependency="3d74f99d-55f9-4453-afe9-8eb5d175913e" isLeaf="true">
                <ownedComment xmi:id="c8f7a6c5-c336-4745-af89-95700354a892" body="Class PrinterMoreInfo is a printing attribute class, a URI, that is used to&#xA;obtain more information about this specific printer. For example, this&#xA;could be an HTTP type URI referencing an HTML page accessible to a web&#xA;browser. The information obtained from this URI is intended for end user&#xA;consumption. Features outside the scope of the Print Service API can be&#xA;accessed from this URI.&#xA;The information is intended to be specific to this printer instance and&#xA;site specific services (e.g. job pricing, services offered, end user&#xA;assistance).&#xA;&lt;P>&#xA;In contrast, the {@link PrinterMoreInfoManufacturer&#xA;PrinterMoreInfoManufacturer} attribute is used to find out more information&#xA;about this general kind of printer rather than this specific printer.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The string form returned by&#xA;&lt;CODE>toString()&lt;/CODE>  gives the IPP uri value.&#xA;The category name returned by &lt;CODE>getName()&lt;/CODE>&#xA;gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="378d04ce-d7a4-40e3-ba7c-b22ef901aa6c"/>
                <generalization xmi:id="8875283a-0f5c-4eaa-aae2-fcf912527f92" isSubstitutable="true" general="4736462f-f159-453e-b201-0a2172ad1aae"/>
                <interfaceRealization xmi:id="3d74f99d-55f9-4453-afe9-8eb5d175913e" name="" supplier="d281a238-6e1f-44f5-a50e-db9f85d8500a" client="378d04ce-d7a4-40e3-ba7c-b22ef901aa6c" contract="d281a238-6e1f-44f5-a50e-db9f85d8500a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="8187fc95-249c-48f0-983a-c026f74336c7" name="PDLOverrideSupported" clientDependency="91cc8243-9f89-4dcb-a5f4-a809ebea9835">
                <ownedComment xmi:id="12d3ed01-8f72-4785-b0ad-758b105ffbc6" body="Class PDLOverrideSupported is a printing attribute class, an enumeration,&#xA;that expresses the printer's ability to attempt to override processing&#xA;instructions embedded in documents' print data with processing instructions&#xA;specified as attributes outside the print data.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> is the IPP attribute name.  The enumeration's&#xA;integer value is the IPP enum value.  The &lt;code>toString()&lt;/code> method&#xA;returns the IPP string representation of the attribute value.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="8187fc95-249c-48f0-983a-c026f74336c7"/>
                <generalization xmi:id="633f50ca-ce08-4c6a-82aa-edadc4ba0095" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="91cc8243-9f89-4dcb-a5f4-a809ebea9835" name="" supplier="d281a238-6e1f-44f5-a50e-db9f85d8500a" client="8187fc95-249c-48f0-983a-c026f74336c7" contract="d281a238-6e1f-44f5-a50e-db9f85d8500a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f9549b8e-fee5-4109-9002-c4b91d9dd5ef" name="JobStateReasons" clientDependency="1e91110e-5166-4dd7-a68e-ad1f6c080160" isLeaf="true">
                <ownedComment xmi:id="87a8d8b5-ed2e-4def-aa32-beb458bed3a2" body="Class JobStateReasons is a printing attribute class, a set of enumeration&#xA;values, that provides additional information about the job's current state,&#xA;i.e., information that augments the value of the job's {@link JobState&#xA;JobState} attribute.&#xA;&lt;P>&#xA;Instances of {@link JobStateReason JobStateReason} do not appear in a Print&#xA;Job's attribute set directly. Rather, a JobStateReasons attribute appears in&#xA;the Print Job's attribute set. The JobStateReasons attribute contains zero,&#xA;one, or more than one {@link JobStateReason JobStateReason} objects which&#xA;pertain to the Print Job's status. The printer adds a {@link JobStateReason&#xA;JobStateReason} object to the Print Job's JobStateReasons attribute when the&#xA;corresponding condition becomes true of the Print Job, and the printer&#xA;removes the {@link JobStateReason JobStateReason} object again when the&#xA;corresponding condition becomes false, regardless of whether the Print Job's&#xA;overall {@link JobState JobState} also changed.&#xA;&lt;P>&#xA;Class JobStateReasons inherits its implementation from class {@link&#xA;java.util.HashSet java.util.HashSet}. Unlike most printing attributes which&#xA;are immutable once constructed, class JobStateReasons is designed to be&#xA;mutable; you can add {@link JobStateReason JobStateReason} objects to an&#xA;existing JobStateReasons object and remove them again. However, like class&#xA;{@link java.util.HashSet java.util.HashSet}, class JobStateReasons is not&#xA;multiple thread safe. If a JobStateReasons object will be used by multiple&#xA;threads, be sure to synchronize its operations (e.g., using a synchronized&#xA;set view obtained from class {@link java.util.Collections&#xA;java.util.Collections}).&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The string value returned by each individual {@link&#xA;JobStateReason JobStateReason} object's &lt;CODE>toString()&lt;/CODE> method gives&#xA;the IPP keyword value. The category name returned by &lt;CODE>getName()&lt;/CODE>&#xA;gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="f9549b8e-fee5-4109-9002-c4b91d9dd5ef"/>
                <generalization xmi:id="9a584bd7-6f58-4833-81be-37fe389d83be" isSubstitutable="true" general="951eb688-5a4f-4173-a23d-bac534f5c95b"/>
                <interfaceRealization xmi:id="1e91110e-5166-4dd7-a68e-ad1f6c080160" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="f9549b8e-fee5-4109-9002-c4b91d9dd5ef" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="af64e7a6-aab4-41af-8fc1-5e23c90a13d7" name="NumberUp" clientDependency="c1fedf97-8d10-49f1-bb30-05b1aa481930 6a2ab309-77ef-4b1b-b08b-b34104365a0b 05252096-ed87-4395-9d64-b9ac6b829774" isLeaf="true">
                <ownedComment xmi:id="f8d65cb3-ee67-4434-a0ef-17186a4e191a" body="Class NumberUp is an integer valued printing attribute class that specifies&#xA;the number of print-stream pages to impose upon a single side of an&#xA;instance of a selected medium. That is, if the NumberUp value is &lt;I>n,&lt;/I>&#xA;the printer must place &lt;I>n&lt;/I> print-stream pages on a single side of&#xA;an instance of the&#xA;selected medium. To accomplish this, the printer may add some sort of&#xA;translation, scaling, or rotation. This attribute primarily controls the&#xA;translation, scaling and rotation of print-stream pages.&#xA;&lt;P>&#xA;The effect of a NumberUp attribute on a multidoc print job (a job with&#xA;multiple documents) depends on whether all the docs have the same number up&#xA;values specified or whether different docs have different number up values&#xA;specified, and on the (perhaps defaulted) value of the {@link&#xA;MultipleDocumentHandling MultipleDocumentHandling} attribute.&#xA;&lt;UL>&#xA;&lt;LI>&#xA;If all the docs have the same number up value &lt;I>n&lt;/I> specified, then any&#xA;value of {@link MultipleDocumentHandling MultipleDocumentHandling} makes&#xA;sense, and the printer's processing depends on the {@link&#xA;MultipleDocumentHandling MultipleDocumentHandling} value:&#xA;&lt;UL>&#xA;&lt;LI>&#xA;SINGLE_DOCUMENT -- All the input docs will be combined together into one&#xA;output document. Each media impression will consist of &lt;I>n&lt;/I>m&#xA;print-stream pages from the output document.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be combined together&#xA;into one output document. Each media impression will consist of &lt;I>n&lt;/I>&#xA;print-stream pages from the output document. However, the first impression of&#xA;each input doc will always start on a new media sheet; this means the last&#xA;impression of an input doc may have fewer than &lt;I>n&lt;/I> print-stream pages&#xA;on it.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- The input docs will remain separate.&#xA;Each media impression will consist of &lt;I>n&lt;/I> print-stream pages from the&#xA;input doc. Since the input docs are separate, the first impression of each&#xA;input doc will always start on a new media sheet; this means the last&#xA;impression of an input doc may have fewer than &lt;I>n&lt;/I> print-stream pages on&#xA;it.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SEPARATE_DOCUMENTS_COLLATED_COPIES -- The input docs will remain separate.&#xA;Each media impression will consist of &lt;I>n&lt;/I> print-stream pages from the&#xA;input doc. Since the input docs are separate, the first impression of each&#xA;input doc will always start on a new media sheet; this means the last&#xA;impression of an input doc may have fewer than &lt;I>n&lt;/I> print-stream pages&#xA;on it.&#xA;&lt;/UL>&#xA;&lt;UL>&#xA;&lt;LI>&#xA;SINGLE_DOCUMENT -- All the input docs will be combined together into one&#xA;output document. Each media impression will consist of &lt;I>n&lt;SUB>i&lt;/SUB>&lt;/I>&#xA;print-stream pages from the output document, where &lt;I>i&lt;/I> is the number of&#xA;the input doc corresponding to that point in the output document. When the&#xA;next input doc has a different number up value from the previous input doc,&#xA;the first print-stream page of the next input doc goes at the start of the&#xA;next media impression, possibly leaving fewer than the full number of&#xA;print-stream pages on the previous media impression.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SINGLE_DOCUMENT_NEW_SHEET -- All the input docs will be combined together&#xA;into one output document. Each media impression will consist of &lt;I>n&lt;/I>&#xA;print-stream pages from the output document. However, the first impression of&#xA;each input doc will always start on a new media sheet; this means the last&#xA;impression of an input doc may have fewer than &lt;I>n&lt;/I> print-stream pages&#xA;on it.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- The input docs will remain separate.&#xA;For input doc &lt;I>i,&lt;/I> each media impression will consist of&#xA;&lt;I>n&lt;SUB>i&lt;/SUB>&lt;/I> print-stream pages from the input doc. Since the input&#xA;docs are separate, the first impression of each input doc will always start&#xA;on a new media sheet; this means the last impression of an input doc may have&#xA;fewer than &lt;I>n&lt;SUB>i&lt;/SUB>&lt;/I> print-stream pages on it.&#xA;&lt;P>&#xA;&lt;LI>&#xA;SEPARATE_DOCUMENTS_COLLATED_COPIES -- The input docs will remain separate.&#xA;For input doc &lt;I>i,&lt;/I> each media impression will consist of&#xA;&lt;I>n&lt;SUB>i&lt;/SUB>&lt;/I> print-stream pages from the input doc. Since the input&#xA;docs are separate, the first impression of each input doc will always start&#xA;on a new media sheet; this means the last impression of an input doc may&#xA;have fewer than &lt;I>n&lt;SUB>i&lt;/SUB>&lt;/I> print-stream pages on it.&#xA;&lt;/UL>&#xA;&lt;/UL>&#xA;&lt;B>IPP Compatibility:&lt;/B> The integer value gives the IPP integer value.&#xA;The category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP&#xA;attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="af64e7a6-aab4-41af-8fc1-5e23c90a13d7"/>
                <generalization xmi:id="9e6c2563-a724-4984-a847-5c807e229ee2" isSubstitutable="true" general="b9536239-4a63-43ae-8911-0d209f122530"/>
                <interfaceRealization xmi:id="c1fedf97-8d10-49f1-bb30-05b1aa481930" name="" supplier="d503a871-39df-47b0-a4af-635b1932e97c" client="af64e7a6-aab4-41af-8fc1-5e23c90a13d7" contract="d503a871-39df-47b0-a4af-635b1932e97c"/>
                <interfaceRealization xmi:id="6a2ab309-77ef-4b1b-b08b-b34104365a0b" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="af64e7a6-aab4-41af-8fc1-5e23c90a13d7" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="05252096-ed87-4395-9d64-b9ac6b829774" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="af64e7a6-aab4-41af-8fc1-5e23c90a13d7" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="b1d8f4ac-93ef-4bec-b33b-d0a5faf1bd05" name="JobKOctets" clientDependency="57c07622-1bc1-424d-ade1-fc30df9cb8b0 830540d7-45a0-4f30-939f-93fe434dcf4e" isLeaf="true">
                <ownedComment xmi:id="ae2c9205-52f7-4e43-86fd-e3b142fd45e1" body="Class JobKOctets is an integer valued printing attribute class that specifies&#xA;the total size of the document(s) in K octets, i.e., in units of 1024 octets&#xA;requested to be processed in the job. The value must be rounded up, so that a&#xA;job between 1 and 1024 octets must be indicated as being 1K octets, 1025 to&#xA;2048 must be 2K octets, etc. For a multidoc print job (a job with multiple&#xA;documents), the JobKOctets value is computed by adding up the individual&#xA;documents' sizes in octets, then rounding up to the next K octets value.&#xA;&lt;P>&#xA;The JobKOctets attribute describes the size of the job. This attribute is not&#xA;intended to be a counter; it is intended to be useful routing and scheduling&#xA;information if known. The printer may try to compute the JobKOctets&#xA;attribute's value if it is not supplied in the Print Request. Even if the&#xA;client does supply a value for the JobKOctets attribute in the Print Request,&#xA;the printer may choose to change the value if the printer is able to compute&#xA;a value which is more accurate than the client supplied value. The printer&#xA;may be able to determine the correct value for the JobKOctets attribute&#xA;either right at job submission time or at any later point in time.&#xA;&lt;P>&#xA;The JobKOctets value must not include the multiplicative factors contributed&#xA;by the number of copies specified by the {@link Copies Copies} attribute,&#xA;independent of whether the device can process multiple copies without making&#xA;multiple passes over the job or document data and independent of whether the&#xA;output is collated or not. Thus the value is independent of the&#xA;implementation and indicates the size of the document(s) measured in K octets&#xA;independent of the number of copies.&#xA;&lt;P>&#xA;The JobKOctets value must also not include the multiplicative factor due to a&#xA;copies instruction embedded in the document data. If the document data&#xA;actually includes replications of the document data, this value will include&#xA;such replication. In other words, this value is always the size of the source&#xA;document data, rather than a measure of the hardcopy output to be produced.&#xA;&lt;P>&#xA;The size of a doc is computed based on the print data representation class as&#xA;specified by the doc's {@link javax.print.DocFlavor DocFlavor}, as&#xA;shown in the table below.&#xA;&lt;P>&#xA;&lt;TABLE BORDER=1 CELLPADDING=2 CELLSPACING=1 SUMMARY=&quot;Table showing computation of doc sizes&quot;>&#xA;&lt;TR BGCOLOR=&quot;#E5E5E5&quot;>&#xA;&lt;TH>Representation Class&lt;/TH>&#xA;&lt;TH>Document Size&lt;/TH>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>byte[]&lt;/TD>&#xA;&lt;TD>Length of the byte array&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>java.io.InputStream&lt;/TD>&#xA;&lt;TD>Number of bytes read from the stream&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>char[]&lt;/TD>&#xA;&lt;TD>Length of the character array x 2&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>java.lang.String&lt;/TD>&#xA;&lt;TD>Length of the string x 2&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>java.io.Reader&lt;/TD>&#xA;&lt;TD>Number of characters read from the stream x 2&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>java.net.URL&lt;/TD>&#xA;&lt;TD>Number of bytes read from the file at the given URL address&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>java.awt.image.renderable.RenderableImage&lt;/TD>&#xA;&lt;TD>Implementation dependent&amp;#42;&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>java.awt.print.Printable&lt;/TD>&#xA;&lt;TD>Implementation dependent&amp;#42;&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>java.awt.print.Pageable&lt;/TD>&#xA;&lt;TD>Implementation dependent&amp;#42;&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;/TABLE>&#xA;&lt;P>&#xA;&amp;#42; In these cases the Print Service itself generates the print data sent&#xA;to the printer. If the Print Service supports the JobKOctets attribute, for&#xA;these cases the Print Service itself must calculate the size of the print&#xA;data, replacing any JobKOctets value the client specified.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The integer value gives the IPP integer value. The&#xA;category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP attribute&#xA;name.&#xA;&lt;P>&#xA;&#xA;@see JobKOctetsSupported&#xA;@see JobKOctetsProcessed&#xA;@see JobImpressions&#xA;@see JobMediaSheets&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="b1d8f4ac-93ef-4bec-b33b-d0a5faf1bd05"/>
                <generalization xmi:id="44df54ad-7ee6-4d49-8c8c-03956c60e4a5" isSubstitutable="true" general="b9536239-4a63-43ae-8911-0d209f122530"/>
                <interfaceRealization xmi:id="830540d7-45a0-4f30-939f-93fe434dcf4e" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="b1d8f4ac-93ef-4bec-b33b-d0a5faf1bd05" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="57c07622-1bc1-424d-ade1-fc30df9cb8b0" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="b1d8f4ac-93ef-4bec-b33b-d0a5faf1bd05" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="e0a47d19-60dd-4865-83fa-5d410dd69652" name="JobImpressionsSupported" clientDependency="bfbb84cc-47f2-4993-94e4-db9fc7d7546b" isLeaf="true">
                <ownedComment xmi:id="16ddecd5-e236-4544-bdda-f12cc638271a" body="Class JobImpressionsSupported is a printing attribute class, a set of&#xA;integers, that gives the supported values for a {@link JobImpressions&#xA;JobImpressions} attribute. It is restricted to a single contiguous range of&#xA;integers; multiple non-overlapping ranges are not allowed. This gives the&#xA;lower and upper bounds of the total sizes of print jobs in number of&#xA;impressions that the printer will accept.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The JobImpressionsSupported attribute's canonical&#xA;array form gives the lower and upper bound for the range of values to be&#xA;included in an IPP &quot;job-impressions-supported&quot; attribute. See class {@link&#xA;javax.print.attribute.SetOfIntegerSyntax SetOfIntegerSyntax} for an&#xA;explanation of canonical array form. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="e0a47d19-60dd-4865-83fa-5d410dd69652"/>
                <generalization xmi:id="5ab20fe7-0fa3-4be1-8608-5dd3aa911cdd" isSubstitutable="true" general="f259e040-d34e-479f-a1f6-c30ae579e9be"/>
                <interfaceRealization xmi:id="bfbb84cc-47f2-4993-94e4-db9fc7d7546b" name="" supplier="c9b665c6-bcbc-4f69-902d-7d54772daf75" client="e0a47d19-60dd-4865-83fa-5d410dd69652" contract="c9b665c6-bcbc-4f69-902d-7d54772daf75"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="3500e52c-8616-49fd-9e25-31950553010d" name="JobPriority" clientDependency="021b444f-b4d7-4043-8abe-6d59133a52f1 d4fec3c4-f77c-4c43-ab7f-858651c4c489" isLeaf="true">
                <ownedComment xmi:id="d203496a-05f7-4dbe-8a50-cd20920c15f7" body="Class JobPriority is an integer valued printing attribute class that&#xA;specifies a print job's priority.&#xA;&lt;P>&#xA;If a JobPriority attribute is specified for a Print Job, it specifies a&#xA;priority for scheduling the job. A higher value specifies a higher priority.&#xA;The value 1 indicates the lowest possible priority. The value 100 indicates&#xA;the highest possible priority. Among those jobs that are ready to print, a&#xA;printer must print all jobs with a priority value of &lt;I>n&lt;/I> before printing&#xA;those with a priority value of &lt;I>n&lt;/I>-1 for all &lt;I>n.&lt;/I>&#xA;&lt;P>&#xA;If the client does not specify a JobPriority attribute for a Print Job and&#xA;the printer does support the JobPriority attribute, the printer must use an&#xA;implementation-defined default JobPriority value.&#xA;&lt;P>&#xA;The client can always specify any job priority value from 1 to 100 for a job.&#xA;However, a Print Service instance may support fewer than 100 different&#xA;job priority levels. If this is the case, the Print Service instance&#xA;automatically maps the client-specified job priority value to one of the&#xA;supported job priority levels, dividing the 100 job priority values equally&#xA;among the available job priority levels.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The integer value gives the IPP integer value. The&#xA;category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP attribute&#xA;name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="3500e52c-8616-49fd-9e25-31950553010d"/>
                <generalization xmi:id="208e1c5c-6a51-4604-91af-40565c0c6350" isSubstitutable="true" general="b9536239-4a63-43ae-8911-0d209f122530"/>
                <interfaceRealization xmi:id="021b444f-b4d7-4043-8abe-6d59133a52f1" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="3500e52c-8616-49fd-9e25-31950553010d" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="d4fec3c4-f77c-4c43-ab7f-858651c4c489" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="3500e52c-8616-49fd-9e25-31950553010d" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4b895c93-4bf8-4dc4-b94a-1f681754d93b" name="ColorSupported" clientDependency="7d4ef4d3-f9f8-4e97-87c7-c96cd4b378d4" isLeaf="true">
                <ownedComment xmi:id="e5dcd799-cc86-40b8-8108-cee743d17937" body="Class ColorSupported is a printing attribute class, an enumeration, that&#xA;identifies whether the device is capable of any type of color printing at&#xA;all, including highlight color as well as full process color. All document&#xA;instructions having to do with color are embedded within the print data (none&#xA;are attributes attached to the job outside the print data).&#xA;&lt;P>&#xA;Note: End users are able to determine the nature and details of the color&#xA;support by querying the {@link PrinterMoreInfoManufacturer&#xA;PrinterMoreInfoManufacturer} attribute.&#xA;&lt;P>&#xA;Don't confuse the ColorSupported attribute with the {@link Chromaticity&#xA;Chromaticity} attribute. {@link Chromaticity Chromaticity} is an attribute&#xA;the client can specify for a job to tell the printer whether to print a&#xA;document in monochrome or color, possibly causing the printer to print a&#xA;color document in monochrome. ColorSupported is a printer description&#xA;attribute that tells whether the printer can print in color regardless of how&#xA;the client specifies to print any particular document.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The IPP boolean value is &quot;true&quot; for SUPPORTED and&#xA;&quot;false&quot; for NOT_SUPPORTED. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> is the IPP attribute name.  The enumeration's&#xA;integer value is the IPP enum value.  The &lt;code>toString()&lt;/code> method&#xA;returns the IPP string representation of the attribute value.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="4b895c93-4bf8-4dc4-b94a-1f681754d93b"/>
                <generalization xmi:id="c45d877b-f133-4805-84b9-207046f6a57e" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="7d4ef4d3-f9f8-4e97-87c7-c96cd4b378d4" name="" supplier="d281a238-6e1f-44f5-a50e-db9f85d8500a" client="4b895c93-4bf8-4dc4-b94a-1f681754d93b" contract="d281a238-6e1f-44f5-a50e-db9f85d8500a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="be8475a8-6ee5-434e-808e-8be5d6e4bd3e" name="JobMediaSheetsCompleted" clientDependency="78fea34d-1735-4809-9a88-fcaddb841544" isLeaf="true">
                <ownedComment xmi:id="92ee0e1e-4261-4827-8ec6-0c0b336275bd" body="Class JobMediaSheetsCompleted is an integer valued printing attribute class&#xA;that specifies the number of media sheets which have completed marking and&#xA;stacking for the entire job so far, whether those sheets have been processed&#xA;on one side or on both.&#xA;&lt;P>&#xA;The JobMediaSheetsCompleted attribute describes the progress of the job. This&#xA;attribute is intended to be a counter. That is, the JobMediaSheetsCompleted&#xA;value for a job that has not started processing must be 0. When the job's&#xA;{@link JobState JobState} is PROCESSING or PROCESSING_STOPPED, the&#xA;JobMediaSheetsCompleted value is intended to increase as the job is&#xA;processed; it indicates the amount of the job that has been processed at the&#xA;time the Print Job's attribute set is queried or at the time a print job&#xA;event is reported. When the job enters the COMPLETED, CANCELED, or ABORTED&#xA;states, the JobMediaSheetsCompleted value is the final value for the job.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The integer value gives the IPP integer value. The&#xA;category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP attribute&#xA;name.&#xA;&lt;P>&#xA;&#xA;@see JobMediaSheets&#xA;@see JobMediaSheetsSupported&#xA;@see JobKOctetsProcessed&#xA;@see JobImpressionsCompleted&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="be8475a8-6ee5-434e-808e-8be5d6e4bd3e"/>
                <generalization xmi:id="ce0e7e94-552f-4609-9c18-38e1a3883991" isSubstitutable="true" general="b9536239-4a63-43ae-8911-0d209f122530"/>
                <interfaceRealization xmi:id="78fea34d-1735-4809-9a88-fcaddb841544" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="be8475a8-6ee5-434e-808e-8be5d6e4bd3e" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="951eb688-5a4f-4173-a23d-bac534f5c95b" name="HashSet&lt;JobStateReason>">
                <templateBinding xmi:id="e3ce22e5-5ce7-4a6f-8ca9-c83832c47d8d" signature="af53f731-06b5-4c72-89b7-0d926e6ae0ed">
                  <parameterSubstitution xmi:id="f4db96ea-5d33-4777-9f0b-d417f81384db" formal="2085b14e-400b-4bfa-9b43-1c1d57af47fe" actual="aca54d31-5b3a-4076-bc27-4a2e345d592e"/>
                </templateBinding>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="907f4077-d67b-4027-8382-73b954386bc0" name="NumberOfDocuments" clientDependency="61a6ae6a-8431-4a97-a805-559d1a29e482" isLeaf="true">
                <ownedComment xmi:id="0aabcf91-96ea-4787-969e-0a0333599aef" body="Class NumberOfDocuments is an integer valued printing attribute that&#xA;indicates the number of individual docs the printer has accepted for this&#xA;job, regardless of whether the docs' print data has reached the printer or&#xA;not.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The integer value gives the IPP integer value. The&#xA;category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP attribute&#xA;name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="907f4077-d67b-4027-8382-73b954386bc0"/>
                <generalization xmi:id="a27108fe-61e2-4a00-a827-3c069b5d400a" isSubstitutable="true" general="b9536239-4a63-43ae-8911-0d209f122530"/>
                <interfaceRealization xmi:id="61a6ae6a-8431-4a97-a805-559d1a29e482" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="907f4077-d67b-4027-8382-73b954386bc0" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="ad46e12b-fc21-4350-938c-92f333b4b728" name="SheetCollate" clientDependency="44a64b22-2b5f-4902-9f9b-54046a60f348 486f47d9-017a-433b-9d88-857866303e33 40317970-c55a-46a6-9b79-37064c6e9549" isLeaf="true">
                <ownedComment xmi:id="b5637041-ce21-4a75-8fd7-c9c6c7dadbe5" body="Class SheetCollate is a printing attribute class, an enumeration, that&#xA;specifies whether or not the media sheets of each copy of each printed&#xA;document in a job are to be in sequence, when multiple copies of the document&#xA;are specified by the {@link Copies Copies} attribute. When SheetCollate is&#xA;COLLATED, each copy of each document is printed with the print-stream sheets&#xA;in sequence. When SheetCollate is UNCOLLATED, each print-stream sheet is&#xA;printed a number of times equal to the value of the {@link Copies Copies}&#xA;attribute in succession. For example, suppose a document produces two media&#xA;sheets as output, {@link Copies Copies} is 6, and SheetCollate is UNCOLLATED;&#xA;in this case six copies of the first media sheet are printed followed by&#xA;six copies of the second media sheet.&#xA;&lt;P>&#xA;Whether the effect of sheet collation is achieved by placing copies of a&#xA;document in multiple output bins or in the same output bin with&#xA;implementation defined document separation is implementation dependent.&#xA;Also whether it is achieved by making multiple passes over the job or by&#xA;using an output sorter is implementation dependent.&#xA;&lt;P>&#xA;If a printer does not support the SheetCollate attribute (meaning the client&#xA;cannot specify any particular sheet collation), the printer must behave as&#xA;though SheetCollate were always set to COLLATED.&#xA;&lt;P>&#xA;The SheetCollate attribute interacts with the {@link MultipleDocumentHandling&#xA;MultipleDocumentHandling} attribute. The {@link MultipleDocumentHandling&#xA;MultipleDocumentHandling} attribute describes the collation of entire&#xA;documents, and the SheetCollate attribute describes the semantics of&#xA;collating individual pages within a document.&#xA;&lt;P>&#xA;The effect of a SheetCollate attribute on a multidoc print job (a job with&#xA;multiple documents) depends on whether all the docs have the same sheet&#xA;collation specified or whether different docs have different sheet&#xA;collations specified, and on the (perhaps defaulted) value of the {@link&#xA;MultipleDocumentHandling MultipleDocumentHandling} attribute.&#xA;&lt;UL>&#xA;&lt;LI>&#xA;If all the docs have the same sheet collation specified, then the following&#xA;combinations of SheetCollate and {@link MultipleDocumentHandling&#xA;MultipleDocumentHandling} are permitted, and the printer reports an error&#xA;when the job is submitted if any other combination is specified:&#xA;&lt;UL>&#xA;&lt;LI>&#xA;SheetCollate = COLLATED, {@link MultipleDocumentHandling&#xA;MultipleDocumentHandling} = SINGLE_DOCUMENT -- All the input docs will be&#xA;combined into one output document. Multiple copies of the output document&#xA;will be produced with pages in collated order, i.e. pages 1, 2, 3, . . .,&#xA;1, 2, 3, . . .&#xA;&lt;P>&#xA;&lt;LI>&#xA;SheetCollate = COLLATED, {@link MultipleDocumentHandling&#xA;MultipleDocumentHandling} = SINGLE_DOCUMENT_NEW_SHEET -- All the input docs&#xA;will be combined into one output document, and the first impression of each&#xA;input doc will always start on a new media sheet. Multiple copies of the&#xA;output document will be produced with pages in collated order, i.e. pages&#xA;1, 2, 3, . . ., 1, 2, 3, . . .&#xA;&lt;P>&#xA;&lt;LI>&#xA;SheetCollate = COLLATED, {@link MultipleDocumentHandling&#xA;MultipleDocumentHandling} = SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- Each&#xA;input doc will remain a separate output document. Multiple copies of each&#xA;output document (call them A, B, . . .) will be produced with each document's&#xA;pages in collated order, but the documents themselves in uncollated order,&#xA;i.e. pages A1, A2, A3, . . ., A1, A2, A3, . . ., B1, B2, B3, . . ., B1, B2,&#xA;B3, . . .&#xA;&lt;P>&#xA;&lt;LI>&#xA;SheetCollate = COLLATED, {@link MultipleDocumentHandling&#xA;MultipleDocumentHandling} = SEPARATE_DOCUMENTS_COLLATED_COPIES -- Each input&#xA;doc will remain a separate output document. Multiple copies of each output&#xA;document (call them A, B, . . .) will be produced with each document's pages&#xA;in collated order, with the documents themselves also in collated order, i.e.&#xA;pages A1, A2, A3, . . ., B1, B2, B3, . . ., A1, A2, A3, . . ., B1, B2, B3,&#xA;. . .&#xA;&lt;P>&#xA;&lt;LI>&#xA;SheetCollate = UNCOLLATED, {@link MultipleDocumentHandling&#xA;MultipleDocumentHandling} = SINGLE_DOCUMENT -- All the input docs will be&#xA;combined into one output document. Multiple copies of the output document&#xA;will be produced with pages in uncollated order, i.e. pages 1, 1, . . .,&#xA;2, 2, . . ., 3, 3, . . .&#xA;&lt;P>&#xA;&lt;LI>&#xA;SheetCollate = UNCOLLATED, {@link MultipleDocumentHandling&#xA;MultipleDocumentHandling} = SINGLE_DOCUMENT_NEW_SHEET -- All the input docs&#xA;will be combined into one output document, and the first impression of each&#xA;input doc will always start on a new media sheet. Multiple copies of the&#xA;output document will be produced with pages in uncollated order, i.e. pages&#xA;1, 1, . . ., 2, 2, . . ., 3, 3, . . .&#xA;&lt;P>&#xA;&lt;LI>&#xA;SheetCollate = UNCOLLATED, {@link MultipleDocumentHandling&#xA;MultipleDocumentHandling} = SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- Each&#xA;input doc will remain a separate output document. Multiple copies of each&#xA;output document (call them A, B, . . .) will be produced with each document's&#xA;pages in uncollated order, with the documents themselves also in uncollated&#xA;order, i.e. pages A1, A1, . . ., A2, A2, . . ., A3, A3, . . ., B1, B1, . . .,&#xA;B2, B2, . . ., B3, B3, . . .&#xA;&lt;/UL>&#xA;&lt;P>&#xA;&lt;LI>&#xA;If different docs have different sheet collations specified, then only one&#xA;value of {@link MultipleDocumentHandling MultipleDocumentHandling} is&#xA;permitted, and the printer reports an error when the job is submitted if any&#xA;other value is specified:&#xA;&lt;UL>&#xA;&lt;LI>&#xA;{@link MultipleDocumentHandling MultipleDocumentHandling} =&#xA;SEPARATE_DOCUMENTS_UNCOLLATED_COPIES -- Each input doc will remain a separate&#xA;output document. Multiple copies of each output document (call them A, B,&#xA;. . .) will be produced with each document's pages in collated or uncollated&#xA;order as the corresponding input doc's SheetCollate attribute specifies, and&#xA;with the documents themselves in uncollated order. If document A had&#xA;SheetCollate = UNCOLLATED and document B had SheetCollate = COLLATED, the&#xA;following pages would be produced: A1, A1, . . ., A2, A2, . . ., A3, A3,&#xA;. . ., B1, B2, B3, . . ., B1, B2, B3, . . .&#xA;&lt;/UL>&#xA;&lt;/UL>&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> SheetCollate is not an IPP attribute at present.&#xA;&lt;P>&#xA;&#xA;@see  MultipleDocumentHandling&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="ad46e12b-fc21-4350-938c-92f333b4b728"/>
                <generalization xmi:id="3fc4af6e-1063-4b8e-923a-d69317abde43" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="486f47d9-017a-433b-9d88-857866303e33" name="" supplier="d503a871-39df-47b0-a4af-635b1932e97c" client="ad46e12b-fc21-4350-938c-92f333b4b728" contract="d503a871-39df-47b0-a4af-635b1932e97c"/>
                <interfaceRealization xmi:id="40317970-c55a-46a6-9b79-37064c6e9549" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="ad46e12b-fc21-4350-938c-92f333b4b728" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="44a64b22-2b5f-4902-9f9b-54046a60f348" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="ad46e12b-fc21-4350-938c-92f333b4b728" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="178edcc4-f626-487d-a9bf-b3ed50a1e9e6" name="CopiesSupported" clientDependency="ebc536bd-983e-4b66-894a-4a8807ded9c9" isLeaf="true">
                <ownedComment xmi:id="58cf6294-bd7b-424b-9528-9b656376c88f" body="Class CopiesSupported is a printing attribute class, a set of integers, that&#xA;gives the supported values for a {@link Copies Copies} attribute. It is&#xA;restricted to a single contiguous range of integers; multiple non-overlapping&#xA;ranges are not allowed.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The CopiesSupported attribute's canonical array&#xA;form gives the lower and upper bound for the range of copies to be included&#xA;in an IPP &quot;copies-supported&quot; attribute. See class {@link&#xA;javax.print.attribute.SetOfIntegerSyntax SetOfIntegerSyntax} for an&#xA;explanation of canonical array form. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="178edcc4-f626-487d-a9bf-b3ed50a1e9e6"/>
                <generalization xmi:id="3e234516-6db6-496d-aaf1-7a9252f9243a" isSubstitutable="true" general="f259e040-d34e-479f-a1f6-c30ae579e9be"/>
                <interfaceRealization xmi:id="ebc536bd-983e-4b66-894a-4a8807ded9c9" name="" supplier="c9b665c6-bcbc-4f69-902d-7d54772daf75" client="178edcc4-f626-487d-a9bf-b3ed50a1e9e6" contract="c9b665c6-bcbc-4f69-902d-7d54772daf75"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="c94ae2b9-7478-4850-a1a9-c18968d200a6" name="DateTimeAtCompleted" clientDependency="e302e761-bf0b-4f26-ab77-8fd2033e2c63" isLeaf="true">
                <ownedComment xmi:id="4d3ee0e4-3580-4c40-91f9-854f7821d39c" body="Class DateTimeAtCompleted is a printing attribute class, a date-time&#xA;attribute, that indicates the date and time at which the Print Job completed&#xA;(or was canceled or aborted).&#xA;&lt;P>&#xA;To construct a DateTimeAtCompleted attribute from separate values of the&#xA;year, month, day, hour, minute, and so on, use a {@link java.util.Calendar&#xA;Calendar} object to construct a {@link java.util.Date Date} object, then use&#xA;the {@link java.util.Date Date} object to construct the DateTimeAtCompleted&#xA;attribute. To convert a DateTimeAtCompleted attribute to separate values of&#xA;the year, month, day, hour, minute, and so on, create a {@link&#xA;java.util.Calendar Calendar} object and set it to the {@link java.util.Date&#xA;Date} from the DateTimeAtCompleted attribute.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The information needed to construct an IPP&#xA;&quot;date-time-at-completed&quot; attribute can be obtained as described above. The&#xA;category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP attribute&#xA;name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="c94ae2b9-7478-4850-a1a9-c18968d200a6"/>
                <generalization xmi:id="de47990f-74e5-4b34-9608-eefbcc7e3fd3" isSubstitutable="true" general="bb53d781-f9dc-40de-953e-72e2be17289b"/>
                <interfaceRealization xmi:id="e302e761-bf0b-4f26-ab77-8fd2033e2c63" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="c94ae2b9-7478-4850-a1a9-c18968d200a6" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="857dd703-e3a1-46b8-85af-ca17358b3393" name="NumberOfInterveningJobs" clientDependency="d52a1d1e-9ccc-458f-b281-4b3ab66e9b04" isLeaf="true">
                <ownedComment xmi:id="7388f030-5027-4763-b668-912a22bd300b" body="Class NumberOfInterveningJobs is an integer valued printing attribute that&#xA;indicates the number of jobs that are ahead of this job in the relative&#xA;chronological order of expected time to complete (i.e., the current&#xA;scheduled order).&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The integer value gives the IPP integer value.&#xA;The category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP&#xA;attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="857dd703-e3a1-46b8-85af-ca17358b3393"/>
                <generalization xmi:id="1c9ec696-d8dc-4c15-8bc9-501162017f4f" isSubstitutable="true" general="b9536239-4a63-43ae-8911-0d209f122530"/>
                <interfaceRealization xmi:id="d52a1d1e-9ccc-458f-b281-4b3ab66e9b04" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="857dd703-e3a1-46b8-85af-ca17358b3393" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="07a9f210-f09e-4478-a6b6-14fa2533b153" name="RequestingUserName" clientDependency="018a41e5-5e03-40f4-8402-9703a17a1a8a" isLeaf="true">
                <ownedComment xmi:id="babb8255-3e38-4779-babb-440dfa26696b" body="Class RequestingUserName is a printing attribute class, a text attribute,&#xA;that specifies the name of the end user that submitted the print job. A&#xA;requesting user name is an arbitrary string defined by the client. The&#xA;printer does not put the client-specified RequestingUserName attribute into&#xA;the Print Job's attribute set; rather, the printer puts in a {@link&#xA;JobOriginatingUserName JobOriginatingUserName} attribute.&#xA;This means that services which support specifying a username with this&#xA;attribute should also report a JobOriginatingUserName in the job's&#xA;attribute set. Note that many print services may have a way to independently&#xA;authenticate the user name, and so may state support for a&#xA;requesting user name, but in practice will then report the user name&#xA;authenticated by the service rather than that specified via this&#xA;attribute.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The string value gives the IPP name value. The&#xA;locale gives the IPP natural language. The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> gives the IPP attribute name.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="07a9f210-f09e-4478-a6b6-14fa2533b153"/>
                <generalization xmi:id="4faee18b-3cae-41c9-a039-e8f1911c6b9d" isSubstitutable="true" general="3c1b1456-7781-4c4f-bbbc-e770265ee9dc"/>
                <interfaceRealization xmi:id="018a41e5-5e03-40f4-8402-9703a17a1a8a" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="07a9f210-f09e-4478-a6b6-14fa2533b153" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="da9ba603-336b-4873-b972-56ac1cf81918" name="JobKOctetsProcessed" clientDependency="3c35389c-e74d-4fcd-8426-a6cfa5153b4b" isLeaf="true">
                <ownedComment xmi:id="0bc30805-c6f6-4245-9375-3d0495254025" body="Class JobKOctetsProcessed is an integer valued printing attribute class that&#xA;specifies the total number of print data octets processed so far in K octets,&#xA;i.e., in units of 1024 octets. The value must be rounded up, so that a job&#xA;between 1 and 1024 octets inclusive must be indicated as being 1K octets,&#xA;1025 to 2048 inclusive must be 2K, etc. For a multidoc print job (a job with&#xA;multiple documents), the JobKOctetsProcessed value is computed by adding up&#xA;the individual documents' number of octets processed so far, then rounding up&#xA;to the next K octets value.&#xA;&lt;P>&#xA;The JobKOctetsProcessed attribute describes the progress of the job. This&#xA;attribute is intended to be a counter. That is, the JobKOctetsProcessed value&#xA;for a job that has not started processing must be 0. When the job's {@link&#xA;JobState JobState} is PROCESSING or PROCESSING_STOPPED, the&#xA;JobKOctetsProcessed value is intended to increase as the job is processed; it&#xA;indicates the amount of the job that has been processed at the time the Print&#xA;Job's attribute set is queried or at the time a print job event is reported.&#xA;When the job enters the COMPLETED, CANCELED, or ABORTED states, the&#xA;JobKOctetsProcessed value is the final value for the job.&#xA;&lt;P>&#xA;For implementations where multiple copies are produced by the interpreter&#xA;with only a single pass over the data, the final value of the&#xA;JobKOctetsProcessed attribute must be equal to the value of the {@link&#xA;JobKOctets JobKOctets} attribute. For implementations where multiple copies&#xA;are produced by the interpreter by processing the data for each copy, the&#xA;final value must be a multiple of the value of the {@link JobKOctets&#xA;JobKOctets} attribute.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The integer value gives the IPP integer value. The&#xA;category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP attribute&#xA;name.&#xA;&lt;P>&#xA;&#xA;@see JobKOctets&#xA;@see JobKOctetsSupported&#xA;@see JobImpressionsCompleted&#xA;@see JobMediaSheetsCompleted&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="da9ba603-336b-4873-b972-56ac1cf81918"/>
                <generalization xmi:id="2f58f9c8-cc74-4403-85df-f177a3245a73" isSubstitutable="true" general="b9536239-4a63-43ae-8911-0d209f122530"/>
                <interfaceRealization xmi:id="3c35389c-e74d-4fcd-8426-a6cfa5153b4b" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="da9ba603-336b-4873-b972-56ac1cf81918" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="9dfc02dc-60f1-4762-9dda-755ca0864c00" name="JobSheets" clientDependency="3ce84086-e0d2-4365-b268-332bdd0268c0 9a2e8572-9c77-404c-a91e-90c115426cf7">
                <ownedComment xmi:id="a89821db-5fbf-4a9f-8eb3-b8e5a2b83422" body="Class JobSheets is a printing attribute class, an enumeration, that&#xA;determines which job start and end sheets, if any, must be printed with a&#xA;job. Class JobSheets declares keywords for standard job sheets values.&#xA;Implementation- or site-defined names for a job sheets attribute may also be&#xA;created by defining a subclass of class JobSheets.&#xA;&lt;P>&#xA;The effect of a JobSheets attribute on multidoc print jobs (jobs with&#xA;multiple documents) may be affected by the {@link MultipleDocumentHandling&#xA;MultipleDocumentHandling} job attribute, depending on the meaning of the&#xA;particular JobSheets value.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B>  The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> is the IPP attribute name.  The&#xA;enumeration's integer value is the IPP enum value.  The&#xA;&lt;code>toString()&lt;/code> method returns the IPP string representation of&#xA;the attribute value. For a subclass, the attribute value must be&#xA;localized to give the IPP name and natural language values.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="9dfc02dc-60f1-4762-9dda-755ca0864c00"/>
                <generalization xmi:id="e272916a-6a13-4945-b1c9-82794cd3cf2b" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="3ce84086-e0d2-4365-b268-332bdd0268c0" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="9dfc02dc-60f1-4762-9dda-755ca0864c00" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="9a2e8572-9c77-404c-a91e-90c115426cf7" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="9dfc02dc-60f1-4762-9dda-755ca0864c00" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="432423c8-a017-4a91-b105-4ddb9df99e08" name="JobMediaSheets" clientDependency="55b0effc-9f68-49d6-bcbf-ed89ccf1090b aec439f6-1c60-4efe-9437-1b53f2af6494">
                <ownedComment xmi:id="0eb3859e-5b9f-4fdd-a4ef-92d094fc5c91" body="Class JobMediaSheets is an integer valued printing attribute class that&#xA;specifies the total number of media sheets to be produced for this job.&#xA;&lt;P>&#xA;The JobMediaSheets attribute describes the size of the job. This attribute is&#xA;not intended to be a counter; it is intended to be useful routing and&#xA;scheduling information if known. The printer may try to compute the&#xA;JobMediaSheets attribute's value if it is not supplied in the Print Request.&#xA;Even if the client does supply a value for the JobMediaSheets attribute in&#xA;the Print Request, the printer may choose to change the value if the printer&#xA;is able to compute a value which is more accurate than the client supplied&#xA;value. The printer may be able to determine the correct value for the&#xA;JobMediaSheets attribute either right at job submission time or at any later&#xA;point in time.&#xA;&lt;P>&#xA;Unlike the {@link JobKOctets JobKOctets} and {@link JobImpressions&#xA;JobImpressions} attributes, the JobMediaSheets value must include the&#xA;multiplicative factors contributed by the number of copies specified by the&#xA;{@link Copies Copies} attribute and a &quot;number of copies&quot; instruction embedded&#xA;in the document data, if any. This difference allows the system administrator&#xA;to control the lower and upper bounds of both (1) the size of the document(s)&#xA;with {@link JobKOctetsSupported JobKOctetsSupported} and {@link&#xA;JobImpressionsSupported JobImpressionsSupported} and (2) the size of the job&#xA;with {@link JobMediaSheetsSupported JobMediaSheetsSupported}.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The integer value gives the IPP integer value. The&#xA;category name returned by &lt;CODE>getName()&lt;/CODE> gives the IPP attribute&#xA;name.&#xA;&lt;P>&#xA;&#xA;@see JobMediaSheetsSupported&#xA;@see JobMediaSheetsCompleted&#xA;@see JobKOctets&#xA;@see JobImpressions&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="432423c8-a017-4a91-b105-4ddb9df99e08"/>
                <generalization xmi:id="5e8f643b-cec1-4d49-a684-35c68c782f9e" isSubstitutable="true" general="b9536239-4a63-43ae-8911-0d209f122530"/>
                <interfaceRealization xmi:id="55b0effc-9f68-49d6-bcbf-ed89ccf1090b" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="432423c8-a017-4a91-b105-4ddb9df99e08" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="aec439f6-1c60-4efe-9437-1b53f2af6494" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="432423c8-a017-4a91-b105-4ddb9df99e08" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4672ee9a-aeab-409f-b6c5-fecf1c5a2cc0" name="Compression" clientDependency="6c7d68a1-3cc3-4273-86fc-9ff71c13c9f8">
                <ownedComment xmi:id="64a2f888-d921-4b64-a730-27ef3f428865" body="Class Compression is a printing attribute class, an enumeration, that&#xA;specifies how print data is compressed. Compression is an attribute of the&#xA;print data (the doc), not of the Print Job. If a Compression attribute is not&#xA;specified for a doc, the printer assumes the doc's print data is uncompressed&#xA;(i.e., the default Compression value is always {@link #NONE&#xA;&lt;CODE>NONE&lt;/CODE>}).&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> is the IPP attribute name.  The enumeration's&#xA;integer value is the IPP enum value.  The &lt;code>toString()&lt;/code> method&#xA;returns the IPP string representation of the attribute value.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="4672ee9a-aeab-409f-b6c5-fecf1c5a2cc0"/>
                <generalization xmi:id="f4e6a359-cbf9-47b2-995a-be7ae4209a3a" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="6c7d68a1-3cc3-4273-86fc-9ff71c13c9f8" name="" supplier="d503a871-39df-47b0-a4af-635b1932e97c" client="4672ee9a-aeab-409f-b6c5-fecf1c5a2cc0" contract="d503a871-39df-47b0-a4af-635b1932e97c"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="c97a7669-e96c-426a-984c-4291c324642c" name="MultipleDocumentHandling" clientDependency="53d025fd-7e01-41b8-ab0a-2b64d32f325d d33b6fcf-bd8b-4217-a3fd-8b315a1c1471">
                <ownedComment xmi:id="794295bf-a76a-488d-b7dd-a4575b64ae50" body="Class MultipleDocumentHandling is a printing attribute class, an enumeration,&#xA;that controls finishing operations and the placement of one or more&#xA;print-stream pages into impressions and onto media sheets. When the value of&#xA;the {@link Copies Copies} attribute exceeds 1, MultipleDocumentHandling also&#xA;controls the order in which the copies that result from processing the&#xA;documents are produced. This attribute is relevant only for a multidoc print&#xA;job consisting of two or more individual docs.&#xA;&lt;P>&#xA;Briefly, MultipleDocumentHandling determines the relationship between the&#xA;multiple input (electronic) documents fed into a multidoc print job and the&#xA;output (physical) document or documents produced by the multidoc print job.&#xA;There are two possibilities:&#xA;&lt;UL>&#xA;&lt;LI>&#xA;The multiple input documents are combined into a single output document.&#xA;Finishing operations ({@link Finishings Finishings}),&#xA;are performed on this single output&#xA;document. The {@link Copies Copies} attribute tells how many copies of this&#xA;single output document to produce. The MultipleDocumentHandling values&#xA;SINGLE_DOCUMENT and SINGLE_DOCUMENT_NEW_SHEET specify two variations of&#xA;this  possibility.&#xA;&lt;P>&#xA;&lt;LI>&#xA;The multiple input documents remain separate output documents. Finishing&#xA;operations ({@link Finishings Finishings}),&#xA;are performed on each output document&#xA;separately. The {@link Copies Copies} attribute tells how many copies of each&#xA;separate output document to produce. The MultipleDocumentHandling values&#xA;SEPARATE_DOCUMENTS_UNCOLLATED_COPIES and SEPARATE_DOCUMENTS_COLLATED_COPIES&#xA;specify two variations of this possibility.&#xA;&lt;/UL>&#xA;&lt;P>&#xA;In the detailed explanations below, if &quot;&lt;CODE>a&lt;/CODE>&quot; represents an&#xA;instance of document data, then the result of processing the data in&#xA;document &quot;&lt;CODE>a&lt;/CODE>&quot; is a sequence of media sheets represented by&#xA;&quot;&lt;CODE>a(*)&lt;/CODE>&quot;.&#xA;&lt;P>&#xA;The standard MultipleDocumentHandling values are:&#xA;&lt;UL>&#xA;&lt;LI>&#xA;&lt;A NAME=&quot;sdfi&quot;>{@link #SINGLE_DOCUMENT&#xA;&lt;B>&lt;CODE>SINGLE_DOCUMENT&lt;/CODE>&lt;/B>}&lt;/A>. If a print job has multiple&#xA;documents -- say, the document data is called &lt;CODE>a&lt;/CODE> and&#xA;&lt;CODE>b&lt;/CODE> -- then the result of processing all the document data&#xA;(&lt;CODE>a&lt;/CODE> and then &lt;CODE>b&lt;/CODE>) must be treated as a single sequence&#xA;of media sheets for finishing operations; that is, finishing would be&#xA;performed on the concatenation of the sequences &lt;CODE>a(*),b(*)&lt;/CODE>. The&#xA;printer must not force the data in each document instance to be formatted&#xA;onto a new print-stream page, nor to start a new impression on a new media&#xA;sheet. If more than one copy is made, the ordering of the sets of media&#xA;sheets resulting from processing the document data must be&#xA;&lt;CODE>a(*),b(*),a(*),b(*),...&lt;/CODE>, and the printer object must force&#xA;each copy (&lt;CODE>a(*),b(*)&lt;/CODE>) to start on a new media sheet.&#xA;&lt;P>&#xA;&lt;LI>&#xA;&lt;A NAME=&quot;sducfi&quot;>{@link #SEPARATE_DOCUMENTS_UNCOLLATED_COPIES&#xA;&lt;B>&lt;CODE>SEPARATE_DOCUMENTS_UNCOLLATED_COPIES&lt;/CODE>&lt;/B>}&lt;/A>. If a print job&#xA;has multiple documents -- say, the document data is called &lt;CODE>a&lt;/CODE> and&#xA;&lt;CODE>b&lt;/CODE> -- then the result of processing the data in each document&#xA;instance must be treated as a single sequence of media sheets for finishing&#xA;operations; that is, the sets &lt;CODE>a(*)&lt;/CODE> and &lt;CODE>b(*)&lt;/CODE> would&#xA;each be finished separately. The printer must force each copy of the result&#xA;of processing the data in a single document to start on a new media sheet.&#xA;If more than one copy is made, the ordering of the sets of media sheets&#xA;resulting from processing the document data must be&#xA;&lt;CODE>a(*),a(*),...,b(*),b(*)...&lt;/CODE>.&#xA;&lt;P>&#xA;&lt;LI>&#xA;&lt;A NAME=&quot;sdccfi&quot;>{@link #SEPARATE_DOCUMENTS_COLLATED_COPIES&#xA;&lt;B>&lt;CODE>SEPARATE_DOCUMENTS_COLLATED_COPIES&lt;/CODE>&lt;/B>}&lt;/A>. If a print job&#xA;has multiple documents -- say, the document data is called &lt;CODE>a&lt;/CODE> and&#xA;&lt;CODE>b&lt;/CODE> -- then the result of processing the data in each document&#xA;instance must be treated as a single sequence of media sheets for finishing&#xA;operations; that is, the sets &lt;CODE>a(*)&lt;/CODE> and &lt;CODE>b(*)&lt;/CODE> would&#xA;each be finished separately. The printer must force each copy of the result&#xA;of processing the data in a single document to start on a new media sheet.&#xA;If more than one copy is made, the ordering of the sets of media sheets&#xA;resulting from processing the document data must be&#xA;&lt;CODE>a(*),b(*),a(*),b(*),...&lt;/CODE>.&#xA;&lt;P>&#xA;&lt;LI>&#xA;&lt;A NAME=&quot;sdnsfi&quot;>{@link #SINGLE_DOCUMENT_NEW_SHEET&#xA;&lt;B>&lt;CODE>SINGLE_DOCUMENT_NEW_SHEET&lt;/CODE>&lt;/B>}&lt;/A>. Same as SINGLE_DOCUMENT,&#xA;except that the printer must ensure that the first impression of each&#xA;document instance in the job is placed on a new media sheet. This value&#xA;allows multiple documents to be stapled together with a single staple where&#xA;each document starts on a new sheet.&#xA;&lt;/UL>&#xA;&lt;P>&#xA;SINGLE_DOCUMENT is the same as SEPARATE_DOCUMENTS_COLLATED_COPIES with&#xA;respect to ordering of print-stream pages, but not media sheet generation,&#xA;since SINGLE_DOCUMENT will put the first page of the next document on the&#xA;back side of a sheet if an odd number of pages have been produced so far&#xA;for the job, while SEPARATE_DOCUMENTS_COLLATED_COPIES always forces the&#xA;next document or document copy on to a new sheet.&#xA;&lt;P>&#xA;In addition, if a {@link Finishings Finishings} attribute of&#xA;{@link Finishings#STAPLE &lt;CODE>STAPLE&lt;/CODE>} is specified, then:&#xA;&lt;UL>&#xA;&lt;LI>&#xA;With SINGLE_DOCUMENT, documents &lt;CODE>a&lt;/CODE> and &lt;CODE>b&lt;/CODE> are&#xA;stapled together as a single document with no regard to new sheets.&#xA;&lt;P>&#xA;&lt;LI>&#xA;With SINGLE_DOCUMENT_NEW_SHEET, documents &lt;CODE>a&lt;/CODE> and &lt;CODE>b&lt;/CODE>&#xA;are stapled together as a single document, but document &lt;CODE>b&lt;/CODE>&#xA;starts on a new sheet.&#xA;&lt;P>&#xA;&lt;LI>&#xA;With SEPARATE_DOCUMENTS_UNCOLLATED_COPIES and&#xA;SEPARATE_DOCUMENTS_COLLATED_COPIES, documents &lt;CODE>a&lt;/CODE> and&#xA;&lt;CODE>b&lt;/CODE> are stapled separately.&#xA;&lt;/UL>&#xA;&lt;P>&#xA;&lt;I>Note:&lt;/I> None of these values provide means to produce uncollated&#xA;sheets within a document, i.e., where multiple copies of sheet &lt;I>n&lt;/I>&#xA;are produced before sheet &lt;I>n&lt;/I>+1 of the same document.&#xA;To specify that, see the {@link SheetCollate SheetCollate} attribute.&#xA;&lt;P>&#xA;&lt;B>IPP Compatibility:&lt;/B> The category name returned by&#xA;&lt;CODE>getName()&lt;/CODE> is the IPP attribute name.  The enumeration's&#xA;integer value is the IPP enum value.  The &lt;code>toString()&lt;/code> method&#xA;returns the IPP string representation of the attribute value.&#xA;&lt;P>&#xA;&#xA;@see  Copies&#xA;@see  Finishings&#xA;@see  NumberUp&#xA;@see  PageRanges&#xA;@see  SheetCollate&#xA;@see  Sides&#xA;&#xA;@author  David Mendenhall&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="c97a7669-e96c-426a-984c-4291c324642c"/>
                <generalization xmi:id="9ba3955d-fbfb-42b1-86ce-ab30466d82c2" isSubstitutable="true" general="2843ae5a-9b8a-4ac6-8e4f-69cfba6eeb0a"/>
                <interfaceRealization xmi:id="53d025fd-7e01-41b8-ab0a-2b64d32f325d" name="" supplier="ce2f3645-2145-4013-83b5-605253a17b82" client="c97a7669-e96c-426a-984c-4291c324642c" contract="ce2f3645-2145-4013-83b5-605253a17b82"/>
                <interfaceRealization xmi:id="d33b6fcf-bd8b-4217-a3fd-8b315a1c1471" name="" supplier="8d539910-38d8-47ff-bf19-0e21d741d2a8" client="c97a7669-e96c-426a-984c-4291c324642c" contract="8d539910-38d8-47ff-bf19-0e21d741d2a8"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="12bfc31c-7bd0-441c-b85a-4c4a476f8dee" name="HashDocAttributeSet" clientDependency="448fbedf-cc1b-40b8-b662-491fa19582b4 978c6ecc-dfc1-4198-9651-55f534ad7cd7">
              <ownedComment xmi:id="58ad31eb-74e9-4cd1-8db9-1de9dd0e58ec" body="Class HashDocAttributeSet provides an attribute set which&#xA;inherits its implementation from class {@link HashAttributeSet&#xA;HashAttributeSet} and enforces the semantic restrictions of interface {@link&#xA;DocAttributeSet DocAttributeSet}.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="12bfc31c-7bd0-441c-b85a-4c4a476f8dee"/>
              <generalization xmi:id="9ee53d89-86c3-431d-b934-9b344dd39a95" isSubstitutable="true" general="55e98d4f-a0f9-44f2-9449-59a32d1c196d"/>
              <interfaceRealization xmi:id="448fbedf-cc1b-40b8-b662-491fa19582b4" name="" supplier="d5dc0f81-7807-4f36-a20a-01c05a1a93bb" client="12bfc31c-7bd0-441c-b85a-4c4a476f8dee" contract="d5dc0f81-7807-4f36-a20a-01c05a1a93bb"/>
              <interfaceRealization xmi:id="978c6ecc-dfc1-4198-9651-55f534ad7cd7" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="12bfc31c-7bd0-441c-b85a-4c4a476f8dee" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="ce2f3645-2145-4013-83b5-605253a17b82" name="PrintRequestAttribute" isAbstract="true">
              <ownedComment xmi:id="1fc4d591-c41b-4b29-a38d-5b31d28bff99" body="Interface PrintRequestAttribute is a tagging interface which a printing&#xA;attribute class implements to indicate the attribute denotes a&#xA;requested setting for a print job.&#xA;&lt;p>&#xA;Attributes which are tagged with PrintRequestAttribute and are also tagged&#xA;as PrintJobAttribute, represent the subset of job attributes which&#xA;can be part of the specification of a job request.&#xA;&lt;p>&#xA;If an attribute implements {@link DocAttribute  DocAttribute}&#xA;as well as PrintRequestAttribute, the client may include the&#xA;attribute in a &lt;code>Doc&lt;/code>}'s attribute set to specify&#xA;a job setting which pertains just to that doc.&#xA;&lt;P>&#xA;&#xA;@see DocAttributeSet&#xA;@see PrintRequestAttributeSet&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="ce2f3645-2145-4013-83b5-605253a17b82"/>
              <generalization xmi:id="d7774f09-d3fe-4a60-ac77-27b009a0c49b" isSubstitutable="true" general="f5d83b82-5e71-4e6d-bf06-b7bc3a62a4dc"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7a45a296-25c7-4088-a145-9bb91927cc05" name="UnmodifiableSetException">
              <ownedComment xmi:id="14826d7c-ce02-42ea-9103-aec9c107e44f" body="Thrown to indicate that the requested operation cannot be performed&#xA;becasue the set is unmodifiable.&#xA;&#xA;@author  Phil Race&#xA;@since   1.4&#xA;" annotatedElement="7a45a296-25c7-4088-a145-9bb91927cc05"/>
              <generalization xmi:id="aff65a75-e467-470c-916b-66551771f0cc" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="69e76e1d-9456-478d-bd57-458558ad6694" name="PrintException">
            <ownedComment xmi:id="fd386c99-a4c6-4ff8-b54a-ff7024785c78" body="Class PrintException encapsulates a printing-related error condition that&#xA;occurred while using a Print Service instance. This base class&#xA;furnishes only a string description of the error. Subclasses furnish more&#xA;detailed information if applicable.&#xA;&#xA;" annotatedElement="69e76e1d-9456-478d-bd57-458558ad6694"/>
            <generalization xmi:id="7e8ab8fe-72d1-44e1-879f-0475d0312600" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4c26dec0-0708-4686-a673-9e2a6c8d94e7" name="MimeType" visibility="package" clientDependency="5e9c294c-b9ea-4103-a288-2bde03203e40 96a719e3-d3a5-4e32-9321-487855994173">
            <ownedComment xmi:id="9d91bcc7-2cb5-4715-acc3-047c63c14588" body="Class MimeType encapsulates a Multipurpose Internet Mail Extensions (MIME)&#xA;media type as defined in &lt;A HREF=&quot;http://www.ietf.org/rfc/rfc2045.txt&quot;>RFC&#xA;2045&lt;/A> and &lt;A HREF=&quot;http://www.ietf.org/rfc/rfc2046.txt&quot;>RFC 2046&lt;/A>. A&#xA;MIME type object is part of a {@link DocFlavor DocFlavor} object and&#xA;specifies the format of the print data.&#xA;&lt;P>&#xA;Class MimeType is similar to the like-named&#xA;class in package {@link java.awt.datatransfer java.awt.datatransfer}. Class&#xA;java.awt.datatransfer.MimeType is not used in the Jini Print Service API&#xA;for two reasons:&#xA;&lt;OL TYPE=1>&#xA;&lt;LI>&#xA;Since not all Java profiles include the AWT, the Jini Print Service should&#xA;not depend on an AWT class.&#xA;&lt;P>&#xA;&lt;LI>&#xA;The implementation of class java.awt.datatransfer.MimeType does not&#xA;guarantee&#xA;that equivalent MIME types will have the same serialized representation.&#xA;Thus, since the Jini Lookup Service (JLUS) matches service attributes based&#xA;on equality of serialized representations, JLUS searches involving MIME&#xA;types encapsulated in class java.awt.datatransfer.MimeType may incorrectly&#xA;fail to match.&#xA;&lt;/OL>&#xA;&lt;P>&#xA;Class MimeType's serialized representation is based on the following&#xA;canonical form of a MIME type string. Thus, two MIME types that are not&#xA;identical but that are equivalent (that have the same canonical form) will&#xA;be considered equal by the JLUS's matching algorithm.&#xA;&lt;UL>&#xA;&lt;LI> The media type, media subtype, and parameters are retained, but all&#xA;comments and whitespace characters are discarded.&#xA;&lt;LI> The media type, media subtype, and parameter names are converted to&#xA;lowercase.&#xA;&lt;LI> The parameter values retain their original case, except a charset&#xA;parameter value for a text media type is converted to lowercase.&#xA;&lt;LI> Quote characters surrounding parameter values are removed.&#xA;&lt;LI> Quoting backslash characters inside parameter values are removed.&#xA;&lt;LI> The parameters are arranged in ascending order of parameter name.&#xA;&lt;/UL>&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="4c26dec0-0708-4686-a673-9e2a6c8d94e7"/>
            <interfaceRealization xmi:id="5e9c294c-b9ea-4103-a288-2bde03203e40" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4c26dec0-0708-4686-a673-9e2a6c8d94e7" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="96a719e3-d3a5-4e32-9321-487855994173" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="4c26dec0-0708-4686-a673-9e2a6c8d94e7" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8869062b-4287-4f34-aa21-bb6ae105490b" name="ParameterMapEntry" visibility="private" clientDependency="7d6b035d-fa7a-4359-ab28-afd627424a42">
              <ownedComment xmi:id="8173785b-94f1-414d-a61a-b5bba2dc55ef" body="Parameter map entry.&#xA;" annotatedElement="8869062b-4287-4f34-aa21-bb6ae105490b"/>
              <interfaceRealization xmi:id="7d6b035d-fa7a-4359-ab28-afd627424a42" name="" supplier="a2cdcc48-3430-4b6f-bc4f-d86c794149f7" client="8869062b-4287-4f34-aa21-bb6ae105490b" contract="a2cdcc48-3430-4b6f-bc4f-d86c794149f7"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="b00b4275-381d-479a-bebe-20034d17c3a7" name="ParameterMapEntrySetIterator" visibility="private" clientDependency="a527bfef-beff-4136-81f7-1b2b9040f5e5">
              <ownedComment xmi:id="59eb48bc-4a33-4681-80f8-df2f8f24f953" body="Parameter map entry set iterator.&#xA;" annotatedElement="b00b4275-381d-479a-bebe-20034d17c3a7"/>
              <interfaceRealization xmi:id="a527bfef-beff-4136-81f7-1b2b9040f5e5" name="" supplier="68be2fb3-d9b5-43e8-ba81-15535e34b87a" client="b00b4275-381d-479a-bebe-20034d17c3a7" contract="68be2fb3-d9b5-43e8-ba81-15535e34b87a"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="764072a7-ca32-4b2a-a454-2398533c56b2" name="ParameterMapEntrySet" visibility="private">
              <ownedComment xmi:id="15f78082-71f4-44c9-9b26-f17d244e6784" body="Parameter map entry set.&#xA;" annotatedElement="764072a7-ca32-4b2a-a454-2398533c56b2"/>
              <generalization xmi:id="efbf95ca-c1d1-41fc-b075-c4df44eeac24" isSubstitutable="true" general="a44e7a8f-24fa-45cd-b665-af0b7a72a836"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="80f7cb9e-ffb0-4f82-8d5f-6c0ea4d27732" name="ParameterMap" visibility="private">
              <ownedComment xmi:id="5047a58f-a0ee-433e-a448-96446b4bcbdf" body="Parameter map.&#xA;" annotatedElement="80f7cb9e-ffb0-4f82-8d5f-6c0ea4d27732"/>
              <generalization xmi:id="ad33292b-ea88-435c-9d95-67dac3542a70" isSubstitutable="true" general="d9945d13-2c71-40ef-92d7-af521893cdbf"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="61964961-afb1-4034-94b8-5ae0a3c191c6" name="LexicalAnalyzer" visibility="private"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c8cd60fc-57ba-43a8-9276-65f17f6ac8a8" name="DocFlavor" clientDependency="6b971544-810e-4821-a412-c8bb61f0ef46 cb6fa42d-6b3f-44d2-88f6-bfc228338525">
            <ownedComment xmi:id="eb1b449e-d657-4d60-94f0-df9208b3788d" body="Class &lt;code>DocFlavor&lt;/code> encapsulates an object that specifies the&#xA;format in which print data is supplied to a {@link DocPrintJob}.&#xA;&quot;Doc&quot; is a short, easy-to-pronounce term that means &quot;a piece of print data.&quot;&#xA;The print data format, or &quot;doc flavor&quot;, consists of two things:&#xA;&lt;UL>&#xA;&lt;LI>&#xA;&lt;B>MIME type.&lt;/B> This is a Multipurpose Internet Mail Extensions (MIME)&#xA;media type (as defined in &lt;A HREF=&quot;http://www.ietf.org/rfc/rfc2045.txt&quot;>RFC&#xA;2045&lt;/A> and &lt;A HREF=&quot;http://www.ietf.org/rfc/rfc2046.txt&quot;>RFC 2046&lt;/A>)&#xA;that specifies how the print data is to be interpreted.&#xA;The charset of text data should be the IANA MIME-preferred name, or its&#xA;canonical name if no preferred name is specified. Additionally a few&#xA;historical names supported by earlier versions of the Java platform may&#xA;be recognized.&#xA;See &lt;a href=&quot;../../java/lang/package-summary.html#charenc&quot;>&#xA;character encodings&lt;/a> for more information on the character encodings&#xA;supported on the Java platform.&#xA;&lt;P>&#xA;&lt;LI>&#xA;&lt;B>Representation class name.&lt;/B> This specifies the fully-qualified name of&#xA;the class of the object from which the actual print data comes, as returned&#xA;by the {@link java.lang.Class#getName() &lt;CODE>Class.getName()&lt;/CODE>} method.&#xA;(Thus the class name for &lt;CODE>byte[]&lt;/CODE> is &lt;CODE>&quot;[B&quot;&lt;/CODE>, for&#xA;&lt;CODE>char[]&lt;/CODE> it is &lt;CODE>&quot;[C&quot;&lt;/CODE>.)&#xA;&lt;/UL>&#xA;&lt;P>&#xA;A &lt;code>DocPrintJob&lt;/code> obtains its print data by means of interface&#xA;{@link Doc Doc}. A &lt;code>Doc&lt;/code> object lets the &lt;code>DocPrintJob&lt;/code>&#xA;determine the doc flavor the client can supply.  A &lt;code>Doc&lt;/code> object&#xA;also lets the &lt;code>DocPrintJob&lt;/code> obtain an instance of the doc flavor's&#xA;representation class, from which the &lt;code>DocPrintJob&lt;/code> then obtains&#xA;the actual print data.&#xA;&lt;P>&#xA;&lt;HR>&#xA;&lt;H3>Client Formatted Print Data&lt;/H3>&#xA;There are two broad categories of print data, client formatted print data&#xA;and service formatted print data.&#xA;&lt;P>&#xA;For &lt;B>client formatted print data&lt;/B>, the client determines or knows the&#xA;print data format.&#xA;For example the client may have a JPEG encoded image, a URL for&#xA;HTML code, or a disk file containing plain text in some encoding,&#xA;possibly obtained from an external source, and&#xA;requires a way to describe the data format to the print service.&#xA;&lt;p>&#xA;The doc flavor's representation class is a conduit for the JPS&#xA;&lt;code>DocPrintJob&lt;/code> to obtain a sequence of characters or&#xA;bytes from the client. The&#xA;doc flavor's MIME type is one of the standard media types telling how to&#xA;interpret the sequence of characters or bytes. For a list of standard media&#xA;types, see the Internet Assigned Numbers Authority's (IANA's) &lt;A&#xA;HREF=&quot;http://www.isi.edu/in-notes/iana/assignments/media-types/&quot;>Media Types&#xA;Directory&lt;/A>. Interface {@link Doc Doc} provides two utility operations,&#xA;{@link Doc#getReaderForText() getReaderForText} and&#xA;{@link Doc#getStreamForBytes() getStreamForBytes()}, to help a&#xA;&lt;code>Doc&lt;/code> object's client extract client formatted print data.&#xA;&lt;P>&#xA;For client formatted print data, the print data representation class is&#xA;typically one of the following (although other representation classes are&#xA;permitted):&#xA;&lt;UL>&#xA;&lt;LI>&#xA;Character array (&lt;CODE>char[]&lt;/CODE>) -- The print data consists of the&#xA;Unicde characters in the array.&#xA;&lt;P>&#xA;&lt;LI>&#xA;&lt;code>String&lt;/code>  --&#xA;The print data consists of the Unicode characters in the string.&#xA;&lt;P>&#xA;&lt;LI>&#xA;Character stream ({@link java.io.Reader java.io.Reader})&#xA;-- The print data consists of the Unicode characters read from the stream&#xA;up to the end-of-stream.&#xA;&lt;P>&#xA;&lt;LI>&#xA;Byte array (&lt;CODE>byte[]&lt;/CODE>) -- The print data consists of the bytes in&#xA;the array. The bytes are encoded in the character set specified by the doc&#xA;flavor's MIME type. If the MIME type does not specify a character set, the&#xA;default character set is US-ASCII.&#xA;&lt;P>&#xA;&lt;LI>&#xA;Byte stream ({@link java.io.InputStream java.io.InputStream}) --&#xA;The print data consists of the bytes read from the stream up to the&#xA;end-of-stream. The bytes are encoded in the character set specified by the&#xA;doc flavor's MIME type. If the MIME type does not specify a character set,&#xA;the default character set is US-ASCII.&#xA;&lt;LI>&#xA;Uniform Resource Locator ({@link java.net.URL URL})&#xA;-- The print data consists of the bytes read from the URL location.&#xA;The bytes are encoded in the character set specified by the doc flavor's&#xA;MIME type. If the MIME type does not specify a character set, the default&#xA;character set is US-ASCII.&#xA;&lt;P>&#xA;When the representation class is a URL, the print service itself accesses&#xA;and downloads the document directly from its URL address, without involving&#xA;the client. The service may be some form of network print service which&#xA;is executing in a different environment.&#xA;This means you should not use a URL print data flavor to print a&#xA;document at a restricted URL that the client can see but the printer cannot&#xA;see. This also means you should not use a URL print data flavor to print a&#xA;document stored in a local file that is not available at a URL&#xA;accessible independently of the client.&#xA;For example, a file that is not served up by an HTTP server or FTP server.&#xA;To print such documents, let the client open an input stream on the URL&#xA;or file and use an input stream data flavor.&#xA;&lt;/UL>&#xA;&lt;p>&#xA;&lt;HR>&#xA;&lt;h3>Default and Platform Encodings&lt;/h3>&#xA;&lt;P>&#xA;For byte print data where the doc flavor's MIME type does not include a&#xA;&lt;CODE>charset&lt;/CODE> parameter, the Java Print Service instance assumes the&#xA;US-ASCII character set by default. This is in accordance with&#xA;&lt;A HREF=&quot;http://www.ietf.org/rfc/rfc2046.txt&quot;>RFC 2046&lt;/A>, which says the&#xA;default character set is US-ASCII. Note that US-ASCII is a subset of&#xA;UTF-8, so in the future this may be widened if a future RFC endorses&#xA;UTF-8 as the default in a compatible manner.&#xA;&lt;p>&#xA;Also note that this is different than the behaviour of the Java runtime&#xA;when interpreting a stream of bytes as text data. That assumes the&#xA;default encoding for the user's locale. Thus, when spooling a file in local&#xA;encoding to a Java Print Service it is important to correctly specify&#xA;the encoding. Developers working in the English locales should&#xA;be particularly conscious of this, as their platform encoding corresponds&#xA;to the default mime charset. By this coincidence that particular&#xA;case may work without specifying the encoding of platform data.&#xA;&lt;p>&#xA;Every instance of the Java virtual machine has a default character encoding&#xA;determined during virtual-machine startup and typically depends upon the&#xA;locale and charset being used by the underlying operating system.&#xA;In a distributed environment there is no gurantee that two VM's share&#xA;the same default encoding. Thus clients which want to stream platform&#xA;encoded text data from the host platform to a Java Print Service instance&#xA;must explicitly declare the charset and not rely on defaults.&#xA;&lt;p>&#xA;The preferred form is the official IANA primary name for an encoding.&#xA;Applications which stream text data should always specify the charset&#xA;in the mime type, which necessitates obtaining the encoding of the host&#xA;platform for data (eg files) stored in that platform's encoding.&#xA;A CharSet which corresponds to this and is suitable for use in a&#xA;mime-type for a DocFlavor can be obtained&#xA;from {@link DocFlavor#hostEncoding &lt;CODE>DocFlavor.hostEncoding&lt;/CODE>}&#xA;This may not always be the primary IANA name but is guaranteed to be&#xA;understood by this VM.&#xA;For common flavors, the pre-defined *HOST DocFlavors may be used.&#xA;&lt;p>&#xA;&lt;p>&#xA;See &lt;a href=&quot;../../java/lang/package-summary.html#charenc&quot;>&#xA;character encodings&lt;/a> for more information on the character encodings&#xA;supported on the Java platform.&#xA;&lt;p>&#xA;&lt;HR>&#xA;&lt;h3>Recommended DocFlavors&lt;/h3>&#xA;&lt;P>&#xA;The Java Print Service API does not define any mandatorily supported&#xA;DocFlavors.&#xA;However, here are some examples of MIME types that a Java Print Service&#xA;instance might support for client formatted print data.&#xA;Nested classes inside class DocFlavor declare predefined static&#xA;constant DocFlavor objects for these example doc flavors; class DocFlavor's&#xA;constructor can be used to create an arbitrary doc flavor.&#xA;&lt;UL>&#xA;&lt;LI>Preformatted text&#xA;&lt;P>&#xA;&lt;TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0 SUMMARY=&quot;MIME-Types and their descriptions&quot;>&#xA;&lt;TR>&#xA;&lt;TH>MIME-Type&lt;/TH>&lt;TH>Description&lt;/TH>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>&lt;CODE>&quot;text/plain&quot;&lt;/CODE>&lt;/TD>&#xA;&lt;TD>Plain text in the default character set (US-ASCII)&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>&lt;CODE>&quot;text/plain; charset=&lt;I>xxx&lt;/I>&quot;&lt;/CODE>&lt;/TD>&#xA;&lt;TD>Plain text in character set &lt;I>xxx&lt;/I>&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>&lt;CODE>&quot;text/html&quot;&lt;/CODE>&lt;/TD>&#xA;&lt;TD>HyperText Markup Language in the default character set (US-ASCII)&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>&lt;CODE>&quot;text/html; charset=&lt;I>xxx&lt;/I>&quot;&lt;/CODE>&lt;/TD>&#xA;&lt;TD>HyperText Markup Language in character set &lt;I>xxx&lt;/I>&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;/TABLE>&#xA;&lt;P>&#xA;In general, preformatted text print data is provided either in a character&#xA;oriented representation class (character array, String, Reader) or in a&#xA;byte oriented representation class (byte array, InputStream, URL).&#xA;&lt;P>&#xA;&lt;LI>Preformatted page description language (PDL) documents&#xA;&lt;P>&#xA;&lt;TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0 SUMMARY=&quot;MIME-Types and their descriptions&quot;>&#xA;&lt;TR>&#xA;&lt;TH>MIME-Type&lt;/TH>&lt;TH>Description&lt;/TH>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>&lt;CODE>&quot;application/pdf&quot;&lt;/CODE>&lt;/TD>&#xA;&lt;TD>Portable Document Format document&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>&lt;CODE>&quot;application/postscript&quot;&lt;/CODE>&lt;/TD>&#xA;&lt;TD>PostScript document&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>&lt;CODE>&quot;application/vnd.hp-PCL&quot;&lt;/CODE>&lt;/TD>&#xA;&lt;TD>Printer Control Language document&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;/TABLE>&#xA;&lt;P>&#xA;In general, preformatted PDL print data is provided in a byte oriented&#xA;representation class (byte array, InputStream, URL).&#xA;&lt;P>&#xA;&lt;LI>Preformatted images&#xA;&lt;P>&#xA;&lt;TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0 SUMMARY=&quot;MIME-Types and their descriptions&quot;>&#xA;&lt;TR>&#xA;&lt;TH>MIME-Type&lt;/TH>&lt;TH>Description&lt;/TH>&#xA;&lt;/TR>&#xA;&#xA;&lt;TR>&#xA;&lt;TD>&lt;CODE>&quot;image/gif&quot;&lt;/CODE>&lt;/TD>&#xA;&lt;TD>Graphics Interchange Format image&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>&lt;CODE>&quot;image/jpeg&quot;&lt;/CODE>&lt;/TD>&#xA;&lt;TD>Joint Photographic Experts Group image&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;TR>&#xA;&lt;TD>&lt;CODE>&quot;image/png&quot;&lt;/CODE>&lt;/TD>&#xA;&lt;TD>Portable Network Graphics image&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;/TABLE>&#xA;&lt;P>&#xA;In general, preformatted image print data is provided in a byte oriented&#xA;representation class (byte array, InputStream, URL).&#xA;&lt;P>&#xA;&lt;LI>Preformatted autosense print data&#xA;&lt;P>&#xA;&lt;TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0 SUMMARY=&quot;MIME-Types and their descriptions&quot;>&#xA;&lt;TR>&#xA;&lt;TH>MIME-Type&lt;/TH>&lt;TH>Description&lt;/TH>&#xA;&lt;/TR>&#xA;&#xA;&lt;TR>&#xA;&lt;TD>&lt;CODE>&quot;application/octet-stream&quot;&lt;/CODE>&lt;/TD>&#xA;&lt;TD>The print data format is unspecified (just an octet stream)&lt;/TD>&#xA;&lt;/TABLE>&#xA;&lt;P>&#xA;The printer decides how to interpret the print data; the way this&#xA;&quot;autosensing&quot; works is implementation dependent. In general, preformatted&#xA;autosense print data is provided in a byte oriented representation class&#xA;(byte array, InputStream, URL).&#xA;&#xA;&lt;P>&#xA;&lt;HR>&#xA;&lt;H3>Service Formatted Print Data&lt;/H3>&#xA;&lt;P>&#xA;For &lt;B>service formatted print data&lt;/B>, the Java Print Service instance&#xA;determines the print data format. The doc flavor's representation class&#xA;denotes an interface whose methods the &lt;code>DocPrintJob&lt;/code> invokes to&#xA;determine the content to be printed -- such as a renderable image&#xA;interface or a Java 2 printable interface.&#xA;The doc flavor's MIME type is the special value&#xA;&lt;CODE>&quot;application/x-java-jvm-local-objectref&quot;&lt;/CODE> indicating the client&#xA;will supply a reference to a Java object that implements the interface&#xA;named as the representation class.&#xA;This MIME type is just a placeholder; what's&#xA;important is the print data representation class.&#xA;&lt;P>&#xA;For service formatted print data, the print data representation class is&#xA;typically one of the following (although other representation classes are&#xA;permitted). Nested classes inside class DocFlavor declare predefined static&#xA;constant DocFlavor objects for these example doc flavors; class DocFlavor's&#xA;constructor can be used to create an arbitrary doc flavor.&#xA;&lt;UL>&#xA;&lt;LI>&#xA;Renderable image object -- The client supplies an object that implements&#xA;interface&#xA;{@link java.awt.image.renderable.RenderableImage RenderableImage}. The&#xA;printer calls methods&#xA;in that interface to obtain the image to be printed.&#xA;&lt;P>&#xA;&lt;LI>&#xA;Printable object -- The client supplies an object that implements interface&#xA;{@link java.awt.print.Printable Printable}.&#xA;The printer calls methods in that interface to obtain the pages to be&#xA;printed, one by one.&#xA;For each page, the printer supplies a graphics context, and whatever the&#xA;client draws in that graphics context gets printed.&#xA;&lt;P>&#xA;&lt;LI>&#xA;Pageable object -- The client supplies an object that implements interface&#xA;{@link java.awt.print.Pageable Pageable}. The printer calls&#xA;methods in that interface to obtain the pages to be printed, one by one.&#xA;For each page, the printer supplies a graphics context, and whatever&#xA;the client draws in that graphics context gets printed.&#xA;&lt;/UL>&#xA;&lt;P>&#xA;&lt;HR>&#xA;&lt;P>&#xA;&lt;HR>&#xA;&lt;H3>Pre-defined Doc Flavors&lt;/H3>&#xA;A Java Print Service instance is not &lt;B>&lt;I>required&lt;/I>&lt;/B> to support the&#xA;following print data formats and print data representation classes.  In&#xA;fact, a developer using this class should &lt;b>never&lt;/b> assume that a&#xA;particular print service supports the document types corresponding to&#xA;these pre-defined doc flavors.  Always query the print service&#xA;to determine what doc flavors it supports.  However,&#xA;developers who have print services that support these doc flavors are&#xA;encouraged to refer to the predefined singleton instances created here.&#xA;&lt;UL>&#xA;&lt;LI>&#xA;Plain text print data provided through a byte stream. Specifically, the&#xA;following doc flavors are recommended to be supported:&#xA;&lt;BR>&amp;#183;&amp;nbsp;&amp;nbsp;&#xA;&lt;CODE>(&quot;text/plain&quot;, &quot;java.io.InputStream&quot;)&lt;/CODE>&#xA;&lt;BR>&amp;#183;&amp;nbsp;&amp;nbsp;&#xA;&lt;CODE>(&quot;text/plain; charset=us-ascii&quot;, &quot;java.io.InputStream&quot;)&lt;/CODE>&#xA;&lt;BR>&amp;#183;&amp;nbsp;&amp;nbsp;&#xA;&lt;CODE>(&quot;text/plain; charset=utf-8&quot;, &quot;java.io.InputStream&quot;)&lt;/CODE>&#xA;&lt;P>&#xA;&lt;LI>&#xA;Renderable image objects. Specifically, the following doc flavor is&#xA;recommended to be supported:&#xA;&lt;BR>&amp;#183;&amp;nbsp;&amp;nbsp;&#xA;&lt;CODE>(&quot;application/x-java-jvm-local-objectref&quot;, &quot;java.awt.image.renderable.RenderableImage&quot;)&lt;/CODE>&#xA;&lt;/UL>&#xA;&lt;P>&#xA;A Java Print Service instance is allowed to support any other doc flavors&#xA;(or none) in addition to the above mandatory ones, at the implementation's&#xA;choice.&#xA;&lt;P>&#xA;Support for the above doc flavors is desirable so a printing client can rely&#xA;on being able to print on any JPS printer, regardless of which doc flavors&#xA;the printer supports. If the printer doesn't support the client's preferred&#xA;doc flavor, the client can at least print plain text, or the client can&#xA;convert its data to a renderable image and print the image.&#xA;&lt;P>&#xA;Furthermore, every Java Print Service instance must fulfill these&#xA;requirements for processing plain text print data:&#xA;&lt;UL>&#xA;&lt;LI>&#xA;The character pair carriage return-line feed (CR-LF) means&#xA;&quot;go to column 1 of the next line.&quot;&#xA;&lt;LI>&#xA;A carriage return (CR) character standing by itself means&#xA;&quot;go to column 1 of the next line.&quot;&#xA;&lt;LI>&#xA;A line feed (CR) character standing by itself means&#xA;&quot;go to column 1 of the next line.&quot;&#xA;&lt;LI>&#xA;&lt;/UL>&#xA;&lt;P>&#xA;The client must itself perform all plain text print data formatting not&#xA;addressed by the above requirements.&#xA;&lt;P>&#xA;&lt;H3>Design Rationale&lt;/H3>&#xA;&lt;P>&#xA;Class DocFlavor in package javax.print.data is similar to class&#xA;{@link java.awt.datatransfer.DataFlavor DataFlavor}. Class&#xA;&lt;code>DataFlavor&lt;/code>&#xA;is not used in the Java Print Service (JPS) API&#xA;for three reasons which are all rooted in allowing the JPS API to be&#xA;shared by other print services APIs which may need to run on Java profiles&#xA;which do not include all of the Java 2 Standard Edition.&#xA;&lt;OL TYPE=1>&#xA;&lt;LI>&#xA;The JPS API is designed to be used in Java profiles which do not support&#xA;AWT.&#xA;&lt;P>&#xA;&lt;LI>&#xA;The implementation of class &lt;code>java.awt.datatransfer.DataFlavor&lt;/code>&#xA;does not guarantee that equivalent data flavors will have the same&#xA;serialized representation. DocFlavor does, and can be used in services&#xA;which need this.&#xA;&lt;P>&#xA;&lt;LI>&#xA;The implementation of class &lt;code>java.awt.datatransfer.DataFlavor&lt;/code>&#xA;includes a human presentable name as part of the serialized representation.&#xA;This is not appropriate as part of a service matching constraint.&#xA;&lt;/OL>&#xA;&lt;P>&#xA;Class DocFlavor's serialized representation uses the following&#xA;canonical form of a MIME type string. Thus, two doc flavors with MIME types&#xA;that are not identical but that are equivalent (that have the same&#xA;canonical form) may be considered equal.&#xA;&lt;UL>&#xA;&lt;LI> The media type, media subtype, and parameters are retained, but all&#xA;comments and whitespace characters are discarded.&#xA;&lt;LI> The media type, media subtype, and parameter names are converted to&#xA;lowercase.&#xA;&lt;LI> The parameter values retain their original case, except a charset&#xA;parameter value for a text media type is converted to lowercase.&#xA;&lt;LI> Quote characters surrounding parameter values are removed.&#xA;&lt;LI> Quoting backslash characters inside parameter values are removed.&#xA;&lt;LI> The parameters are arranged in ascending order of parameter name.&#xA;&lt;/UL>&#xA;&lt;P>&#xA;Class DocFlavor's serialized representation also contains the&#xA;fully-qualified class &lt;I>name&lt;/I> of the representation class&#xA;(a String object), rather than the representation class itself&#xA;(a Class object). This allows a client to examine the doc flavors a&#xA;Java Print Service instance supports without having&#xA;to load the representation classes, which may be problematic for&#xA;limited-resource clients.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="c8cd60fc-57ba-43a8-9276-65f17f6ac8a8"/>
            <interfaceRealization xmi:id="6b971544-810e-4821-a412-c8bb61f0ef46" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="c8cd60fc-57ba-43a8-9276-65f17f6ac8a8" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="cb6fa42d-6b3f-44d2-88f6-bfc228338525" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="c8cd60fc-57ba-43a8-9276-65f17f6ac8a8" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="06b0ca80-95ed-4bd8-ad2c-515b1fd78e7c" name="BYTE_ARRAY">
              <ownedComment xmi:id="59bb6945-fc67-4065-9d4a-c2433b130dd6" body="Class DocFlavor.BYTE_ARRAY provides predefined static constant&#xA;DocFlavor objects for example doc flavors using a byte array&#xA;(&lt;CODE>byte[]&lt;/CODE>) as the print data representation class.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="06b0ca80-95ed-4bd8-ad2c-515b1fd78e7c"/>
              <generalization xmi:id="47a14145-6598-446d-b64e-c0b6a891c052" isSubstitutable="true" general="c8cd60fc-57ba-43a8-9276-65f17f6ac8a8"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="62f243b3-99fa-47a9-a655-4fa0881f7c43" name="INPUT_STREAM">
              <ownedComment xmi:id="0166e054-5f6c-4f41-b36a-c927e6e20b5f" body="Class DocFlavor.INPUT_STREAM provides predefined static constant&#xA;DocFlavor objects for example doc flavors using a byte stream ({@link&#xA;java.io.InputStream &lt;CODE>java.io.InputStream&lt;/CODE>}) as the print&#xA;data representation class.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="62f243b3-99fa-47a9-a655-4fa0881f7c43"/>
              <generalization xmi:id="6f80f363-c999-484e-8e7d-f1adc323d664" isSubstitutable="true" general="c8cd60fc-57ba-43a8-9276-65f17f6ac8a8"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="2ad99182-46b2-4e55-873a-8de25e24341e" name="URL">
              <ownedComment xmi:id="ae1e00f2-d0e8-492b-8bdd-b047f0eae0fb" body="Class DocFlavor.URL provides predefined static constant DocFlavor&#xA;objects.&#xA;For example doc flavors using a Uniform Resource Locator ({@link&#xA;java.net.URL &lt;CODE>java.net.URL&lt;/CODE>}) as the print data&#xA;representation  class.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="2ad99182-46b2-4e55-873a-8de25e24341e"/>
              <generalization xmi:id="035e90c0-fa40-4ca0-99b7-52dc859a65b8" isSubstitutable="true" general="c8cd60fc-57ba-43a8-9276-65f17f6ac8a8"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="4073264c-16b9-49cf-bf34-046632bec506" name="CHAR_ARRAY">
              <ownedComment xmi:id="726e1edc-2fdb-4e35-bde3-d8a6feeda99b" body="Class DocFlavor.CHAR_ARRAY provides predefined static constant&#xA;DocFlavor objects for example doc flavors using a character array&#xA;(&lt;CODE>char[]&lt;/CODE>) as the print data representation class. As such,&#xA;the character set is Unicode.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="4073264c-16b9-49cf-bf34-046632bec506"/>
              <generalization xmi:id="99c60cfe-41b2-4dfe-a9d2-76a362db6644" isSubstitutable="true" general="c8cd60fc-57ba-43a8-9276-65f17f6ac8a8"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="1fd21cf0-c885-4857-a1e3-71cee5e994bd" name="STRING">
              <ownedComment xmi:id="a6074f56-c1f0-40f8-a915-79c6d8f179f6" body="Class DocFlavor.STRING provides predefined static constant DocFlavor&#xA;objects for example doc flavors using a string ({@link java.lang.String&#xA;&lt;CODE>java.lang.String&lt;/CODE>}) as the print data representation class.&#xA;As such, the character set is Unicode.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="1fd21cf0-c885-4857-a1e3-71cee5e994bd"/>
              <generalization xmi:id="18437d69-40c2-4b92-a92a-89b58329b1da" isSubstitutable="true" general="c8cd60fc-57ba-43a8-9276-65f17f6ac8a8"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="e57a9992-ba1c-4a07-a423-3736d13e3ff8" name="READER">
              <ownedComment xmi:id="be0a5b8b-21e7-436e-b1b5-3a6147e2b2fe" body="Class DocFlavor.READER provides predefined static constant DocFlavor&#xA;objects for example doc flavors using a character stream ({@link&#xA;java.io.Reader &lt;CODE>java.io.Reader&lt;/CODE>}) as the print data&#xA;representation class. As such, the character set is Unicode.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="e57a9992-ba1c-4a07-a423-3736d13e3ff8"/>
              <generalization xmi:id="0e1cb51d-5e51-4698-93af-3d8fdd31d624" isSubstitutable="true" general="c8cd60fc-57ba-43a8-9276-65f17f6ac8a8"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="81179dd9-8edd-4c60-9d2b-fccc53c60059" name="SERVICE_FORMATTED">
              <ownedComment xmi:id="14c0ac99-69e1-4e55-ae00-0d3833cc3f62" body="Class DocFlavor.SERVICE_FORMATTED provides predefined static constant&#xA;DocFlavor objects for example doc flavors for service formatted print&#xA;data.&#xA;&lt;P>&#xA;&#xA;@author  Alan Kaminsky&#xA;" annotatedElement="81179dd9-8edd-4c60-9d2b-fccc53c60059"/>
              <generalization xmi:id="b19ba2a3-2cd8-4f33-b916-3e089b0bd8d1" isSubstitutable="true" general="c8cd60fc-57ba-43a8-9276-65f17f6ac8a8"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="ef334e86-ea52-4fb7-97ac-af85e6bf2d95" name="DocPrintJob" isAbstract="true">
            <ownedComment xmi:id="0db67383-e1ac-4f5f-b23b-f140fac2a4a9" body="This interface represents a print job that can print a specified&#xA;document with a set of job attributes.  An object implementing&#xA;this interface is obtained from a print service.&#xA;&#xA;" annotatedElement="ef334e86-ea52-4fb7-97ac-af85e6bf2d95"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="c4f0ce32-4426-4cce-98f1-b473c35e936a" name="CancelablePrintJob" isAbstract="true">
            <ownedComment xmi:id="6831f110-de9f-4bab-856c-7a4ac0f39c11" body="This interface is used by a printing application to cancel a&#xA;print job.  This interface extends {@link DocPrintJob}.  A&#xA;&lt;code>DocPrintJob&lt;/code> implementation returned from a print&#xA;service implements this interface if the print job can be&#xA;cancelled.  Before trying to cancel&#xA;a print job, the client needs to test if the&#xA;&lt;code>DocPrintJob&lt;/code> object returned from the print service&#xA;actually implements this interface.  Clients should never assume&#xA;that a &lt;code>DocPrintJob&lt;/code> implements this interface.  A&#xA;print service might support cancellation only for certain types&#xA;of print data and representation class names.  This means that&#xA;only some of the &lt;code>DocPrintJob&lt;/code> objects returned from&#xA;a service will implement this interface.&#xA;&lt;p>&#xA;Service implementors are encouraged to implement this optional interface&#xA;and to deliver a javax.print.event.PrintJobEvent.JOB_CANCELLED event&#xA;to any listeners if a job is successfully cancelled with an&#xA;implementation of this interface. Services should also note that an&#xA;implementation of this method may be made from a separate client thread&#xA;than that which made the print request.  Thus the implementation of&#xA;this interface must be made thread safe.&#xA;" annotatedElement="c4f0ce32-4426-4cce-98f1-b473c35e936a"/>
            <generalization xmi:id="032da370-08fc-4c91-95c4-006e96c37a93" isSubstitutable="true" general="ef334e86-ea52-4fb7-97ac-af85e6bf2d95"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="140f36e4-3b76-4b3e-a271-b7c8a0ca05b0" name="MultiDocPrintJob" isAbstract="true">
            <ownedComment xmi:id="7e392487-6cd7-4775-a8f3-4a46eef1ba7e" body="Obtained from a MultiDocPrintService, a MultiDocPrintJob can print a&#xA;specified collection of documents as a single print job with a set of&#xA;job attributes.&#xA;&lt;P>&#xA;" annotatedElement="140f36e4-3b76-4b3e-a271-b7c8a0ca05b0"/>
            <generalization xmi:id="2be71545-9b6b-419b-aa89-2f081fcfa188" isSubstitutable="true" general="ef334e86-ea52-4fb7-97ac-af85e6bf2d95"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="d859745e-05b2-4ec6-a4c8-966c43da18b2" name="PrintService" isAbstract="true">
            <ownedComment xmi:id="f6ec4bc1-5adf-4405-87d2-e4e1383560d8" body="Interface PrintService is the factory for a DocPrintJob. A PrintService&#xA;describes the capabilities of a Printer and can be queried regarding&#xA;a printer's supported attributes.&#xA;&lt;P>&#xA;Example:&#xA;&lt;PRE>&#xA;DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;&#xA;PrintRequestAttributeSet aset = new HashPrintRequestHashAttributeSet();&#xA;aset.add(MediaSizeName.ISO_A4);&#xA;PrintService[] pservices =&#xA;PrintServiceLookup.lookupPrintServices(flavor, aset);&#xA;if (pservices.length > 0) {&#xA;DocPrintJob pj = pservices[0].createPrintJob();&#xA;InputStreamDoc is an implementation of the Doc interface&#xA;Doc doc = new InputStreamDoc(&quot;test.ps&quot;, flavor);&#xA;try {&#xA;pj.print(doc, aset);&#xA;} catch (PrintException e) {&#xA;}&#xA;}&#xA;&lt;/PRE>&#xA;" annotatedElement="d859745e-05b2-4ec6-a4c8-966c43da18b2"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a4407ce3-8e42-4a97-89ae-183ecb2e6f77" name="SimpleDoc" clientDependency="ef3aa8bc-0e72-4432-b092-cb10172911f7" isLeaf="true">
            <ownedComment xmi:id="609e2b0a-02cf-46c9-92d2-44220f369c51" body="This class is an implementation of interface &lt;code>Doc&lt;/code> that can&#xA;be used in many common printing requests.&#xA;It can handle all of the presently defined &quot;pre-defined&quot; doc flavors&#xA;defined as static variables in the DocFlavor class.&#xA;&lt;p>&#xA;In particular this class implements certain required semantics of the&#xA;Doc specification as follows:&#xA;&lt;ul>&#xA;&lt;li>constructs a stream for the service if requested and appropriate.&#xA;&lt;li>ensures the same object is returned for each call on a method.&#xA;&lt;li>ensures multiple threads can access the Doc&#xA;&lt;li>performs some validation of that the data matches the doc flavor.&#xA;&lt;/ul>&#xA;Clients who want to re-use the doc object in other jobs,&#xA;or need a MultiDoc will not want to use this class.&#xA;&lt;p>&#xA;If the print data is a stream, or a print job requests data as a&#xA;stream, then &lt;code>SimpleDoc&lt;/code> does not monitor if the service&#xA;properly closes the stream after data transfer completion or job&#xA;termination.&#xA;Clients may prefer to use provide their own implementation of doc that&#xA;adds a listener to monitor job completion and to validate that&#xA;resources such as streams are freed (ie closed).&#xA;" annotatedElement="a4407ce3-8e42-4a97-89ae-183ecb2e6f77"/>
            <interfaceRealization xmi:id="ef3aa8bc-0e72-4432-b092-cb10172911f7" name="" supplier="8a2f9ed1-455e-463b-8488-9f3ee20d7e01" client="a4407ce3-8e42-4a97-89ae-183ecb2e6f77" contract="8a2f9ed1-455e-463b-8488-9f3ee20d7e01"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="442a9af0-9f7e-4131-be9e-ab31fec7b61c" name="event">
            <packagedElement xmi:type="uml:Interface" xmi:id="23bf5738-63f1-487b-8ba8-764be27481f2" name="PrintServiceAttributeListener" isAbstract="true">
              <ownedComment xmi:id="f3f77444-d7b9-4577-b7ed-da51eb062678" body="Implementations of this listener interface are attached to a&#xA;{@link javax.print.PrintService PrintService} to monitor&#xA;the status of the print service.&#xA;&lt;p>&#xA;To monitor a particular job see {@link PrintJobListener} and&#xA;{@link PrintJobAttributeListener}.&#xA;" annotatedElement="23bf5738-63f1-487b-8ba8-764be27481f2"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1ca72713-e011-420a-90c6-5f773713b08c" name="PrintJobAdapter" clientDependency="ebed520d-0a55-4145-9d84-2e4a8a3da41a" isAbstract="true">
              <ownedComment xmi:id="7fef8f63-a490-4736-ae7e-436e41c648a0" body="An abstract adapter class for receiving print job events.&#xA;The methods in this class are empty.&#xA;This class exists as a convenience for creating listener objects.&#xA;Extend this class to create a {@link PrintJobEvent} listener and override&#xA;the methods for the events of interest.  Unlike the&#xA;{@link java.awt.event.ComponentListener ComponentListener}&#xA;interface, this abstract interface provides null methods so that you&#xA;only need to define the methods you need, rather than all of the methods.&#xA;&#xA;" annotatedElement="1ca72713-e011-420a-90c6-5f773713b08c"/>
              <interfaceRealization xmi:id="ebed520d-0a55-4145-9d84-2e4a8a3da41a" name="" supplier="cb1b974e-9821-4aed-a664-eb70c09bb7dc" client="1ca72713-e011-420a-90c6-5f773713b08c" contract="cb1b974e-9821-4aed-a664-eb70c09bb7dc"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="075190e2-4975-4086-b0b6-a5d2664519b6" name="PrintJobEvent">
              <ownedComment xmi:id="89602b1f-104d-4f35-909e-fb6f333ca79b" body="Class &lt;code>PrintJobEvent&lt;/code> encapsulates common events a print job&#xA;reports to let a listener know of progress in the processing of the&#xA;{@link DocPrintJob}.&#xA;&#xA;" annotatedElement="075190e2-4975-4086-b0b6-a5d2664519b6"/>
              <generalization xmi:id="0e85d671-fbf9-46e7-96de-8266eaaf441d" isSubstitutable="true" general="d57c1356-5b51-4d47-8cfe-e174298f391b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="22906ff7-718a-4580-a20c-6939d63de176" name="PrintJobAttributeEvent">
              <ownedComment xmi:id="98ef5854-889a-44f5-b7c3-761467626a91" body="Class PrintJobAttributeEvent encapsulates an event a PrintService&#xA;reports to let the client know that one or more printing attributes for a&#xA;PrintJob have changed.&#xA;" annotatedElement="22906ff7-718a-4580-a20c-6939d63de176"/>
              <generalization xmi:id="d9fc0e87-1909-45eb-9f04-c694709b6976" isSubstitutable="true" general="d57c1356-5b51-4d47-8cfe-e174298f391b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="4ef8b963-8541-4a7e-b466-4b55b5621cc9" name="PrintJobAttributeListener" isAbstract="true">
              <ownedComment xmi:id="a217002f-0930-4cf2-b958-010c5b71c900" body="Implementations of this interface are attached to a&#xA;{@link javax.print.DocPrintJob DocPrintJob} to monitor&#xA;the status of attribute changes associated with the print job.&#xA;&#xA;" annotatedElement="4ef8b963-8541-4a7e-b466-4b55b5621cc9"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="cb1b974e-9821-4aed-a664-eb70c09bb7dc" name="PrintJobListener" isAbstract="true">
              <ownedComment xmi:id="242a94eb-1a19-457d-91da-1c7eba76784c" body="Implementations of this listener interface should be attached to a&#xA;{@link javax.print.DocPrintJob DocPrintJob} to monitor the status of&#xA;the printer job.&#xA;These callback methods may be invoked on the thread processing the&#xA;print job, or a service created notification thread. In either case&#xA;the client should not perform lengthy processing in these callbacks.&#xA;" annotatedElement="cb1b974e-9821-4aed-a664-eb70c09bb7dc"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d57c1356-5b51-4d47-8cfe-e174298f391b" name="PrintEvent">
              <ownedComment xmi:id="b58a916b-027c-4b6b-bca2-260953198bc3" body="Class PrintEvent is the super class of all Print Service API events.&#xA;" annotatedElement="d57c1356-5b51-4d47-8cfe-e174298f391b"/>
              <generalization xmi:id="3e260be2-6bf0-46b7-aedb-f9bffccab980" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b841870d-95af-449b-8746-07f52f88d74b" name="PrintServiceAttributeEvent">
              <ownedComment xmi:id="421a1b4f-b9ce-45cb-9962-7f8abe2220ea" body="Class PrintServiceAttributeEvent encapsulates an event a&#xA;Print Service instance reports to let the client know of&#xA;changes in the print service state.&#xA;" annotatedElement="b841870d-95af-449b-8746-07f52f88d74b"/>
              <generalization xmi:id="6ac91a8a-ebe9-441a-ba61-0493e3637b20" isSubstitutable="true" general="d57c1356-5b51-4d47-8cfe-e174298f391b"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="235e1bc2-8618-45b5-a4c0-ff35af694861" name="StreamPrintServiceFactory" isAbstract="true">
            <ownedComment xmi:id="791a13ae-8a8a-4690-8518-4a814dc26a5c" body="A &lt;code>StreamPrintServiceFactory&lt;/code> is the factory for&#xA;{@link StreamPrintService} instances,&#xA;which can print to an output stream in a particular&#xA;document format described as a mime type.&#xA;A typical output document format may be Postscript(TM).&#xA;&lt;p>&#xA;This class is implemented by a service and located by the&#xA;implementation using the&#xA;&lt;a href=&quot;http:/java.sun.com/products/jdk/1.3/docs/guide/jar/jar.html#Service Provider&quot;>&#xA;SPI JAR File specification&lt;/a>.&#xA;&lt;p>&#xA;Applications locate instances of this class by calling the&#xA;{@link #lookupStreamPrintServiceFactories(DocFlavor, String)} method.&#xA;&lt;p>&#xA;Applications can use a &lt;code>StreamPrintService&lt;/code> obtained from a&#xA;factory in place of a &lt;code>PrintService&lt;/code> which represents a&#xA;physical printer device.&#xA;" annotatedElement="235e1bc2-8618-45b5-a4c0-ff35af694861"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8a50e272-c99d-4fef-bcdd-0154eed5285b" name="Services" visibility="package"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="1c1d916f-adbb-4bf8-ac7a-b9e6bbb60010" name="FlavorException" isAbstract="true">
            <ownedComment xmi:id="297af956-5241-46f6-89cb-c0e330226638" body="Interface FlavorException is a mixin interface which a subclass of {@link&#xA;PrintException PrintException} can implement to report an error condition&#xA;involving a doc flavor or flavors (class {@link javax.print.DocFlavor&#xA;DocFlavor}). The Print Service API does not define any print exception&#xA;classes that implement interface FlavorException, that being left to the&#xA;Print Service implementor's discretion.&#xA;&#xA;" annotatedElement="1c1d916f-adbb-4bf8-ac7a-b9e6bbb60010"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="d1549410-b599-4a89-9e26-1812c02ab268" name="URIException" isAbstract="true">
            <ownedComment xmi:id="8b362319-52b3-433c-bbec-33d866fa68d0" body="Interface URIException is a mixin interface which a subclass of {@link&#xA;PrintException PrintException} can implement to report an error condition&#xA;involving a URI address. The Print Service API does not define any print&#xA;exception classes that implement interface URIException, that being left to&#xA;the Print Service implementor's discretion.&#xA;&#xA;" annotatedElement="d1549410-b599-4a89-9e26-1812c02ab268"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="8a2f9ed1-455e-463b-8488-9f3ee20d7e01" name="Doc" isAbstract="true">
            <ownedComment xmi:id="1e296d3d-d041-4b0d-ac9a-0f68221ea0da" body="Interface Doc specifies the interface for an object that supplies one piece&#xA;of print data for a Print Job. &quot;Doc&quot; is a short, easy-to-pronounce term&#xA;that means &quot;a piece of print data.&quot; The client passes to the Print Job an&#xA;object that implements interface Doc, and the Print Job calls methods on&#xA;that object to obtain the print data. The Doc interface lets a Print Job:&#xA;&lt;UL>&#xA;&lt;LI>&#xA;Determine the format, or &quot;doc flavor&quot; (class {@link DocFlavor DocFlavor}),&#xA;in which the print data is available. A doc flavor designates the print&#xA;data format (a MIME type) and the representation class of the object&#xA;from which the print data comes.&#xA;&lt;P>&#xA;&lt;LI>&#xA;Obtain the print data representation object, which is an instance of the&#xA;doc flavor's representation class. The Print Job can then obtain the actual&#xA;print data from the representation object.&#xA;&lt;P>&#xA;&lt;LI>&#xA;Obtain the printing attributes that specify additional characteristics of&#xA;the doc or that specify processing instructions to be applied to the doc.&#xA;Printing attributes are defined in package {@link javax.print.attribute&#xA;javax.print.attribute}. The doc returns its printing attributes stored in&#xA;an {@link javax.print.attribute.DocAttributeSet javax.print.attribute.DocAttributeSet}.&#xA;&lt;/UL>&#xA;&lt;P>&#xA;Each method in an implementation of interface Doc is permitted always to&#xA;return the same object each time the method is called.&#xA;This has implications&#xA;for a Print Job or other caller of a doc object whose print data&#xA;representation object &quot;consumes&quot; the print data as the caller obtains the&#xA;print data, such as a print data representation object which is a stream.&#xA;Once the Print Job has called {@link #getPrintData()&#xA;&lt;CODE>getPrintData()&lt;/CODE>} and obtained the stream, any further calls to&#xA;{@link #getPrintData() &lt;CODE>getPrintData()&lt;/CODE>} will return the same&#xA;stream object upon which reading may already be in progress, &lt;I>not&lt;/I> a new&#xA;stream object that will re-read the print data from the beginning. Specifying&#xA;a doc object to behave this way simplifies the implementation of doc objects,&#xA;and is justified on the grounds that a particular doc is intended to convey&#xA;print data only to one Print Job, not to several different Print Jobs. (To&#xA;convey the same print data to several different Print Jobs, you have to&#xA;create several different doc objects on top of the same print data source.)&#xA;&lt;P>&#xA;Interface Doc affords considerable implementation flexibility. The print data&#xA;might already be in existence when the doc object is constructed. In this&#xA;case the objects returned by the doc's methods can be supplied to the doc's&#xA;constructor, be stored in the doc ahead of time, and simply be returned when&#xA;called for. Alternatively, the print data might not exist yet when the doc&#xA;object is constructed. In this case the doc object might provide a &quot;lazy&quot;&#xA;implementation that generates the print data representation object (and/or&#xA;the print data) only when the Print Job calls for it (when the Print Job&#xA;calls the {@link #getPrintData() &lt;CODE>getPrintData()&lt;/CODE>} method).&#xA;&lt;P>&#xA;There is no restriction on the number of client threads that may be&#xA;simultaneously accessing the same doc. Therefore, all implementations of&#xA;interface Doc must be designed to be multiple thread safe.&#xA;&lt;p>&#xA;However there can only be one consumer of the print data obtained from a&#xA;Doc.&#xA;&lt;p>&#xA;If print data is obtained from the client as a stream, by calling Doc's&#xA;&lt;code>getReaderForText()&lt;/code> or &lt;code>getStreamForBytes()&lt;/code>&#xA;methods, or because the print data source is already an InputStream or&#xA;Reader, then the print service should always close these streams for the&#xA;client on all job completion conditions. With the following caveat.&#xA;If the print data is itself a stream, the service will always close it.&#xA;If the print data is otherwise something that can be requested as a stream,&#xA;the service will only close the stream if it has obtained the stream before&#xA;terminating. That is, just because a print service might request data as&#xA;a stream does not mean that it will, with the implications that Doc&#xA;implementors which rely on the service to close them should create such&#xA;streams only in response to a request from the service.&#xA;&lt;P>&#xA;&lt;HR>&#xA;" annotatedElement="8a2f9ed1-455e-463b-8488-9f3ee20d7e01"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0a96853f-ba43-4f76-80cb-d875bb7bfcde" name="StreamPrintService" clientDependency="683050c7-211b-47f2-a524-885c9dfcf00a" isAbstract="true">
            <ownedComment xmi:id="be6c2324-6c4b-4c9a-9d1d-82650f0c54ec" body="This class extends {@link PrintService} and represents a&#xA;print service that prints data in different formats to a&#xA;client-provided output stream.&#xA;This is principally intended for services where&#xA;the output format is a document type suitable for viewing&#xA;or archiving.&#xA;The output format must be declared as a mime type.&#xA;This is equivalent to an output document flavor where the&#xA;representation class is always &quot;java.io.OutputStream&quot;&#xA;An instance of the &lt;code>StreamPrintService&lt;/code> class is&#xA;obtained from a {@link StreamPrintServiceFactory} instance.&#xA;&lt;p>&#xA;Note that a &lt;code>StreamPrintService&lt;/code> is different from a&#xA;&lt;code>PrintService&lt;/code>, which supports a&#xA;{@link javax.print.attribute.standard.Destination Destination}&#xA;attribute.  A &lt;code>StreamPrintService&lt;/code> always requires an output&#xA;stream, whereas a &lt;code>PrintService&lt;/code> optionally accepts a&#xA;&lt;code>Destination&lt;/code>. A &lt;code>StreamPrintService&lt;/code>&#xA;has no default destination for its formatted output.&#xA;Additionally a &lt;code>StreamPrintService&lt;/code> is expected to generate&#xA;output in&#xA;a format useful in other contexts.&#xA;StreamPrintService's are not expected to support the Destination attribute.&#xA;" annotatedElement="0a96853f-ba43-4f76-80cb-d875bb7bfcde"/>
            <interfaceRealization xmi:id="683050c7-211b-47f2-a524-885c9dfcf00a" name="" supplier="d859745e-05b2-4ec6-a4c8-966c43da18b2" client="0a96853f-ba43-4f76-80cb-d875bb7bfcde" contract="d859745e-05b2-4ec6-a4c8-966c43da18b2"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="7c96d5b7-7824-4896-84aa-b4cb97fe0a5e" name="MultiDocPrintService" isAbstract="true">
            <ownedComment xmi:id="6fb9eec6-5553-4081-820b-e0b3a01d62e1" body="Interface MultiPrintService is the factory for a MultiDocPrintJob.&#xA;A MultiPrintService&#xA;describes the capabilities of a Printer and can be queried regarding&#xA;a printer's supported attributes.&#xA;" annotatedElement="7c96d5b7-7824-4896-84aa-b4cb97fe0a5e"/>
            <generalization xmi:id="fe85744e-5867-431d-8784-f641ded1d071" isSubstitutable="true" general="d859745e-05b2-4ec6-a4c8-966c43da18b2"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3f02485f-38b4-46f7-8e9a-bdda6fe53ac4" name="PrintServiceLookup" isAbstract="true">
            <ownedComment xmi:id="132cfe9b-c064-42cb-8d6c-4249a24e2f64" body="Implementations of this class provide lookup services for&#xA;print services (typically equivalent to printers) of a particular type.&#xA;&lt;p>&#xA;Multiple implementations may be installed concurrently.&#xA;All implementations must be able to describe the located printers&#xA;as instances of a PrintService.&#xA;Typically implementations of this service class are located&#xA;automatically in JAR files (see the SPI JAR file specification).&#xA;These classes must be instantiable using a default constructor.&#xA;Alternatively applications may explicitly register instances&#xA;at runtime.&#xA;&lt;p>&#xA;Applications use only the static methods of this abstract class.&#xA;The instance methods are implemented by a service provider in a subclass&#xA;and the unification of the results from all installed lookup classes&#xA;are reported by the static methods of this class when called by&#xA;the application.&#xA;&lt;p>&#xA;A PrintServiceLookup implementor is recommended to check for the&#xA;SecurityManager.checkPrintJobAccess() to deny access to untrusted code.&#xA;Following this recommended policy means that untrusted code may not&#xA;be able to locate any print services. Downloaded applets are the most&#xA;common example of untrusted code.&#xA;&lt;p>&#xA;This check is made on a per lookup service basis to allow flexibility in&#xA;the policy to reflect the needs of different lookup services.&#xA;&lt;p>&#xA;Services which are registered by registerService(PrintService)&#xA;will not be included in lookup results if a security manager is&#xA;installed and its checkPrintJobAccess() method denies access.&#xA;" annotatedElement="3f02485f-38b4-46f7-8e9a-bdda6fe53ac4"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ba417d66-5d94-462c-b451-7668ceccd894" name="Services" visibility="package"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f8bb13e6-c754-435b-9f67-eb1acd368533" name="ServiceUIFactory" isAbstract="true">
            <ownedComment xmi:id="d49f9321-5515-4623-b0c6-584f6872dac4" body="Services may optionally provide UIs which allow different styles&#xA;of interaction in different roles.&#xA;One role may be end-user browsing and setting of print options.&#xA;Another role may be administering the print service.&#xA;&lt;p>&#xA;Although the Print Service API does not presently provide standardised&#xA;support for administering a print service, monitoring of the print&#xA;service is possible and a UI may provide for private update mechanisms.&#xA;&lt;p>&#xA;The basic design intent is to allow applications to lazily locate and&#xA;initialize services only when needed without any API dependencies&#xA;except in an environment in which they are used.&#xA;&lt;p>&#xA;Swing UIs are preferred as they provide a more consistent L&amp;F and&#xA;can support accessibility APIs.&#xA;&lt;p>&#xA;Example usage:&#xA;&lt;pre>&#xA;ServiceUIFactory factory = printService.getServiceUIFactory();&#xA;if (factory != null) {&#xA;JComponent swingui = (JComponent)factory.getUI(&#xA;ServiceUIFactory.MAIN_UIROLE,&#xA;ServiceUIFactory.JCOMPONENT_UI);&#xA;if (swingui != null) {&#xA;tabbedpane.add(&quot;Custom UI&quot;, swingui);&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;" annotatedElement="f8bb13e6-c754-435b-9f67-eb1acd368533"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8fcf4fdd-4015-4ff8-8e88-5db961a9ca94" name="ServiceUI">
            <ownedComment xmi:id="4cc8334f-3225-44dc-a822-846c7bd5c742" body="This class is a collection of UI convenience methods which provide a&#xA;graphical user dialog for browsing print services looked up through the Java&#xA;Print Service API.&#xA;&lt;p>&#xA;The dialogs follow a standard pattern of acting as a continue/cancel option&#xA;for a user as well as allowing the user to select the print service to use&#xA;and specify choices such as paper size and number of copies.&#xA;&lt;p>&#xA;&lt;p>&#xA;The dialogs are designed to work with pluggable print services though the&#xA;public APIs of those print services.&#xA;&lt;p>&#xA;If a print service provides any vendor extensions these may be made&#xA;accessible to the user through a vendor supplied tab panel Component.&#xA;Such a vendor extension is encouraged to use Swing! and to support its&#xA;accessibility APIs.&#xA;The vendor extensions should return the settings as part of the&#xA;AttributeSet.&#xA;Applications which want to preserve the user settings should use those&#xA;settings to specify the print job.&#xA;Note that this class is not referenced by any other part of the Java&#xA;Print Service and may not be included in profiles which cannot depend&#xA;on the presence of the AWT packages.&#xA;" annotatedElement="8fcf4fdd-4015-4ff8-8e88-5db961a9ca94"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="22f9018b-0276-4446-bf5b-d761d61e02fd" name="MultiDoc" isAbstract="true">
            <ownedComment xmi:id="7145035f-a1a0-49e9-929f-d1af83cff12d" body="Interface MultiDoc specifies the interface for an object that supplies more&#xA;than one piece of print data for a Print Job. &quot;Doc&quot; is a short,&#xA;easy-to-pronounce term that means &quot;a piece of print data,&quot; and a &quot;multidoc&quot;&#xA;is a group of several docs. The client passes to the Print Job an object&#xA;that implements interface MultiDoc, and the Print Job calls methods on&#xA;that object to obtain the print data.&#xA;&lt;P>&#xA;Interface MultiDoc provides an abstraction similar to a &quot;linked list&quot; of&#xA;docs. A multidoc object is like a node in the linked list, containing the&#xA;current doc in the list and a pointer to the next node (multidoc) in the&#xA;list. The Print Job can call the multidoc's {@link #getDoc()&#xA;&lt;CODE>getDoc()&lt;/CODE>} method to get the current doc. When it's ready to go&#xA;on to the next doc, the Print Job can call the multidoc's {@link #next()&#xA;&lt;CODE>next()&lt;/CODE>} method to get the next multidoc, which contains the&#xA;next doc. So Print Job code for accessing a multidoc might look like this:&#xA;&lt;PRE>&#xA;void processMultiDoc(MultiDoc theMultiDoc) {&#xA;&#xA;MultiDoc current = theMultiDoc;&#xA;while (current != null) {&#xA;processDoc (current.getDoc());&#xA;current = current.next();&#xA;}&#xA;}&#xA;&lt;/PRE>&#xA;&lt;P>&#xA;Of course, interface MultiDoc can be implemented in any way that fulfills&#xA;the contract; it doesn't have to use a linked list in the implementation.&#xA;&lt;P>&#xA;To get all the print data for a multidoc print job, a Print Service&#xA;proxy could use either of two patterns:&#xA;&lt;OL TYPE=1>&#xA;&lt;LI>&#xA;The &lt;B>interleaved&lt;/B> pattern: Get the doc from the current multidoc. Get&#xA;the print data representation object from the current doc. Get all the print&#xA;data from the print data representation object. Get the next multidoc from&#xA;the current multidoc, and repeat until there are no more. (The code example&#xA;above uses the interleaved pattern.)&#xA;&lt;P>&#xA;&lt;LI>&#xA;The &lt;B>all-at-once&lt;/B> pattern: Get the doc from the current multidoc, and&#xA;save the doc in a list. Get the next multidoc from the current multidoc, and&#xA;repeat until there are no more. Then iterate over the list of saved docs. Get&#xA;the print data representation object from the current doc. Get all the print&#xA;data from the print data representation object. Go to the next doc in the&#xA;list, and repeat until there are no more.&#xA;&lt;/OL>&#xA;Now, consider a printing client that is generating print data on the fly and&#xA;does not have the resources to store more than one piece of print data at a&#xA;time. If the print service proxy used the all-at-once pattern to get the&#xA;print data, it would pose a problem for such a client; the client would have&#xA;to keep all the docs' print data around until the print service proxy comes&#xA;back and asks for them, which the client is not able to do. To work with such&#xA;a client, the print service proxy must use the interleaved pattern.&#xA;&lt;P>&#xA;To address this problem, and to simplify the design of clients providing&#xA;multiple docs to a Print Job, every Print Service proxy that supports&#xA;multidoc print jobs is required to access a MultiDoc object using the&#xA;interleaved pattern. That is, given a MultiDoc object, the print service&#xA;proxy will call {@link #getDoc() &lt;CODE>getDoc()&lt;/CODE>} one or more times&#xA;until it successfully obtains the current Doc object. The print service proxy&#xA;will then obtain the current doc's print data, not proceeding until all the&#xA;print data is obtained or an unrecoverable error occurs. If it is able to&#xA;continue, the print service proxy will then call {@link #next()&#xA;&lt;CODE>next()&lt;/CODE>} one or more times until it successfully obtains either&#xA;the next MultiDoc object or an indication that there are no more. An&#xA;implementation of interface MultiDoc can assume the print service proxy will&#xA;follow this interleaved pattern; for any other pattern of usage, the MultiDoc&#xA;implementation's behavior is unspecified.&#xA;&lt;P>&#xA;There is no restriction on the number of client threads that may be&#xA;simultaneously accessing the same multidoc. Therefore, all implementations of&#xA;interface MultiDoc must be designed to be multiple thread safe. In fact, a&#xA;client thread could be adding docs to the end of the (conceptual) list while&#xA;a Print Job thread is simultaneously obtaining docs from the beginning of the&#xA;list; provided the multidoc object synchronizes the threads properly, the two&#xA;threads will not interfere with each other&#xA;" annotatedElement="22f9018b-0276-4446-bf5b-d761d61e02fd"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="dc0d796c-8a9e-4f9f-a481-1e5148b5932a" name="security">
          <packagedElement xmi:type="uml:Package" xmi:id="c10f0986-7aea-455b-964e-b93d306d4bba" name="sasl">
            <packagedElement xmi:type="uml:Class" xmi:id="578669b5-d191-4cd7-aa87-44c5ee74ae08" name="RealmChoiceCallback">
              <ownedComment xmi:id="027e1e8b-fd54-4c8b-8f1f-32cacaa1e48e" body="This callback is used by &lt;tt>SaslClient&lt;/tt> and &lt;tt>SaslServer&lt;/tt>&#xA;to obtain a realm given a list of realm choices.&#xA;&#xA;@since 1.5&#xA;&#xA;@author Rosanna Lee&#xA;@author Rob Weltman&#xA;" annotatedElement="578669b5-d191-4cd7-aa87-44c5ee74ae08"/>
              <generalization xmi:id="589e12f1-69aa-45cf-aa7b-f6474471b1d2" isSubstitutable="true" general="f469185b-61be-4357-abb3-9d852aaf1ad0"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="09e7b65f-5624-429c-9b12-8fe584fea805" name="RealmCallback">
              <ownedComment xmi:id="5c0eea90-3f26-446a-bbff-df4536688f8a" body="This callback is used by &lt;tt>SaslClient&lt;/tt> and &lt;tt>SaslServer&lt;/tt>&#xA;to retrieve realm information.&#xA;&#xA;@since 1.5&#xA;&#xA;@author Rosanna Lee&#xA;@author Rob Weltman&#xA;" annotatedElement="09e7b65f-5624-429c-9b12-8fe584fea805"/>
              <generalization xmi:id="46e7b43a-e7a3-4ea4-9b09-807444f99188" isSubstitutable="true" general="0e08368f-cd5d-4b11-96d0-2dccf490e61c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="eb0ad3b8-0d3c-4800-a977-ba1000743a44" name="AuthenticationException">
              <ownedComment xmi:id="1dc6e96a-8d13-4b78-b0d6-dcbedd80a947" body="This exception is thrown by a SASL mechanism implementation&#xA;to indicate that the SASL&#xA;exchange has failed due to reasons related to authentication, such as&#xA;an invalid identity, passphrase, or key.&#xA;&lt;p>&#xA;Note that the lack of an AuthenticationException does not mean that&#xA;the failure was not due to an authentication error.  A SASL mechanism&#xA;implementation might throw the more general SaslException instead of&#xA;AuthenticationException if it is unable to determine the nature&#xA;of the failure, or if does not want to disclose the nature of&#xA;the failure, for example, due to security reasons.&#xA;&#xA;@since 1.5&#xA;&#xA;@author Rosanna Lee&#xA;@author Rob Weltman&#xA;" annotatedElement="eb0ad3b8-0d3c-4800-a977-ba1000743a44"/>
              <generalization xmi:id="f3a1eb17-bfe4-4527-9661-861c02f6d550" isSubstitutable="true" general="1258b70c-ed14-47af-bdf3-2604d0fe00fc"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="17e6e022-0768-4a7d-8e94-0bc7b8384be8" name="SaslClient" isAbstract="true">
              <ownedComment xmi:id="e556b354-b028-4142-bee7-8f98744fbd81" body="Performs SASL authentication as a client.&#xA;&lt;p>&#xA;A protocol library such as one for LDAP gets an instance of this&#xA;class in order to perform authentication defined by a specific SASL&#xA;mechanism. Invoking methods on the &lt;tt>SaslClient&lt;/tt> instance&#xA;process challenges and create responses according to the SASL&#xA;mechanism implemented by the &lt;tt>SaslClient&lt;/tt>.&#xA;As the authentication proceeds, the instance&#xA;encapsulates the state of a SASL client's authentication exchange.&#xA;&lt;p>&#xA;Here's an example of how an LDAP library might use a &lt;tt>SaslClient&lt;/tt>.&#xA;It first gets an instance of a &lt;tt>SaslClient&lt;/tt>:&#xA;&lt;blockquote>&lt;pre>&#xA;SaslClient sc = Sasl.createSaslClient(mechanisms,&#xA;authorizationId, protocol, serverName, props, callbackHandler);&#xA;&lt;/pre>&lt;/blockquote>&#xA;It can then proceed to use the client for authentication.&#xA;For example, an LDAP library might use the client as follows:&#xA;&lt;blockquote>&lt;pre>&#xA;Get initial response and send to server&#xA;byte[] response = (sc.hasInitialResponse() ? sc.evaluateChallenge(new byte[0]) :&#xA;null);&#xA;LdapResult res = ldap.sendBindRequest(dn, sc.getName(), response);&#xA;while (!sc.isComplete() &amp;&amp;&#xA;(res.status == SASL_BIND_IN_PROGRESS || res.status == SUCCESS)) {&#xA;response = sc.evaluateChallenge(res.getBytes());&#xA;if (res.status == SUCCESS) {&#xA;we're done; don't expect to send another BIND&#xA;if (response != null) {&#xA;throw new SaslException(&#xA;&quot;Protocol error: attempting to send response after completion&quot;);&#xA;}&#xA;break;&#xA;}&#xA;res = ldap.sendBindRequest(dn, sc.getName(), response);&#xA;}&#xA;if (sc.isComplete() &amp;&amp; res.status == SUCCESS) {&#xA;String qop = (String) sc.getNegotiatedProperty(Sasl.QOP);&#xA;if (qop != null&#xA;&amp;&amp; (qop.equalsIgnoreCase(&quot;auth-int&quot;)&#xA;|| qop.equalsIgnoreCase(&quot;auth-conf&quot;))) {&#xA;&#xA;Use SaslClient.wrap() and SaslClient.unwrap() for future&#xA;communication with server&#xA;ldap.in = new SecureInputStream(sc, ldap.in);&#xA;ldap.out = new SecureOutputStream(sc, ldap.out);&#xA;}&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;If the mechanism has an initial response, the library invokes&#xA;&lt;tt>evaluateChallenge()&lt;/tt> with an empty&#xA;challenge and to get initial response.&#xA;Protocols such as IMAP4, which do not include an initial response with&#xA;their first authentication command to the server, initiates the&#xA;authentication without first calling &lt;tt>hasInitialResponse()&lt;/tt>&#xA;or &lt;tt>evaluateChallenge()&lt;/tt>.&#xA;When the server responds to the command, it sends an initial challenge.&#xA;For a SASL mechanism in which the client sends data first, the server should&#xA;have issued a challenge with no data. This will then result in a call&#xA;(on the client) to &lt;tt>evaluateChallenge()&lt;/tt> with an empty challenge.&#xA;&#xA;@since 1.5&#xA;&#xA;@see Sasl&#xA;@see SaslClientFactory&#xA;&#xA;@author Rosanna Lee&#xA;@author Rob Weltman&#xA;" annotatedElement="17e6e022-0768-4a7d-8e94-0bc7b8384be8"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1258b70c-ed14-47af-bdf3-2604d0fe00fc" name="SaslException">
              <ownedComment xmi:id="7eb45c22-30e9-4ba2-a3c7-ef9742f933af" body="This class represents an error that has occurred when using SASL.&#xA;&#xA;@since 1.5&#xA;&#xA;@author Rosanna Lee&#xA;@author Rob Weltman&#xA;" annotatedElement="1258b70c-ed14-47af-bdf3-2604d0fe00fc"/>
              <generalization xmi:id="8a78a9b2-ab9f-435f-81fa-a9691384bfc2" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4ea43f06-09c6-4c78-8981-fc4fa2c1d99b" name="AuthorizeCallback" clientDependency="d835f870-191f-4fbf-b1d4-e56395d2a3da a61b50dd-b301-4378-b83a-c5fe0d7ae32d">
              <ownedComment xmi:id="eaafb049-79fd-4921-8636-4c5df36ffcc5" body="This callback is used by &lt;tt>SaslServer&lt;/tt> to determine whether&#xA;one entity (identified by an authenticated authentication id)&#xA;can act on&#xA;behalf of another entity (identified by an authorization id).&#xA;&#xA;@since 1.5&#xA;&#xA;@author Rosanna Lee&#xA;@author Rob Weltman&#xA;" annotatedElement="4ea43f06-09c6-4c78-8981-fc4fa2c1d99b"/>
              <interfaceRealization xmi:id="d835f870-191f-4fbf-b1d4-e56395d2a3da" name="" supplier="74364b8c-78b7-400e-9112-93c905435264" client="4ea43f06-09c6-4c78-8981-fc4fa2c1d99b" contract="74364b8c-78b7-400e-9112-93c905435264"/>
              <interfaceRealization xmi:id="a61b50dd-b301-4378-b83a-c5fe0d7ae32d" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4ea43f06-09c6-4c78-8981-fc4fa2c1d99b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="b4b72617-9d17-4e4a-8873-c111787fce40" name="SaslServerFactory" isAbstract="true">
              <ownedComment xmi:id="f6550bb2-6458-4923-94e6-a381fe056e77" body="An interface for creating instances of &lt;tt>SaslServer&lt;/tt>.&#xA;A class that implements this interface&#xA;must be thread-safe and handle multiple simultaneous&#xA;requests. It must also have a public constructor that accepts no&#xA;argument.&#xA;&lt;p>&#xA;This interface is not normally accessed directly by a server, which will use the&#xA;&lt;tt>Sasl&lt;/tt> static methods&#xA;instead. However, a particular environment may provide and install a&#xA;new or different &lt;tt>SaslServerFactory&lt;/tt>.&#xA;&#xA;@since 1.5&#xA;&#xA;@see SaslServer&#xA;@see Sasl&#xA;&#xA;@author Rosanna Lee&#xA;@author Rob Weltman&#xA;" annotatedElement="b4b72617-9d17-4e4a-8873-c111787fce40"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7d2e60c5-46d1-4968-9eb0-359267038949" name="Sasl">
              <ownedComment xmi:id="2a0e0a5a-8941-4fda-aa94-72a1b44733c2" body="A static class for creating SASL clients and servers.&#xA;&lt;p>&#xA;This class defines the policy of how to locate, load, and instantiate&#xA;SASL clients and servers.&#xA;&lt;p>&#xA;For example, an application or library gets a SASL client by doing&#xA;something like:&#xA;&lt;blockquote>&lt;pre>&#xA;SaslClient sc = Sasl.createSaslClient(mechanisms,&#xA;authorizationId, protocol, serverName, props, callbackHandler);&#xA;&lt;/pre>&lt;/blockquote>&#xA;It can then proceed to use the instance to create an authentication connection.&#xA;&lt;p>&#xA;Similarly, a server gets a SASL server by using code that looks as follows:&#xA;&lt;blockquote>&lt;pre>&#xA;SaslServer ss = Sasl.createSaslServer(mechanism,&#xA;protocol, serverName, props, callbackHandler);&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;@since 1.5&#xA;&#xA;@author Rosanna Lee&#xA;@author Rob Weltman&#xA;" annotatedElement="7d2e60c5-46d1-4968-9eb0-359267038949"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="345ae8e8-db1d-4b24-913c-ddc6679053b9" name="SaslServer" isAbstract="true">
              <ownedComment xmi:id="8311e1b3-9b55-4ec1-9627-309f1d99183c" body="Performs SASL authentication as a server.&#xA;&lt;p>&#xA;A server such an LDAP server gets an instance of this&#xA;class in order to perform authentication defined by a specific SASL&#xA;mechanism. Invoking methods on the &lt;tt>SaslServer&lt;/tt> instance&#xA;generates challenges according to the SASL&#xA;mechanism implemented by the &lt;tt>SaslServer&lt;/tt>.&#xA;As the authentication proceeds, the instance&#xA;encapsulates the state of a SASL server's authentication exchange.&#xA;&lt;p>&#xA;Here's an example of how an LDAP server might use a &lt;tt>SaslServer&lt;/tt>.&#xA;It first gets an instance of a &lt;tt>SaslServer&lt;/tt> for the SASL mechanism&#xA;requested by the client:&#xA;&lt;blockquote>&lt;pre>&#xA;SaslServer ss = Sasl.createSaslServer(mechanism,&#xA;&quot;ldap&quot;, myFQDN, props, callbackHandler);&#xA;&lt;/pre>&lt;/blockquote>&#xA;It can then proceed to use the server for authentication.&#xA;For example, suppose the LDAP server received an LDAP BIND request&#xA;containing the name of the SASL mechanism and an (optional) initial&#xA;response. It then might use the server as follows:&#xA;&lt;blockquote>&lt;pre>&#xA;while (!ss.isComplete()) {&#xA;try {&#xA;byte[] challenge = ss.evaluateResponse(response);&#xA;if (ss.isComplete()) {&#xA;status = ldap.sendBindResponse(mechanism, challenge, SUCCESS);&#xA;} else {&#xA;status = ldap.sendBindResponse(mechanism, challenge,&#xA;SASL_BIND_IN_PROGRESS);&#xA;response = ldap.readBindRequest();&#xA;}&#xA;} catch (SaslException e) {&#xA;status = ldap.sendErrorResponse(e);&#xA;break;&#xA;}&#xA;}&#xA;if (ss.isComplete() &amp;&amp; status == SUCCESS) {&#xA;String qop = (String) sc.getNegotiatedProperty(Sasl.QOP);&#xA;if (qop != null&#xA;&amp;&amp; (qop.equalsIgnoreCase(&quot;auth-int&quot;)&#xA;|| qop.equalsIgnoreCase(&quot;auth-conf&quot;))) {&#xA;&#xA;Use SaslServer.wrap() and SaslServer.unwrap() for future&#xA;communication with client&#xA;ldap.in = new SecureInputStream(ss, ldap.in);&#xA;ldap.out = new SecureOutputStream(ss, ldap.out);&#xA;}&#xA;}&#xA;&lt;/pre>&lt;/blockquote>&#xA;&#xA;@since 1.5&#xA;&#xA;@see Sasl&#xA;@see SaslServerFactory&#xA;&#xA;@author Rosanna Lee&#xA;@author Rob Weltman&#xA;" annotatedElement="345ae8e8-db1d-4b24-913c-ddc6679053b9"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="384f70c9-5d47-4925-9609-ee0e1611b476" name="SaslClientFactory" isAbstract="true">
              <ownedComment xmi:id="4824b38b-8c04-4ef5-a606-4702b7944487" body="An interface for creating instances of &lt;tt>SaslClient&lt;/tt>.&#xA;A class that implements this interface&#xA;must be thread-safe and handle multiple simultaneous&#xA;requests. It must also have a public constructor that accepts no&#xA;argument.&#xA;&lt;p>&#xA;This interface is not normally accessed directly by a client, which will use the&#xA;&lt;tt>Sasl&lt;/tt> static methods&#xA;instead. However, a particular environment may provide and install a&#xA;new or different &lt;tt>SaslClientFactory&lt;/tt>.&#xA;&#xA;@since 1.5&#xA;&#xA;@see SaslClient&#xA;@see Sasl&#xA;&#xA;@author Rosanna Lee&#xA;@author Rob Weltman&#xA;" annotatedElement="384f70c9-5d47-4925-9609-ee0e1611b476"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="29d14db2-0606-4ffa-b691-dbd7f0207a71" name="auth">
            <packagedElement xmi:type="uml:Package" xmi:id="3e0721ae-391c-4dba-a6f4-7e1bfddbb173" name="kerberos">
              <packagedElement xmi:type="uml:Class" xmi:id="d7b9d77c-d6fe-4296-946b-f574db25011d" name="KrbServicePermissionCollection" visibility="package" clientDependency="d7b73242-d736-4447-b353-e041fac231d1" isLeaf="true">
                <generalization xmi:id="0766d663-a35c-4451-ae0f-81721c9a8c42" isSubstitutable="true" general="528e6ee9-bd4d-433a-b08d-a8e30fb7d9c7"/>
                <interfaceRealization xmi:id="d7b73242-d736-4447-b353-e041fac231d1" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="d7b9d77c-d6fe-4296-946b-f574db25011d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="47e5ebcb-ee69-4149-a1be-c7f424fb8900" name="KerberosTicket" clientDependency="81279471-93ab-41f0-b13d-423b3d12f0c4 7ff4ae34-65da-4f24-bb13-d4c52b26c6f2 b66c66a8-7808-4fff-a2ec-0ec82c75bcc2">
                <ownedComment xmi:id="eab7f544-5a14-4a2a-a5ee-648ec9b38f56" body="This class encapsulates a Kerberos ticket and associated&#xA;information as viewed from the client's point of view. It captures all&#xA;information that the Key Distribution Center (KDC) sends to the client&#xA;in the reply message KDC-REP defined in the Kerberos Protocol&#xA;Specification (&lt;a href=http://www.ietf.org/rfc/rfc1510.txt>RFC 1510&lt;/a>).&#xA;&lt;p>&#xA;All Kerberos JAAS login modules that authenticate a user to a KDC should&#xA;use this class. Where available, the login module might even read this&#xA;information from a ticket cache in the operating system instead of&#xA;directly communicating with the KDC. During the commit phase of the JAAS&#xA;authentication process, the JAAS login module should instantiate this&#xA;class and store the instance in the private credential set of a&#xA;{@link javax.security.auth.Subject Subject}.&lt;p>&#xA;&#xA;It might be necessary for the application to be granted a&#xA;{@link javax.security.auth.PrivateCredentialPermission&#xA;PrivateCredentialPermission} if it needs to access a KerberosTicket&#xA;instance from a Subject. This permission is not needed when the&#xA;application depends on the default JGSS Kerberos mechanism to access the&#xA;KerberosTicket. In that case, however, the application will need an&#xA;appropriate&#xA;{@link javax.security.auth.kerberos.ServicePermission ServicePermission}.&#xA;&lt;p>&#xA;Note that this class is applicable to both ticket granting tickets and&#xA;other regular service tickets. A ticket granting ticket is just a&#xA;special case of a more generalized service ticket.&#xA;&#xA;@see javax.security.auth.Subject&#xA;@see javax.security.auth.PrivateCredentialPermission&#xA;@see javax.security.auth.login.LoginContext&#xA;@see org.ietf.jgss.GSSCredential&#xA;@see org.ietf.jgss.GSSManager&#xA;&#xA;@author Mayank Upadhyay&#xA;@version 1.16, 06/02/04&#xA;@since 1.4&#xA;" annotatedElement="47e5ebcb-ee69-4149-a1be-c7f424fb8900"/>
                <interfaceRealization xmi:id="81279471-93ab-41f0-b13d-423b3d12f0c4" name="" supplier="8a4f780b-bb34-4f90-bdfb-a28d9959af3a" client="47e5ebcb-ee69-4149-a1be-c7f424fb8900" contract="8a4f780b-bb34-4f90-bdfb-a28d9959af3a"/>
                <interfaceRealization xmi:id="b66c66a8-7808-4fff-a2ec-0ec82c75bcc2" name="" supplier="fe23fef4-d8c6-42ff-9e36-9829d2d087fd" client="47e5ebcb-ee69-4149-a1be-c7f424fb8900" contract="fe23fef4-d8c6-42ff-9e36-9829d2d087fd"/>
                <interfaceRealization xmi:id="7ff4ae34-65da-4f24-bb13-d4c52b26c6f2" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="47e5ebcb-ee69-4149-a1be-c7f424fb8900" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="a3eb9128-6381-4bc4-a8b4-c726d5124958" name="ServicePermission" clientDependency="be3a58f8-69c0-423a-be7b-02e98b99dff1" isLeaf="true">
                <ownedComment xmi:id="77318a3c-cd19-4f5b-af96-de455044720c" body="This class is used to protect Kerberos services and the&#xA;credentials necessary to access those services. There is a one to&#xA;one mapping of a service principal and the credentials necessary&#xA;to access the service. Therefore granting access to a service&#xA;principal implicitly grants access to the credential necessary to&#xA;establish a security context with the service principal. This&#xA;applies regardless of whether the credentials are in a cache&#xA;or acquired via an exchange with the KDC. The credential can&#xA;be either a ticket granting ticket, a service ticket or a secret&#xA;key from a key table.&#xA;&lt;p>&#xA;A ServicePermission contains a service principal name and&#xA;a list of actions which specify the context the credential can be&#xA;used within.&#xA;&lt;p>&#xA;The service principal name is the canonical name of the&#xA;&lt;code>KereberosPrincipal&lt;/code> supplying the service, that is&#xA;the KerberosPrincipal represents a Kerberos service&#xA;principal. This name is treated in a case sensitive manner.&#xA;An asterisk may appear by itself, to signify any service principal.&#xA;&lt;p>&#xA;Granting this permission implies that the caller can use a cached&#xA;credential (TGT, service ticket or secret key) within the context&#xA;designated by the action. In the case of the TGT, granting this&#xA;permission also implies that the TGT can be obtained by an&#xA;Authentication Service exchange.&#xA;&lt;p>&#xA;The possible actions are:&#xA;&lt;p>&#xA;&lt;pre>&#xA;initiate -              allow the caller to use the credential to&#xA;initiate a security context with a service&#xA;principal.&#xA;&#xA;accept -                allow the caller to use the credential to&#xA;accept security context as a particular&#xA;principal.&#xA;&lt;/pre>&#xA;&#xA;For example, to specify the permission to access to the TGT to&#xA;initiate a security context the permission is constructed as follows:&#xA;&lt;p>&#xA;&lt;pre>&#xA;ServicePermission(&quot;krbtgt/EXAMPLE.COM@EXAMPLE.COM&quot;, &quot;initiate&quot;);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;To obtain a service ticket to initiate a context with the &quot;host&quot;&#xA;service the permission is constructed as follows:&#xA;&lt;pre>&#xA;ServicePermission(&quot;host/foo.example.com@EXAMPLE.COM&quot;, &quot;initiate&quot;);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;For a Kerberized server the action is &quot;accept&quot;. For example, the permission&#xA;necessary to access and use the secret key of the  Kerberized &quot;host&quot;&#xA;service (telnet and the likes)  would be constructed as follows:&#xA;&lt;p>&#xA;&lt;pre>&#xA;ServicePermission(&quot;host/foo.example.com@EXAMPLE.COM&quot;, &quot;accept&quot;);&#xA;&lt;/pre>&#xA;&#xA;@since JDK1.4&#xA;" annotatedElement="a3eb9128-6381-4bc4-a8b4-c726d5124958"/>
                <generalization xmi:id="0c237fa5-a831-4af5-924a-99891c3f3d33" isSubstitutable="true" general="d9c6788c-6eda-4930-93b7-34c95c7c74cc"/>
                <interfaceRealization xmi:id="be3a58f8-69c0-423a-be7b-02e98b99dff1" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="a3eb9128-6381-4bc4-a8b4-c726d5124958" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="a2d6945c-ab4b-4d32-a52a-e1c32ef3bd3f" name="KerberosKey" clientDependency="34378292-70e9-4d99-bf6a-29c21e1faa5d ba0b7b8e-a836-42c7-9c54-eaaec03c37c1">
                <ownedComment xmi:id="369b1194-4605-4d14-9403-612d59f49387" body="This class encapsulates a long term secret key for a Kerberos&#xA;principal.&lt;p>&#xA;&#xA;All Kerberos JAAS login modules that obtain a principal's password and&#xA;generate the secret key from it should use this class. Where available,&#xA;the login module might even read this secret key directly from a&#xA;Kerberos &quot;keytab&quot;. Sometimes, such as when authenticating a server in&#xA;the absence of user-to-user authentication, the login module will store&#xA;an instance of this class in the private credential set of a&#xA;{@link javax.security.auth.Subject Subject} during the commit phase of the&#xA;authentication process.&lt;p>&#xA;&#xA;It might be necessary for the application to be granted a&#xA;{@link javax.security.auth.PrivateCredentialPermission&#xA;PrivateCredentialPermission} if it needs to access the KerberosKey&#xA;instance from a Subject. This permission is not needed when the&#xA;application depends on the default JGSS Kerberos mechanism to access the&#xA;KerberosKey. In that case, however, the application will need an&#xA;appropriate&#xA;{@link javax.security.auth.kerberos.ServicePermission ServicePermission}.&#xA;&#xA;@author Mayank Upadhyay&#xA;@version 1.17, 01/13/04&#xA;@since 1.4&#xA;" annotatedElement="a2d6945c-ab4b-4d32-a52a-e1c32ef3bd3f"/>
                <interfaceRealization xmi:id="ba0b7b8e-a836-42c7-9c54-eaaec03c37c1" name="" supplier="83a7815a-11ab-4532-adf3-0860bf2a3f93" client="a2d6945c-ab4b-4d32-a52a-e1c32ef3bd3f" contract="83a7815a-11ab-4532-adf3-0860bf2a3f93"/>
                <interfaceRealization xmi:id="34378292-70e9-4d99-bf6a-29c21e1faa5d" name="" supplier="8a4f780b-bb34-4f90-bdfb-a28d9959af3a" client="a2d6945c-ab4b-4d32-a52a-e1c32ef3bd3f" contract="8a4f780b-bb34-4f90-bdfb-a28d9959af3a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="1c52c1a4-8432-4df1-8012-c160f5a21134" name="KerberosPrincipal" clientDependency="c2535b83-6ba8-47db-ab4b-408696aff567 540300ac-637e-4b16-9d58-055aed6b9365" isLeaf="true">
                <ownedComment xmi:id="27f08daa-fd07-4376-9872-fe7ab9793cc1" body="This class encapsulates a Kerberos principal.&#xA;&#xA;@author Mayank Upadhyay&#xA;@version 1.18, 02/03/04&#xA;@since 1.4&#xA;" annotatedElement="1c52c1a4-8432-4df1-8012-c160f5a21134"/>
                <interfaceRealization xmi:id="c2535b83-6ba8-47db-ab4b-408696aff567" name="" supplier="516530d1-1bf1-40f1-8619-f08f8811875d" client="1c52c1a4-8432-4df1-8012-c160f5a21134" contract="516530d1-1bf1-40f1-8619-f08f8811875d"/>
                <interfaceRealization xmi:id="540300ac-637e-4b16-9d58-055aed6b9365" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="1c52c1a4-8432-4df1-8012-c160f5a21134" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="24faea2e-d287-4f26-ba27-537435ce7850" name="DelegationPermission" clientDependency="191152ce-6c36-4a4d-b51a-2243e8b6f1ce" isLeaf="true">
                <ownedComment xmi:id="095918ac-4e88-45c1-b489-aaa4f703579c" body="This class is used to restrict the usage of the Kerberos&#xA;delegation model, ie: forwardable and proxiable tickets.&#xA;&lt;p>&#xA;The target name of this &lt;code>Permission&lt;/code> specifies a pair of&#xA;kerberos service principals. The first is the subordinate service principal&#xA;being entrusted to use the TGT. The second service principal designates&#xA;the target service the subordinate service principal is to&#xA;interact with on behalf of the initiating KerberosPrincipal. This&#xA;latter service principal is specified to restrict the use of a&#xA;proxiable ticket.&#xA;&lt;p>&#xA;For example, to specify the &quot;host&quot; service use of a forwardable TGT the&#xA;target permission is specified as follows:&#xA;&lt;p>&#xA;&lt;pre>&#xA;DelegationPermission(&quot;\&quot;host/foo.example.com@EXAMPLE.COM\&quot; \&quot;krbtgt/EXAMPLE.COM@EXAMPLE.COM\&quot;&quot;);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;To give the &quot;backup&quot; service a proxiable nfs service ticket the target permission&#xA;might be specified:&#xA;&lt;p>&#xA;&lt;pre>&#xA;DelegationPermission(&quot;\&quot;backup/bar.example.com@EXAMPLE.COM\&quot; \&quot;nfs/home.EXAMPLE.COM@EXAMPLE.COM\&quot;&quot;);&#xA;&lt;/pre>&#xA;&#xA;@since JDK1.4&#xA;" annotatedElement="24faea2e-d287-4f26-ba27-537435ce7850"/>
                <generalization xmi:id="e63ecc6a-de80-4e6d-a0b8-880f0e6a7a9c" isSubstitutable="true" general="4831e368-c670-40b4-87bd-a8a910a528fa"/>
                <interfaceRealization xmi:id="191152ce-6c36-4a4d-b51a-2243e8b6f1ce" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="24faea2e-d287-4f26-ba27-537435ce7850" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4804320e-1cd4-4143-8978-dffc6ba77c54" name="KrbDelegationPermissionCollection" visibility="package" clientDependency="f3842062-15b3-40ec-a12e-194571983041" isLeaf="true">
                <generalization xmi:id="05f46a10-fe8a-4b15-b0db-238d094bb6ad" isSubstitutable="true" general="528e6ee9-bd4d-433a-b08d-a8e30fb7d9c7"/>
                <interfaceRealization xmi:id="f3842062-15b3-40ec-a12e-194571983041" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4804320e-1cd4-4143-8978-dffc6ba77c54" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="53515cab-5c82-443c-ad09-b20729a8c71c" name="KeyImpl" visibility="package" clientDependency="5c3d4cb9-a962-4c88-8b50-86444ee5ecf9 bb237ab8-76e3-4007-bddb-b7f335817c31 cd307be1-a3f5-4dfd-a122-5b0364a949a8">
                <ownedComment xmi:id="6409f16e-6c99-4793-bc83-d96699b2a1a3" body="This class encapsulates a Kerberos encryption key. It is not associated&#xA;with a principal and may represent an ephemeral session key.&#xA;&#xA;@author Mayank Upadhyay&#xA;@version 1.13, 04/01/04&#xA;@since 1.4&#xA;&#xA;@serial include&#xA;" annotatedElement="53515cab-5c82-443c-ad09-b20729a8c71c"/>
                <interfaceRealization xmi:id="bb237ab8-76e3-4007-bddb-b7f335817c31" name="" supplier="83a7815a-11ab-4532-adf3-0860bf2a3f93" client="53515cab-5c82-443c-ad09-b20729a8c71c" contract="83a7815a-11ab-4532-adf3-0860bf2a3f93"/>
                <interfaceRealization xmi:id="cd307be1-a3f5-4dfd-a122-5b0364a949a8" name="" supplier="8a4f780b-bb34-4f90-bdfb-a28d9959af3a" client="53515cab-5c82-443c-ad09-b20729a8c71c" contract="8a4f780b-bb34-4f90-bdfb-a28d9959af3a"/>
                <interfaceRealization xmi:id="5c3d4cb9-a962-4c88-8b50-86444ee5ecf9" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="53515cab-5c82-443c-ad09-b20729a8c71c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2bbceb95-cd77-4ae8-b91f-8e44cf8687e8" name="RefreshFailedException">
              <ownedComment xmi:id="3e0ddca3-aca2-4615-a3fe-110ded61a85f" body="Signals that a &lt;code>refresh&lt;/code> operation failed.&#xA;&#xA;&lt;p> This exception is thrown by credentials implementing&#xA;the &lt;code>Refreshable&lt;/code> interface when the &lt;code>refresh&lt;/code>&#xA;method fails.&#xA;&#xA;@version 1.8, 12/19/03&#xA;" annotatedElement="2bbceb95-cd77-4ae8-b91f-8e44cf8687e8"/>
              <generalization xmi:id="785fefb6-e0f3-4929-94a6-8c18206ddb9d" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="9126e2a0-f34e-433c-b500-e0b312e7cc73" name="login">
              <packagedElement xmi:type="uml:Class" xmi:id="390acdd5-35ef-4b87-9537-c0df8a189748" name="Configuration" isAbstract="true">
                <ownedComment xmi:id="bf19ab81-a45f-4d10-9215-a5a0b50ce4e7" body="&lt;p> This is an abstract class for representing the configuration of&#xA;LoginModules under an application.  The &lt;code>Configuration&lt;/code> specifies&#xA;which LoginModules should be used for a particular application, and in what&#xA;order the LoginModules should be invoked.&#xA;This abstract class needs to be subclassed to provide an implementation&#xA;which reads and loads the actual &lt;code>Configuration&lt;/code>.&#xA;&#xA;&lt;p> A login configuration contains the following information.&#xA;Note that this example only represents the default syntax for the&#xA;&lt;code>Configuration&lt;/code>.  Subclass implementations of this class&#xA;may implement alternative syntaxes and may retrieve the&#xA;&lt;code>Configuration&lt;/code> from any source such as files, databases,&#xA;or servers.&#xA;&#xA;&lt;pre>&#xA;Name {&#xA;ModuleClass  Flag    ModuleOptions;&#xA;ModuleClass  Flag    ModuleOptions;&#xA;ModuleClass  Flag    ModuleOptions;&#xA;};&#xA;Name {&#xA;ModuleClass  Flag    ModuleOptions;&#xA;ModuleClass  Flag    ModuleOptions;&#xA;};&#xA;other {&#xA;ModuleClass  Flag    ModuleOptions;&#xA;ModuleClass  Flag    ModuleOptions;&#xA;};&#xA;&lt;/pre>&#xA;&#xA;&lt;p> Each entry in the &lt;code>Configuration&lt;/code> is indexed via an&#xA;application name, &lt;i>Name&lt;/i>, and contains a list of&#xA;LoginModules configured for that application.  Each &lt;code>LoginModule&lt;/code>&#xA;is specified via its fully qualified class name.&#xA;Authentication proceeds down the module list in the exact order specified.&#xA;If an application does not have specific entry,&#xA;it defaults to the specific entry for &quot;&lt;i>other&lt;/i>&quot;.&#xA;&#xA;&lt;p> The &lt;i>Flag&lt;/i> value controls the overall behavior as authentication&#xA;proceeds down the stack.  The following represents a description of the&#xA;valid values for &lt;i>Flag&lt;/i> and their respective semantics:&#xA;&#xA;&lt;pre>&#xA;1) Required     - The &lt;code>LoginModule&lt;/code> is required to succeed.&#xA;If it succeeds or fails, authentication still continues&#xA;to proceed down the &lt;code>LoginModule&lt;/code> list.&#xA;&#xA;2) Requisite    - The &lt;code>LoginModule&lt;/code> is required to succeed.&#xA;If it succeeds, authentication continues down the&#xA;&lt;code>LoginModule&lt;/code> list.  If it fails,&#xA;control immediately returns to the application&#xA;(authentication does not proceed down the&#xA;&lt;code>LoginModule&lt;/code> list).&#xA;&#xA;3) Sufficient   - The &lt;code>LoginModule&lt;/code> is not required to&#xA;succeed.  If it does succeed, control immediately&#xA;returns to the application (authentication does not&#xA;proceed down the &lt;code>LoginModule&lt;/code> list).&#xA;If it fails, authentication continues down the&#xA;&lt;code>LoginModule&lt;/code> list.&#xA;&#xA;4) Optional     - The &lt;code>LoginModule&lt;/code> is not required to&#xA;succeed.  If it succeeds or fails,&#xA;authentication still continues to proceed down the&#xA;&lt;code>LoginModule&lt;/code> list.&#xA;&lt;/pre>&#xA;&#xA;&lt;p> The overall authentication succeeds only if all &lt;i>Required&lt;/i> and&#xA;&lt;i>Requisite&lt;/i> LoginModules succeed.  If a &lt;i>Sufficient&lt;/i>&#xA;&lt;code>LoginModule&lt;/code> is configured and succeeds,&#xA;then only the &lt;i>Required&lt;/i> and &lt;i>Requisite&lt;/i> LoginModules prior to&#xA;that &lt;i>Sufficient&lt;/i> &lt;code>LoginModule&lt;/code> need to have succeeded for&#xA;the overall authentication to succeed. If no &lt;i>Required&lt;/i> or&#xA;&lt;i>Requisite&lt;/i> LoginModules are configured for an application,&#xA;then at least one &lt;i>Sufficient&lt;/i> or &lt;i>Optional&lt;/i>&#xA;&lt;code>LoginModule&lt;/code> must succeed.&#xA;&#xA;&lt;p> &lt;i>ModuleOptions&lt;/i> is a space separated list of&#xA;&lt;code>LoginModule&lt;/code>-specific values which are passed directly to&#xA;the underlying LoginModules.  Options are defined by the&#xA;&lt;code>LoginModule&lt;/code> itself, and control the behavior within it.&#xA;For example, a &lt;code>LoginModule&lt;/code> may define options to support&#xA;debugging/testing capabilities.  The correct way to specify options in the&#xA;&lt;code>Configuration&lt;/code> is by using the following key-value pairing:&#xA;&lt;i>debug=&quot;true&quot;&lt;/i>.  The key and value should be separated by an&#xA;'equals' symbol, and the value should be surrounded by double quotes.&#xA;If a String in the form, ${system.property}, occurs in the value,&#xA;it will be expanded to the value of the system property.&#xA;Note that there is no limit to the number of&#xA;options a &lt;code>LoginModule&lt;/code> may define.&#xA;&#xA;&lt;p> The following represents an example &lt;code>Configuration&lt;/code> entry&#xA;based on the syntax above:&#xA;&#xA;&lt;pre>&#xA;Login {&#xA;com.sun.security.auth.module.UnixLoginModule required;&#xA;com.sun.security.auth.module.Krb5LoginModule optional&#xA;useTicketCache=&quot;true&quot;&#xA;ticketCache=&quot;${user.home}${/}tickets&quot;;&#xA;};&#xA;&lt;/pre>&#xA;&#xA;&lt;p> This &lt;code>Configuration&lt;/code> specifies that an application named,&#xA;&quot;Login&quot;, requires users to first authenticate to the&#xA;&lt;i>com.sun.security.auth.module.UnixLoginModule&lt;/i>, which is&#xA;required to succeed.  Even if the &lt;i>UnixLoginModule&lt;/i>&#xA;authentication fails, the&#xA;&lt;i>com.sun.security.auth.module.Krb5LoginModule&lt;/i>&#xA;still gets invoked.  This helps hide the source of failure.&#xA;Since the &lt;i>Krb5LoginModule&lt;/i> is &lt;i>Optional&lt;/i>, the overall&#xA;authentication succeeds only if the &lt;i>UnixLoginModule&lt;/i>&#xA;(&lt;i>Required&lt;/i>) succeeds.&#xA;&#xA;&lt;p> Also note that the LoginModule-specific options,&#xA;&lt;i>useTicketCache=&quot;true&quot;&lt;/i> and&#xA;&lt;i>ticketCache=${user.home}${/}tickets&quot;&lt;/i>,&#xA;are passed to the &lt;i>Krb5LoginModule&lt;/i>.&#xA;These options instruct the &lt;i>Krb5LoginModule&lt;/i> to&#xA;use the ticket cache at the specified location.&#xA;The system properties, &lt;i>user.home&lt;/i> and &lt;i>/&lt;/i>&#xA;(file.separator), are expanded to their respective values.&#xA;&#xA;&lt;p> The default Configuration implementation can be changed by setting the&#xA;value of the &quot;login.configuration.provider&quot; security property (in the Java&#xA;security properties file) to the fully qualified name of&#xA;the desired Configuration implementation class.&#xA;The Java security properties file is located in the file named&#xA;&lt;JAVA_HOME>/lib/security/java.security, where &lt;JAVA_HOME>&#xA;refers to the directory where the JDK was installed.&#xA;&#xA;@version 1.57, 12/19/03&#xA;@see javax.security.auth.login.LoginContext&#xA;" annotatedElement="390acdd5-35ef-4b87-9537-c0df8a189748"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="0439be9a-6567-4395-b60e-0b1b32025a45" name="FailedLoginException">
                <ownedComment xmi:id="550bc6bf-9ec9-4723-8368-bb58a5d36fbb" body="Signals that user authentication failed.&#xA;&#xA;&lt;p> This exception is thrown by LoginModules if authentication failed.&#xA;For example, a &lt;code>LoginModule&lt;/code> throws this exception if&#xA;the user entered an incorrect password.&#xA;&#xA;@version 1.15, 12/19/03&#xA;" annotatedElement="0439be9a-6567-4395-b60e-0b1b32025a45"/>
                <generalization xmi:id="b44b4879-b956-48b6-b14c-f2e5c2266bf2" isSubstitutable="true" general="6dd974fd-8f73-44ee-b2b4-564548e9126d"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6dd974fd-8f73-44ee-b2b4-564548e9126d" name="LoginException">
                <ownedComment xmi:id="453af9c4-ad16-4ff2-b61b-ef36cc9bedd7" body="This is the basic login exception.&#xA;&#xA;@version 1.16, 12/19/03&#xA;@see javax.security.auth.login.LoginContext&#xA;" annotatedElement="6dd974fd-8f73-44ee-b2b4-564548e9126d"/>
                <generalization xmi:id="f1d2f8c1-5d85-4e7a-8f68-75d2a66aa977" isSubstitutable="true" general="7acfd9b6-9d61-4ff8-a69a-f6c36176a3cd"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="c4bec5f4-5451-44a7-80d4-a38c2a9cd2d0" name="CredentialExpiredException">
                <ownedComment xmi:id="7d185bea-73fa-4c51-b94f-44a77956c65f" body="Signals that a &lt;code>Credential&lt;/code> has expired.&#xA;&#xA;&lt;p> This exception is thrown by LoginModules when they determine&#xA;that a &lt;code>Credential&lt;/code> has expired.&#xA;For example, a &lt;code>LoginModule&lt;/code> authenticating a user&#xA;in its &lt;code>login&lt;/code> method may determine that the user's&#xA;password, although entered correctly, has expired.  In this case&#xA;the &lt;code>LoginModule&lt;/code> throws this exception to notify&#xA;the application.  The application can then take the appropriate&#xA;steps to assist the user in updating the password.&#xA;&#xA;@version 1.17, 12/19/03&#xA;" annotatedElement="c4bec5f4-5451-44a7-80d4-a38c2a9cd2d0"/>
                <generalization xmi:id="6fedb06c-e7df-48f0-b659-b98b17179445" isSubstitutable="true" general="5ab00796-cd05-4755-b147-b2a4228cfa7b"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="9a0e564d-0589-4a0b-8f3c-f8931e57fe74" name="AppConfigurationEntry">
                <ownedComment xmi:id="67f309e1-8c52-44fe-8f98-44838144e9a6" body="This class represents a single &lt;code>LoginModule&lt;/code> entry&#xA;configured for the application specified in the&#xA;&lt;code>getAppConfigurationEntry(String appName)&lt;/code>&#xA;method in the &lt;code>Configuration&lt;/code> class.  Each respective&#xA;&lt;code>AppConfigurationEntry&lt;/code> contains a &lt;code>LoginModule&lt;/code> name,&#xA;a control flag (specifying whether this &lt;code>LoginModule&lt;/code> is&#xA;REQUIRED, REQUISITE, SUFFICIENT, or OPTIONAL), and LoginModule-specific&#xA;options.  Please refer to the &lt;code>Configuration&lt;/code> class for&#xA;more information on the different control flags and their semantics.&#xA;&#xA;@version 1.34, 05/05/04&#xA;@see javax.security.auth.login.Configuration&#xA;" annotatedElement="9a0e564d-0589-4a0b-8f3c-f8931e57fe74"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="085dc730-0c3a-4a1f-a929-ad96360a95a1" name="LoginModuleControlFlag">
                  <ownedComment xmi:id="079031d7-a267-4158-8f86-f89082a1e36a" body="This class represents whether or not a &lt;code>LoginModule&lt;/code>&#xA;is REQUIRED, REQUISITE, SUFFICIENT or OPTIONAL.&#xA;" annotatedElement="085dc730-0c3a-4a1f-a929-ad96360a95a1"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="1b5883c1-0a8d-4bab-b960-dc3ea1cf6193" name="AccountNotFoundException">
                <ownedComment xmi:id="3dd2859a-ee22-497c-911c-27dd16678aec" body="Signals that an account was not found.&#xA;&#xA;&lt;p> This exception may be thrown by a LoginModule if it is unable&#xA;to locate an account necessary to perform authentication.&#xA;&#xA;@version 1.2, 12/19/03&#xA;@since 1.5&#xA;" annotatedElement="1b5883c1-0a8d-4bab-b960-dc3ea1cf6193"/>
                <generalization xmi:id="c31a6367-bdd4-4189-a057-9c61d199caf2" isSubstitutable="true" general="90826fe2-7c45-42b0-9e3d-1c861faface4"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="734f9f08-e089-49ff-8f3d-4ec17c6aa51b" name="AccountExpiredException">
                <ownedComment xmi:id="9f8026de-554d-4c03-b4c4-3cbaff61a89c" body="Signals that a user account has expired.&#xA;&#xA;&lt;p> This exception is thrown by LoginModules when they determine&#xA;that an account has expired.  For example, a &lt;code>LoginModule&lt;/code>,&#xA;after successfully authenticating a user, may determine that the&#xA;user's account has expired.  In this case the &lt;code>LoginModule&lt;/code>&#xA;throws this exception to notify the application.  The application can&#xA;then take the appropriate steps to notify the user.&#xA;&#xA;@version 1.18, 12/19/03&#xA;" annotatedElement="734f9f08-e089-49ff-8f3d-4ec17c6aa51b"/>
                <generalization xmi:id="f6db7157-33f9-4bea-8e9f-93433f03320f" isSubstitutable="true" general="90826fe2-7c45-42b0-9e3d-1c861faface4"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="144fd515-f0b1-4b14-a64b-1d8da35d2663" name="AccountLockedException">
                <ownedComment xmi:id="75eb99c2-41e9-4158-a07a-b57ef8c5d0f9" body="Signals that an account was locked.&#xA;&#xA;&lt;p> This exception may be thrown by a LoginModule if it&#xA;determines that authentication is being attempted on a&#xA;locked account.&#xA;&#xA;@version 1.2, 12/19/03&#xA;@since 1.5&#xA;" annotatedElement="144fd515-f0b1-4b14-a64b-1d8da35d2663"/>
                <generalization xmi:id="edacdfb7-1869-4f06-8f94-60f0aa84a6cc" isSubstitutable="true" general="90826fe2-7c45-42b0-9e3d-1c861faface4"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="5ab00796-cd05-4755-b147-b2a4228cfa7b" name="CredentialException">
                <ownedComment xmi:id="a7251708-b264-4e4c-9b82-33903f095dbb" body="A generic credential exception.&#xA;&#xA;@version 1.3, 02/03/04&#xA;@since 1.5&#xA;" annotatedElement="5ab00796-cd05-4755-b147-b2a4228cfa7b"/>
                <generalization xmi:id="75600cd4-ad9e-49b1-b7fd-3e87429de18b" isSubstitutable="true" general="6dd974fd-8f73-44ee-b2b4-564548e9126d"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="ad26061e-defc-46cf-915e-3223efc6de23" name="CredentialNotFoundException">
                <ownedComment xmi:id="a2ab1a6c-27bd-4c65-8fd6-744560a0907d" body="Signals that a credential was not found.&#xA;&#xA;&lt;p> This exception may be thrown by a LoginModule if it is unable&#xA;to locate a credential necessary to perform authentication.&#xA;&#xA;@version 1.2, 12/19/03&#xA;@since 1.5&#xA;" annotatedElement="ad26061e-defc-46cf-915e-3223efc6de23"/>
                <generalization xmi:id="fd5b176a-33d1-49db-9d21-1d55a485986d" isSubstitutable="true" general="5ab00796-cd05-4755-b147-b2a4228cfa7b"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="90826fe2-7c45-42b0-9e3d-1c861faface4" name="AccountException">
                <ownedComment xmi:id="85eb7606-b55e-454c-af4a-0994919c6755" body="A generic account exception.&#xA;&#xA;@version 1.3, 02/03/04&#xA;@since 1.5&#xA;" annotatedElement="90826fe2-7c45-42b0-9e3d-1c861faface4"/>
                <generalization xmi:id="8a0b9a75-d082-4c46-b54b-135e701fdbae" isSubstitutable="true" general="6dd974fd-8f73-44ee-b2b4-564548e9126d"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="1eb70635-e693-4da3-820b-9f8b3b51d7f1" name="LoginContext">
                <ownedComment xmi:id="53a965c4-7e46-449c-a52d-5bd4fc316863" body="&lt;p> The &lt;code>LoginContext&lt;/code> class describes the basic methods used&#xA;to authenticate Subjects and provides a way to develop an&#xA;application independent of the underlying authentication technology.&#xA;A &lt;code>Configuration&lt;/code> specifies the authentication technology, or&#xA;&lt;code>LoginModule&lt;/code>, to be used with a particular application.&#xA;Different LoginModules can be plugged in under an application&#xA;without requiring any modifications to the application itself.&#xA;&#xA;&lt;p> In addition to supporting &lt;i>pluggable&lt;/i> authentication, this class&#xA;also supports the notion of &lt;i>stacked&lt;/i> authentication.&#xA;Applications may be configured to use more than one&#xA;LoginModule.  For example, one could&#xA;configure both a Kerberos LoginModule and a smart card&#xA;LoginModule under an application.&#xA;&#xA;&lt;p> A typical caller instantiates a LoginContext with&#xA;a &lt;i>name&lt;/i> and a &lt;code>CallbackHandler&lt;/code>.&#xA;LoginContext uses the &lt;i>name&lt;/i> as the index into a&#xA;Configuration to determine which LoginModules should be used,&#xA;and which ones must succeed in order for the overall authentication to&#xA;succeed.  The &lt;code>CallbackHandler&lt;/code> is passed to the underlying&#xA;LoginModules so they may communicate and interact with users&#xA;(prompting for a username and password via a graphical user interface,&#xA;for example).&#xA;&#xA;&lt;p> Once the caller has instantiated a LoginContext,&#xA;it invokes the &lt;code>login&lt;/code> method to authenticate&#xA;a &lt;code>Subject&lt;/code>.  The &lt;code>login&lt;/code> method invokes&#xA;the configured modules to perform their respective types of authentication&#xA;(username/password, smart card pin verification, etc.).&#xA;Note that the LoginModules will not attempt authentication retries nor&#xA;introduce delays if the authentication fails.&#xA;Such tasks belong to the LoginContext caller.&#xA;&#xA;&lt;p> If the &lt;code>login&lt;/code> method returns without&#xA;throwing an exception, then the overall authentication succeeded.&#xA;The caller can then retrieve&#xA;the newly authenticated Subject by invoking the&#xA;&lt;code>getSubject&lt;/code> method.  Principals and Credentials associated&#xA;with the Subject may be retrieved by invoking the Subject's&#xA;respective &lt;code>getPrincipals&lt;/code>, &lt;code>getPublicCredentials&lt;/code>,&#xA;and &lt;code>getPrivateCredentials&lt;/code> methods.&#xA;&#xA;&lt;p> To logout the Subject, the caller calls&#xA;the &lt;code>logout&lt;/code> method.  As with the &lt;code>login&lt;/code>&#xA;method, this &lt;code>logout&lt;/code> method invokes the &lt;code>logout&lt;/code>&#xA;method for the configured modules.&#xA;&#xA;&lt;p> A LoginContext should not be used to authenticate&#xA;more than one Subject.  A separate LoginContext&#xA;should be used to authenticate each different Subject.&#xA;&#xA;&lt;p> The following documentation applies to all LoginContext constructors:&#xA;&lt;ol>&#xA;&#xA;&lt;li> &lt;code>Subject&lt;/code>&#xA;&lt;ul>&#xA;&lt;li> If the constructor has a Subject&#xA;input parameter, the LoginContext uses the caller-specified&#xA;Subject object.&#xA;&lt;p>&#xA;&lt;li> If the caller specifies a &lt;code>null&lt;/code> Subject&#xA;and a &lt;code>null&lt;/code> value is permitted,&#xA;the LoginContext instantiates a new Subject.&#xA;&lt;p>&#xA;&lt;li> If the constructor does &lt;b>not&lt;/b> have a Subject&#xA;input parameter, the LoginContext instantiates a new Subject.&#xA;&lt;p>&#xA;&lt;/ul>&#xA;&#xA;&lt;li> &lt;code>Configuration&lt;/code>&#xA;&lt;ul>&#xA;&lt;li> If the constructor has a Configuration&#xA;input parameter and the caller specifies a non-null Configuration,&#xA;the LoginContext uses the caller-specified Configuration.&#xA;&lt;p>&#xA;If the constructor does &lt;b>not&lt;/b> have a Configuration&#xA;input parameter, or if the caller specifies a &lt;code>null&lt;/code>&#xA;Configuration object, the constructor uses the following call to&#xA;get the installed Configuration:&#xA;&lt;pre>&#xA;config = Configuration.getConfiguration();&#xA;&lt;/pre>&#xA;For both cases,&#xA;the &lt;i>name&lt;/i> argument given to the constructor is passed to the&#xA;&lt;code>Configuration.getAppConfigurationEntry&lt;/code> method.&#xA;If the Configuration has no entries for the specified &lt;i>name&lt;/i>,&#xA;then the &lt;code>LoginContext&lt;/code> calls&#xA;&lt;code>getAppConfigurationEntry&lt;/code> with the name, &quot;&lt;i>other&lt;/i>&quot;&#xA;(the default entry name).  If there is no entry for &quot;&lt;i>other&lt;/i>&quot;,&#xA;then a &lt;code>LoginException&lt;/code> is thrown.&#xA;&lt;p>&#xA;&lt;li> When LoginContext uses the installed Configuration, the caller&#xA;requires the createLoginContext.&lt;em>name&lt;/em> and possibly&#xA;createLoginContext.other AuthPermissions. Furthermore, the&#xA;LoginContext will invoke configured modules from within an&#xA;&lt;code>AccessController.doPrivileged&lt;/code> call so that modules that&#xA;perform security-sensitive tasks (such as connecting to remote hosts,&#xA;and updating the Subject) will require the respective permissions, but&#xA;the callers of the LoginContext will not require those permissions.&#xA;&lt;p>&#xA;&lt;li> When LoginContext uses a caller-specified Configuration, the caller&#xA;does not require any createLoginContext AuthPermission.  The LoginContext&#xA;saves the &lt;code>AccessControlContext&lt;/code> for the caller,&#xA;and invokes the configured modules from within an&#xA;&lt;tt>AccessController.doPrivileged&lt;/tt> call constrained by that context.&#xA;This means the caller context (stored when the LoginContext was created)&#xA;must have sufficient permissions to perform any security-sensitive tasks&#xA;that the modules may perform.&#xA;&lt;p>&#xA;&lt;/ul>&#xA;&#xA;&lt;li> &lt;code>CallbackHandler&lt;/code>&#xA;&lt;ul>&#xA;&lt;li> If the constructor has a CallbackHandler&#xA;input parameter, the LoginContext uses the caller-specified&#xA;CallbackHandler object.&#xA;&lt;p>&#xA;&lt;li> If the constructor does &lt;b>not&lt;/b> have a CallbackHandler&#xA;input parameter, or if the caller specifies a &lt;code>null&lt;/code>&#xA;CallbackHandler object (and a &lt;code>null&lt;/code> value is permitted),&#xA;the LoginContext queries the&#xA;&lt;i>auth.login.defaultCallbackHandler&lt;/i> security property&#xA;for the fully qualified class name of a default handler implementation.&#xA;If the security property is not set,&#xA;then the underlying modules will not have a&#xA;CallbackHandler for use in communicating&#xA;with users.  The caller thus assumes that the configured&#xA;modules have alternative means for authenticating the user.&#xA;&#xA;&lt;p>&#xA;&lt;li> When the LoginContext uses the installed Configuration (instead of&#xA;a caller-specified Configuration, see above),&#xA;then this LoginContext must wrap any&#xA;caller-specified or default CallbackHandler implementation&#xA;in a new CallbackHandler implementation&#xA;whose &lt;code>handle&lt;/code> method implementation invokes the&#xA;specified CallbackHandler's &lt;code>handle&lt;/code> method in a&#xA;&lt;code>java.security.AccessController.doPrivileged&lt;/code> call&#xA;constrained by the caller's current &lt;code>AccessControlContext&lt;/code>.&#xA;&lt;/ul>&#xA;&lt;/ol>&#xA;&#xA;&lt;p> Note that Security Properties&#xA;(such as &lt;code>auth.login.defaultCallbackHandler&lt;/code>)&#xA;can be set programmatically via the&#xA;&lt;code>java.security.Security&lt;/code> class,&#xA;or statically in the Java security properties file located in the&#xA;file named &lt;JAVA_HOME>/lib/security/java.security,&#xA;where &lt;JAVA_HOME> refers to the directory where the JDK&#xA;was installed.&#xA;&#xA;@version 1.98, 06/28/04&#xA;@see java.security.Security&#xA;@see javax.security.auth.AuthPermission&#xA;@see javax.security.auth.Subject&#xA;@see javax.security.auth.callback.CallbackHandler&#xA;@see javax.security.auth.login.Configuration&#xA;@see javax.security.auth.spi.LoginModule&#xA;" annotatedElement="1eb70635-e693-4da3-820b-9f8b3b51d7f1"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="037ccd3c-3030-469d-b1c8-143592fd99f1" name="SecureCallbackHandler" visibility="private" clientDependency="ee6d9eea-63ce-4b79-8e4d-07232c78cde3">
                  <ownedComment xmi:id="9f71487b-6efd-4a3e-be1c-f3e73a9e449d" body="Wrap the caller-specified CallbackHandler in our own&#xA;and invoke it within a privileged block, constrained by&#xA;the caller's AccessControlContext.&#xA;" annotatedElement="037ccd3c-3030-469d-b1c8-143592fd99f1"/>
                  <interfaceRealization xmi:id="ee6d9eea-63ce-4b79-8e4d-07232c78cde3" name="" supplier="25c4e2d6-4ae5-434e-8418-23f8e8633975" client="037ccd3c-3030-469d-b1c8-143592fd99f1" contract="25c4e2d6-4ae5-434e-8418-23f8e8633975"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="af134e20-30db-49a4-ade7-44302847941a" name="ModuleInfo" visibility="private">
                  <ownedComment xmi:id="64f8665d-3df3-4cf1-a2c3-6d81a6fb4939" body="LoginModule information -&#xA;incapsulates Configuration info and actual module instances&#xA;" annotatedElement="af134e20-30db-49a4-ade7-44302847941a"/>
                </nestedClassifier>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e2d244c3-68ea-4d4a-ab94-e1d7f1987bce" name="AuthPermission" isLeaf="true">
              <ownedComment xmi:id="15a20f65-b59f-4152-bc79-8c2570356d5c" body="This class is for authentication permissions.&#xA;An AuthPermission contains a name&#xA;(also referred to as a &quot;target name&quot;)&#xA;but no actions list; you either have the named permission&#xA;or you don't.&#xA;&#xA;&lt;p> The target name is the name of a security configuration parameter&#xA;(see below).  Currently the AuthPermission object is used to&#xA;guard access to the Policy, Subject, LoginContext,&#xA;and Configuration objects.&#xA;&#xA;&lt;p> The possible target names for an Authentication Permission are:&#xA;&#xA;&lt;pre>&#xA;doAs -&#x9;&#x9;&#x9;allow the caller to invoke the&#xA;&lt;code>Subject.doAs&lt;/code> methods.&#xA;&#xA;doAsPrivileged -&#x9;allow the caller to invoke the&#xA;&lt;code>Subject.doAsPrivileged&lt;/code> methods.&#xA;&#xA;getSubject -&#x9;&#x9;allow for the retrieval of the&#xA;Subject(s) associated with the&#xA;current Thread.&#xA;&#xA;getSubjectFromDomainCombiner -&#x9;allow for the retrieval of the&#xA;Subject associated with the&#xA;a &lt;code>SubjectDomainCombiner&lt;/code>.&#xA;&#xA;setReadOnly -&#x9;&#x9;allow the caller to set a Subject&#xA;to be read-only.&#xA;&#xA;modifyPrincipals -&#x9;allow the caller to modify the &lt;code>Set&lt;/code>&#xA;of Principals associated with a&#xA;&lt;code>Subject&lt;/code>&#xA;&#xA;modifyPublicCredentials - allow the caller to modify the&#xA;&lt;code>Set&lt;/code> of public credentials&#xA;associated with a &lt;code>Subject&lt;/code>&#xA;&#xA;modifyPrivateCredentials - allow the caller to modify the&#xA;&lt;code>Set&lt;/code> of private credentials&#xA;associated with a &lt;code>Subject&lt;/code>&#xA;&#xA;refreshCredential -&#x9;allow code to invoke the &lt;code>refresh&lt;/code>&#xA;method on a credential which implements&#xA;the &lt;code>Refreshable&lt;/code> interface.&#xA;&#xA;destroyCredential -&#x9;allow code to invoke the &lt;code>destroy&lt;/code>&#xA;method on a credential &lt;code>object&lt;/code>&#xA;which implements the &lt;code>Destroyable&lt;/code>&#xA;interface.&#xA;&#xA;createLoginContext.{name} -  allow code to instantiate a&#xA;&lt;code>LoginContext&lt;/code> with the&#xA;specified &lt;i>name&lt;/i>.  &lt;i>name&lt;/i>&#xA;is used as the index into the installed login&#xA;&lt;code>Configuration&lt;/code>&#xA;(that returned by&#xA;&lt;code>Configuration.getConfiguration()&lt;/code>).&#xA;&lt;i>name&lt;/i> can be wildcarded (set to '*')&#xA;to allow for any name.&#xA;&#xA;getLoginConfiguration - allow for the retrieval of the system-wide&#xA;login Configuration.&#xA;&#xA;setLoginConfiguration - allow for the setting of the system-wide&#xA;login Configuration.&#xA;&#xA;refreshLoginConfiguration - allow for the refreshing of the system-wide&#xA;login Configuration.&#xA;&lt;/pre>&#xA;&#xA;&lt;p> The following target name has been deprecated in favor of&#xA;&lt;code>createLoginContext.{name}&lt;/code>.&#xA;&#xA;&lt;pre>&#xA;createLoginContext -&#x9;allow code to instantiate a&#xA;&lt;code>LoginContext&lt;/code>.&#xA;&lt;/pre>&#xA;&#xA;&lt;p> &lt;code>javax.security.auth.Policy&lt;/code> has been&#xA;deprecated in favor of &lt;code>java.security.Policy&lt;/code>.&#xA;Therefore, the following target names have also been deprecated:&#xA;&#xA;&lt;pre>&#xA;getPolicy -&#x9;&#x9;allow the caller to retrieve the system-wide&#xA;Subject-based access control policy.&#xA;&#xA;setPolicy -&#x9;&#x9;allow the caller to set the system-wide&#xA;Subject-based access control policy.&#xA;&#xA;refreshPolicy -&#x9;&#x9;allow the caller to refresh the system-wide&#xA;Subject-based access control policy.&#xA;&lt;/pre>&#xA;&#xA;@version 1.51, 12/19/03&#xA;" annotatedElement="e2d244c3-68ea-4d4a-ab94-e1d7f1987bce"/>
              <generalization xmi:id="3596d81f-8cce-4253-9d52-356073e62c90" isSubstitutable="true" general="4831e368-c670-40b4-87bd-a8a910a528fa"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="8a4f780b-bb34-4f90-bdfb-a28d9959af3a" name="Destroyable" isAbstract="true">
              <ownedComment xmi:id="fdd066f1-e66f-4f50-a4da-0c83ce041dea" body="Objects such as credentials may optionally implement this interface&#xA;to provide the capability to destroy its contents.&#xA;&#xA;@version 1.11, 12/19/03&#xA;@see javax.security.auth.Subject&#xA;" annotatedElement="8a4f780b-bb34-4f90-bdfb-a28d9959af3a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ecfe3cea-1b86-42a5-80a4-3c34d7545c93" name="SubjectDomainCombiner" clientDependency="fe3bbc91-5655-41ce-a0cc-82225b540df1">
              <ownedComment xmi:id="9bd8eaf6-d9c3-4785-b76a-517f820f65df" body="A &lt;code>SubjectDomainCombiner&lt;/code> updates ProtectionDomains&#xA;with Principals from the &lt;code>Subject&lt;/code> associated with this&#xA;&lt;code>SubjectDomainCombiner&lt;/code>.&#xA;&#xA;@version 1.45, 12/19/03&#xA;" annotatedElement="ecfe3cea-1b86-42a5-80a4-3c34d7545c93"/>
              <interfaceRealization xmi:id="fe3bbc91-5655-41ce-a0cc-82225b540df1" name="" supplier="32b86a83-cfcf-42be-baa2-68c6ed10a41b" client="ecfe3cea-1b86-42a5-80a4-3c34d7545c93" contract="32b86a83-cfcf-42be-baa2-68c6ed10a41b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="d40fec06-7fc9-4295-bd4c-3345e863ddd5" name="callback">
              <packagedElement xmi:type="uml:Class" xmi:id="1a340cb7-6097-425f-b571-0862cf6cac88" name="TextOutputCallback" clientDependency="91cf03f8-7e6b-493e-887f-1770f8a8c6b4 827e4087-9b61-45a4-9f15-8ccaaa19c24b">
                <ownedComment xmi:id="de68494e-8eb9-4942-996e-b40bca509701" body="&lt;p> Underlying security services instantiate and pass a&#xA;&lt;code>TextOutputCallback&lt;/code> to the &lt;code>handle&lt;/code>&#xA;method of a &lt;code>CallbackHandler&lt;/code> to display information messages,&#xA;warning messages and error messages.&#xA;&#xA;@version 1.15, 12/19/03&#xA;@see javax.security.auth.callback.CallbackHandler&#xA;" annotatedElement="1a340cb7-6097-425f-b571-0862cf6cac88"/>
                <interfaceRealization xmi:id="91cf03f8-7e6b-493e-887f-1770f8a8c6b4" name="" supplier="74364b8c-78b7-400e-9112-93c905435264" client="1a340cb7-6097-425f-b571-0862cf6cac88" contract="74364b8c-78b7-400e-9112-93c905435264"/>
                <interfaceRealization xmi:id="827e4087-9b61-45a4-9f15-8ccaaa19c24b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="1a340cb7-6097-425f-b571-0862cf6cac88" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="a7683788-f451-4fb7-85b7-57719dedd683" name="UnsupportedCallbackException">
                <ownedComment xmi:id="35bbcb4c-115c-4f2c-858a-509303d78daf" body="Signals that a &lt;code>CallbackHandler&lt;/code> does not&#xA;recognize a particular &lt;code>Callback&lt;/code>.&#xA;&#xA;@version 1.11, 12/19/03&#xA;" annotatedElement="a7683788-f451-4fb7-85b7-57719dedd683"/>
                <generalization xmi:id="1d5704c4-6f21-4faa-98a8-0fa91297ad33" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="25c4e2d6-4ae5-434e-8418-23f8e8633975" name="CallbackHandler" isAbstract="true">
                <ownedComment xmi:id="43efa4ed-ff81-42e1-a709-cf9c5fc9a50e" body="&lt;p> An application implements a &lt;code>CallbackHandler&lt;/code> and passes&#xA;it to underlying security services so that they may interact with&#xA;the application to retrieve specific authentication data,&#xA;such as usernames and passwords, or to display certain information,&#xA;such as error and warning messages.&#xA;&#xA;&lt;p> CallbackHandlers are implemented in an application-dependent fashion.&#xA;For example, implementations for an application with a graphical user&#xA;interface (GUI) may pop up windows to prompt for requested information&#xA;or to display error messages.  An implementation may also choose to obtain&#xA;requested information from an alternate source without asking the end user.&#xA;&#xA;&lt;p> Underlying security services make requests for different types&#xA;of information by passing individual Callbacks to the&#xA;&lt;code>CallbackHandler&lt;/code>.  The &lt;code>CallbackHandler&lt;/code>&#xA;implementation decides how to retrieve and display information&#xA;depending on the Callbacks passed to it.  For example,&#xA;if the underlying service needs a username and password to&#xA;authenticate a user, it uses a &lt;code>NameCallback&lt;/code> and&#xA;&lt;code>PasswordCallback&lt;/code>.  The &lt;code>CallbackHandler&lt;/code>&#xA;can then choose to prompt for a username and password serially,&#xA;or to prompt for both in a single window.&#xA;&#xA;&lt;p> A default &lt;code>CallbackHandler&lt;/code> class implementation&#xA;may be specified in the &lt;i>auth.login.defaultCallbackHandler&lt;/i>&#xA;security property.  The security property can be set&#xA;in the Java security properties file located in the file named&#xA;&lt;JAVA_HOME>/lib/security/java.security, where &lt;JAVA_HOME>&#xA;refers to the directory where the JDK was installed.&#xA;&#xA;&lt;p> If the security property is set to the fully qualified name of a&#xA;&lt;code>CallbackHandler&lt;/code> implementation class,&#xA;then a &lt;code>LoginContext&lt;/code> will load the specified&#xA;&lt;code>CallbackHandler&lt;/code> and pass it to the underlying LoginModules.&#xA;The &lt;code>LoginContext&lt;/code> only loads the default handler&#xA;if it was not provided one.&#xA;&#xA;&lt;p> All default handler implementations must provide a public&#xA;zero-argument constructor.&#xA;&#xA;@version 1.17, 06/28/04&#xA;" annotatedElement="25c4e2d6-4ae5-434e-8418-23f8e8633975"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="346e10e9-4d4b-46c8-9724-386078833f28" name="NameCallback" clientDependency="0f350b43-7d8e-48e2-a0ce-38851b420093 67bfd962-f416-4d2e-bf79-99a4e6b1a290">
                <ownedComment xmi:id="78534677-2b80-4c43-84b2-23de33529c86" body="&lt;p> Underlying security services instantiate and pass a&#xA;&lt;code>NameCallback&lt;/code> to the &lt;code>handle&lt;/code>&#xA;method of a &lt;code>CallbackHandler&lt;/code> to retrieve name information.&#xA;&#xA;@version 1.14, 12/19/03&#xA;@see javax.security.auth.callback.CallbackHandler&#xA;" annotatedElement="346e10e9-4d4b-46c8-9724-386078833f28"/>
                <interfaceRealization xmi:id="0f350b43-7d8e-48e2-a0ce-38851b420093" name="" supplier="74364b8c-78b7-400e-9112-93c905435264" client="346e10e9-4d4b-46c8-9724-386078833f28" contract="74364b8c-78b7-400e-9112-93c905435264"/>
                <interfaceRealization xmi:id="67bfd962-f416-4d2e-bf79-99a4e6b1a290" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="346e10e9-4d4b-46c8-9724-386078833f28" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f469185b-61be-4357-abb3-9d852aaf1ad0" name="ChoiceCallback" clientDependency="6873baa7-88ef-4942-b601-2f76ddf614b4 a9338697-1d0c-445c-a43a-560bc3b8997a">
                <ownedComment xmi:id="6251c062-7098-4b9e-9f8a-cddf3169c6d1" body="&lt;p> Underlying security services instantiate and pass a&#xA;&lt;code>ChoiceCallback&lt;/code> to the &lt;code>handle&lt;/code>&#xA;method of a &lt;code>CallbackHandler&lt;/code> to display a list of choices&#xA;and to retrieve the selected choice(s).&#xA;&#xA;@version 1.17, 12/19/03&#xA;@see javax.security.auth.callback.CallbackHandler&#xA;" annotatedElement="f469185b-61be-4357-abb3-9d852aaf1ad0"/>
                <interfaceRealization xmi:id="a9338697-1d0c-445c-a43a-560bc3b8997a" name="" supplier="74364b8c-78b7-400e-9112-93c905435264" client="f469185b-61be-4357-abb3-9d852aaf1ad0" contract="74364b8c-78b7-400e-9112-93c905435264"/>
                <interfaceRealization xmi:id="6873baa7-88ef-4942-b601-2f76ddf614b4" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f469185b-61be-4357-abb3-9d852aaf1ad0" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="060189e0-9cb2-4067-8405-941334aea484" name="LanguageCallback" clientDependency="22ac3530-372c-4f07-aa67-5ba09d8fabaf 04911b0b-7a4c-4553-9caf-9e6c90fb057e">
                <ownedComment xmi:id="9e9fbbfd-854d-40b5-9889-c6741df012f9" body="&lt;p> Underlying security services instantiate and pass a&#xA;&lt;code>LanguageCallback&lt;/code> to the &lt;code>handle&lt;/code>&#xA;method of a &lt;code>CallbackHandler&lt;/code> to retrieve the &lt;code>Locale&lt;/code>&#xA;used for localizing text.&#xA;&#xA;@version 1.14, 12/19/03&#xA;@see javax.security.auth.callback.CallbackHandler&#xA;" annotatedElement="060189e0-9cb2-4067-8405-941334aea484"/>
                <interfaceRealization xmi:id="04911b0b-7a4c-4553-9caf-9e6c90fb057e" name="" supplier="74364b8c-78b7-400e-9112-93c905435264" client="060189e0-9cb2-4067-8405-941334aea484" contract="74364b8c-78b7-400e-9112-93c905435264"/>
                <interfaceRealization xmi:id="22ac3530-372c-4f07-aa67-5ba09d8fabaf" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="060189e0-9cb2-4067-8405-941334aea484" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="74364b8c-78b7-400e-9112-93c905435264" name="Callback" isAbstract="true">
                <ownedComment xmi:id="27c128cc-1c7d-4bf5-8316-3b3c38a93551" body="&lt;p> Implementations of this interface are passed to a&#xA;&lt;code>CallbackHandler&lt;/code>, allowing underlying security services&#xA;the ability to interact with a calling application to retrieve specific&#xA;authentication data such as usernames and passwords, or to display&#xA;certain information, such as error and warning messages.&#xA;&#xA;&lt;p> &lt;code>Callback&lt;/code> implementations do not retrieve or&#xA;display the information requested by underlying security services.&#xA;&lt;code>Callback&lt;/code> implementations simply provide the means&#xA;to pass such requests to applications, and for applications,&#xA;if appropriate, to return requested information back to the&#xA;underlying security services.&#xA;&#xA;@version 1.10, 12/19/03&#xA;@see javax.security.auth.callback.CallbackHandler&#xA;@see javax.security.auth.callback.ChoiceCallback&#xA;@see javax.security.auth.callback.ConfirmationCallback&#xA;@see javax.security.auth.callback.LanguageCallback&#xA;@see javax.security.auth.callback.NameCallback&#xA;@see javax.security.auth.callback.PasswordCallback&#xA;@see javax.security.auth.callback.TextInputCallback&#xA;@see javax.security.auth.callback.TextOutputCallback&#xA;" annotatedElement="74364b8c-78b7-400e-9112-93c905435264"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="ce63e48f-3f68-4fac-984d-ef3cf81be731" name="PasswordCallback" clientDependency="9c3ad4e5-3fad-4a3d-b2e0-22d3cb206793 65d92a35-0c57-46da-8257-7884ef75252b">
                <ownedComment xmi:id="6b25c2c3-49e6-4a2d-9c11-f3503d6aae91" body="&lt;p> Underlying security services instantiate and pass a&#xA;&lt;code>PasswordCallback&lt;/code> to the &lt;code>handle&lt;/code>&#xA;method of a &lt;code>CallbackHandler&lt;/code> to retrieve password information.&#xA;&#xA;@version 1.18, 12/19/03&#xA;@see javax.security.auth.callback.CallbackHandler&#xA;" annotatedElement="ce63e48f-3f68-4fac-984d-ef3cf81be731"/>
                <interfaceRealization xmi:id="9c3ad4e5-3fad-4a3d-b2e0-22d3cb206793" name="" supplier="74364b8c-78b7-400e-9112-93c905435264" client="ce63e48f-3f68-4fac-984d-ef3cf81be731" contract="74364b8c-78b7-400e-9112-93c905435264"/>
                <interfaceRealization xmi:id="65d92a35-0c57-46da-8257-7884ef75252b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ce63e48f-3f68-4fac-984d-ef3cf81be731" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="24afe379-b5b2-49c5-b9f4-3891bea3be7e" name="ConfirmationCallback" clientDependency="8a2dee4a-0cd1-4acb-96f3-3e185e1069e6 29bf81ed-25c7-4842-8845-51d4768974b2">
                <ownedComment xmi:id="07d316e4-fd29-49c4-ae02-65a9b5d02a3a" body="&lt;p> Underlying security services instantiate and pass a&#xA;&lt;code>ConfirmationCallback&lt;/code> to the &lt;code>handle&lt;/code>&#xA;method of a &lt;code>CallbackHandler&lt;/code> to ask for YES/NO,&#xA;OK/CANCEL, YES/NO/CANCEL or other similar confirmations.&#xA;&#xA;@version 1.16, 12/19/03&#xA;@see javax.security.auth.callback.CallbackHandler&#xA;" annotatedElement="24afe379-b5b2-49c5-b9f4-3891bea3be7e"/>
                <interfaceRealization xmi:id="29bf81ed-25c7-4842-8845-51d4768974b2" name="" supplier="74364b8c-78b7-400e-9112-93c905435264" client="24afe379-b5b2-49c5-b9f4-3891bea3be7e" contract="74364b8c-78b7-400e-9112-93c905435264"/>
                <interfaceRealization xmi:id="8a2dee4a-0cd1-4acb-96f3-3e185e1069e6" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="24afe379-b5b2-49c5-b9f4-3891bea3be7e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="0e08368f-cd5d-4b11-96d0-2dccf490e61c" name="TextInputCallback" clientDependency="89fdb23d-5212-4c5b-accc-2f3a56cd439e 5d201a6c-784f-45c9-a44b-7fcd40658ed1">
                <ownedComment xmi:id="2ccd088d-951a-4aa2-a74b-f13598095f71" body="&lt;p> Underlying security services instantiate and pass a&#xA;&lt;code>TextInputCallback&lt;/code> to the &lt;code>handle&lt;/code>&#xA;method of a &lt;code>CallbackHandler&lt;/code> to retrieve generic text&#xA;information.&#xA;&#xA;@version 1.14, 12/19/03&#xA;@see javax.security.auth.callback.CallbackHandler&#xA;" annotatedElement="0e08368f-cd5d-4b11-96d0-2dccf490e61c"/>
                <interfaceRealization xmi:id="89fdb23d-5212-4c5b-accc-2f3a56cd439e" name="" supplier="74364b8c-78b7-400e-9112-93c905435264" client="0e08368f-cd5d-4b11-96d0-2dccf490e61c" contract="74364b8c-78b7-400e-9112-93c905435264"/>
                <interfaceRealization xmi:id="5d201a6c-784f-45c9-a44b-7fcd40658ed1" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0e08368f-cd5d-4b11-96d0-2dccf490e61c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d7a7199b-13a9-461b-bc78-943026c48367" name="AbstractSet&lt;T>">
              <templateBinding xmi:id="08b1f7fd-8536-43a6-8860-afb8f9790904" signature="77607dee-756d-445e-96f4-9b3b4e6fb80b">
                <parameterSubstitution xmi:id="d46a40a7-a317-4f5c-bed9-478d66ccd13a" formal="1c9b3942-53c2-4539-853b-a9aae2736fa2" actual="8d850dbf-38fc-42df-af21-08f4f479e9e5"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9058f92b-01a3-4c72-acba-83507ebb3909" name="PrivateCredentialPermission" isLeaf="true">
              <ownedComment xmi:id="f7652bd8-ef92-415d-8ba7-15586ef36907" body="This class is used to protect access to private Credentials&#xA;belonging to a particular &lt;code>Subject&lt;/code>.  The &lt;code>Subject&lt;/code>&#xA;is represented by a Set of Principals.&#xA;&#xA;&lt;p> The target name of this &lt;code>Permission&lt;/code> specifies&#xA;a Credential class name, and a Set of Principals.&#xA;The only valid value for this Permission's actions is, &quot;read&quot;.&#xA;The target name must abide by the following syntax:&#xA;&#xA;&lt;pre>&#xA;CredentialClass {PrincipalClass &quot;PrincipalName&quot;}&#xA;&lt;/pre>&#xA;&#xA;For example, the following permission grants access to the&#xA;com.sun.PrivateCredential owned by Subjects which have&#xA;a com.sun.Principal with the name, &quot;duke&quot;.  Note that although&#xA;this example, as well as all the examples below, do not contain&#xA;Codebase, SignedBy, or Principal information in the grant statement&#xA;(for simplicity reasons), actual policy configurations should&#xA;specify that information when appropriate.&#xA;&#xA;&lt;pre>&#xA;&#xA;grant {&#xA;permission javax.security.auth.PrivateCredentialPermission&#xA;&quot;com.sun.PrivateCredential com.sun.Principal \&quot;duke\&quot;&quot;,&#xA;&quot;read&quot;;&#xA;};&#xA;&lt;/pre>&#xA;&#xA;If CredentialClass is &quot;*&quot;, then access is granted to&#xA;all private Credentials belonging to the specified&#xA;&lt;code>Subject&lt;/code>.&#xA;If &quot;PrincipalName&quot; is &quot;*&quot;, then access is granted to the&#xA;specified Credential owned by any &lt;code>Subject&lt;/code> that has the&#xA;specified &lt;code>Principal&lt;/code> (the actual PrincipalName doesn't matter).&#xA;For example, the following grants access to the&#xA;a.b.Credential owned by any &lt;code>Subject&lt;/code> that has&#xA;an a.b.Principal.&#xA;&#xA;&lt;pre>&#xA;grant {&#xA;permission javax.security.auth.PrivateCredentialPermission&#xA;&quot;a.b.Credential a.b.Principal &quot;*&quot;&quot;,&#xA;&quot;read&quot;;&#xA;};&#xA;&lt;/pre>&#xA;&#xA;If both the PrincipalClass and &quot;PrincipalName&quot; are &quot;*&quot;,&#xA;then access is granted to the specified Credential owned by&#xA;any &lt;code>Subject&lt;/code>.&#xA;&#xA;&lt;p> In addition, the PrincipalClass/PrincipalName pairing may be repeated:&#xA;&#xA;&lt;pre>&#xA;grant {&#xA;permission javax.security.auth.PrivateCredentialPermission&#xA;&quot;a.b.Credential a.b.Principal &quot;duke&quot; c.d.Principal &quot;dukette&quot;&quot;,&#xA;&quot;read&quot;;&#xA;};&#xA;&lt;/pre>&#xA;&#xA;The above grants access to the private Credential, &quot;a.b.Credential&quot;,&#xA;belonging to a &lt;code>Subject&lt;/code> with at least two associated Principals:&#xA;&quot;a.b.Principal&quot; with the name, &quot;duke&quot;, and &quot;c.d.Principal&quot;, with the name,&#xA;&quot;dukette&quot;.&#xA;&#xA;@version 1.31, 12/19/03&#xA;" annotatedElement="9058f92b-01a3-4c72-acba-83507ebb3909"/>
              <generalization xmi:id="b8a0a08e-e6c5-4585-a62d-e24b8c2d7d1a" isSubstitutable="true" general="d9c6788c-6eda-4930-93b7-34c95c7c74cc"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="e37149ea-3352-4032-893a-eed190a868d3" name="CredOwner" visibility="package" clientDependency="e077140d-7c80-4d81-8196-174b6ee37458">
                <ownedComment xmi:id="1d2c2eb9-3f88-4aca-b075-c64add3ee0e7" body="@serial include&#xA;" annotatedElement="e37149ea-3352-4032-893a-eed190a868d3"/>
                <interfaceRealization xmi:id="e077140d-7c80-4d81-8196-174b6ee37458" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="e37149ea-3352-4032-893a-eed190a868d3" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="a591e546-4288-4c64-b804-41e84a24141b" name="spi">
              <packagedElement xmi:type="uml:Interface" xmi:id="befe2396-100e-45a9-96a4-9adb0e57ba71" name="LoginModule" isAbstract="true">
                <ownedComment xmi:id="dfc1e305-50de-4034-afe2-14604576aec7" body="&lt;p> &lt;code>LoginModule&lt;/code> describes the interface&#xA;implemented by authentication technology providers.  LoginModules&#xA;are plugged in under applications to provide a particular type of&#xA;authentication.&#xA;&#xA;&lt;p> While applications write to the &lt;code>LoginContext&lt;/code> API,&#xA;authentication technology providers implement the&#xA;&lt;code>LoginModule&lt;/code> interface.&#xA;A &lt;code>Configuration&lt;/code> specifies the LoginModule(s)&#xA;to be used with a particular login application.  Therefore different&#xA;LoginModules can be plugged in under the application without&#xA;requiring any modifications to the application itself.&#xA;&#xA;&lt;p> The &lt;code>LoginContext&lt;/code> is responsible for reading the&#xA;&lt;code>Configuration&lt;/code> and instantiating the appropriate&#xA;LoginModules.  Each &lt;code>LoginModule&lt;/code> is initialized with&#xA;a &lt;code>Subject&lt;/code>, a &lt;code>CallbackHandler&lt;/code>, shared&#xA;&lt;code>LoginModule&lt;/code> state, and LoginModule-specific options.&#xA;&#xA;The &lt;code>Subject&lt;/code> represents the&#xA;&lt;code>Subject&lt;/code> currently being authenticated and is updated&#xA;with relevant Credentials if authentication succeeds.&#xA;LoginModules use the &lt;code>CallbackHandler&lt;/code> to&#xA;communicate with users.  The &lt;code>CallbackHandler&lt;/code> may be&#xA;used to prompt for usernames and passwords, for example.&#xA;Note that the &lt;code>CallbackHandler&lt;/code> may be null.  LoginModules&#xA;which absolutely require a &lt;code>CallbackHandler&lt;/code> to authenticate&#xA;the &lt;code>Subject&lt;/code> may throw a &lt;code>LoginException&lt;/code>.&#xA;LoginModules optionally use the shared state to share information&#xA;or data among themselves.&#xA;&#xA;&lt;p> The LoginModule-specific options represent the options&#xA;configured for this &lt;code>LoginModule&lt;/code> by an administrator or user&#xA;in the login &lt;code>Configuration&lt;/code>.&#xA;The options are defined by the &lt;code>LoginModule&lt;/code> itself&#xA;and control the behavior within it.  For example, a&#xA;&lt;code>LoginModule&lt;/code> may define options to support debugging/testing&#xA;capabilities.  Options are defined using a key-value syntax,&#xA;such as &lt;i>debug=true&lt;/i>.  The &lt;code>LoginModule&lt;/code>&#xA;stores the options as a &lt;code>Map&lt;/code> so that the values may&#xA;be retrieved using the key.  Note that there is no limit to the number&#xA;of options a &lt;code>LoginModule&lt;/code> chooses to define.&#xA;&#xA;&lt;p> The calling application sees the authentication process as a single&#xA;operation.  However, the authentication process within the&#xA;&lt;code>LoginModule&lt;/code> proceeds in two distinct phases.&#xA;In the first phase, the LoginModule's&#xA;&lt;code>login&lt;/code> method gets invoked by the LoginContext's&#xA;&lt;code>login&lt;/code> method.  The &lt;code>login&lt;/code>&#xA;method for the &lt;code>LoginModule&lt;/code> then performs&#xA;the actual authentication (prompt for and verify a password for example)&#xA;and saves its authentication status as private state&#xA;information.  Once finished, the LoginModule's &lt;code>login&lt;/code>&#xA;method either returns &lt;code>true&lt;/code> (if it succeeded) or&#xA;&lt;code>false&lt;/code> (if it should be ignored), or throws a&#xA;&lt;code>LoginException&lt;/code> to specify a failure.&#xA;In the failure case, the &lt;code>LoginModule&lt;/code> must not retry the&#xA;authentication or introduce delays.  The responsibility of such tasks&#xA;belongs to the application.  If the application attempts to retry&#xA;the authentication, the LoginModule's &lt;code>login&lt;/code> method will be&#xA;called again.&#xA;&#xA;&lt;p> In the second phase, if the LoginContext's overall authentication&#xA;succeeded (the relevant REQUIRED, REQUISITE, SUFFICIENT and OPTIONAL&#xA;LoginModules succeeded), then the &lt;code>commit&lt;/code>&#xA;method for the &lt;code>LoginModule&lt;/code> gets invoked.&#xA;The &lt;code>commit&lt;/code> method for a &lt;code>LoginModule&lt;/code> checks its&#xA;privately saved state to see if its own authentication succeeded.&#xA;If the overall &lt;code>LoginContext&lt;/code> authentication succeeded&#xA;and the LoginModule's own authentication succeeded, then the&#xA;&lt;code>commit&lt;/code> method associates the relevant&#xA;Principals (authenticated identities) and Credentials (authentication data&#xA;such as cryptographic keys) with the &lt;code>Subject&lt;/code>&#xA;located within the &lt;code>LoginModule&lt;/code>.&#xA;&#xA;&lt;p> If the LoginContext's overall authentication failed (the relevant&#xA;REQUIRED, REQUISITE, SUFFICIENT and OPTIONAL LoginModules did not succeed),&#xA;then the &lt;code>abort&lt;/code> method for each &lt;code>LoginModule&lt;/code>&#xA;gets invoked.  In this case, the &lt;code>LoginModule&lt;/code> removes/destroys&#xA;any authentication state originally saved.&#xA;&#xA;&lt;p> Logging out a &lt;code>Subject&lt;/code> involves only one phase.&#xA;The &lt;code>LoginContext&lt;/code> invokes the LoginModule's &lt;code>logout&lt;/code>&#xA;method.  The &lt;code>logout&lt;/code> method for the &lt;code>LoginModule&lt;/code>&#xA;then performs the logout procedures, such as removing Principals or&#xA;Credentials from the &lt;code>Subject&lt;/code> or logging session information.&#xA;&#xA;&lt;p> A &lt;code>LoginModule&lt;/code> implementation must have a constructor with&#xA;no arguments.  This allows classes which load the &lt;code>LoginModule&lt;/code>&#xA;to instantiate it.&#xA;&#xA;@version 1.53, 05/05/04&#xA;@see javax.security.auth.login.LoginContext&#xA;@see javax.security.auth.login.Configuration&#xA;" annotatedElement="befe2396-100e-45a9-96a4-9adb0e57ba71"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="336c9dcd-62ea-4560-b617-ae2c2f89f2d8" name="Policy" isAbstract="true">
              <ownedComment xmi:id="8e8d5ff4-73e3-4522-ae2c-50df11639319" body="&lt;p> This is an abstract class for representing the system policy for&#xA;Subject-based authorization.  A subclass implementation&#xA;of this class provides a means to specify a Subject-based&#xA;access control &lt;code>Policy&lt;/code>.&#xA;&#xA;&lt;p> A &lt;code>Policy&lt;/code> object can be queried for the set of&#xA;Permissions granted to code running as a&#xA;&lt;code>Principal&lt;/code> in the following manner:&#xA;&#xA;&lt;pre>&#xA;policy = Policy.getPolicy();&#xA;PermissionCollection perms = policy.getPermissions(subject,&#xA;codeSource);&#xA;&lt;/pre>&#xA;&#xA;The &lt;code>Policy&lt;/code> object consults the local policy and returns&#xA;and appropriate &lt;code>Permissions&lt;/code> object with the&#xA;Permissions granted to the Principals associated with the&#xA;provided &lt;i>subject&lt;/i>, and granted to the code specified&#xA;by the provided &lt;i>codeSource&lt;/i>.&#xA;&#xA;&lt;p> A &lt;code>Policy&lt;/code> contains the following information.&#xA;Note that this example only represents the syntax for the default&#xA;&lt;code>Policy&lt;/code> implementation. Subclass implementations of this class&#xA;may implement alternative syntaxes and may retrieve the&#xA;&lt;code>Policy&lt;/code> from any source such as files, databases,&#xA;or servers.&#xA;&#xA;&lt;p> Each entry in the &lt;code>Policy&lt;/code> is represented as&#xA;a &lt;b>&lt;i>grant&lt;/i>&lt;/b> entry.  Each &lt;b>&lt;i>grant&lt;/i>&lt;/b> entry&#xA;specifies a codebase, code signers, and Principals triplet,&#xA;as well as the Permissions granted to that triplet.&#xA;&#xA;&lt;pre>&#xA;grant CodeBase [&quot;URL&quot;], Signedby [&quot;signers&quot;],&#xA;Principal [Principal_Class] &quot;Principal_Name&quot; {&#xA;Permission Permission_Class [&quot;Target_Name&quot;]&#xA;[, &quot;Permission_Actions&quot;]&#xA;[, signedBy &quot;SignerName&quot;];&#xA;};&#xA;&lt;/pre>&#xA;&#xA;The CodeBase and Signedby components of the triplet name/value pairs&#xA;are optional.  If they are not present, then any any codebase will match,&#xA;and any signer (including unsigned code) will match.&#xA;For Example,&#xA;&#xA;&lt;pre>&#xA;grant CodeBase &quot;foo.com&quot;, Signedby &quot;foo&quot;,&#xA;Principal com.sun.security.auth.SolarisPrincipal &quot;duke&quot; {&#xA;permission java.io.FilePermission &quot;/home/duke&quot;, &quot;read, write&quot;;&#xA;};&#xA;&lt;/pre>&#xA;&#xA;This &lt;b>&lt;i>grant&lt;/i>&lt;/b> entry specifies that code from &quot;foo.com&quot;,&#xA;signed by &quot;foo', and running as a &lt;code>SolarisPrincipal&lt;/code> with the&#xA;name, duke, has one &lt;code>Permission&lt;/code>.  This &lt;code>Permission&lt;/code>&#xA;permits the executing code to read and write files in the directory,&#xA;&quot;/home/duke&quot;.&#xA;&#xA;&lt;p> To &quot;run&quot; as a particular &lt;code>Principal&lt;/code>,&#xA;code invokes the &lt;code>Subject.doAs(subject, ...)&lt;/code> method.&#xA;After invoking that method, the code runs as all the Principals&#xA;associated with the specified &lt;code>Subject&lt;/code>.&#xA;Note that this &lt;code>Policy&lt;/code> (and the Permissions&#xA;granted in this &lt;code>Policy&lt;/code>) only become effective&#xA;after the call to &lt;code>Subject.doAs&lt;/code> has occurred.&#xA;&#xA;&lt;p> Multiple Principals may be listed within one &lt;b>&lt;i>grant&lt;/i>&lt;/b> entry.&#xA;All the Principals in the grant entry must be associated with&#xA;the &lt;code>Subject&lt;/code> provided to &lt;code>Subject.doAs&lt;/code>&#xA;for that &lt;code>Subject&lt;/code> to be granted the specified Permissions.&#xA;&#xA;&lt;pre>&#xA;grant Principal com.sun.security.auth.SolarisPrincipal &quot;duke&quot;,&#xA;Principal com.sun.security.auth.SolarisNumericUserPrincipal &quot;0&quot; {&#xA;permission java.io.FilePermission &quot;/home/duke&quot;, &quot;read, write&quot;;&#xA;permission java.net.SocketPermission &quot;duke.com&quot;, &quot;connect&quot;;&#xA;};&#xA;&lt;/pre>&#xA;&#xA;This entry grants any code running as both &quot;duke&quot; and &quot;0&quot;&#xA;permission to read and write files in duke's home directory,&#xA;as well as permission to make socket connections to &quot;duke.com&quot;.&#xA;&#xA;&lt;p> Note that non Principal-based grant entries are not permitted&#xA;in this &lt;code>Policy&lt;/code>.  Therefore, grant entries such as:&#xA;&#xA;&lt;pre>&#xA;grant CodeBase &quot;foo.com&quot;, Signedby &quot;foo&quot; {&#xA;permission java.io.FilePermission &quot;/tmp/scratch&quot;, &quot;read, write&quot;;&#xA;};&#xA;&lt;/pre>&#xA;&#xA;are rejected.  Such permission must be listed in the&#xA;&lt;code>java.security.Policy&lt;/code>.&#xA;&#xA;&lt;p> The default &lt;code>Policy&lt;/code> implementation can be changed by&#xA;setting the value of the &quot;auth.policy.provider&quot; security property&#xA;(in the Java security properties file) to the fully qualified name of&#xA;the desired &lt;code>Policy&lt;/code> implementation class.&#xA;The Java security properties file is located in the file named&#xA;&lt;JAVA_HOME>/lib/security/java.security, where &lt;JAVA_HOME>&#xA;refers to the directory where the JDK was installed.&#xA;&#xA;@deprecated&#x9;as of JDK version 1.4 -- Replaced by java.security.Policy.&#xA;java.security.Policy has a method:&#xA;&lt;pre>&#xA;public PermissionCollection getPermissions&#xA;(java.security.ProtectionDomain pd)&#xA;&#xA;&lt;/pre>&#xA;and ProtectionDomain has a constructor:&#xA;&lt;pre>&#xA;public ProtectionDomain&#xA;(CodeSource cs,&#xA;PermissionCollection permissions,&#xA;ClassLoader loader,&#xA;Principal[] principals)&#xA;&lt;/pre>&#xA;&#xA;These two APIs provide callers the means to query the&#xA;Policy for Principal-based Permission entries.&#xA;&#xA;&#xA;@version 1.50, 05/18/04&#xA;" annotatedElement="336c9dcd-62ea-4560-b617-ae2c2f89f2d8"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="425b4a62-f6ed-43a4-a6b6-ce93f1b94ea2" name="DestroyFailedException">
              <ownedComment xmi:id="31f2923c-22a8-4d4b-8aef-bee322159a75" body="Signals that a &lt;code>destroy&lt;/code> operation failed.&#xA;&#xA;&lt;p> This exception is thrown by credentials implementing&#xA;the &lt;code>Destroyable&lt;/code> interface when the &lt;code>destroy&lt;/code>&#xA;method fails.&#xA;&#xA;@version 1.8, 12/19/03&#xA;" annotatedElement="425b4a62-f6ed-43a4-a6b6-ce93f1b94ea2"/>
              <generalization xmi:id="63e3e5a7-6e6d-4cb1-96b0-502758aa872b" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="fe23fef4-d8c6-42ff-9e36-9829d2d087fd" name="Refreshable" isAbstract="true">
              <ownedComment xmi:id="68b1dca7-c8f5-479f-8cb7-66d26424cb13" body="Objects such as credentials may optionally implement this&#xA;interface to provide the capability to refresh itself.&#xA;For example, a credential with a particular time-restricted lifespan&#xA;may implement this interface to allow callers to refresh the time period&#xA;for which it is valid.&#xA;&#xA;@version 1.9, 12/19/03&#xA;@see javax.security.auth.Subject&#xA;" annotatedElement="fe23fef4-d8c6-42ff-9e36-9829d2d087fd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="5b46000b-d3ab-4665-bec8-58075782c986" name="x500">
              <packagedElement xmi:type="uml:Class" xmi:id="47c23202-fb55-4c09-8ab8-557e11ac18b2" name="X500PrivateCredential" clientDependency="c46f0c58-6637-4031-baf6-b8005b8d2d65" isLeaf="true">
                <ownedComment xmi:id="fecc990e-618c-4b92-b13f-5a8de8d0fc78" body="&lt;p> This class represents an &lt;code>X500PrivateCredential&lt;/code>.&#xA;It associates an X.509 certificate, corresponding private key and the&#xA;KeyStore alias used to reference that exact key pair in the KeyStore.&#xA;This enables looking up the private credentials for an X.500 principal&#xA;in a subject.&#xA;&#xA;@version 1.8, 12/19/03&#xA;" annotatedElement="47c23202-fb55-4c09-8ab8-557e11ac18b2"/>
                <interfaceRealization xmi:id="c46f0c58-6637-4031-baf6-b8005b8d2d65" name="" supplier="8a4f780b-bb34-4f90-bdfb-a28d9959af3a" client="47c23202-fb55-4c09-8ab8-557e11ac18b2" contract="8a4f780b-bb34-4f90-bdfb-a28d9959af3a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="3d21bdf7-55a6-484a-bdfc-6fc37129c983" name="X500Principal" clientDependency="0c861d4f-ec1b-4809-adc6-0d85386b3ad0 70c9a9f2-d7e6-49b9-92bf-143b2736ece0" isLeaf="true">
                <ownedComment xmi:id="6955f2e1-0e37-4861-b22f-1fba5fa75e78" body="&lt;p> This class represents an X.500 &lt;code>Principal&lt;/code>.&#xA;&lt;code>X500Principal&lt;/code>s are represented by distinguished names such as&#xA;&quot;CN=Duke, OU=JavaSoft, O=Sun Microsystems, C=US&quot;.&#xA;&#xA;&lt;p> This class can be instantiated by using a string representation&#xA;of the distinguished name, or by using the ASN.1 DER encoded byte&#xA;representation of the distinguished name.  The current specification&#xA;for the string representation of a distinguished name is defined in&#xA;&lt;a href=&quot;http://www.ietf.org/rfc/rfc2253.txt&quot;>RFC 2253&lt;/a>.&#xA;This class, however, accepts string formats from both RFC 2253 and&#xA;&lt;a href=&quot;http://www.ietf.org/rfc/rfc1779.txt&quot;>RFC 1779&lt;/a>,&#xA;and also recognizes attribute type keywords whose OIDs&#xA;(Object Identifiers) are defined in&#xA;&lt;a href=&quot;http://www.ietf.org/rfc/rfc2459.txt&quot;>RFC 2459&lt;/a>.&#xA;&#xA;&lt;p> The string representation for this &lt;code>X500Principal&lt;/code>&#xA;can be obtained by calling the &lt;code>getName&lt;/code> methods.&#xA;&#xA;&lt;p> Note that the &lt;code>getSubjectX500Principal&lt;/code> and&#xA;&lt;code>getIssuerX500Principal&lt;/code> methods of&#xA;&lt;code>X509Certificate&lt;/code> return X500Principals representing the&#xA;issuer and subject fields of the certificate.&#xA;&#xA;@version 1.21, 12/19/03&#xA;@see java.security.cert.X509Certificate&#xA;@since 1.4&#xA;" annotatedElement="3d21bdf7-55a6-484a-bdfc-6fc37129c983"/>
                <interfaceRealization xmi:id="0c861d4f-ec1b-4809-adc6-0d85386b3ad0" name="" supplier="516530d1-1bf1-40f1-8619-f08f8811875d" client="3d21bdf7-55a6-484a-bdfc-6fc37129c983" contract="516530d1-1bf1-40f1-8619-f08f8811875d"/>
                <interfaceRealization xmi:id="70c9a9f2-d7e6-49b9-92bf-143b2736ece0" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="3d21bdf7-55a6-484a-bdfc-6fc37129c983" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="17e6ad60-7e7d-4a34-8a75-79d8a788e395" name="Subject" clientDependency="66a2a50a-125d-44b6-8c97-9e88b3802fc7" isLeaf="true">
              <ownedComment xmi:id="a1bfd95c-46a6-4669-914e-85dc80392c2e" body="&lt;p> A &lt;code>Subject&lt;/code> represents a grouping of related information&#xA;for a single entity, such as a person.&#xA;Such information includes the Subject's identities as well as&#xA;its security-related attributes&#xA;(passwords and cryptographic keys, for example).&#xA;&#xA;&lt;p> Subjects may potentially have multiple identities.&#xA;Each identity is represented as a &lt;code>Principal&lt;/code>&#xA;within the &lt;code>Subject&lt;/code>.  Principals simply bind names to a&#xA;&lt;code>Subject&lt;/code>.  For example, a &lt;code>Subject&lt;/code> that happens&#xA;to be a person, Alice, might have two Principals:&#xA;one which binds &quot;Alice Bar&quot;, the name on her driver license,&#xA;to the &lt;code>Subject&lt;/code>, and another which binds,&#xA;&quot;999-99-9999&quot;, the number on her student identification card,&#xA;to the &lt;code>Subject&lt;/code>.  Both Principals refer to the same&#xA;&lt;code>Subject&lt;/code> even though each has a different name.&#xA;&#xA;&lt;p> A &lt;code>Subject&lt;/code> may also own security-related attributes,&#xA;which are referred to as credentials.&#xA;Sensitive credentials that require special protection, such as&#xA;private cryptographic keys, are stored within a private credential&#xA;&lt;code>Set&lt;/code>.  Credentials intended to be shared, such as&#xA;public key certificates or Kerberos server tickets are stored&#xA;within a public credential &lt;code>Set&lt;/code>.  Different permissions&#xA;are required to access and modify the different credential Sets.&#xA;&#xA;&lt;p> To retrieve all the Principals associated with a &lt;code>Subject&lt;/code>,&#xA;invoke the &lt;code>getPrincipals&lt;/code> method.  To retrieve&#xA;all the public or private credentials belonging to a &lt;code>Subject&lt;/code>,&#xA;invoke the &lt;code>getPublicCredentials&lt;/code> method or&#xA;&lt;code>getPrivateCredentials&lt;/code> method, respectively.&#xA;To modify the returned &lt;code>Set&lt;/code> of Principals and credentials,&#xA;use the methods defined in the &lt;code>Set&lt;/code> class.&#xA;For example:&#xA;&lt;pre>&#xA;Subject subject;&#xA;Principal principal;&#xA;Object credential;&#xA;&#xA;add a Principal and credential to the Subject&#xA;subject.getPrincipals().add(principal);&#xA;subject.getPublicCredentials().add(credential);&#xA;&lt;/pre>&#xA;&#xA;&lt;p> This &lt;code>Subject&lt;/code> class implements &lt;code>Serializable&lt;/code>.&#xA;While the Principals associated with the &lt;code>Subject&lt;/code> are serialized,&#xA;the credentials associated with the &lt;code>Subject&lt;/code> are not.&#xA;Note that the &lt;code>java.security.Principal&lt;/code> class&#xA;does not implement &lt;code>Serializable&lt;/code>.  Therefore all concrete&#xA;&lt;code>Principal&lt;/code> implementations associated with Subjects&#xA;must implement &lt;code>Serializable&lt;/code>.&#xA;&#xA;@version 1.123, 05/05/04&#xA;@see java.security.Principal&#xA;@see java.security.DomainCombiner&#xA;" annotatedElement="17e6ad60-7e7d-4a34-8a75-79d8a788e395"/>
              <interfaceRealization xmi:id="66a2a50a-125d-44b6-8c97-9e88b3802fc7" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="17e6ad60-7e7d-4a34-8a75-79d8a788e395" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="84c5214f-3dd9-4156-81e6-47153896342b" name="SecureSet" visibility="private" clientDependency="551b2505-a05d-42c6-81aa-7227a3a50aae">
                <ownedComment xmi:id="4b00a4ea-6be5-44cc-b293-b1669e8778a6" body="Prevent modifications unless caller has permission.&#xA;&#xA;@serial include&#xA;" annotatedElement="84c5214f-3dd9-4156-81e6-47153896342b"/>
                <generalization xmi:id="386ac6d7-fc70-46aa-974c-8784637b3bb7" isSubstitutable="true" general="a44e7a8f-24fa-45cd-b665-af0b7a72a836"/>
                <interfaceRealization xmi:id="551b2505-a05d-42c6-81aa-7227a3a50aae" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="84c5214f-3dd9-4156-81e6-47153896342b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="904d6144-cc87-4aa7-a2d6-ccb8de0e244f" name="ClassSet" visibility="private">
                <ownedComment xmi:id="e3345d34-2dac-4c21-8f11-1c02f06e5ae7" body="This class implements a &lt;code>Set&lt;/code> which returns only&#xA;members that are an instance of a specified Class.&#xA;" annotatedElement="904d6144-cc87-4aa7-a2d6-ccb8de0e244f"/>
                <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="08e77ee2-3560-4a1a-88f5-b0fe2c1ae44c" name="" parameter="8ca60d05-76ea-4d8c-9a6f-1bd3cabffaef">
                  <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="8ca60d05-76ea-4d8c-9a6f-1bd3cabffaef" parameteredElement="8d850dbf-38fc-42df-af21-08f4f479e9e5">
                    <ownedParameteredElement xmi:type="uml:Class" xmi:id="8d850dbf-38fc-42df-af21-08f4f479e9e5" name="T" templateParameter="8ca60d05-76ea-4d8c-9a6f-1bd3cabffaef"/>
                  </ownedParameter>
                </ownedTemplateSignature>
                <generalization xmi:id="de81b8d2-8295-4b17-b34b-b48c36b3d6fb" isSubstitutable="true" general="d7a7199b-13a9-461b-bc78-943026c48367"/>
              </nestedClassifier>
            </packagedElement>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="fdab2db9-4c06-4ddf-9385-7fe62f1b7be3" name="accessibility">
          <packagedElement xmi:type="uml:Interface" xmi:id="15c29f0c-7e33-493e-b7e6-3488fb280927" name="AccessibleTable" isAbstract="true">
            <ownedComment xmi:id="9fcabbe7-c604-4a49-a625-13e9f26890bc" body="Class AccessibleTable describes a user-interface component that&#xA;presents data in a two-dimensional table format.&#xA;&#xA;@version     1.2 10/12/99&#xA;@author      Lynn Monsanto&#xA;" annotatedElement="15c29f0c-7e33-493e-b7e6-3488fb280927"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="48ff1225-61c7-495b-a398-c2903fb1210d" name="AccessibleValue" isAbstract="true">
            <ownedComment xmi:id="2eceeab2-6d1b-4101-8f6c-a07259c547fb" body="The AccessibleValue interface should be supported by any object&#xA;that supports a numerical value (e.g., a scroll bar).  This interface&#xA;provides the standard mechanism for an assistive technology to determine&#xA;and set the numerical value as well as get the minimum and maximum values.&#xA;Applications can determine&#xA;if an object supports the AccessibleValue interface by first&#xA;obtaining its AccessibleContext (see&#xA;{@link Accessible}) and then calling the&#xA;{@link AccessibleContext#getAccessibleValue} method.&#xA;If the return value is not null, the object supports this interface.&#xA;&#xA;@see Accessible&#xA;@see Accessible#getAccessibleContext&#xA;@see AccessibleContext&#xA;@see AccessibleContext#getAccessibleValue&#xA;&#xA;@version     1.9 10/12/99 15:41:54&#xA;@author&#x9;Peter Korn&#xA;@author      Hans Muller&#xA;@author      Willie Walker&#xA;" annotatedElement="48ff1225-61c7-495b-a398-c2903fb1210d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f33d9971-82e7-44c3-a04a-3ff8787c83c3" name="AccessibleHyperlink" clientDependency="45a39ea4-465d-4709-894d-db36d2c23214" isAbstract="true">
            <ownedComment xmi:id="0ce49f49-e7da-47c9-b168-debae7c6d9aa" body="Encapsulation of a link, or set of links (e.g. client side imagemap)&#xA;in a Hypertext document&#xA;&#xA;@see Accessible&#xA;@see Accessible#getAccessibleContext&#xA;@see AccessibleContext&#xA;@see AccessibleText&#xA;@see AccessibleContext#getAccessibleText&#xA;&#xA;@version 1.13, 12/19/03&#xA;@author&#x9;Peter Korn&#xA;" annotatedElement="f33d9971-82e7-44c3-a04a-3ff8787c83c3"/>
            <interfaceRealization xmi:id="45a39ea4-465d-4709-894d-db36d2c23214" name="" supplier="1f04210f-dd56-4dbb-861c-7a19813caf4c" client="f33d9971-82e7-44c3-a04a-3ff8787c83c3" contract="1f04210f-dd56-4dbb-861c-7a19813caf4c"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="42a27316-e25d-40f9-b3da-5ba57dcfcc36" name="AccessibleStateSet">
            <ownedComment xmi:id="263c16b6-1308-4d6d-9c4e-f0f3b1a09927" body="Class AccessibleStateSet determines a component's state set.  The state set&#xA;of a component is a set of AccessibleState objects and descriptions. E.G., The&#xA;current overall state of the object, such as whether it is enabled,&#xA;has focus, etc.&#xA;&#xA;@see AccessibleState&#xA;&#xA;@version     1.10 10/12/99 15:05:34&#xA;@author      Willie Walker&#xA;" annotatedElement="42a27316-e25d-40f9-b3da-5ba57dcfcc36"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="3ca72526-7c1c-4937-b3c5-b4dfd0213fcb" name="AccessibleKeyBinding" isAbstract="true">
            <ownedComment xmi:id="0e5af67d-091e-45c1-96cb-a57824cb9484" body="The AccessibleKeyBinding interface should be supported by any object&#xA;that has a keyboard bindings such as a keyboard mnemonic and/or keyboard&#xA;shortcut which can be used to select the object.  This interface provides&#xA;the standard mechanism for an assistive technology to determine the&#xA;key bindings which exist for this object.&#xA;Any object that has such key bindings should support this&#xA;interface.  Applications can determine if an object supports the&#xA;AccessibleKeyBinding interface by first obtaining its AccessibleContext&#xA;(see @link Accessible} and then calling the&#xA;{@link AccessibleContext#getAccessibleKeyBinding} method.  If the return&#xA;value is not null, the object supports this interface.&#xA;&#xA;@see Accessible&#xA;@see Accessible#getAccessibleContext&#xA;@see AccessibleContext&#xA;@see AccessibleContext#getAccessibleKeyBinding&#xA;&#xA;@version     1.4 12/19/03&#xA;@author&#x9;Lynn Monsanto&#xA;" annotatedElement="3ca72526-7c1c-4937-b3c5-b4dfd0213fcb"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="a9536d5d-ffe4-4cf1-a708-ec23229b0f6d" name="AccessibleIcon" isAbstract="true">
            <ownedComment xmi:id="c3c4de23-b9cc-4ea2-ac76-2aeb7a0f5e50" body="The AccessibleIcon interface should be supported by any object&#xA;that has an associated icon (e.g., buttons). This interface&#xA;provides the standard mechanism for an assistive technology&#xA;to get descriptive information about icons.&#xA;Applications can determine&#xA;if an object supports the AccessibleIcon interface by first&#xA;obtaining its AccessibleContext (see&#xA;{@link Accessible}) and then calling the&#xA;{@link AccessibleContext#getAccessibleIcon} method.&#xA;If the return value is not null, the object supports this interface.&#xA;&#xA;@see Accessible&#xA;@see AccessibleContext&#xA;&#xA;@version     1.3 10/12/99&#xA;@author&#x9;Lynn Monsanto&#xA;" annotatedElement="a9536d5d-ffe4-4cf1-a708-ec23229b0f6d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="7034cc41-9451-4071-87c2-4464e57a3c99" name="AccessibleEditableText" isAbstract="true">
            <ownedComment xmi:id="690965b5-8cb5-49d5-9d26-a84a276d12c7" body="&lt;P>The AccessibleEditableText interface should be implemented by all&#xA;classes that present editable textual information on the display.&#xA;Along with the AccessibleText interface, this interface provides&#xA;the standard mechanism for an assistive technology to access&#xA;that text via its content, attributes, and spatial location.&#xA;Applications can determine if an object supports the AccessibleEditableText&#xA;interface by first obtaining its AccessibleContext (see {@link Accessible})&#xA;and then calling the {@link AccessibleContext#getAccessibleEditableText}&#xA;method of AccessibleContext.  If the return value is not null, the object&#xA;supports this interface.&#xA;&#xA;@see Accessible&#xA;@see Accessible#getAccessibleContext&#xA;@see AccessibleContext&#xA;@see AccessibleContext#getAccessibleText&#xA;@see AccessibleContext#getAccessibleEditableText&#xA;&#xA;@version&#x9;1.4 @(#)AccessibleEditableText.java&#x9;1.4&#xA;@author&#x9;Lynn Monsanto&#xA;" annotatedElement="7034cc41-9451-4071-87c2-4464e57a3c99"/>
            <generalization xmi:id="ec66f589-babc-41bf-9202-b7099509750d" isSubstitutable="true" general="a6772e39-fecf-4aaa-b8ba-55f63854a725"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="016baa07-77f3-47c0-964a-f39991e85b1e" name="AccessibleResourceBundle">
            <ownedComment xmi:id="8dc7b645-3c2c-44d7-879e-130016493b30" body="A resource bundle containing the localized strings in the accessibility&#xA;package.  This is meant only for internal use by Java Accessibility and&#xA;is not meant to be used by assistive technologies or applications.&#xA;&#xA;@version     1.32 05/18/04 21:18:13&#xA;@author      Willie Walker&#xA;@deprecated This class is deprecated as of version 1.3 of the&#xA;Java 2 Platform.&#xA;" annotatedElement="016baa07-77f3-47c0-964a-f39991e85b1e"/>
            <generalization xmi:id="c70c79af-ab3a-43fe-91bd-7f649ba1e3d4" isSubstitutable="true" general="f613cc96-2956-4018-9a57-c2dfb19f4898"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="a13045dc-df1a-4751-8aff-9b7e320e05bf" name="AccessibleComponent" isAbstract="true">
            <ownedComment xmi:id="8e71bf73-b106-4b2e-ae96-8dd41e401b96" body="The AccessibleComponent interface should be supported by any object&#xA;that is rendered on the screen.  This interface provides the standard&#xA;mechanism for an assistive technology to determine and set the&#xA;graphical representation of an object.  Applications can determine&#xA;if an object supports the AccessibleComponent interface by first&#xA;obtaining its AccessibleContext&#xA;and then calling the&#xA;{@link AccessibleContext#getAccessibleComponent} method.&#xA;If the return value is not null, the object supports this interface.&#xA;&#xA;@see Accessible&#xA;@see Accessible#getAccessibleContext&#xA;@see AccessibleContext&#xA;@see AccessibleContext#getAccessibleComponent&#xA;&#xA;@version     1.7 10/05/99 14:00:28&#xA;@author&#x9;Peter Korn&#xA;@author&#x9;Hans Muller&#xA;@author      Willie Walker&#xA;" annotatedElement="a13045dc-df1a-4751-8aff-9b7e320e05bf"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5e5fecb3-251d-4b0e-b142-9f3aac1d4c57" name="AccessibleContext" isAbstract="true">
            <ownedComment xmi:id="901da95d-b10a-4e7d-87c1-d0a578a051f5" body="AccessibleContext represents the minimum information all accessible objects&#xA;return.  This information includes the accessible name, description, role,&#xA;and state of the object, as well as information about its parent and&#xA;children.  AccessibleContext also contains methods for&#xA;obtaining more specific accessibility information about a component.&#xA;If the component supports them, these methods will return an object that&#xA;implements one or more of the following interfaces:&#xA;&lt;P>&lt;ul>&#xA;&lt;li>{@link AccessibleAction} - the object can perform one or more actions.&#xA;This interface provides the standard mechanism for an assistive&#xA;technology to determine what those actions are and tell the object&#xA;to perform them.  Any object that can be manipulated should&#xA;support this interface.&#xA;&lt;li>{@link AccessibleComponent} - the object has a graphical representation.&#xA;This interface provides the standard mechanism for an assistive&#xA;technology to determine and set the graphical representation of the&#xA;object.  Any object that is rendered on the screen should support&#xA;this interface.&#xA;&lt;li>{@link  AccessibleSelection} - the object allows its children to be&#xA;selected.  This interface provides the standard mechanism for an&#xA;assistive technology to determine the currently selected children of the object&#xA;as well as modify its selection set.  Any object that has children&#xA;that can be selected should support this interface.&#xA;&lt;li>{@link AccessibleText} - the object presents editable textual information&#xA;on the display.  This interface provides the standard mechanism for&#xA;an assistive technology to access that text via its content, attributes,&#xA;and spatial location.  Any object that contains editable text should&#xA;support this interface.&#xA;&lt;li>{@link AccessibleValue} - the object supports a numerical value.  This&#xA;interface provides the standard mechanism for an assistive technology&#xA;to determine and set the current value of the object, as well as obtain its&#xA;minimum and maximum values.  Any object that supports a numerical value&#xA;should support this interface.&lt;/ul>&#xA;&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: Minimal information that all accessible objects return&#xA;&#xA;@version     1.43 04/02/04&#xA;@author&#x9;Peter Korn&#xA;@author      Hans Muller&#xA;@author      Willie Walker&#xA;@author      Lynn Monsanto&#xA;" annotatedElement="5e5fecb3-251d-4b0e-b142-9f3aac1d4c57"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9b77fe89-eaa0-4ba6-94ed-41f19e69ce1f" name="AccessibleBundle" isAbstract="true">
            <ownedComment xmi:id="81d864c0-7339-44f1-816e-2469b16639c0" body="&lt;p>Base class used to maintain a strongly typed enumeration.  This is&#xA;the superclass of {@link AccessibleState} and {@link AccessibleRole}.&#xA;&lt;p>The toDisplayString method allows you to obtain the localized string&#xA;for a locale independent key from a predefined ResourceBundle for the&#xA;keys defined in this class.  This localized string is intended to be&#xA;readable by humans.&#xA;&#xA;@see AccessibleRole&#xA;@see AccessibleState&#xA;&#xA;@version     1.12 10/05/99&#xA;@author      Willie Walker&#xA;@author&#x9;Peter Korn&#xA;@author&#x9;Lynn Monsanto&#xA;" annotatedElement="9b77fe89-eaa0-4ba6-94ed-41f19e69ce1f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="84395668-2055-4aef-a723-d6bf285c236a" name="AccessibleExtendedText" isAbstract="true">
            <ownedComment xmi:id="b5f79474-3d5d-4d40-8fa6-70ad815a9f17" body="&lt;P>The AccessibleExtendedText interface contains additional methods&#xA;not provided by the AccessibleText interface&#xA;&#xA;Applications can determine if an object supports the AccessibleExtendedText&#xA;interface by first obtaining its AccessibleContext (see {@link Accessible})&#xA;and then calling the {@link AccessibleContext#getAccessibleText} method of&#xA;AccessibleContext.  If the return value is an instance of&#xA;AccessibleExtendedText, the object supports this interface.&#xA;&#xA;@see Accessible&#xA;@see Accessible#getAccessibleContext&#xA;@see AccessibleContext&#xA;@see AccessibleContext#getAccessibleText&#xA;@see AccessibleText.AccessibleTextChunk&#xA;&#xA;@version      1.2 12/19/03&#xA;@author       Peter Korn&#xA;@author       Lynn Monsanto&#xA;" annotatedElement="84395668-2055-4aef-a723-d6bf285c236a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f431e2af-5f77-4564-9ffc-e727f88b233e" name="AccessibleRelationSet">
            <ownedComment xmi:id="c7b517d1-d997-46ec-87af-8d5361f23444" body="Class AccessibleRelationSet determines a component's relation set.  The&#xA;relation set of a component is a set of AccessibleRelation objects that&#xA;describe the component's relationships with other components.&#xA;&#xA;@see AccessibleRelation&#xA;&#xA;@version     1.13 05/05/04&#xA;@author      Lynn Monsanto&#xA;" annotatedElement="f431e2af-5f77-4564-9ffc-e727f88b233e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a9a4d917-229c-452f-8204-c845e669ba88" name="AccessibleRelation">
            <ownedComment xmi:id="93a24a77-b450-4fb3-a3a4-0d797f642d81" body="&lt;P>Class AccessibleRelation describes a relation between the&#xA;object that implements the AccessibleRelation and one or more other&#xA;objects.  The actual relations that an object has with other&#xA;objects are defined as an AccessibleRelationSet, which is a composed&#xA;set of AccessibleRelations.&#xA;&lt;p>The toDisplayString method allows you to obtain the localized string&#xA;for a locale independent key from a predefined ResourceBundle for the&#xA;keys defined in this class.&#xA;&lt;p>The constants in this class present a strongly typed enumeration&#xA;of common object roles. If the constants in this class are not sufficient&#xA;to describe the role of an object, a subclass should be generated&#xA;from this class and it should provide constants in a similar manner.&#xA;&#xA;@version     1.14 04/15/04&#xA;@author      Lynn Monsanto&#xA;" annotatedElement="a9a4d917-229c-452f-8204-c845e669ba88"/>
            <generalization xmi:id="0de3e3a6-7069-43d4-ac8f-180c9a837541" isSubstitutable="true" general="9b77fe89-eaa0-4ba6-94ed-41f19e69ce1f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="ed907a69-6a73-461b-8000-495b37bdc076" name="Accessible" isAbstract="true">
            <ownedComment xmi:id="b5b38753-ab09-480c-baa7-3797df0218f0" body="Interface Accessible is the main interface for the accessibility package.&#xA;All components that support&#xA;the accessibility package must implement this interface.&#xA;It contains a single method, {@link #getAccessibleContext}, which&#xA;returns an instance of the class {@link AccessibleContext}.&#xA;&#xA;@version     1.1 11/24/97 20:34:48&#xA;@author&#x9;Peter Korn&#xA;@author      Hans Muller&#xA;@author      Willie Walker&#xA;" annotatedElement="ed907a69-6a73-461b-8000-495b37bdc076"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="2435f4d0-033e-42b0-8149-f61597803866" name="AccessibleTableModelChange" isAbstract="true">
            <ownedComment xmi:id="546983de-29e7-468f-a963-989fb6b47da0" body="The AccessibleTableModelChange interface describes a change to&#xA;the table model.  The attributes of the model change can be&#xA;obtained by the following methods:&#xA;&lt;ul>&#xA;&lt;li> public int getType()&#xA;&lt;li> public int getFirstRow();&#xA;&lt;li> public int getLastRow();&#xA;&lt;li> public int getFirstColumn();&#xA;&lt;li> public int getLastColumn();&#xA;&lt;/ul>&#xA;The model change type returned by getType() will be one of:&#xA;&lt;ul>&#xA;&lt;li> INSERT - one or more rows and/or columns have been inserted&#xA;&lt;li> UPDATE - some of the table data has changed&#xA;&lt;li> DELETE - one or more rows and/or columns have been deleted&#xA;&lt;/ul>&#xA;The affected area of the table can be determined by the other&#xA;four methods which specify ranges of rows and columns&#xA;&#xA;@see Accessible&#xA;@see Accessible#getAccessibleContext&#xA;@see AccessibleContext&#xA;@see AccessibleContext#getAccessibleTable&#xA;&#xA;@version     1.2 10/12/99&#xA;@author&#x9;Lynn Monsanto&#xA;" annotatedElement="2435f4d0-033e-42b0-8149-f61597803866"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="1f04210f-dd56-4dbb-861c-7a19813caf4c" name="AccessibleAction" isAbstract="true">
            <ownedComment xmi:id="99d34e7d-6d50-4744-bdbb-e3685a5ac7ea" body="The AccessibleAction interface should be supported by any object&#xA;that can perform one or more actions.  This interface&#xA;provides the standard mechanism for an assistive technology to determine&#xA;what those actions are as well as tell the object to perform them.&#xA;Any object that can be manipulated should support this&#xA;interface.  Applications can determine if an object supports the&#xA;AccessibleAction interface by first obtaining its AccessibleContext (see&#xA;{@link Accessible}) and then calling the {@link AccessibleContext#getAccessibleAction}&#xA;method.  If the return value is not null, the object supports this interface.&#xA;&#xA;@see Accessible&#xA;@see Accessible#getAccessibleContext&#xA;@see AccessibleContext&#xA;@see AccessibleContext#getAccessibleAction&#xA;&#xA;@version     1.17 04/15/04&#xA;@author&#x9;Peter Korn&#xA;@author      Hans Muller&#xA;@author      Willie Walker&#xA;@author      Lynn Monsanto&#xA;" annotatedElement="1f04210f-dd56-4dbb-861c-7a19813caf4c"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="171cfccf-dc6e-4856-bdcf-b5a2bcb9e7f6" name="AccessibleHypertext" isAbstract="true">
            <ownedComment xmi:id="be541602-429a-454b-afcf-2878c4855ad6" body="&lt;P>The AccessibleHypertext class is the base class for all&#xA;classes that present hypertext information on the display.  This class&#xA;provides the standard mechanism for an assistive technology to access&#xA;that text via its content, attributes, and spatial location.&#xA;It also provides standard mechanisms for manipulating hyperlinks.&#xA;Applications can determine if an object supports the AccessibleHypertext&#xA;interface by first obtaining its AccessibleContext (see {@link Accessible})&#xA;and then calling the {@link AccessibleContext#getAccessibleText}&#xA;method of AccessibleContext.  If the return value is a class which extends&#xA;AccessibleHypertext, then that object supports AccessibleHypertext.&#xA;&#xA;@see Accessible&#xA;@see Accessible#getAccessibleContext&#xA;@see AccessibleContext&#xA;@see AccessibleText&#xA;@see AccessibleContext#getAccessibleText&#xA;&#xA;@version&#xA;@author&#x9;Peter Korn&#xA;" annotatedElement="171cfccf-dc6e-4856-bdcf-b5a2bcb9e7f6"/>
            <generalization xmi:id="59ff64a1-afe2-42a8-9a5e-b43d7abe4c75" isSubstitutable="true" general="a6772e39-fecf-4aaa-b8ba-55f63854a725"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="cf0ad3cb-f583-472f-a5bf-35087f117a94" name="AccessibleAttributeSequence">
            <ownedComment xmi:id="be98c61f-7bf5-4b26-867c-a93f38564880" body="Information about a contiguous sequence of text attributes&#xA;" annotatedElement="cf0ad3cb-f583-472f-a5bf-35087f117a94"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="0a542023-300a-4c75-84f4-5b66837c430a" name="AccessibleStreamable" isAbstract="true"/>
          <packagedElement xmi:type="uml:Class" xmi:id="0c5d6082-28af-48f2-b35f-afdc89f7f9e3" name="AccessibleRole">
            <ownedComment xmi:id="96d98b37-e72c-4f84-87c3-d31781d96b92" body="&lt;P>Class AccessibleRole determines the role of a component.  The role of a&#xA;component describes its generic function. (E.G.,&#xA;&quot;push button,&quot; &quot;table,&quot; or &quot;list.&quot;)&#xA;&lt;p>The toDisplayString method allows you to obtain the localized string&#xA;for a locale independent key from a predefined ResourceBundle for the&#xA;keys defined in this class.&#xA;&lt;p>The constants in this class present a strongly typed enumeration&#xA;of common object roles.  A public constructor for this class has been&#xA;purposely omitted and applications should use one of the constants&#xA;from this class.  If the constants in this class are not sufficient&#xA;to describe the role of an object, a subclass should be generated&#xA;from this class and it should provide constants in a similar manner.&#xA;&#xA;@version     1.45 04/15/04&#xA;@author      Willie Walker&#xA;@author&#x9;Peter Korn&#xA;@author&#x9;Lynn Monsanto&#xA;" annotatedElement="0c5d6082-28af-48f2-b35f-afdc89f7f9e3"/>
            <generalization xmi:id="1d64065e-2bb7-4e15-97e3-473cf3cd9a6d" isSubstitutable="true" general="9b77fe89-eaa0-4ba6-94ed-41f19e69ce1f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="bfd8b171-24c8-482e-9c1e-4a5cab72fef3" name="AccessibleTextSequence">
            <ownedComment xmi:id="f8cdde3e-eca8-47a9-9f3a-5a9e0f6cc6d5" body="Information about a contiguous sequence of text.&#xA;" annotatedElement="bfd8b171-24c8-482e-9c1e-4a5cab72fef3"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="c852d880-774f-46c5-ab2e-f0ab04fefa0b" name="AccessibleExtendedComponent" isAbstract="true">
            <ownedComment xmi:id="9d7486ee-b0d4-4cf7-99e5-f6eb2bbe49a2" body="The AccessibleExtendedComponent interface should be supported by any object&#xA;that is rendered on the screen.  This interface provides the standard&#xA;mechanism for an assistive technology to determine the extended&#xA;graphical representation of an object.  Applications can determine&#xA;if an object supports the AccessibleExtendedComponent interface by first&#xA;obtaining its AccessibleContext&#xA;and then calling the&#xA;{@link AccessibleContext#getAccessibleComponent} method.&#xA;If the return value is not null and the type of the return value is&#xA;AccessibleEditableComponent, the object supports this interface.&#xA;&#xA;@see Accessible&#xA;@see Accessible#getAccessibleContext&#xA;@see AccessibleContext&#xA;@see AccessibleContext#getAccessibleComponent&#xA;&#xA;@version     1.4 12/19/03&#xA;@author&#x9;Lynn Monsanto&#xA;" annotatedElement="c852d880-774f-46c5-ab2e-f0ab04fefa0b"/>
            <generalization xmi:id="45fc9971-d790-4133-84ee-b505e487d99c" isSubstitutable="true" general="a13045dc-df1a-4751-8aff-9b7e320e05bf"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="cc2f0e23-a6af-42db-ba9f-e6fe3a98545f" name="AccessibleExtendedTable" isAbstract="true">
            <ownedComment xmi:id="91be1191-7b55-4dac-8706-6ca19e3abd7c" body="Class AccessibleExtendedTable provides extended information about&#xA;a user-interface component that presents data in a two-dimensional&#xA;table format.&#xA;Applications can determine if an object supports the&#xA;AccessibleExtendedTable interface by first obtaining its&#xA;AccessibleContext and then calling the&#xA;{@link AccessibleContext#getAccessibleTable} method.&#xA;If the return value is not null and the type of the return value is&#xA;AccessibleExtendedTable, the object supports this interface.&#xA;&#xA;@version     1.5 12/19/03&#xA;@author      Lynn Monsanto&#xA;" annotatedElement="cc2f0e23-a6af-42db-ba9f-e6fe3a98545f"/>
            <generalization xmi:id="d6c59b3a-e2a9-4e40-a7f9-c8570b09a83f" isSubstitutable="true" general="15c29f0c-7e33-493e-b7e6-3488fb280927"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="0dbef058-3ccc-4038-b98f-eea279be3f13" name="AccessibleSelection" isAbstract="true">
            <ownedComment xmi:id="7def39ed-8ab6-414e-b94e-62a7e266e39a" body="This AccessibleSelection interface&#xA;provides the standard mechanism for an assistive technology to determine&#xA;what the current selected children are, as well as modify the selection set.&#xA;Any object that has children that can be selected should support&#xA;the AccessibleSelection interface.  Applications can determine if an object supports the&#xA;AccessibleSelection interface by first obtaining its AccessibleContext (see&#xA;{@link Accessible}) and then calling the&#xA;{@link AccessibleContext#getAccessibleSelection} method.&#xA;If the return value is not null, the object supports this interface.&#xA;&#xA;@see Accessible&#xA;@see Accessible#getAccessibleContext&#xA;@see AccessibleContext&#xA;@see AccessibleContext#getAccessibleSelection&#xA;&#xA;@version     1.7 08/26/98 21:14:11&#xA;@author&#x9;Peter Korn&#xA;@author      Hans Muller&#xA;@author      Willie Walker&#xA;" annotatedElement="0dbef058-3ccc-4038-b98f-eea279be3f13"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="cdb6a185-4b58-4bb3-b02e-248beaf1e26d" name="AccessibleState">
            <ownedComment xmi:id="745943ba-b824-472a-95be-41ce36062be9" body="&lt;P>Class AccessibleState describes a component's particular state.  The actual&#xA;state of the component is defined as an AccessibleStateSet, which is a&#xA;composed set of AccessibleStates.&#xA;&lt;p>The toDisplayString method allows you to obtain the localized string&#xA;for a locale independent key from a predefined ResourceBundle for the&#xA;keys defined in this class.&#xA;&lt;p>The constants in this class present a strongly typed enumeration&#xA;of common object roles.  A public constructor for this class has been&#xA;purposely omitted and applications should use one of the constants&#xA;from this class.  If the constants in this class are not sufficient&#xA;to describe the role of an object, a subclass should be generated&#xA;from this class and it should provide constants in a similar manner.&#xA;&#xA;@version     1.38 04/15/04&#xA;@author      Willie Walker&#xA;@author&#x9;Peter Korn&#xA;" annotatedElement="cdb6a185-4b58-4bb3-b02e-248beaf1e26d"/>
            <generalization xmi:id="5b4c07a8-a430-4506-877b-eff82519412b" isSubstitutable="true" general="9b77fe89-eaa0-4ba6-94ed-41f19e69ce1f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="a6772e39-fecf-4aaa-b8ba-55f63854a725" name="AccessibleText" isAbstract="true">
            <ownedComment xmi:id="8e206a6f-ea39-4dfd-8e76-a35163f5a238" body="&lt;P>The AccessibleText interface should be implemented by all&#xA;classes that present textual information on the display.  This interface&#xA;provides the standard mechanism for an assistive technology to access&#xA;that text via its content, attributes, and spatial location.&#xA;Applications can determine if an object supports the AccessibleText&#xA;interface by first obtaining its AccessibleContext (see {@link Accessible})&#xA;and then calling the {@link AccessibleContext#getAccessibleText} method of&#xA;AccessibleContext.  If the return value is not null, the object supports this&#xA;interface.&#xA;&#xA;@see Accessible&#xA;@see Accessible#getAccessibleContext&#xA;@see AccessibleContext&#xA;@see AccessibleContext#getAccessibleText&#xA;&#xA;@version&#x9;1.13 01/20/98 07:53:43&#xA;@author&#x9;Peter Korn&#xA;" annotatedElement="a6772e39-fecf-4aaa-b8ba-55f63854a725"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="5709aabd-e758-419d-b5a5-12d8806e4866" name="management">
          <packagedElement xmi:type="uml:Class" xmi:id="67f15e6d-c8c3-4ef8-8a60-b1a6e89b7374" name="MBeanServerPermissionCollection" visibility="package">
            <ownedComment xmi:id="a2c987ec-1149-4f54-a85d-db05fb1e5023" body="Class returned by {@link MBeanServerPermission#newPermissionCollection()}.&#xA;&#xA;@serial include&#xA;" annotatedElement="67f15e6d-c8c3-4ef8-8a60-b1a6e89b7374"/>
            <generalization xmi:id="b0ade6aa-7797-46b4-87a9-338a83cf0c87" isSubstitutable="true" general="528e6ee9-bd4d-433a-b08d-a8e30fb7d9c7"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e3b4771f-806b-4ce9-844c-bc29d021b789" name="OrQueryExp" visibility="package" clientDependency="b5c55443-0c5c-40a2-9316-651de506bae0">
            <ownedComment xmi:id="773418d8-a748-4523-8a05-2d724826651c" body="This class is used by the query-building mechanism to represent&#xA;disjunctions of relational expressions.&#xA;@serial include&#xA;&#xA;@since 1.5&#xA;" annotatedElement="e3b4771f-806b-4ce9-844c-bc29d021b789"/>
            <generalization xmi:id="5730b670-20d1-4a69-a80a-28a98a6757e5" isSubstitutable="true" general="884220a1-d86c-4a9b-b5d1-05725d6e417f"/>
            <interfaceRealization xmi:id="b5c55443-0c5c-40a2-9316-651de506bae0" name="" supplier="63bea8af-c5ea-4b3b-87fe-e59aab8370df" client="e3b4771f-806b-4ce9-844c-bc29d021b789" contract="63bea8af-c5ea-4b3b-87fe-e59aab8370df"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="02730453-ef05-4b39-9009-55ce1e2addfd" name="NotificationBroadcaster" isAbstract="true">
            <ownedComment xmi:id="47751b60-a61c-4c46-bf93-d581c870424b" body="&lt;p>Interface implemented by an MBean that emits Notifications. It&#xA;allows a listener to be registered with the MBean as a notification&#xA;listener.&lt;/p>&#xA;&#xA;&lt;p>New code should use the {@link NotificationEmitter} interface&#xA;instead.&lt;/p>&#xA;&#xA;@since 1.5&#xA;" annotatedElement="02730453-ef05-4b39-9009-55ce1e2addfd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a9e63fa8-33d2-4ac3-a027-73fec3e6bc68" name="NumericValueExp" visibility="package" clientDependency="028920f5-44fe-48a4-ac17-f20728335b92">
            <ownedComment xmi:id="3be6811f-cc33-4b1c-9424-a4474352f56e" body="This class represents numbers that are arguments to relational constraints.&#xA;A NumericValueExp may be used anywhere a ValueExp is required.&#xA;&#xA;@serial include&#xA;&#xA;@since 1.5&#xA;" annotatedElement="a9e63fa8-33d2-4ac3-a027-73fec3e6bc68"/>
            <generalization xmi:id="9dbc76b5-df6b-4b76-a4eb-c550222130f1" isSubstitutable="true" general="884220a1-d86c-4a9b-b5d1-05725d6e417f"/>
            <interfaceRealization xmi:id="028920f5-44fe-48a4-ac17-f20728335b92" name="" supplier="81301010-ae55-4253-b5d1-6bb30f053f3f" client="a9e63fa8-33d2-4ac3-a027-73fec3e6bc68" contract="81301010-ae55-4253-b5d1-6bb30f053f3f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="86d082b1-fee3-4083-9d15-3d2c323de3bd" name="MBeanAttributeInfo" clientDependency="02f6bfea-19a5-4e76-826d-f9daff25bf08 9586debe-fa7e-4e3d-b5e2-9ca9476dc212">
            <ownedComment xmi:id="7604299a-58b9-460b-a179-392ee9623560" body="Describes an MBean attribute exposed for management.  Instances of&#xA;this class are immutable.  Subclasses may be mutable but this is&#xA;not recommended.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="86d082b1-fee3-4083-9d15-3d2c323de3bd"/>
            <generalization xmi:id="74653308-f4ef-4cc2-8245-d1ef198f38bb" isSubstitutable="true" general="1622d866-591b-4a08-ace2-ed7c4952a6a0"/>
            <interfaceRealization xmi:id="9586debe-fa7e-4e3d-b5e2-9ca9476dc212" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="86d082b1-fee3-4083-9d15-3d2c323de3bd" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="02f6bfea-19a5-4e76-826d-f9daff25bf08" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="86d082b1-fee3-4083-9d15-3d2c323de3bd" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="3019d5cd-2bcd-410d-a5e7-fa278098becf" name="MBeanRegistration" isAbstract="true">
            <ownedComment xmi:id="0b532b54-548d-4eb7-9101-7af2a81e57a7" body="Can be implemented by an MBean in order to&#xA;carry out operations before and after being registered or unregistered from&#xA;the MBean server.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="3019d5cd-2bcd-410d-a5e7-fa278098becf"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="776bfea1-73f2-4ff1-b0be-51a55565218d" name="RuntimeMBeanException">
            <ownedComment xmi:id="2088edf3-3140-419b-85af-af3aa4855ec9" body="Represents runtime exceptions thrown by MBean methods in&#xA;the agent. It &quot;wraps&quot; the actual &lt;CODE>java.lang.RuntimeException&lt;/CODE> exception thrown.&#xA;This exception will be built by the MBeanServer when a call to an&#xA;MBean method throws a runtime exception.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="776bfea1-73f2-4ff1-b0be-51a55565218d"/>
            <generalization xmi:id="e01ef8ee-ed51-497c-b986-889c0fb32c51" isSubstitutable="true" general="7f2e7b92-30cf-4ae2-8830-06a10543b896"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e66bf775-1dfe-433e-b769-61e47fdc9795" name="MBeanTrustPermission">
            <ownedComment xmi:id="59218d11-7ac9-43ca-bbac-77676261bf3a" body="This permission represents &quot;trust&quot; in a signer or codebase.&#xA;&lt;p>&#xA;MBeanTrustPermission contains a target name but no actions list.&#xA;A single target name, &quot;register&quot;, is defined for this permission.&#xA;The target &quot;*&quot; is also allowed, permitting &quot;register&quot; and any future&#xA;targets that may be defined.&#xA;Only the null value or the empty string are allowed for the action&#xA;to allow the policy object to create the permissions specified in&#xA;the policy file.&#xA;&lt;p>&#xA;If a signer, or codesource is granted this permission, then it is&#xA;considered a trusted source for MBeans. Only MBeans from trusted&#xA;sources may be registered in the MBeanServer.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.2&#xA;" annotatedElement="e66bf775-1dfe-433e-b769-61e47fdc9795"/>
            <generalization xmi:id="ff5b524c-3d6b-41dd-982b-264c5e6e9ac6" isSubstitutable="true" general="4831e368-c670-40b4-87bd-a8a910a528fa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="96afb4b0-bbf4-4b32-ae88-74b46a8f1635" name="NotificationBroadcasterSupport" clientDependency="c185a9fe-bb2a-4c27-bfeb-f24a5b0aa2b2">
            <ownedComment xmi:id="868eb3a6-95cb-4bc3-87e1-a8bff752dd24" body="&lt;p>Provides an implementation of {@link&#xA;javax.management.NotificationEmitter NotificationEmitter}&#xA;interface.  This can be used as the super class of an MBean that&#xA;sends notifications.&lt;/p>&#xA;&#xA;&lt;p>It is not specified whether the notification dispatch model is&#xA;synchronous or asynchronous.  That is, when a thread calls {@link&#xA;#sendNotification sendNotification}, the {@link&#xA;NotificationListener#handleNotification&#xA;NotificationListener.handleNotification} method of each listener&#xA;may be called within that thread (a synchronous model) or within&#xA;some other thread (an asynchronous model).&lt;/p>&#xA;&#xA;&lt;p>Applications should not depend on notification dispatch being&#xA;synchronous or being asynchronous.  Thus:&lt;/p>&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>Applications should not assume a synchronous model.  When the&#xA;{@link #sendNotification sendNotification} method returns, it is&#xA;not guaranteed that every listener's {@link&#xA;NotificationListener#handleNotification handleNotification} method&#xA;has been called.  It is not guaranteed either that a listener will&#xA;see notifications in the same order as they were generated.&#xA;Listeners that depend on order should use the sequence number of&#xA;notifications to determine their order (see {@link&#xA;Notification#getSequenceNumber()}).&#xA;&#xA;&lt;li>Applications should not assume an asynchronous model.  If the&#xA;actions performed by a listener are potentially slow, the listener&#xA;should arrange for them to be performed in another thread, to avoid&#xA;holding up other listeners and the caller of {@link&#xA;#sendNotification sendNotification}.&#xA;&#xA;&lt;/ul>&#xA;&#xA;@since 1.5&#xA;" annotatedElement="96afb4b0-bbf4-4b32-ae88-74b46a8f1635"/>
            <interfaceRealization xmi:id="c185a9fe-bb2a-4c27-bfeb-f24a5b0aa2b2" name="" supplier="0b63085c-be9b-4448-8775-c18e28a39817" client="96afb4b0-bbf4-4b32-ae88-74b46a8f1635" contract="0b63085c-be9b-4448-8775-c18e28a39817"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="19aaefb2-5771-4fe1-9a71-79570b1e0d27" name="ListenerInfo" visibility="private"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2deb6e2c-05ad-4cc3-94a0-c82559168ed7" name="MBeanConstructorInfo" clientDependency="7f213754-343e-4459-a36b-2366cc939ccc 90ed5c73-95bc-4278-8935-b9ff1ebfda94">
            <ownedComment xmi:id="6b8d6e68-6826-4880-8a8e-922dc7e3a38c" body="Describes a constructor exposed by an MBean.  Instances of this&#xA;class are immutable.  Subclasses may be mutable but this is not&#xA;recommended.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="2deb6e2c-05ad-4cc3-94a0-c82559168ed7"/>
            <generalization xmi:id="04303730-e219-42eb-99c7-f16e303ecc40" isSubstitutable="true" general="1622d866-591b-4a08-ace2-ed7c4952a6a0"/>
            <interfaceRealization xmi:id="7f213754-343e-4459-a36b-2366cc939ccc" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="2deb6e2c-05ad-4cc3-94a0-c82559168ed7" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="90ed5c73-95bc-4278-8935-b9ff1ebfda94" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="2deb6e2c-05ad-4cc3-94a0-c82559168ed7" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="aae66ef6-d10b-4418-8784-f77f2c87f595" name="OperationsException">
            <ownedComment xmi:id="40481b3b-2052-454d-a9ed-1deb95c11f6b" body="Represents exceptions thrown in the MBean server when performing operations&#xA;on MBeans.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="aae66ef6-d10b-4418-8784-f77f2c87f595"/>
            <generalization xmi:id="e0f84334-1247-484f-a3b6-0fba05e85353" isSubstitutable="true" general="6a8199d1-b549-413b-97fb-2fce6a429c29"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b5ed35f4-fe44-41af-8d0a-8fe274c744fc" name="AttributeValueExp" clientDependency="9d624acb-c636-40cf-aadb-10ae820a5c8d">
            <ownedComment xmi:id="2768fa32-2c69-4c43-83ed-ca9a5025919a" body="Represents attributes used as arguments to relational constraints.&#xA;An &lt;CODE>AttributeValueExp&lt;/CODE> may be used anywhere a &lt;CODE>ValueExp&lt;/CODE> is required.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="b5ed35f4-fe44-41af-8d0a-8fe274c744fc"/>
            <interfaceRealization xmi:id="9d624acb-c636-40cf-aadb-10ae820a5c8d" name="" supplier="81301010-ae55-4253-b5d1-6bb30f053f3f" client="b5ed35f4-fe44-41af-8d0a-8fe274c744fc" contract="81301010-ae55-4253-b5d1-6bb30f053f3f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="c9eac6b1-531b-4a44-b300-7fd16e525419" name="NotificationFilter" isAbstract="true">
            <ownedComment xmi:id="05253bb0-71ad-4d2b-91c0-c6074838bb76" body="To be implemented by a any class acting as a notification filter.&#xA;It allows a registered notification listener to filter the notifications of interest.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="c9eac6b1-531b-4a44-b300-7fd16e525419"/>
            <generalization xmi:id="5fc678f5-54ed-4c1d-8d88-4ae884a766ea" isSubstitutable="true" general="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f7fe5ddd-1434-4122-97e9-1f74dab7d70c" name="AndQueryExp" visibility="package" clientDependency="07fb01ab-3ca2-4c37-bf4f-eeeaa780e800">
            <ownedComment xmi:id="71e2cb2f-34f7-448e-9249-17957683aa52" body="This class is used by the query building mechanism to represent conjunctions&#xA;of relational expressions.&#xA;@serial include&#xA;&#xA;@since 1.5&#xA;" annotatedElement="f7fe5ddd-1434-4122-97e9-1f74dab7d70c"/>
            <generalization xmi:id="690e1ab7-247c-45c3-9d61-12f2cdb606ea" isSubstitutable="true" general="884220a1-d86c-4a9b-b5d1-05725d6e417f"/>
            <interfaceRealization xmi:id="07fb01ab-3ca2-4c37-bf4f-eeeaa780e800" name="" supplier="63bea8af-c5ea-4b3b-87fe-e59aab8370df" client="f7fe5ddd-1434-4122-97e9-1f74dab7d70c" contract="63bea8af-c5ea-4b3b-87fe-e59aab8370df"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="51310605-a5fb-4e8f-9b48-c9526c2db7bf" name="BadAttributeValueExpException">
            <ownedComment xmi:id="d2aa0be0-1252-4ebe-97ed-b178dffc0834" body="Thrown when an invalid MBean attribute is passed to a query&#xA;constructing method.  This exception is used internally by JMX&#xA;during the evaluation of a query.  User code does not usually&#xA;see it.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="51310605-a5fb-4e8f-9b48-c9526c2db7bf"/>
            <generalization xmi:id="f33655e1-a720-4212-8f14-058b58584bb3" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="3eaace4e-1965-4727-9ab5-be1761c0f942" name="Descriptor" isAbstract="true">
            <ownedComment xmi:id="b7a2384c-ee79-47b0-81d1-336353cc7191" body="This interface represents the behavioral metadata set for a JMX Element.&#xA;For examples, a descriptor is part of the ModelMBeanInfo, ModelMBeanNotificationInfo, ModelMBeanAttributeInfo,&#xA;ModelMBeanConstructorInfo, and ModelMBeanParameterInfo.&#xA;&lt;P>&#xA;A descriptor consists of a collection of fields.  Each field is in fieldname=fieldvalue format.&#xA;&lt;P>&#xA;All field names and values are not predefined. New fields can be defined and added by any program.&#xA;In the case of ModelMBean some fields have been predefined for consistency of implementation and support by the ModelMBeanInfo&#xA;ModelMBean*Info, and ModelMBean classes.&#xA;&lt;P>&#xA;&#xA;@since 1.5&#xA;" annotatedElement="3eaace4e-1965-4727-9ab5-be1761c0f942"/>
            <generalization xmi:id="84806ac4-70da-4c59-8cf4-fe62fc1d4088" isSubstitutable="true" general="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <generalization xmi:id="aaebcea3-38b0-4e44-ac66-e1bb546543a5" isSubstitutable="true" general="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="da947d96-e62a-49e4-b4fc-07eed1b56c59" name="PersistentMBean" isAbstract="true">
            <ownedComment xmi:id="1ebf2db0-20f8-42d2-ae4f-c69afafbdc12" body="This class is the interface to be implemented by MBeans that are meant to be&#xA;persistent.  MBeans supporting this interface should call the load method during&#xA;construction in order to prime the MBean from the persistent store.&#xA;In the case of a ModelMBean, the store method should be called by the MBeanServer based on the descriptors in&#xA;the ModelMBean or by the MBean itself during normal processing of the ModelMBean.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="da947d96-e62a-49e4-b4fc-07eed1b56c59"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="bb328e1f-3851-4767-8446-7de93582ffed" name="MBeanOperationInfo" clientDependency="7804b9ff-0fbc-4b7d-aa51-fc6e81633968 232f070c-fb36-443f-a8c5-aef2042a3aa2">
            <ownedComment xmi:id="d8718576-063a-4e75-8e4c-ccafe0502f6f" body="Describes a management operation exposed by an MBean.  Instances of&#xA;this class are immutable.  Subclasses may be mutable but this is&#xA;not recommended.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="bb328e1f-3851-4767-8446-7de93582ffed"/>
            <generalization xmi:id="4988f7f9-0408-459e-9f59-077643904c0e" isSubstitutable="true" general="1622d866-591b-4a08-ace2-ed7c4952a6a0"/>
            <interfaceRealization xmi:id="7804b9ff-0fbc-4b7d-aa51-fc6e81633968" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="bb328e1f-3851-4767-8446-7de93582ffed" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="232f070c-fb36-443f-a8c5-aef2042a3aa2" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="bb328e1f-3851-4767-8446-7de93582ffed" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6eca186e-8c46-4d23-8c0f-449a84c3748b" name="RuntimeOperationsException">
            <ownedComment xmi:id="53fc0610-f8da-4813-ba23-0d536d72cce6" body="Represents runtime exceptions thrown in the agent when performing operations on MBeans.&#xA;It wraps the actual &lt;CODE>java.lang.RuntimeException&lt;/CODE> thrown.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="6eca186e-8c46-4d23-8c0f-449a84c3748b"/>
            <generalization xmi:id="71362c71-414e-408b-8f8a-c505f1809e02" isSubstitutable="true" general="7f2e7b92-30cf-4ae2-8830-06a10543b896"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="eda5d7e0-75bf-4abf-91c7-508acce7fd73" name="AttributeChangeNotification">
            <ownedComment xmi:id="c7b2891f-125f-4bae-80ad-013f3b60065c" body="Provides definitions of the attribute change notifications sent by MBeans.&#xA;&lt;P>&#xA;It's up to the MBean owning the attribute of interest to create and send&#xA;attribute change notifications when the attribute change occurs.&#xA;So the &lt;CODE>NotificationBroadcaster&lt;/CODE> interface has to be implemented&#xA;by any MBean for which an attribute change is of interest.&#xA;&lt;P>&#xA;Example:&#xA;If an MBean called &lt;CODE>myMbean&lt;/CODE> needs to notify registered listeners&#xA;when its attribute:&#xA;&lt;BLOCKQUOTE>&lt;CODE>&#xA;String myString&#xA;&lt;/CODE>&lt;/BLOCKQUOTE>&#xA;is modified, &lt;CODE>myMbean&lt;/CODE> creates and emits the following notification:&#xA;&lt;BLOCKQUOTE>&lt;CODE>&#xA;new AttributeChangeNotification(myMbean, sequenceNumber, timeStamp, msg,&#xA;&quot;myString&quot;, &quot;String&quot;, oldValue, newValue);&#xA;&lt;/CODE>&lt;/BLOCKQUOTE>&#xA;&#xA;@since 1.5&#xA;" annotatedElement="eda5d7e0-75bf-4abf-91c7-508acce7fd73"/>
            <generalization xmi:id="77b11e2b-a184-4be8-bae6-c47886c469a9" isSubstitutable="true" general="4a926b62-e203-4046-b3fe-ba1f9d281ee7"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="dc8d3465-e994-48b3-8b50-45a356b6abc9" name="IntrospectionException">
            <ownedComment xmi:id="0c5577b2-4784-49da-b815-27bb7959daea" body="An exception occurred during the introspection of an MBean.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="dc8d3465-e994-48b3-8b50-45a356b6abc9"/>
            <generalization xmi:id="785b5c45-75f9-445f-80b9-b8b5685c42c0" isSubstitutable="true" general="aae66ef6-d10b-4418-8784-f77f2c87f595"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="884220a1-d86c-4a9b-b5d1-05725d6e417f" name="QueryEval" clientDependency="3c935ec6-acdc-4fd3-a454-af4b65270ea2" isAbstract="true">
            <ownedComment xmi:id="af8fc7e4-ccae-42e1-89cb-d5ed39232e53" body="Allows a query to be performed in the context of a specific MBean server.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="884220a1-d86c-4a9b-b5d1-05725d6e417f"/>
            <interfaceRealization xmi:id="3c935ec6-acdc-4fd3-a454-af4b65270ea2" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="884220a1-d86c-4a9b-b5d1-05725d6e417f" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c26646ce-b851-427b-9171-3b66bd27348f" name="BooleanValueExp" visibility="package" clientDependency="03967470-a742-49e7-a708-b3841b1eec5e">
            <ownedComment xmi:id="e82290bc-0442-4875-a7d7-d3829fb3c0ec" body="This class represents a boolean value. A BooleanValueExp may be&#xA;used anywhere a ValueExp is required.&#xA;@serial include&#xA;&#xA;@since 1.5&#xA;" annotatedElement="c26646ce-b851-427b-9171-3b66bd27348f"/>
            <generalization xmi:id="c07603a8-19c3-4a56-b09f-d42387c84c0f" isSubstitutable="true" general="884220a1-d86c-4a9b-b5d1-05725d6e417f"/>
            <interfaceRealization xmi:id="03967470-a742-49e7-a708-b3841b1eec5e" name="" supplier="81301010-ae55-4253-b5d1-6bb30f053f3f" client="c26646ce-b851-427b-9171-3b66bd27348f" contract="81301010-ae55-4253-b5d1-6bb30f053f3f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="985ec7d7-1c14-450f-ae3f-efe839ad7e09" name="MalformedObjectNameException">
            <ownedComment xmi:id="fa965a02-8e88-4926-a2df-71044fe97dcf" body="The format of the string does not correspond to a valid ObjectName.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="985ec7d7-1c14-450f-ae3f-efe839ad7e09"/>
            <generalization xmi:id="32492d4e-b87d-43a5-8593-a7cdc8e90bc5" isSubstitutable="true" general="aae66ef6-d10b-4418-8784-f77f2c87f595"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3a022e3b-359b-431c-b2be-e314286ee30c" name="ClassAttributeValueExp" visibility="package">
            <ownedComment xmi:id="130b27b8-5026-4a3c-9d59-acd3a80b5308" body="This class represents the name of the Java implementation class of&#xA;the MBean. It is used for performing queries based on the class of&#xA;the MBean.&#xA;@serial include&#xA;&#xA;@since 1.5&#xA;" annotatedElement="3a022e3b-359b-431c-b2be-e314286ee30c"/>
            <generalization xmi:id="aa10ebb6-9048-4035-8138-ea4999bea3cb" isSubstitutable="true" general="b5ed35f4-fe44-41af-8d0a-8fe274c744fc"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="d65f178c-97eb-443f-a485-7bf90d11090a" name="MBeanServerConnection" isAbstract="true">
            <ownedComment xmi:id="0415da38-17ae-4d00-894e-2c9825c5f0b0" body="This interface represents a way to talk to an MBean server, whether&#xA;local or remote.  The {@link MBeanServer} interface, representing a&#xA;local MBean server, extends this interface.&#xA;&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.2&#xA;" annotatedElement="d65f178c-97eb-443f-a485-7bf90d11090a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="0b63085c-be9b-4448-8775-c18e28a39817" name="NotificationEmitter" isAbstract="true">
            <ownedComment xmi:id="b9129b39-49f9-484a-bb18-d381e769188d" body="&lt;p>Interface implemented by an MBean that emits Notifications. It&#xA;allows a listener to be registered with the MBean as a notification&#xA;listener.&lt;/p>&#xA;&#xA;&lt;p>This interface should be used by new code in preference to the&#xA;{@link NotificationBroadcaster} interface.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.2&#xA;" annotatedElement="0b63085c-be9b-4448-8775-c18e28a39817"/>
            <generalization xmi:id="013110c8-b728-4956-9778-5a6321abeb30" isSubstitutable="true" general="02730453-ef05-4b39-9009-55ce1e2addfd"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="307b9d13-a8dd-463e-8665-d8fd6b6226e1" name="InvalidAttributeValueException">
            <ownedComment xmi:id="9f14a29f-9b8e-4e0d-81d1-32a696694618" body="The value specified is not valid for the attribute.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="307b9d13-a8dd-463e-8665-d8fd6b6226e1"/>
            <generalization xmi:id="010380a5-45de-4422-8b8a-4f562aca4df9" isSubstitutable="true" general="aae66ef6-d10b-4418-8784-f77f2c87f595"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="63bea8af-c5ea-4b3b-87fe-e59aab8370df" name="QueryExp" isAbstract="true">
            <ownedComment xmi:id="dfdfcf50-1a0b-40d0-82d4-00205651e2ee" body="&lt;p>Represents relational constraints that can be used in database&#xA;query &quot;where clauses&quot;.  Instances of QueryExp are returned by the&#xA;static methods of the {@link Query} class.&lt;/p>&#xA;&#xA;&lt;p>It is possible, but not&#xA;recommended, to create custom queries by implementing this&#xA;interface.  In that case, it is better to extend the {@link&#xA;QueryEval} class than to implement the interface directly, so that&#xA;the {@link #setMBeanServer} method works correctly.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="63bea8af-c5ea-4b3b-87fe-e59aab8370df"/>
            <generalization xmi:id="51ec6c93-0a48-4209-bdcc-b5f040189231" isSubstitutable="true" general="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d9d2febe-9151-49db-ade4-4d14e93e7fa0" name="MBeanException">
            <ownedComment xmi:id="ec917597-6f23-488a-a307-d59ae0f91fdc" body="Represents &quot;user defined&quot; exceptions thrown by MBean methods&#xA;in the agent. It &quot;wraps&quot; the actual &quot;user defined&quot; exception thrown.&#xA;This exception will be built by the MBeanServer when a call to an&#xA;MBean method results in an unknown exception.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="d9d2febe-9151-49db-ade4-4d14e93e7fa0"/>
            <generalization xmi:id="8b43f863-1182-4bc2-9b21-cdf86ecbfdfe" isSubstitutable="true" general="6a8199d1-b549-413b-97fb-2fce6a429c29"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="949c4c1a-90e3-4b8e-9aac-d152ed7f1f19" name="BinaryRelQueryExp" visibility="package" clientDependency="9bc56372-8b06-4265-b2b8-1e5f85d15afc">
            <ownedComment xmi:id="6226290f-2206-465d-9d6c-8bedaf78348d" body="This class is used by the query-building mechanism to represent binary&#xA;operations.&#xA;@serial include&#xA;&#xA;@since 1.5&#xA;" annotatedElement="949c4c1a-90e3-4b8e-9aac-d152ed7f1f19"/>
            <generalization xmi:id="60b9ad9d-5b15-4aac-8d7a-68f0b105b815" isSubstitutable="true" general="884220a1-d86c-4a9b-b5d1-05725d6e417f"/>
            <interfaceRealization xmi:id="9bc56372-8b06-4265-b2b8-1e5f85d15afc" name="" supplier="63bea8af-c5ea-4b3b-87fe-e59aab8370df" client="949c4c1a-90e3-4b8e-9aac-d152ed7f1f19" contract="63bea8af-c5ea-4b3b-87fe-e59aab8370df"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5de59b31-68cf-4b1e-b57a-f22d7ea7d0d7" name="ReflectionException">
            <ownedComment xmi:id="b82fb939-68a6-47c5-a137-ec8f3c5396ff" body="Represents exceptions thrown in the MBean server when using the&#xA;java.lang.reflect classes to invoke methods on MBeans. It &quot;wraps&quot; the&#xA;actual java.lang.Exception thrown.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="5de59b31-68cf-4b1e-b57a-f22d7ea7d0d7"/>
            <generalization xmi:id="87853417-5fe9-43d7-89d9-4ba4e437df20" isSubstitutable="true" general="6a8199d1-b549-413b-97fb-2fce6a429c29"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f73dc7a0-1d90-48b8-8326-32cb80abeff5" name="MBeanInfo" clientDependency="6c2f9869-4fee-4373-aed1-f112d25379a5 b09c9f6c-bcd2-4881-acc5-1de12cb4e2a8">
            <ownedComment xmi:id="7857b8ad-3893-44cc-828d-97012d009602" body="&lt;p>Describes the management interface exposed by an MBean; that is,&#xA;the set of attributes and operations which are available for&#xA;management operations.  Instances of this class are immutable.&#xA;Subclasses may be mutable but this is not recommended.&lt;/p>&#xA;&#xA;&lt;p>The contents of the &lt;code>MBeanInfo&lt;/code> for a Dynamic MBean&#xA;are determined by its {@link DynamicMBean#getMBeanInfo&#xA;getMBeanInfo()} method.  This includes Open MBeans and Model&#xA;MBeans, which are kinds of Dynamic MBeans.&lt;/p>&#xA;&#xA;&lt;p>The contents of the &lt;code>MBeanInfo&lt;/code> for a Standard MBean&#xA;are determined by the MBean server as follows:&lt;/p>&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>{@link #getClassName()} returns the Java class name of the MBean&#xA;object;&#xA;&#xA;&lt;li>{@link #getConstructors()} returns the list of all public&#xA;constructors in that object;&#xA;&#xA;&lt;li>{@link #getAttributes()} returns the list of all attributes&#xA;whose existence is deduced from the presence in the MBean interface&#xA;of a &lt;code>get&lt;i>Name&lt;/i>&lt;/code>, &lt;code>is&lt;i>Name&lt;/i>&lt;/code>, or&#xA;&lt;code>set&lt;i>Name&lt;/i>&lt;/code> method that conforms to the conventions&#xA;for Standard MBeans;&#xA;&#xA;&lt;li>{@link #getOperations()} returns the list of all methods in&#xA;the MBean interface that do not represent attributes;&#xA;&#xA;&lt;li>{@link #getNotifications()} returns an empty array if the MBean&#xA;does not implement the {@link NotificationBroadcaster} interface,&#xA;otherwise the result of calling {@link&#xA;NotificationBroadcaster#getNotificationInfo()} on it.&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p>The remaining details of the &lt;code>MBeanInfo&lt;/code> for a&#xA;Standard MBean are not specified.  This includes the description of&#xA;the &lt;code>MBeanInfo&lt;/code> and of any contained constructors,&#xA;attributes, operations, and notifications; and the names and&#xA;descriptions of parameters to constructors and operations.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="f73dc7a0-1d90-48b8-8326-32cb80abeff5"/>
            <interfaceRealization xmi:id="b09c9f6c-bcd2-4881-acc5-1de12cb4e2a8" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="f73dc7a0-1d90-48b8-8326-32cb80abeff5" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="6c2f9869-4fee-4373-aed1-f112d25379a5" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f73dc7a0-1d90-48b8-8326-32cb80abeff5" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="fc172074-9785-49f3-9d13-1dc0267c9f23" name="ImmutabilityAction" visibility="private" clientDependency="fa6e8fb4-56bf-45f5-89e3-a48df9b2c280">
              <interfaceRealization xmi:id="fa6e8fb4-56bf-45f5-89e3-a48df9b2c280" name="" supplier="5646b95f-c8d5-4f70-8c2b-9996e66b63ce" client="fc172074-9785-49f3-9d13-1dc0267c9f23" contract="5646b95f-c8d5-4f70-8c2b-9996e66b63ce"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2e70dc5a-74bd-4c15-930c-98204016e337" name="MBeanServerInvocationHandler" clientDependency="65ce4729-c89e-4d70-8645-852706405877">
            <ownedComment xmi:id="e76d3d19-d944-4d06-b9de-740bf0ae4e6f" body="&lt;p>{@link InvocationHandler} that forwards methods in an MBean's&#xA;management interface through the MBean server to the MBean.&lt;/p>&#xA;&#xA;&lt;p>Given an {@link MBeanServerConnection}, the {@link ObjectName}&#xA;of an MBean within that MBean server, and a Java interface&#xA;&lt;code>Intf&lt;/code> that describes the management interface of the&#xA;MBean using the patterns for a Standard MBean, this class can be&#xA;used to construct a proxy for the MBean.  The proxy implements&#xA;the interface &lt;code>Intf&lt;/code> such that all of its methods are&#xA;forwarded through the MBean server to the MBean.&lt;/p>&#xA;&#xA;&lt;p>If you have an MBean server &lt;code>mbs&lt;/code> containing an MBean&#xA;with {@link ObjectName} &lt;code>name&lt;/code>, and if the MBean's&#xA;management interface is described by the Java interface&#xA;&lt;code>Intf&lt;/code>, you can construct a proxy for the MBean like&#xA;this:&lt;/p>&#xA;&#xA;&lt;pre>&#xA;Intf proxy = (Intf)&#xA;MBeanServerInvocationHandler.{@link #newProxyInstance newProxyInstance}(mbs,&#xA;name,&#xA;Intf.class,&#xA;false);&#xA;&lt;/pre>&#xA;&#xA;&lt;p>Suppose, for example, &lt;code>Intf&lt;/code> looks like this:&lt;/p>&#xA;&#xA;&lt;pre>&#xA;public interface Intf {&#xA;public String getSomeAttribute();&#xA;public void setSomeAttribute(String value);&#xA;public void someOperation(String param1, int param2);&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p>Then you can execute:&lt;/p>&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;code>proxy.getSomeAttribute()&lt;/code> which will result in a&#xA;call to &lt;code>mbs.&lt;/code>{@link MBeanServerConnection#getAttribute&#xA;getAttribute}&lt;code>(name, &quot;SomeAttribute&quot;)&lt;/code>.&#xA;&#xA;&lt;li>&lt;code>proxy.setSomeAttribute(&quot;whatever&quot;)&lt;/code> which will result&#xA;in a call to &lt;code>mbs.&lt;/code>{@link MBeanServerConnection#setAttribute&#xA;setAttribute}&lt;code>(name, new Attribute(&quot;SomeAttribute&quot;, &quot;whatever&quot;))&lt;/code>.&#xA;&#xA;&lt;li>&lt;code>proxy.someOperation(&quot;param1&quot;, 2)&lt;/code> which will be&#xA;translated into a call to &lt;code>mbs.&lt;/code>{@link&#xA;MBeanServerConnection#invoke invoke}&lt;code>(name, &quot;someOperation&quot;, &lt;etc>)&lt;/code>.&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p>If the last parameter to {@link #newProxyInstance&#xA;newProxyInstance} is &lt;code>true&lt;/code>, then the MBean is assumed&#xA;to be a {@link NotificationBroadcaster} or {@link&#xA;NotificationEmitter} and the returned proxy will implement {@link&#xA;NotificationEmitter}.  A call to {@link&#xA;NotificationBroadcaster#addNotificationListener} on the proxy will&#xA;result in a call to {@link&#xA;MBeanServerConnection#addNotificationListener(ObjectName,&#xA;NotificationListener, NotificationFilter, Object)}, and likewise&#xA;for the other methods of {@link NotificationBroadcaster} and {@link&#xA;NotificationEmitter}.&lt;/p>&#xA;&#xA;&lt;p>The methods {@link Object#toString()}, {@link Object#hashCode()},&#xA;and {@link Object#equals(Object)}, when invoked on a proxy using&#xA;this invocation handler, are forwarded to the MBean server as&#xA;methods on the proxied MBean.  This will only work if the MBean&#xA;declares those methods in its management interface.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.2&#xA;" annotatedElement="2e70dc5a-74bd-4c15-930c-98204016e337"/>
            <interfaceRealization xmi:id="65ce4729-c89e-4d70-8645-852706405877" name="" supplier="db16cb55-6a36-40ec-b9b3-5607bf908b29" client="2e70dc5a-74bd-4c15-930c-98204016e337" contract="db16cb55-6a36-40ec-b9b3-5607bf908b29"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0bf7b0e7-8854-4d0b-9644-9aef0d5b1f7d" name="Attribute" clientDependency="d9fa8380-838a-42f5-86aa-2410fd0a5602">
            <ownedComment xmi:id="7dfb48f4-1593-4b1e-8340-98c5b1a77dbb" body="Represents an MBean attribute by associating its name with its value.&#xA;The MBean server and other objects use this class to get and set attributes values.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="0bf7b0e7-8854-4d0b-9644-9aef0d5b1f7d"/>
            <interfaceRealization xmi:id="d9fa8380-838a-42f5-86aa-2410fd0a5602" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0bf7b0e7-8854-4d0b-9644-9aef0d5b1f7d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="07f5865a-52f1-4daf-b305-411419423328" name="ObjectName" clientDependency="ae844f43-836c-49cb-a97e-1514e751891d e90824ff-b29d-41ec-8147-11b565e96415">
            <ownedComment xmi:id="dcd7501a-6f96-480f-b870-f7cd6525d1bf" body="&lt;p>Represents the object name of an MBean, or a pattern that can&#xA;match the names of several MBeans.  Instances of this class are&#xA;immutable.&lt;/p>&#xA;&#xA;&lt;p>An instance of this class can&#xA;be used to represent:&#xA;&lt;ul>&#xA;&lt;li> An object name&#xA;&lt;li> An object name pattern, within the context of a query&#xA;&lt;/ul>&lt;/p>&#xA;&#xA;&lt;p>An object name consists of two parts, the domain and the key&#xA;properties.&lt;/p>&#xA;&#xA;&lt;p>The &lt;em>domain&lt;/em> is a string of characters not including&#xA;the character colon (&lt;code>:&lt;/code>).&lt;/p>&#xA;&#xA;&lt;p>If the domain includes at least one occurrence of the wildcard&#xA;characters asterisk (&lt;code>*&lt;/code>) or question mark&#xA;(&lt;code>?&lt;/code>), then the object name is a pattern.  The asterisk&#xA;matches any sequence of zero or more characters, while the question&#xA;mark matches any single character.&lt;/p>&#xA;&#xA;&lt;p>If the domain is empty, it will be replaced in certain contexts&#xA;by the &lt;em>default domain&lt;/em> of the MBean server in which the&#xA;ObjectName is used.&lt;/p>&#xA;&#xA;&lt;p>The &lt;em>key properties&lt;/em> are an unordered set of keys and&#xA;associated values.&lt;/p>&#xA;&#xA;&lt;p>Each &lt;em>key&lt;/em> is a nonempty string of characters which may&#xA;not contain any of the characters comma (&lt;code>,&lt;/code>), equals&#xA;(&lt;code>=&lt;/code>), colon, asterisk, or question mark.  The same key&#xA;may not occur twice in a given ObjectName.&lt;/p>&#xA;&#xA;&lt;p>Each &lt;em>value&lt;/em> associated with a key is a string of&#xA;characters that is either unquoted or quoted.&lt;/p>&#xA;&#xA;&lt;p>An &lt;em>unquoted value&lt;/em> is a possibly empty string of&#xA;characters which may not contain any of the characters comma,&#xA;equals, colon, quote, asterisk, or question mark.&lt;/p>&#xA;&#xA;&lt;p>A &lt;em>quoted value&lt;/em> consists of a quote (&lt;code>&quot;&lt;/code>),&#xA;followed by a possibly empty string of characters, followed by&#xA;another quote.  Within the string of characters, the backslash&#xA;(&lt;code>\&lt;/code>) has a special meaning.  It must be followed by&#xA;one of the following characters:&lt;/p>&#xA;&#xA;&lt;ul>&#xA;&lt;li>Another backslash.  The second backslash has no special&#xA;meaning and the two characters represent a single backslash.&#xA;&#xA;&lt;li>The character 'n'.  The two characters represent a newline&#xA;('\n' in Java).&#xA;&#xA;&lt;li>A quote.  The two characters represent a quote, and that quote&#xA;is not considered to terminate the quoted value. An ending closing&#xA;quote must be present for the quoted value to be valid.&#xA;&#xA;&lt;li>A question mark (?) or star (*).  The two characters represent&#xA;a question mark or star respectively.&#xA;&lt;/ul>&#xA;&#xA;&lt;p>A quote, question mark, or star may not appear inside a quoted&#xA;value except immediately after an odd number of consecutive&#xA;backslashes.&lt;/p>&#xA;&#xA;&lt;p>The quotes surrounding a quoted value, and any backslashes&#xA;within that value, are considered to be part of the value.&lt;/p>&#xA;&#xA;&lt;p>An ObjectName may be a &lt;em>property pattern&lt;/em>.  In this case&#xA;it may have zero or more keys and associated values.  It matches a&#xA;nonpattern ObjectName whose domain matches and that contains the&#xA;same keys and associated values, as well as possibly other keys and&#xA;values.&lt;/p>&#xA;&#xA;&lt;p>An ObjectName is a pattern if its domain contains a wildcard or&#xA;if the ObjectName is a property pattern.&lt;/p>&#xA;&#xA;&lt;p>If an ObjectName is not a pattern, it must contain at least one&#xA;key with its associated value.&lt;/p>&#xA;&#xA;&lt;p>An ObjectName can be written as a String with the following&#xA;elements in order:&lt;/p>&#xA;&#xA;&lt;ul>&#xA;&lt;li>The domain.&#xA;&lt;li>A colon (&lt;code>:&lt;/code>).&#xA;&lt;li>A key property list as defined below.&#xA;&lt;/ul>&#xA;&#xA;&lt;p>A key property list written as a String is a comma-separated&#xA;list of elements.  Each element is either an asterisk or a key&#xA;property.  A key property consists of a key, an equals&#xA;(&lt;code>=&lt;/code>), and the associated value.&lt;/p>&#xA;&#xA;&lt;p>At most one element of a key property list may be an asterisk.&#xA;If the key property list contains an asterisk element, the&#xA;ObjectName is a property pattern.&lt;/p>&#xA;&#xA;&lt;p>Spaces have no special significance in a String representing an&#xA;ObjectName.  For example, the String:&#xA;&lt;pre>&#xA;domain: key1 = value1 , key2 = value2&#xA;&lt;/pre>&#xA;represents an ObjectName with two keys.  The name of each key&#xA;contains six characters, of which the first and last are spaces.&#xA;The value associated with the key &lt;code>&quot;&amp;nbsp;key1&amp;nbsp;&quot;&lt;/code>&#xA;also begins and ends with a space.&lt;/p>&#xA;&#xA;&lt;p>In addition to the restrictions on characters spelt out above,&#xA;no part of an ObjectName may contain a newline character&#xA;(&lt;code>'\n'&lt;/code>), whether the domain, a key, or a value, whether&#xA;quoted or unquoted.  The newline character can be represented in a&#xA;quoted value with the sequence &lt;code>\n&lt;/code>.&#xA;&#xA;&lt;p>The rules on special characters and quoting apply regardless of&#xA;which constructor is used to make an ObjectName.&lt;/p>&#xA;&#xA;&lt;p>To avoid collisions between MBeans supplied by different&#xA;vendors, a useful convention is to begin the domain name with the&#xA;reverse DNS name of the organization that specifies the MBeans,&#xA;followed by a period and a string whose interpretation is&#xA;determined by that organization.  For example, MBeans specified by&#xA;Sun Microsystems Inc., DNS name &lt;code>sun.com&lt;/code>, would have&#xA;domains such as &lt;code>com.sun.MyDomain&lt;/code>.  This is essentially&#xA;the same convention as for Java-language package names.&lt;/p>&#xA;&#xA;@since 1.5&#xA;" annotatedElement="07f5865a-52f1-4daf-b305-411419423328"/>
            <interfaceRealization xmi:id="e90824ff-b29d-41ec-8147-11b565e96415" name="" supplier="63bea8af-c5ea-4b3b-87fe-e59aab8370df" client="07f5865a-52f1-4daf-b305-411419423328" contract="63bea8af-c5ea-4b3b-87fe-e59aab8370df"/>
            <interfaceRealization xmi:id="ae844f43-836c-49cb-a97e-1514e751891d" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="07f5865a-52f1-4daf-b305-411419423328" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="401b8306-91f9-4350-b06d-0a31f18c70d9" name="Property" visibility="private" isLeaf="true">
              <ownedComment xmi:id="a2c29b48-b940-4dea-b896-10a51346b461" body="A structure recording property structure and&#xA;proposing minimal services&#xA;" annotatedElement="401b8306-91f9-4350-b06d-0a31f18c70d9"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="175d0dfa-88af-44ef-8ee7-73b265e2fcca" name="ObjectInstance" clientDependency="1b33307d-6955-458e-a162-0ea7d41bb132">
            <ownedComment xmi:id="adfd86b6-6707-4bcd-9652-d092a0b3cc0b" body="Used to represent the object name of an MBean and its class name.&#xA;If the MBean is a Dynamic MBean the class name should be retrieved from&#xA;the &lt;CODE>MBeanInfo&lt;/CODE> it provides.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="175d0dfa-88af-44ef-8ee7-73b265e2fcca"/>
            <interfaceRealization xmi:id="1b33307d-6955-458e-a162-0ea7d41bb132" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="175d0dfa-88af-44ef-8ee7-73b265e2fcca" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="77e94609-fe7f-4c46-a72c-fd151d45fd10" name="NotificationFilterSupport" clientDependency="fce1fd78-e9aa-4b40-9a9a-fef7144f05c9 4ce5274e-875d-48b8-bce2-bf26dc625a94">
            <ownedComment xmi:id="2a7744a7-563c-4234-8a61-4086152dacd2" body="Provides an implementation of the {@link javax.management.NotificationFilter} interface.&#xA;The filtering is performed on the notification type attribute.&#xA;&lt;P>&#xA;Manages a list of enabled notification types.&#xA;A method allows users to enable/disable as many notification types as required.&#xA;&lt;P>&#xA;Then, before sending a notification to a listener registered with a filter,&#xA;the notification broadcaster compares this notification type with all notification types&#xA;enabled by the filter. The notification will be sent to the listener&#xA;only if its filter enables this notification type.&#xA;&lt;P>&#xA;Example:&#xA;&lt;BLOCKQUOTE>&#xA;&lt;PRE>&#xA;NotificationFilterSupport myFilter = new NotificationFilterSupport();&#xA;myFilter.enableType(&quot;my_example.my_type&quot;);&#xA;myBroadcaster.addListener(myListener, myFilter, null);&#xA;&lt;/PRE>&#xA;&lt;/BLOCKQUOTE>&#xA;The listener &lt;CODE>myListener&lt;/CODE> will only receive notifications the type of which equals/starts with &quot;my_example.my_type&quot;.&#xA;&#xA;@see javax.management.NotificationBroadcaster#addNotificationListener&#xA;&#xA;@since 1.5&#xA;" annotatedElement="77e94609-fe7f-4c46-a72c-fd151d45fd10"/>
            <interfaceRealization xmi:id="fce1fd78-e9aa-4b40-9a9a-fef7144f05c9" name="" supplier="c9eac6b1-531b-4a44-b300-7fd16e525419" client="77e94609-fe7f-4c46-a72c-fd151d45fd10" contract="c9eac6b1-531b-4a44-b300-7fd16e525419"/>
            <interfaceRealization xmi:id="4ce5274e-875d-48b8-bce2-bf26dc625a94" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="77e94609-fe7f-4c46-a72c-fd151d45fd10" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d18bfb2c-c52b-4f0d-988a-951ec17b8a8e" name="MBeanNotificationInfo" clientDependency="ffe424d6-eb31-49f3-9102-6819df3ee2e8 156d4abc-a5da-4e8b-a070-5791d527b894">
            <ownedComment xmi:id="e566998c-3602-4dbd-8606-39617385e056" body="&lt;p>The &lt;CODE>MBeanNotificationInfo&lt;/CODE> class is used to describe the&#xA;characteristics of the different notification instances&#xA;emitted by an MBean, for a given Java class of notification.&#xA;If an MBean emits notifications that can be instances of different Java classes,&#xA;then the metadata for that MBean should provide an &lt;CODE>MBeanNotificationInfo&lt;/CODE>&#xA;object for each of these notification Java classes.&lt;/p>&#xA;&#xA;&lt;p>Instances of this class are immutable.  Subclasses may be&#xA;mutable but this is not recommended.&lt;/p>&#xA;&#xA;&lt;p>This class extends &lt;CODE>javax.management.MBeanFeatureInfo&lt;/CODE>&#xA;and thus provides &lt;CODE>name&lt;/CODE> and &lt;CODE>description&lt;/CODE> fields.&#xA;The &lt;CODE>name&lt;/CODE> field should be the fully qualified Java class name of&#xA;the notification objects described by this class.&lt;/p>&#xA;&#xA;&lt;p>The &lt;CODE>getNotifTypes&lt;/CODE> method returns an array of&#xA;strings containing the notification types that the MBean may&#xA;emit. The notification type is a dot-notation string which&#xA;describes what the emitted notification is about, not the Java&#xA;class of the notification.  A single generic notification class can&#xA;be used to send notifications of several types.  All of these types&#xA;are returned in the string array result of the&#xA;&lt;CODE>getNotifTypes&lt;/CODE> method.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="d18bfb2c-c52b-4f0d-988a-951ec17b8a8e"/>
            <generalization xmi:id="29b35509-dee5-42b2-8d21-015f5712acc8" isSubstitutable="true" general="1622d866-591b-4a08-ace2-ed7c4952a6a0"/>
            <interfaceRealization xmi:id="ffe424d6-eb31-49f3-9102-6819df3ee2e8" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="d18bfb2c-c52b-4f0d-988a-951ec17b8a8e" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="156d4abc-a5da-4e8b-a070-5791d527b894" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="d18bfb2c-c52b-4f0d-988a-951ec17b8a8e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5d451c44-ddd4-437f-ba8f-04bc539a7e66" name="BetweenQueryExp" visibility="package" clientDependency="6ae47aff-a637-4367-961d-3a96d7af6fb8">
            <ownedComment xmi:id="2e360ba3-8397-422e-994c-fdbbbdfcb8b6" body="This class is used by the query-building mechanism to represent binary&#xA;relations.&#xA;@serial include&#xA;&#xA;@since 1.5&#xA;" annotatedElement="5d451c44-ddd4-437f-ba8f-04bc539a7e66"/>
            <generalization xmi:id="f744beaa-c942-4cdf-bd14-8f82c6bc137a" isSubstitutable="true" general="884220a1-d86c-4a9b-b5d1-05725d6e417f"/>
            <interfaceRealization xmi:id="6ae47aff-a637-4367-961d-3a96d7af6fb8" name="" supplier="63bea8af-c5ea-4b3b-87fe-e59aab8370df" client="5d451c44-ddd4-437f-ba8f-04bc539a7e66" contract="63bea8af-c5ea-4b3b-87fe-e59aab8370df"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="431ab4dd-4be3-4c5b-8e5a-6b7ab4d36e96" name="InstanceAlreadyExistsException">
            <ownedComment xmi:id="daef958e-0844-4765-9da8-55eca4bcf25d" body="The MBean is already registered in the repository.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="431ab4dd-4be3-4c5b-8e5a-6b7ab4d36e96"/>
            <generalization xmi:id="03db6674-3015-4a45-bbbe-82eac57ff1f3" isSubstitutable="true" general="aae66ef6-d10b-4418-8784-f77f2c87f595"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d262fae1-5909-4d0c-92a1-213f60b781bb" name="MBeanRegistrationException">
            <ownedComment xmi:id="78054d33-434e-4513-9499-321f5fa0f246" body="Wraps exceptions thrown by the preRegister(), preDeregister() methods&#xA;of the &lt;CODE>MBeanRegistration&lt;/CODE> interface.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="d262fae1-5909-4d0c-92a1-213f60b781bb"/>
            <generalization xmi:id="768f5444-0cc5-46db-8d08-5d385c8e120a" isSubstitutable="true" general="d9d2febe-9151-49db-ade4-4d14e93e7fa0"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e6ecac6a-76af-4823-a879-d587d58ad6ac" name="MBeanServerFactory">
            <ownedComment xmi:id="c1628ac8-514f-46b4-90b7-be2fb1cddd41" body="&lt;p>Provides MBean server references.  There are no instances of&#xA;this class.&lt;/p>&#xA;&#xA;&lt;p>Since JMX 1.2 this class makes it possible to replace the default&#xA;MBeanServer implementation. This is done using the&#xA;{@link javax.management.MBeanServerBuilder} class.&#xA;The class of the initial MBeanServerBuilder to be&#xA;instantiated can be specified through the&#xA;&lt;b>javax.management.builder.initial&lt;/b> system property.&#xA;The specified class must be a public subclass of&#xA;{@link javax.management.MBeanServerBuilder}, and must have a public&#xA;empty constructor.&#xA;&lt;p>By default, if no value for that property is specified, an instance of&#xA;{@link&#xA;javax.management.MBeanServerBuilder javax.management.MBeanServerBuilder}&#xA;is created. Otherwise, the MBeanServerFactory attempts to load the&#xA;specified class using&#xA;{@link java.lang.Thread#getContextClassLoader()&#xA;Thread.currentThread().getContextClassLoader()}, or if that is null,&#xA;{@link java.lang.Class#forName(java.lang.String) Class.forName()}. Then&#xA;it creates an initial instance of that Class using&#xA;{@link java.lang.Class#newInstance()}. If any checked exception&#xA;is raised during this process (e.g.&#xA;{@link java.lang.ClassNotFoundException},&#xA;{@link java.lang.InstantiationException}) the MBeanServerFactory&#xA;will propagate this exception from within a RuntimeException.&lt;/p>&#xA;&#xA;&lt;p>The &lt;b>javax.management.builder.initial&lt;/b> system property is&#xA;consulted every time a new MBeanServer needs to be created, and the&#xA;class pointed to by that property is loaded. If that class is different&#xA;from that of the current MBeanServerBuilder, then a new MBeanServerBuilder&#xA;is created. Otherwise, the MBeanServerFactory may create a new&#xA;MBeanServerBuilder or reuse the current one.&lt;/p>&#xA;&#xA;&lt;p>If the class pointed to by the property cannot be&#xA;loaded, or does not correspond to a valid subclass of MBeanServerBuilder&#xA;then an exception is propagated, and no MBeanServer can be created until&#xA;the &lt;b>javax.management.builder.initial&lt;/b> system property is reset to&#xA;valid value.&lt;/p>&#xA;&#xA;&lt;p>The MBeanServerBuilder makes it possible to wrap the MBeanServers&#xA;returned by the default MBeanServerBuilder implementation, for the purpose&#xA;of e.g. adding an additional security layer.&lt;/p>&#xA;&#xA;@since 1.5&#xA;" annotatedElement="e6ecac6a-76af-4823-a879-d587d58ad6ac"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="11026c97-c1b4-45fb-ac8d-aab2946c0e51" name="AttributeList">
            <ownedComment xmi:id="fcb2e9f9-d14a-4692-9658-111c00ffa62e" body="Represents a list of values for attributes of an&#xA;MBean. The methods used for the insertion of {@link javax.management.Attribute Attribute} objects in&#xA;the &lt;CODE>AttributeList&lt;/CODE> overrides the corresponding methods in the superclass&#xA;&lt;CODE>ArrayList&lt;/CODE>. This is needed in order to insure that the objects contained&#xA;in the &lt;CODE>AttributeList&lt;/CODE> are only &lt;CODE>Attribute&lt;/CODE> objects. This avoids getting&#xA;an exception when retrieving elements from the &lt;CODE>AttributeList&lt;/CODE>.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="11026c97-c1b4-45fb-ac8d-aab2946c0e51"/>
            <generalization xmi:id="d688aa26-fe8e-4e4c-981d-2abec8a8da62" isSubstitutable="true" general="18193b0c-b68c-4a5e-ba9a-01ccc68917e6"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0bbf8db5-a45e-4b2e-b495-fa25c879ba74" name="MBeanServerNotification">
            <ownedComment xmi:id="2e8c7b36-0f46-4fff-839e-1d8208280956" body="Represents a notification emitted by the MBean server through the MBeanServerDelegate MBean.&#xA;The MBean Server emits the following types of notifications: MBean registration, MBean&#xA;de-registration.&#xA;&lt;P>&#xA;To receive to MBeanServerNotifications, you need to be declared as listener to&#xA;the {@link javax.management.MBeanServerDelegate javax.management.MBeanServerDelegate} MBean&#xA;that represents the MBeanServer. The ObjectName of the MBeanServerDelegate is:&#xA;&lt;CODE>JMImplementation:type=MBeanServerDelegate&lt;/CODE>.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="0bbf8db5-a45e-4b2e-b495-fa25c879ba74"/>
            <generalization xmi:id="d7c34234-1282-4b03-bf85-4165a328e386" isSubstitutable="true" general="4a926b62-e203-4046-b3fe-ba1f9d281ee7"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5051e351-582f-4a93-a1f1-7a0095507ebf" name="BinaryOpValueExp" visibility="package" clientDependency="308e9fba-f9c2-4507-b587-cdeaf195424e">
            <ownedComment xmi:id="f6d71285-caa4-42af-a15f-f7d24015fb40" body="This class is used by the query-building mechanism to represent binary&#xA;operations.&#xA;@serial include&#xA;&#xA;@since 1.5&#xA;" annotatedElement="5051e351-582f-4a93-a1f1-7a0095507ebf"/>
            <generalization xmi:id="22bb9165-49bc-4ce6-9f8c-984653c4ccd2" isSubstitutable="true" general="884220a1-d86c-4a9b-b5d1-05725d6e417f"/>
            <interfaceRealization xmi:id="308e9fba-f9c2-4507-b587-cdeaf195424e" name="" supplier="81301010-ae55-4253-b5d1-6bb30f053f3f" client="5051e351-582f-4a93-a1f1-7a0095507ebf" contract="81301010-ae55-4253-b5d1-6bb30f053f3f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5ed103b7-bbfc-411c-9968-520e3e38a8f3" name="StandardMBean" clientDependency="fc07468a-aef7-4232-929b-92f94be3ca67">
            <ownedComment xmi:id="ab54fa05-921b-4500-9076-2e7ff2c8e6ac" body="&lt;p>An MBean whose management interface is determined by reflection&#xA;on a Java interface.&lt;/p>&#xA;&#xA;&lt;p>This class brings more flexibility to the notion of Management&#xA;Interface in the use of Standard MBeans.  Straightforward use of&#xA;the patterns for Standard MBeans described in the JMX Specification&#xA;means that there is a fixed relationship between the implementation&#xA;class of an MBean and its management interface (i.e., if the&#xA;implementation class is Thing, the management interface must be&#xA;ThingMBean).  This class makes it possible to keep the convenience&#xA;of specifying the management interface with a Java interface,&#xA;without requiring that there be any naming relationship between the&#xA;implementation and interface classes.&lt;/p>&#xA;&#xA;&lt;p>By making a DynamicMBean out of an MBean, this class makes&#xA;it possible to select any interface implemented by the MBean as its&#xA;management interface, provided that it complies with JMX patterns&#xA;(i.e., attributes defined by getter/setter etc...).&lt;/p>&#xA;&#xA;&lt;p> This class also provides hooks that make it possible to supply&#xA;custom descriptions and names for the {@link MBeanInfo} returned by&#xA;the DynamicMBean interface.&lt;/p>&#xA;&#xA;&lt;p>Using this class, an MBean can be created with any&#xA;implementation class name &lt;i>Impl&lt;/i> and with a management&#xA;interface defined (as for current Standard MBeans) by any interface&#xA;&lt;i>Intf&lt;/i>, in one of two general ways:&lt;/p>&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>Using the public constructor&#xA;{@link #StandardMBean(java.lang.Object, java.lang.Class)&#xA;StandardMBean(impl,interface)}:&#xA;&lt;pre>&#xA;MBeanServer mbs;&#xA;...&#xA;Impl impl = new Impl(...);&#xA;StandardMBean mbean = new StandardMBean(impl, Intf.class);&#xA;mbs.registerMBean(mbean, objectName);&#xA;&lt;/pre>&lt;/li>&#xA;&#xA;&lt;li>Subclassing StandardMBean:&#xA;&lt;pre>&#xA;public class Impl extends StandardMBean implements Intf {&#xA;public Impl() {&#xA;super(Intf.class);&#xA;}&#xA;implement methods of Intf&#xA;}&#xA;&#xA;[...]&#xA;&#xA;MBeanServer mbs;&#xA;....&#xA;Impl impl = new Impl();&#xA;mbs.registerMBean(impl, objectName);&#xA;&lt;/pre>&lt;/li>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p>In either case, the class &lt;i>Impl&lt;/i> must implement the&#xA;interface &lt;i>Intf&lt;/i>.&lt;/p>&#xA;&#xA;&lt;p>Standard MBeans based on the naming relationship between&#xA;implementation and interface classes are of course still&#xA;available.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.2&#xA;" annotatedElement="5ed103b7-bbfc-411c-9968-520e3e38a8f3"/>
            <interfaceRealization xmi:id="fc07468a-aef7-4232-929b-92f94be3ca67" name="" supplier="f3e1f5d3-bee0-4d5e-b90f-cd5730c16f0d" client="5ed103b7-bbfc-411c-9968-520e3e38a8f3" contract="f3e1f5d3-bee0-4d5e-b90f-cd5730c16f0d"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="0547c9df-a4c2-404d-8060-a41355e473a4" name="StandardMBeanMeta" visibility="private" isLeaf="true">
              <ownedComment xmi:id="c64b39e5-584f-4ce3-ad9d-ef906c94a794" body="Override StandardMetaDataImpl in order to redefine the caching&#xA;of MBean Information.&#xA;" annotatedElement="0547c9df-a4c2-404d-8060-a41355e473a4"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6d1b9e6c-1280-4bda-9b48-0751850e9911" name="MBeanServerBuilder">
            <ownedComment xmi:id="203a368e-3d07-4286-a6d4-10d39b4c95be" body="&lt;p>This class represents a builder that creates a default&#xA;{@link javax.management.MBeanServer} implementation.&#xA;The JMX {@link javax.management.MBeanServerFactory} allows&#xA;applications to provide their custom MBeanServer&#xA;implementation by providing a subclass of this class.&lt;/p>&#xA;&#xA;@see MBeanServer&#xA;@see MBeanServerFactory&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.2&#xA;" annotatedElement="6d1b9e6c-1280-4bda-9b48-0751850e9911"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="dfa818ff-953d-4255-872a-8f976341028a" name="InvalidApplicationException">
            <ownedComment xmi:id="5d1b6606-7513-4b0d-ae9e-7644645a9dc6" body="Thrown when an attempt is made to apply either of the following: A&#xA;subquery expression to an MBean or a qualified attribute expression&#xA;to an MBean of the wrong class.  This exception is used internally&#xA;by JMX during the evaluation of a query.  User code does not&#xA;usually see it.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="dfa818ff-953d-4255-872a-8f976341028a"/>
            <generalization xmi:id="98f5090b-aa06-4cbd-b9ed-31d440be75bd" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="b49685fc-49ba-4900-a7ed-3afd7b607f0f" name="loading">
            <packagedElement xmi:type="uml:Class" xmi:id="e2d5768b-3d4a-4cd0-8af5-f759fa53e84c" name="MLetContent" visibility="package">
              <ownedComment xmi:id="df6e852c-4118-46d7-b092-672fcb42d3c4" body="This class represents the contents of the &lt;CODE>MLET&lt;/CODE> tag.&#xA;&lt;p>&#xA;The &lt;CODE>MLET&lt;/CODE> tag has the following syntax:&#xA;&lt;p>&#xA;&lt;&lt;CODE>MLET&lt;/CODE>&lt;BR>&#xA;&lt;CODE>CODE = &lt;/CODE>&lt;VAR>class&lt;/VAR>&lt;CODE> | OBJECT = &lt;/CODE>&lt;VAR>serfile&lt;/VAR>&lt;BR>&#xA;&lt;CODE>ARCHIVE = &quot;&lt;/CODE>&lt;VAR>archiveList&lt;/VAR>&lt;CODE>&quot;&lt;/CODE>&lt;BR>&#xA;&lt;CODE>[CODEBASE = &lt;/CODE>&lt;VAR>codebaseURL&lt;/VAR>&lt;CODE>]&lt;/CODE>&lt;BR>&#xA;&lt;CODE>[NAME = &lt;/CODE>&lt;VAR>mbeanname&lt;/VAR>&lt;CODE>]&lt;/CODE>&lt;BR>&#xA;&lt;CODE>[VERSION = &lt;/CODE>&lt;VAR>version&lt;/VAR>&lt;CODE>]&lt;/CODE>&lt;BR>&#xA;>&lt;BR>&#xA;&lt;CODE>[&lt;/CODE>&lt;VAR>arglist&lt;/VAR>&lt;CODE>]&lt;/CODE>&lt;BR>&#xA;&lt;&lt;CODE>/MLET&lt;/CODE>>&#xA;&lt;p>&#xA;where:&#xA;&lt;DL>&#xA;&lt;DT>&lt;CODE>CODE = &lt;/CODE>&lt;VAR>class&lt;/VAR>&lt;/DT>&#xA;&lt;DD>&#xA;This attribute specifies the full Java class name, including package name, of the MBean to be obtained.&#xA;The compiled &lt;CODE>.class&lt;/CODE> file of the MBean must be contained in one of the &lt;CODE>.jar&lt;/CODE> files specified by the &lt;CODE>ARCHIVE&lt;/CODE>&#xA;attribute. Either &lt;CODE>CODE&lt;/CODE> or &lt;CODE>OBJECT&lt;/CODE> must be present.&#xA;&lt;/DD>&#xA;&lt;DT>&lt;CODE>OBJECT = &lt;/CODE>&lt;VAR>serfile&lt;/VAR>&lt;/DT>&#xA;&lt;DD>&#xA;This attribute specifies the &lt;CODE>.ser&lt;/CODE> file that contains a serialized representation of the MBean to be obtained.&#xA;This file must be contained in one of the &lt;CODE>.jar&lt;/CODE> files specified by the &lt;CODE>ARCHIVE&lt;/CODE> attribute. If the &lt;CODE>.jar&lt;/CODE> file contains a directory hierarchy, specify the path of the file within this hierarchy. Otherwise  a match will not be found. Either &lt;CODE>CODE&lt;/CODE> or &lt;CODE>OBJECT&lt;/CODE> must be present.&#xA;&lt;/DD>&#xA;&lt;DT>&lt;CODE>ARCHIVE = &quot;&lt;/CODE>&lt;VAR>archiveList&lt;/VAR>&lt;CODE>&quot;&lt;/CODE>&lt;/DT>&#xA;&lt;DD>&#xA;This mandatory attribute specifies one or more &lt;CODE>.jar&lt;/CODE> files&#xA;containing MBeans or other resources used by&#xA;the MBean to be obtained. One of the &lt;CODE>.jar&lt;/CODE> files must contain the file specified by the &lt;CODE>CODE&lt;/CODE> or &lt;CODE>OBJECT&lt;/CODE> attribute.&#xA;If archivelist contains more than one file:&#xA;&lt;UL>&#xA;&lt;LI>Each file must be separated from the one that follows it by a comma (,).&#xA;&lt;LI>&lt;VAR>archivelist&lt;/VAR> must be enclosed in double quote marks.&#xA;&lt;/UL>&#xA;All &lt;CODE>.jar&lt;/CODE> files in &lt;VAR>archivelist&lt;/VAR> must be stored in the directory specified by the code base URL.&#xA;&lt;/DD>&#xA;&lt;DT>&lt;CODE>CODEBASE = &lt;/CODE>&lt;VAR>codebaseURL&lt;/VAR>&lt;/DT>&#xA;&lt;DD>&#xA;This optional attribute specifies the code base URL of the MBean to be obtained. It identifies the directory that contains&#xA;the &lt;CODE>.jar&lt;/CODE> files specified by the &lt;CODE>ARCHIVE&lt;/CODE> attribute. Specify this attribute only if the &lt;CODE>.jar&lt;/CODE> files are not in the same&#xA;directory as the MLet text file. If this attribute is not specified, the base URL of the MLet text file is used.&#xA;&lt;/DD>&#xA;&lt;DT>&lt;CODE>NAME = &lt;/CODE>&lt;VAR>mbeanname&lt;/VAR>&lt;/DT>&#xA;&lt;DD>&#xA;This optional attribute specifies the object name to be assigned to the&#xA;MBean instance when the MLet service registers it. If&#xA;&lt;VAR>mbeanname&lt;/VAR> starts with the colon character (:), the domain&#xA;part of the object name is the domain of the agent. The MLet service&#xA;invokes the &lt;CODE>getDomain()&lt;/CODE> method of the Framework class to&#xA;obtain this information.&#xA;&lt;/DD>&#xA;&lt;DT>&lt;CODE>PERSISTENT = &lt;/CODE>&lt;VAR>true | false&lt;/VAR>&lt;/DT>&#xA;&lt;DD>&#xA;This optional attribute specifies the persistency or not persistency of the&#xA;MBean instance when the MLet service registers it.&#xA;&lt;/DD>&#xA;&lt;DT>&lt;CODE>VERSION = &lt;/CODE>&lt;VAR>version&lt;/VAR>&lt;/DT>&#xA;&lt;DD>&#xA;This optional attribute specifies the version number of the MBean and&#xA;associated &lt;CODE>.jar&lt;/CODE> files to be obtained. This version number can&#xA;be used to specify that the &lt;CODE>.jar&lt;/CODE> files are loaded from the&#xA;server to update those stored locally in the cache the next time the MLet&#xA;text file is loaded. &lt;VAR>version&lt;/VAR> must be a series of non-negative&#xA;decimal integers each separated by a period from the one that precedes it.&#xA;&lt;/DD>&#xA;&lt;DT>&lt;VAR>paramlist&lt;/VAR>&lt;/DT>&#xA;&lt;DD>&#xA;This optional attribute specifies a list of one or more parameters for the&#xA;MBean to be instantiated. Each parameter in &lt;VAR>paramlist&lt;/VAR> corresponds to a modification in the&#xA;modification list. Use the following syntax to specify each item in&#xA;&lt;VAR>paramlist&lt;/VAR>:&lt;/DD>&#xA;&lt;DL>&#xA;&lt;P>&#xA;&lt;DT>&lt;&lt;CODE>PARAM NAME=&lt;/CODE>&lt;VAR>propertyName&lt;/VAR> &lt;CODE>VALUE=&lt;/CODE>&lt;VAR>value&lt;/VAR>>&lt;/DT>&#xA;&lt;P>&#xA;&lt;DD>where:&lt;/DD>&#xA;&lt;UL>&#xA;&lt;LI>&lt;VAR>propertyName&lt;/VAR> is the name of the property in the modification&#xA;&lt;LI>&lt;VAR>value&lt;/VAR> is the value in the modification&lt;/UL>&#xA;&lt;/DL>&#xA;&lt;P>The MLet service passes all the values in the modification list as&#xA;&lt;CODE>String&lt;/CODE> objects.&#xA;&lt;/DL>&#xA;&#xA;&lt;p>&lt;STRONG>Note - &lt;/STRONG>Multiple &lt;CODE>MLET&lt;/CODE> tags with the same&#xA;code base URL share the same instance of the &lt;CODE>MLetClassLoader&lt;/CODE>&#xA;class.&#xA;&#xA;@version     3.3     02/08/99&#xA;@author      Sun Microsystems, Inc&#xA;&#xA;@since 1.5&#xA;" annotatedElement="e2d5768b-3d4a-4cd0-8af5-f759fa53e84c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="770be877-9d3e-4b1d-9a8c-63c6ae1e88a2" name="MLetParser" visibility="package">
              <ownedComment xmi:id="0ee3197c-aff2-4f00-bb77-11f0a4ef6b93" body="This class is used for parsing URLs.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="770be877-9d3e-4b1d-9a8c-63c6ae1e88a2"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b6e65424-220e-485a-a3fb-066f1bb8ee3c" name="DefaultLoaderRepository">
              <ownedComment xmi:id="62183e24-220c-4e47-af92-6aed73836b44" body="&lt;p>Keeps the list of Class Loaders registered in the MBean Server.&#xA;It provides the necessary methods to load classes using the registered&#xA;Class Loaders.&lt;/p>&#xA;&#xA;&lt;p>This deprecated class is maintained for compatibility.  In&#xA;previous versions of JMX, there was one&#xA;&lt;code>DefaultLoaderRepository&lt;/code> shared by all MBean servers.&#xA;As of JMX 1.2, that functionality is approximated by using {@link&#xA;MBeanServerFactory#findMBeanServer} to find all known MBean&#xA;servers, and consulting the {@link ClassLoaderRepository} of each&#xA;one.  It is strongly recommended that code referencing&#xA;&lt;code>DefaultLoaderRepository&lt;/code> be rewritten.&lt;/p>&#xA;&#xA;@deprecated Use&#xA;{@link javax.management.MBeanServer#getClassLoaderRepository()}}&#xA;instead.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="b6e65424-220e-485a-a3fb-066f1bb8ee3c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="35914557-90ff-4736-84d8-7bd8f4cf177e" name="MLetObjectInputStream" visibility="package">
              <ownedComment xmi:id="9ebe1cd4-a8e9-47bc-ad3b-2bc77321d9a4" body="This subclass of ObjectInputStream delegates loading of classes to&#xA;an existing MLetClassLoader.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="35914557-90ff-4736-84d8-7bd8f4cf177e"/>
              <generalization xmi:id="7a3847b4-593f-4a61-9b26-42c4877e561c" isSubstitutable="true" general="eca630bd-67e2-45fc-afac-de0b42be103a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="a13fd2e8-59be-445d-b465-67ac02240aea" name="MLetMBean" isAbstract="true">
              <ownedComment xmi:id="1111dd85-56e0-45b0-b64e-e4aa57ab7889" body="Exposes the remote management interface of the MLet&#xA;MBean.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="a13fd2e8-59be-445d-b465-67ac02240aea"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="c74bbfbc-ed7e-4c37-96ee-54413ce39008" name="ClassLoaderRepository" isAbstract="true">
              <ownedComment xmi:id="fc9b51b0-bb4c-4565-a533-3270966bd9dc" body="&lt;p>Instances of this interface are used to keep the list of ClassLoaders&#xA;registered in an MBean Server.&#xA;They provide the necessary methods to load classes using the registered&#xA;ClassLoaders.&lt;/p>&#xA;&#xA;&lt;p>The first ClassLoader in a &lt;code>ClassLoaderRepository&lt;/code> is&#xA;always the MBean Server's own ClassLoader.&lt;/p>&#xA;&#xA;&lt;p>When an MBean is registered in an MBean Server, if it is of a&#xA;subclass of {@link java.lang.ClassLoader} and if it does not&#xA;implement the interface {@link PrivateClassLoader}, it is added to&#xA;the end of the MBean Server's &lt;code>ClassLoaderRepository&lt;/code>.&#xA;If it is subsequently unregistered from the MBean Server, it is&#xA;removed from the &lt;code>ClassLoaderRepository&lt;/code>.&lt;/p>&#xA;&#xA;&lt;p>The order of MBeans in the &lt;code>ClassLoaderRepository&lt;/code> is&#xA;significant.  For any two MBeans &lt;em>X&lt;/em> and &lt;em>Y&lt;/em> in the&#xA;&lt;code>ClassLoaderRepository&lt;/code>, &lt;em>X&lt;/em> must appear before&#xA;&lt;em>Y&lt;/em> if the registration of &lt;em>X&lt;/em> was completed before&#xA;the registration of &lt;em>Y&lt;/em> started.  If &lt;em>X&lt;/em> and&#xA;&lt;em>Y&lt;/em> were registered concurrently, their order is&#xA;indeterminate.  The registration of an MBean corresponds to the&#xA;call to {@link MBeanServer#registerMBean} or one of the {@link&#xA;MBeanServer}&lt;code>.createMBean&lt;/code> methods.&lt;/p>&#xA;&#xA;@see javax.management.MBeanServerFactory&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="c74bbfbc-ed7e-4c37-96ee-54413ce39008"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="fe094231-8881-43c5-b496-6e20c6fc3c51" name="PrivateClassLoader" isAbstract="true">
              <ownedComment xmi:id="8ab8b557-0b13-419a-b752-16c2554d9a9e" body="Marker interface indicating that a ClassLoader should not be added&#xA;to the {@link ClassLoaderRepository}.  When a ClassLoader is&#xA;registered as an MBean in the MBean server, it is added to the&#xA;MBean server's ClassLoaderRepository unless it implements this&#xA;interface.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.2&#xA;" annotatedElement="fe094231-8881-43c5-b496-6e20c6fc3c51"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="3ad31121-b9dd-4231-8ca8-b43b3a061628" name="PrivateMLet" clientDependency="a867d446-802d-4134-b005-aa236c26ada2">
              <ownedComment xmi:id="b01b76a0-d92a-46d8-8540-1c59bf60b044" body="An MLet that is not added to the {@link ClassLoaderRepository}.&#xA;This class acts exactly like its parent class, {@link MLet}, with&#xA;one exception.  When a PrivateMLet is registered in an MBean&#xA;server, it is not added to that MBean server's {@link&#xA;ClassLoaderRepository}.  This is true because this class implements&#xA;the interface {@link PrivateClassLoader}.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.2&#xA;" annotatedElement="3ad31121-b9dd-4231-8ca8-b43b3a061628"/>
              <generalization xmi:id="b6df6800-9b05-4bcd-a37b-6079c1ba3d18" isSubstitutable="true" general="282b960f-1132-4d88-b7a7-ef944e851102"/>
              <interfaceRealization xmi:id="a867d446-802d-4134-b005-aa236c26ada2" name="" supplier="fe094231-8881-43c5-b496-6e20c6fc3c51" client="3ad31121-b9dd-4231-8ca8-b43b3a061628" contract="fe094231-8881-43c5-b496-6e20c6fc3c51"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="282b960f-1132-4d88-b7a7-ef944e851102" name="MLet" clientDependency="f66b25d8-97c7-4161-90d3-f0d9a0bea882 4cd86edf-68a5-4264-83d0-cf8aacf869e4 dd37f8bd-2f26-4f44-92b9-21aa5e7c4676">
              <ownedComment xmi:id="a796e8f7-7f42-4cce-b80a-34ccd02084ef" body="Allows you to instantiate and register one or several MBeans in the MBean server&#xA;coming from a remote URL. M-let is a shortcut for management applet. The m-let service does this&#xA;by loading an m-let text file, which specifies information on the MBeans to be obtained.&#xA;The information on each MBean is specified in a single instance of a tag, called the MLET tag.&#xA;The location of the m-let text file is specified by a URL.&#xA;&lt;p>&#xA;The &lt;CODE>MLET&lt;/CODE> tag has the following syntax:&#xA;&lt;p>&#xA;&lt;&lt;CODE>MLET&lt;/CODE>&lt;BR>&#xA;&lt;CODE>CODE = &lt;/CODE>&lt;VAR>class&lt;/VAR>&lt;CODE> | OBJECT = &lt;/CODE>&lt;VAR>serfile&lt;/VAR>&lt;BR>&#xA;&lt;CODE>ARCHIVE = &quot;&lt;/CODE>&lt;VAR>archiveList&lt;/VAR>&lt;CODE>&quot;&lt;/CODE>&lt;BR>&#xA;&lt;CODE>[CODEBASE = &lt;/CODE>&lt;VAR>codebaseURL&lt;/VAR>&lt;CODE>]&lt;/CODE>&lt;BR>&#xA;&lt;CODE>[NAME = &lt;/CODE>&lt;VAR>mbeanname&lt;/VAR>&lt;CODE>]&lt;/CODE>&lt;BR>&#xA;&lt;CODE>[VERSION = &lt;/CODE>&lt;VAR>version&lt;/VAR>&lt;CODE>]&lt;/CODE>&lt;BR>&#xA;>&lt;BR>&#xA;&lt;CODE>[&lt;/CODE>&lt;VAR>arglist&lt;/VAR>&lt;CODE>]&lt;/CODE>&lt;BR>&#xA;&lt;&lt;CODE>/MLET&lt;/CODE>>&#xA;&lt;p>&#xA;where:&#xA;&lt;DL>&#xA;&lt;DT>&lt;CODE>CODE = &lt;/CODE>&lt;VAR>class&lt;/VAR>&lt;/DT>&#xA;&lt;DD>&#xA;This attribute specifies the full Java class name, including package name, of the MBean to be obtained.&#xA;The compiled &lt;CODE>.class&lt;/CODE> file of the MBean must be contained in one of the &lt;CODE>.jar&lt;/CODE> files specified by the &lt;CODE>ARCHIVE&lt;/CODE>&#xA;attribute. Either &lt;CODE>CODE&lt;/CODE> or &lt;CODE>OBJECT&lt;/CODE> must be present.&#xA;&lt;/DD>&#xA;&lt;DT>&lt;CODE>OBJECT = &lt;/CODE>&lt;VAR>serfile&lt;/VAR>&lt;/DT>&#xA;&lt;DD>&#xA;This attribute specifies the &lt;CODE>.ser&lt;/CODE> file that contains a serialized representation of the MBean to be obtained.&#xA;This file must be contained in one of the &lt;CODE>.jar&lt;/CODE> files specified by the &lt;CODE>ARCHIVE&lt;/CODE> attribute. If the &lt;CODE>.jar&lt;/CODE> file contains a directory hierarchy, specify the path of the file within this hierarchy. Otherwise  a match will not be found. Either &lt;CODE>CODE&lt;/CODE> or &lt;CODE>OBJECT&lt;/CODE> must be present.&#xA;&lt;/DD>&#xA;&lt;DT>&lt;CODE>ARCHIVE = &quot;&lt;/CODE>&lt;VAR>archiveList&lt;/VAR>&lt;CODE>&quot;&lt;/CODE>&lt;/DT>&#xA;&lt;DD>&#xA;This mandatory attribute specifies one or more &lt;CODE>.jar&lt;/CODE> files&#xA;containing MBeans or other resources used by&#xA;the MBean to be obtained. One of the &lt;CODE>.jar&lt;/CODE> files must contain the file specified by the &lt;CODE>CODE&lt;/CODE> or &lt;CODE>OBJECT&lt;/CODE> attribute.&#xA;If archivelist contains more than one file:&#xA;&lt;UL>&#xA;&lt;LI>Each file must be separated from the one that follows it by a comma (,).&#xA;&lt;LI>&lt;VAR>archivelist&lt;/VAR> must be enclosed in double quote marks.&#xA;&lt;/UL>&#xA;All &lt;CODE>.jar&lt;/CODE> files in &lt;VAR>archivelist&lt;/VAR> must be stored in the directory specified by the code base URL.&#xA;&lt;/DD>&#xA;&lt;DT>&lt;CODE>CODEBASE = &lt;/CODE>&lt;VAR>codebaseURL&lt;/VAR>&lt;/DT>&#xA;&lt;DD>&#xA;This optional attribute specifies the code base URL of the MBean to be obtained. It identifies the directory that contains&#xA;the &lt;CODE>.jar&lt;/CODE> files specified by the &lt;CODE>ARCHIVE&lt;/CODE> attribute. Specify this attribute only if the &lt;CODE>.jar&lt;/CODE> files are not in the same&#xA;directory as the m-let text file. If this attribute is not specified, the base URL of the m-let text file is used.&#xA;&lt;/DD>&#xA;&lt;DT>&lt;CODE>NAME = &lt;/CODE>&lt;VAR>mbeanname&lt;/VAR>&lt;/DT>&#xA;&lt;DD>&#xA;This optional attribute specifies the object name to be assigned to the&#xA;MBean instance when the m-let service registers it. If&#xA;&lt;VAR>mbeanname&lt;/VAR> starts with the colon character (:), the domain&#xA;part of the object name is the domain of the agent. The m-let service&#xA;invokes the &lt;CODE>getDomain()&lt;/CODE> method of the Framework class to&#xA;obtain this information.&#xA;&lt;/DD>&#xA;&lt;DT>&lt;CODE>VERSION = &lt;/CODE>&lt;VAR>version&lt;/VAR>&lt;/DT>&#xA;&lt;DD>&#xA;This optional attribute specifies the version number of the MBean and&#xA;associated &lt;CODE>.jar&lt;/CODE> files to be obtained. This version number can&#xA;be used to specify that the &lt;CODE>.jar&lt;/CODE> files are loaded from the&#xA;server to update those stored locally in the cache the next time the m-let&#xA;text file is loaded. &lt;VAR>version&lt;/VAR> must be a series of non-negative&#xA;decimal integers each separated by a period from the one that precedes it.&#xA;&lt;/DD>&#xA;&lt;DT>&lt;VAR>arglist&lt;/VAR>&lt;/DT>&#xA;&lt;DD>&#xA;This optional attribute specifies a list of one or more parameters for the&#xA;MBean to be instantiated. This list describes the parameters to be passed the MBean's constructor.&#xA;Use the following syntax to specify each item in&#xA;&lt;VAR>arglist&lt;/VAR>:&lt;/DD>&#xA;&lt;DL>&#xA;&lt;P>&#xA;&lt;DT>&lt;&lt;CODE>ARG TYPE=&lt;/CODE>&lt;VAR>argumentType&lt;/VAR> &lt;CODE>VALUE=&lt;/CODE>&lt;VAR>value&lt;/VAR>>&lt;/DT>&#xA;&lt;P>&#xA;&lt;DD>where:&lt;/DD>&#xA;&lt;UL>&#xA;&lt;LI>&lt;VAR>argumentType&lt;/VAR> is the type of the argument that will be passed as parameter to the MBean's constructor.&lt;/UL>&#xA;&lt;/DL>&#xA;&lt;P>The arguments' type in the argument list should be a Java primitive type or a Java basic type&#xA;(&lt;CODE>java.lang.Boolean, java.lang.Byte, java.lang.Short, java.lang.Long, java.lang.Integer, java.lang.Float, java.lang.Double, java.lang.String&lt;/CODE>).&#xA;&lt;/DL>&#xA;&#xA;When an m-let text file is loaded, an&#xA;instance of each MBean specified in the file is created and registered.&#xA;&lt;P>&#xA;The m-let Service extends the &lt;CODE>java.net.URLClassLoader&lt;/CODE> and can be used to load remote classes&#xA;and jar files in the VM of the agent.&#xA;&lt;p>&lt;STRONG>Note - &lt;/STRONG> The &lt;CODE>MLet&lt;/CODE> class loader uses the {@link javax.management.MBeanServerFactory#getClassLoaderRepository(javax.management.MBeanServer)}&#xA;to load classes that could not be found in the loaded jar files.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="282b960f-1132-4d88-b7a7-ef944e851102"/>
              <generalization xmi:id="b634ffcd-ab59-4cbc-abe7-b4edad01728d" isSubstitutable="true" general="d6e22cac-8941-429e-a3cd-97f13e75c316"/>
              <interfaceRealization xmi:id="f66b25d8-97c7-4161-90d3-f0d9a0bea882" name="" supplier="a13fd2e8-59be-445d-b465-67ac02240aea" client="282b960f-1132-4d88-b7a7-ef944e851102" contract="a13fd2e8-59be-445d-b465-67ac02240aea"/>
              <interfaceRealization xmi:id="4cd86edf-68a5-4264-83d0-cf8aacf869e4" name="" supplier="3019d5cd-2bcd-410d-a5e7-fa278098becf" client="282b960f-1132-4d88-b7a7-ef944e851102" contract="3019d5cd-2bcd-410d-a5e7-fa278098becf"/>
              <interfaceRealization xmi:id="dd37f8bd-2f26-4f44-92b9-21aa5e7c4676" name="" supplier="d359de8b-a8e5-4901-98b0-99c23e339ab5" client="282b960f-1132-4d88-b7a7-ef944e851102" contract="d359de8b-a8e5-4901-98b0-99c23e339ab5"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7c8350fb-3b12-4888-b294-84e37236136b" name="Query">
            <ownedComment xmi:id="108127ce-c52f-48d1-942e-99f8b902c1b5" body="&lt;p>Constructs query object constraints. The static methods provided&#xA;return query expressions that may be used in listing and&#xA;enumerating MBeans. Individual constraint construction methods&#xA;allow only appropriate types as arguments. Composition of calls can&#xA;construct arbitrary nestings of constraints, as the following&#xA;example illustrates:&lt;/p>&#xA;&#xA;&lt;pre>&#xA;QueryExp exp = Query.and(Query.gt(Query.attr(&quot;age&quot;),Query.value(5)),&#xA;Query.match(Query.attr(&quot;name&quot;),&#xA;Query.value(&quot;Smith&quot;)));&#xA;&lt;/pre>&#xA;&#xA;@since 1.5&#xA;" annotatedElement="7c8350fb-3b12-4888-b294-84e37236136b"/>
            <generalization xmi:id="31193623-e3ff-4303-866c-c851e6f10ebb" isSubstitutable="true" general="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="0be6e103-edb7-482a-a07e-6d19588067ed" name="MBeanServerDelegateMBean" isAbstract="true">
            <ownedComment xmi:id="948c7443-ad71-45d8-ad17-a255e5cf157c" body="Defines the management interface  of an object of class MBeanServerDelegate.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="0be6e103-edb7-482a-a07e-6d19588067ed"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f61f421a-d220-442d-b5c9-f438acaf0819" name="NotCompliantMBeanException">
            <ownedComment xmi:id="ef8570a6-fb71-455c-8c19-613de3de10ab" body="Exception which occurs when trying to register an  object in the MBean server that is not a JMX compliant MBean.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="f61f421a-d220-442d-b5c9-f438acaf0819"/>
            <generalization xmi:id="741d82c5-a2dc-4d33-92e5-145083e0219e" isSubstitutable="true" general="aae66ef6-d10b-4418-8784-f77f2c87f595"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="73a452dc-291d-4cfa-88db-09a0faf75006" name="MBeanServerDelegate" clientDependency="e951cd5b-63b9-463b-a00c-fdca06300fef eddd81c7-3c57-4c38-8d72-5e0feb1233f8">
            <ownedComment xmi:id="ed1588b9-a721-4cb6-bb4f-3e1725e25fef" body="Represents  the MBean server from the management point of view.&#xA;The MBeanServerDelegate MBean emits the MBeanServerNotifications when&#xA;an MBean is registered/unregistered in the MBean server.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="73a452dc-291d-4cfa-88db-09a0faf75006"/>
            <interfaceRealization xmi:id="eddd81c7-3c57-4c38-8d72-5e0feb1233f8" name="" supplier="0be6e103-edb7-482a-a07e-6d19588067ed" client="73a452dc-291d-4cfa-88db-09a0faf75006" contract="0be6e103-edb7-482a-a07e-6d19588067ed"/>
            <interfaceRealization xmi:id="e951cd5b-63b9-463b-a00c-fdca06300fef" name="" supplier="0b63085c-be9b-4448-8775-c18e28a39817" client="73a452dc-291d-4cfa-88db-09a0faf75006" contract="0b63085c-be9b-4448-8775-c18e28a39817"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="526005ba-f58d-4323-8283-624d810e1729" name="MBeanPermission">
            <ownedComment xmi:id="83590990-dd0b-4f55-a88b-81a6aeaa4be1" body="&lt;p>Permission controlling access to MBeanServer operations.  If a&#xA;security manager has been set using {@link&#xA;System#setSecurityManager}, most operations on the MBean Server&#xA;require that the caller's permissions imply an MBeanPermission&#xA;appropriate for the operation.  This is described in detail in the&#xA;documentation for the {@link MBeanServer} interface.&lt;/p>&#xA;&#xA;&lt;p>As with other {@link Permission} objects, an MBeanPermission can&#xA;represent either a permission that you &lt;em>have&lt;/em> or a&#xA;permission that you &lt;em>need&lt;/em>.  When a sensitive operation is&#xA;being checked for permission, an MBeanPermission is constructed&#xA;representing the permission you need.  The operation is only&#xA;allowed if the permissions you have {@link #implies imply} the&#xA;permission you need.&lt;/p>&#xA;&#xA;&lt;p>An MBeanPermission contains four items of information:&lt;/p>&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p>The &lt;em>action&lt;/em>.  For a permission you need,&#xA;this is one of the actions in the list &lt;a&#xA;href=&quot;#action-list&quot;>below&lt;/a>.  For a permission you have, this is&#xA;a comma-separated list of those actions, or &lt;code>*&lt;/code>,&#xA;representing all actions.&lt;/p>&#xA;&#xA;&lt;p>The action is returned by {@link #getActions()}.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>The &lt;em>class name&lt;/em>.&lt;/p>&#xA;&#xA;&lt;p>For a permission you need, this is the class name of an MBean&#xA;you are accessing, as returned by {@link&#xA;MBeanServer#getMBeanInfo(ObjectName)&#xA;MBeanServer.getMBeanInfo(name)}.{@link MBeanInfo#getClassName()&#xA;getClassName()}.  Certain operations do not reference a class name,&#xA;in which case the class name is null.&lt;/p>&#xA;&#xA;&lt;p>For a permission you have, this is either empty or a &lt;em>class&#xA;name pattern&lt;/em>.  A class name pattern is a string following the&#xA;Java conventions for dot-separated class names.  It may end with&#xA;&quot;&lt;code>.*&lt;/code>&quot; meaning that the permission grants access to any&#xA;class that begins with the string preceding &quot;&lt;code>.*&lt;/code>&quot;.  For&#xA;instance, &quot;&lt;code>javax.management.*&lt;/code>&quot; grants access to&#xA;&lt;code>javax.management.MBeanServerDelegate&lt;/code> and&#xA;&lt;code>javax.management.timer.Timer&lt;/code>, among other classes.&lt;/p>&#xA;&#xA;&lt;p>A class name pattern can also be empty or the single character&#xA;&quot;&lt;code>*&lt;/code>&quot;, both of which grant access to any class.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>The &lt;em>member&lt;/em>.&lt;/p>&#xA;&#xA;&lt;p>For a permission you need, this is the name of the attribute or&#xA;operation you are accessing.  For operations that do not reference&#xA;an attribute or operation, the member is null.&lt;/p>&#xA;&#xA;&lt;p>For a permission you have, this is either the name of an attribute&#xA;or operation you can access, or it is empty or the single character&#xA;&quot;&lt;code>*&lt;/code>&quot;, both of which grant access to any member.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>The &lt;em>object name&lt;/em>.&lt;/p>&#xA;&#xA;&lt;p>For a permission you need, this is the {@link ObjectName} of the&#xA;MBean you are accessing.  For operations that do not reference a&#xA;single MBean, it is null.  It is never an object name pattern.&lt;/p>&#xA;&#xA;&lt;p>For a permission you have, this is the {@link ObjectName} of the&#xA;MBean or MBeans you can access.  It may be an object name pattern&#xA;to grant access to all MBeans whose names match the pattern.  It&#xA;may also be empty, which grants access to all MBeans whatever their&#xA;name.&lt;/p>&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p>If you have an MBeanPermission, it allows operations only if all&#xA;four of the items match.&lt;/p>&#xA;&#xA;&lt;p>The class name, member, and object name can be written together&#xA;as a single string, which is the &lt;em>name&lt;/em> of this permission.&#xA;The name of the permission is the string returned by {@link&#xA;Permission#getName() getName()}.  The format of the string is:&lt;/p>&#xA;&#xA;&lt;blockquote>&#xA;&lt;code>className#member[objectName]&lt;/code>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>The object name is written using the usual syntax for {@link&#xA;ObjectName}.  It may contain any legal characters, including&#xA;&lt;code>]&lt;/code>.  It is terminated by a &lt;code>]&lt;/code> character&#xA;that is the last character in the string.&lt;/p>&#xA;&#xA;&lt;p>One or more of the &lt;code>className&lt;/code>, &lt;code>member&lt;/code>,&#xA;or &lt;code>objectName&lt;/code> may be omitted.  If the&#xA;&lt;code>member&lt;/code> is omitted, the &lt;code>#&lt;/code> may be too (but&#xA;does not have to be).  If the &lt;code>objectName&lt;/code> is omitted,&#xA;the &lt;code>[]&lt;/code> may be too (but does not have to be).  It is&#xA;not legal to omit all three items, that is to have a &lt;em>name&lt;/em>&#xA;that is the empty string.&lt;/p>&#xA;&#xA;&lt;p>One or more of the &lt;code>className&lt;/code>, &lt;code>member&lt;/code>,&#xA;or &lt;code>objectName&lt;/code> may be the character &quot;&lt;code>-&lt;/code>&quot;,&#xA;which is equivalent to a null value.  A null value is implied by&#xA;any value (including another null value) but does not imply any&#xA;other value.&lt;/p>&#xA;&#xA;&lt;p>&lt;a name=&quot;action-list&quot;>The possible actions are these:&lt;/a>&lt;/p>&#xA;&#xA;&lt;ul>&#xA;&lt;li>addNotificationListener&lt;/li>&#xA;&lt;li>getAttribute&lt;/li>&#xA;&lt;li>getClassLoader&lt;/li>&#xA;&lt;li>getClassLoaderFor&lt;/li>&#xA;&lt;li>getClassLoaderRepository&lt;/li>&#xA;&lt;li>getDomains&lt;/li>&#xA;&lt;li>getMBeanInfo&lt;/li>&#xA;&lt;li>getObjectInstance&lt;/li>&#xA;&lt;li>instantiate&lt;/li>&#xA;&lt;li>invoke&lt;/li>&#xA;&lt;li>isInstanceOf&lt;/li>&#xA;&lt;li>queryMBeans&lt;/li>&#xA;&lt;li>queryNames&lt;/li>&#xA;&lt;li>registerMBean&lt;/li>&#xA;&lt;li>removeNotificationListener&lt;/li>&#xA;&lt;li>setAttribute&lt;/li>&#xA;&lt;li>unregisterMBean&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;&lt;p>In a comma-separated list of actions, spaces are allowed before&#xA;and after each action.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.2&#xA;" annotatedElement="526005ba-f58d-4323-8283-624d810e1729"/>
            <generalization xmi:id="48b22ba3-45a2-4d63-bfd5-e86025483077" isSubstitutable="true" general="d9c6788c-6eda-4930-93b7-34c95c7c74cc"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7f2e7b92-30cf-4ae2-8830-06a10543b896" name="JMRuntimeException">
            <ownedComment xmi:id="f03f4003-f464-48ad-b4ca-b974a20fa28f" body="Runtime exceptions emitted by JMX implementations.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="7f2e7b92-30cf-4ae2-8830-06a10543b896"/>
            <generalization xmi:id="bccf7a7a-c428-4c70-91e7-82e7ec7f9512" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="81301010-ae55-4253-b5d1-6bb30f053f3f" name="ValueExp" isAbstract="true">
            <ownedComment xmi:id="6e90dc57-1a4e-4907-a914-8e40222754d6" body="Represents values that can be passed as arguments to&#xA;relational expressions. Strings, numbers, attributes are valid values&#xA;and should be represented by implementations of &lt;CODE>ValueExp&lt;/CODE>.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="81301010-ae55-4253-b5d1-6bb30f053f3f"/>
            <generalization xmi:id="533b66e3-6cec-43b0-bc0d-e576e588d65c" isSubstitutable="true" general="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4fa09523-43c1-4931-aaf7-bbe7ff8fda78" name="StringValueExp" clientDependency="ebffed19-f802-432f-95f9-7d7c624edbff">
            <ownedComment xmi:id="c685d805-da06-4f1e-9346-583af33fb96a" body="Represents strings that are arguments to relational constraints.&#xA;A &lt;CODE>StringValueExp&lt;/CODE> may be used anywhere a &lt;CODE>ValueExp&lt;/CODE> is required.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="4fa09523-43c1-4931-aaf7-bbe7ff8fda78"/>
            <interfaceRealization xmi:id="ebffed19-f802-432f-95f9-7d7c624edbff" name="" supplier="81301010-ae55-4253-b5d1-6bb30f053f3f" client="4fa09523-43c1-4931-aaf7-bbe7ff8fda78" contract="81301010-ae55-4253-b5d1-6bb30f053f3f"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4c03e001-dbef-42e2-93a4-86b25804f8e8" name="BadBinaryOpValueExpException">
            <ownedComment xmi:id="48f16549-0486-47f5-9c38-893c83b2bdc2" body="Thrown when an invalid expression is passed to a method for&#xA;constructing a query.  This exception is used internally by JMX&#xA;during the evaluation of a query.  User code does not usually see&#xA;it.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="4c03e001-dbef-42e2-93a4-86b25804f8e8"/>
            <generalization xmi:id="94bf0e4d-e009-4e6e-a848-4041f13c5252" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6d00ab47-0201-40f3-95a0-2f2ca4a800cb" name="AttributeChangeNotificationFilter" clientDependency="ab52fac9-9747-43a3-9926-0859b7e31350 ff647322-3007-4c7c-bae5-e094d417eb85">
            <ownedComment xmi:id="7b4325d6-f0a2-4a30-80b4-ccd3a4057e0b" body="This class implements of the {@link javax.management.NotificationFilter NotificationFilter}&#xA;interface for the {@link javax.management.AttributeChangeNotification attribute change notification}.&#xA;The filtering is performed on the name of the observed attribute.&#xA;&lt;P>&#xA;It manages a list of enabled attribute names.&#xA;A method allows users to enable/disable as many attribute names as required.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="6d00ab47-0201-40f3-95a0-2f2ca4a800cb"/>
            <interfaceRealization xmi:id="ff647322-3007-4c7c-bae5-e094d417eb85" name="" supplier="c9eac6b1-531b-4a44-b300-7fd16e525419" client="6d00ab47-0201-40f3-95a0-2f2ca4a800cb" contract="c9eac6b1-531b-4a44-b300-7fd16e525419"/>
            <interfaceRealization xmi:id="ab52fac9-9747-43a3-9926-0859b7e31350" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="6d00ab47-0201-40f3-95a0-2f2ca4a800cb" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="bb5f262f-f01f-4e17-9470-98b585f034bf" name="NotificationListener" isAbstract="true">
            <ownedComment xmi:id="aa6f2981-7923-4813-a84e-9beed774c73e" body="Should be implemented by an object that wants to receive notifications.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="bb5f262f-f01f-4e17-9470-98b585f034bf"/>
            <generalization xmi:id="2392b3c3-8900-409f-9f9a-54259a91284b" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="67be89c5-bc22-4c8d-a349-16afa8b1bab6" name="remote">
            <packagedElement xmi:type="uml:Class" xmi:id="f9d94687-382f-4081-b5c5-30a4033006d1" name="NotificationResult" clientDependency="f6d61ab8-dbd9-46e0-b694-00be42c6364a">
              <ownedComment xmi:id="39ce381c-2e24-421e-abba-5e637b2ef005" body="&lt;p>Result of a query for buffered notifications.  Notifications in&#xA;a notification buffer have positive, monotonically increasing&#xA;sequence numbers.  The result of a notification query contains the&#xA;following elements:&lt;/p>&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>The sequence number of the earliest notification still in&#xA;the buffer.&#xA;&#xA;&lt;li>The sequence number of the next notification available for&#xA;querying.  This will be the starting sequence number for the next&#xA;notification query.&#xA;&#xA;&lt;li>An array of (Notification,listenerID) pairs corresponding to&#xA;the returned notifications and the listeners they correspond to.&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p>It is possible for the &lt;code>nextSequenceNumber&lt;/code> to be less&#xA;than the &lt;code>earliestSequenceNumber&lt;/code>.  This signifies that&#xA;notifications between the two might have been lost.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="f9d94687-382f-4081-b5c5-30a4033006d1"/>
              <interfaceRealization xmi:id="f6d61ab8-dbd9-46e0-b694-00be42c6364a" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f9d94687-382f-4081-b5c5-30a4033006d1" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="929f5f12-85cd-4f24-8c85-35b4403f321d" name="rmi">
              <packagedElement xmi:type="uml:Interface" xmi:id="6af9385f-5534-4e77-93f9-19dee1a57cdd" name="RMIConnection" isAbstract="true">
                <ownedComment xmi:id="1ff95d50-ea7d-4beb-842e-38c3ecad2130" body="&lt;p>RMI object used to forward an MBeanServer request from a client&#xA;to its MBeanServer implementation on the server side.  There is one&#xA;Remote object implementing this interface for each remote client&#xA;connected to an RMI connector.&lt;/p>&#xA;&#xA;&lt;p>User code does not usually refer to this interface.  It is&#xA;specified as part of the public API so that different&#xA;implementations of that API will interoperate.&lt;/p>&#xA;&#xA;&lt;p>To ensure that client parameters will be deserialized at the&#xA;server side with the correct classloader, client parameters such as&#xA;parameters used to invoke a method are wrapped in a {@link&#xA;MarshalledObject}.  An implementation of this interface must first&#xA;get the appropriate class loader for the operation and its target,&#xA;then deserialize the marshalled parameters with this classloader.&#xA;Except as noted, a parameter that is a&#xA;&lt;code>MarshalledObject&lt;/code> or &lt;code>MarshalledObject[]&lt;/code>&#xA;must not be null; the behavior is unspecified if it is.&lt;/p>&#xA;&#xA;&lt;p>Class loading aspects are detailed in the companion document&#xA;&lt;em>JMX Remote API&lt;/em>, which completes this documentation.&#xA;It should be available as a PDF document in the same place as this&#xA;Javadoc specification.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;&lt;p>Most methods in this interface parallel methods in the {@link&#xA;MBeanServerConnection} interface.  Where an aspect of the behavior&#xA;of a method is not specified here, it is the same as in the&#xA;corresponding &lt;code>MBeanServerConnection&lt;/code> method.&#xA;" annotatedElement="6af9385f-5534-4e77-93f9-19dee1a57cdd"/>
                <generalization xmi:id="6b3e0145-7e43-4616-b2a8-6cd2a51d9ac6" isSubstitutable="true" general="492277dc-22fc-4399-a309-a8a3b4e56fb6"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f2436bb3-daf3-4a9a-b3a7-cbbd17e84a2e" name="RMIConnector" clientDependency="da1afdfc-23a3-4e7e-8ad5-59c4beff16b0 b249ece7-48aa-47b8-b0a7-b4223f313560">
                <ownedComment xmi:id="11353f5c-3d25-4e6a-be9c-5ce8aea5aaaf" body="&lt;p>A connection to a remote RMI connector.  Usually, such&#xA;connections are made using {@link&#xA;javax.management.remote.JMXConnectorFactory JMXConnectorFactory}.&#xA;However, specialized applications can use this class directly, for&#xA;example with an {@link RMIServer} stub obtained without going&#xA;through JNDI.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="f2436bb3-daf3-4a9a-b3a7-cbbd17e84a2e"/>
                <interfaceRealization xmi:id="b249ece7-48aa-47b8-b0a7-b4223f313560" name="" supplier="d704c2eb-6c67-4f41-a79f-8946d9609674" client="f2436bb3-daf3-4a9a-b3a7-cbbd17e84a2e" contract="d704c2eb-6c67-4f41-a79f-8946d9609674"/>
                <interfaceRealization xmi:id="da1afdfc-23a3-4e7e-8ad5-59c4beff16b0" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f2436bb3-daf3-4a9a-b3a7-cbbd17e84a2e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="9c62a1b1-caad-4c63-886d-ee3c46d375d0" name="RemoteMBeanServerConnection" visibility="private" clientDependency="2247db6f-d403-4a86-9914-f182f36d8679">
                  <interfaceRealization xmi:id="2247db6f-d403-4a86-9914-f182f36d8679" name="" supplier="d65f178c-97eb-443f-a485-7bf90d11090a" client="9c62a1b1-caad-4c63-886d-ee3c46d375d0" contract="d65f178c-97eb-443f-a485-7bf90d11090a"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="282f5f98-03b3-47d0-9122-817916e09b31" name="RMINotifClient" visibility="private"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="d200e216-1ef1-4603-9218-4398a1603732" name="RMIClientCommunicatorAdmin" visibility="private"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="52c757ef-7e7d-478b-9fc4-5f21893a5b0b" name="ObjectInputStreamWithLoader" visibility="private" isLeaf="true">
                  <generalization xmi:id="3552475f-ec67-4ffd-9351-393f176d58be" isSubstitutable="true" general="eca630bd-67e2-45fc-afac-de0b42be103a"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="be23fc36-4025-4d99-956a-2544af5c4b33" name="RMIConnectionImpl_Stub" clientDependency="588769be-9585-4355-a7b6-5e38c15f6f3c" isLeaf="true">
                <generalization xmi:id="c931c8f5-e985-40ba-b28f-371a0a0b06df" isSubstitutable="true" general="a9eb1d5c-553d-47d6-8c94-ae8761d65ffb"/>
                <interfaceRealization xmi:id="588769be-9585-4355-a7b6-5e38c15f6f3c" name="" supplier="6af9385f-5534-4e77-93f9-19dee1a57cdd" client="be23fc36-4025-4d99-956a-2544af5c4b33" contract="6af9385f-5534-4e77-93f9-19dee1a57cdd"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="fc8f0b7c-1597-4204-b22e-c3f5f67f0f3d" name="RMIServerImpl" clientDependency="c231d6a5-5976-47f0-9576-5ba7fb566017" isAbstract="true">
                <ownedComment xmi:id="4f510707-e716-4a74-8271-5bb9f77e58a9" body="&lt;p>An RMI object representing a connector server.  Remote clients&#xA;can make connections using the {@link #newClient(Object)} method.  This&#xA;method returns an RMI object representing the connection.&lt;/p>&#xA;&#xA;&lt;p>User code does not usually reference this class directly.  RMI&#xA;connection servers are usually created with the class {@link&#xA;RMIConnectorServer}.  Remote clients usually create connections&#xA;either with {@link JMXConnectorFactory} or by instantiating {@link&#xA;RMIConnector}.&lt;/p>&#xA;&#xA;&lt;p>This is an abstract class.  Concrete subclasses define the&#xA;details of the client connection objects, such as whether they use&#xA;JRMP or IIOP.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="fc8f0b7c-1597-4204-b22e-c3f5f67f0f3d"/>
                <interfaceRealization xmi:id="c231d6a5-5976-47f0-9576-5ba7fb566017" name="" supplier="f9b2ccfc-9dc6-4365-956e-45248cf21ad0" client="fc8f0b7c-1597-4204-b22e-c3f5f67f0f3d" contract="f9b2ccfc-9dc6-4365-956e-45248cf21ad0"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="fc80bf27-ea39-44e4-ab30-0f8a5e17dcb8" name="RMIServerImpl_Stub" clientDependency="2913a1b1-fd3a-41e7-9680-d66c67161eb0" isLeaf="true">
                <generalization xmi:id="bf26ae4e-d1fe-45b2-b51a-55ff644f71cf" isSubstitutable="true" general="a9eb1d5c-553d-47d6-8c94-ae8761d65ffb"/>
                <interfaceRealization xmi:id="2913a1b1-fd3a-41e7-9680-d66c67161eb0" name="" supplier="f9b2ccfc-9dc6-4365-956e-45248cf21ad0" client="fc80bf27-ea39-44e4-ab30-0f8a5e17dcb8" contract="f9b2ccfc-9dc6-4365-956e-45248cf21ad0"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="87d0d7cb-9c38-4279-830c-a128dd357b6c" name="RMIIIOPServerImpl">
                <ownedComment xmi:id="6eb6def9-9f63-4a06-95c2-9935f3b5a995" body="&lt;p>An {@link RMIServerImpl} that is exported through IIOP and that&#xA;creates client connections as RMI objects exported through IIOP.&#xA;User code does not usually reference this class directly.&lt;/p>&#xA;&#xA;@see RMIServerImpl&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="87d0d7cb-9c38-4279-830c-a128dd357b6c"/>
                <generalization xmi:id="04f40d33-68ad-4508-8337-878ee044e085" isSubstitutable="true" general="fc8f0b7c-1597-4204-b22e-c3f5f67f0f3d"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="f9b2ccfc-9dc6-4365-956e-45248cf21ad0" name="RMIServer" isAbstract="true">
                <ownedComment xmi:id="04a969ee-2ac5-4b8d-89b3-239362a0aa9e" body="&lt;p>RMI object used to establish connections to an RMI connector.&#xA;There is one Remote object implementing this interface for each RMI&#xA;connector.&lt;/p>&#xA;&#xA;&lt;p>User code does not usually refer to this interface.  It is&#xA;specified as part of the public API so that different&#xA;implementations of that API will interoperate.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="f9b2ccfc-9dc6-4365-956e-45248cf21ad0"/>
                <generalization xmi:id="1b20d276-0082-4745-b9c3-8de4d112352f" isSubstitutable="true" general="492277dc-22fc-4399-a309-a8a3b4e56fb6"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="3e166b9b-2597-4bfa-bb4d-2fdc2e1ba710" name="RMIConnectorServer">
                <ownedComment xmi:id="3629a2a1-7526-43d8-bbd1-04c29828714d" body="&lt;p>A JMX API connector server that creates RMI-based connections&#xA;from remote clients.  Usually, such connector servers are made&#xA;using {@link javax.management.remote.JMXConnectorServerFactory&#xA;JMXConnectorServerFactory}.  However, specialized applications can&#xA;use this class directly, for example with an {@link RMIServerImpl}&#xA;object.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="3e166b9b-2597-4bfa-bb4d-2fdc2e1ba710"/>
                <generalization xmi:id="678c798f-bde2-494e-8664-91c0091f2a64" isSubstitutable="true" general="f005ca10-706f-4e2c-83f2-19a65471ea42"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="cbf96e62-c998-4bce-bf14-77b217829124" name="RMIConnectionImpl" clientDependency="2a495d4c-a011-4af6-aa10-d14e5201752f af6f187b-3d9d-4266-8107-7e1e3141a050">
                <ownedComment xmi:id="45466445-1cd2-4b8f-9cb5-66afc5b905f2" body="&lt;p>Implementation of the {@link RMIConnection} interface.  User&#xA;code will not usually reference this class.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="cbf96e62-c998-4bce-bf14-77b217829124"/>
                <interfaceRealization xmi:id="2a495d4c-a011-4af6-aa10-d14e5201752f" name="" supplier="6af9385f-5534-4e77-93f9-19dee1a57cdd" client="cbf96e62-c998-4bce-bf14-77b217829124" contract="6af9385f-5534-4e77-93f9-19dee1a57cdd"/>
                <interfaceRealization xmi:id="af6f187b-3d9d-4266-8107-7e1e3141a050" name="" supplier="151a37b5-2d89-460e-8551-c6524532dc7c" client="cbf96e62-c998-4bce-bf14-77b217829124" contract="151a37b5-2d89-460e-8551-c6524532dc7c"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a1e5de81-cd5c-4e35-a2ec-aa197ca0266e" name="PrivilegedOperation" visibility="private" clientDependency="fd8b8c69-e246-4a8e-960b-62d14940853d">
                  <interfaceRealization xmi:id="fd8b8c69-e246-4a8e-960b-62d14940853d" name="" supplier="8b2ccfb2-c497-4b3f-92b1-3a2f7b7eb727" client="a1e5de81-cd5c-4e35-a2ec-aa197ca0266e" contract="8b2ccfb2-c497-4b3f-92b1-3a2f7b7eb727"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="3d5369cf-b86e-4a29-92fa-e75c66ae3fa4" name="RMIServerCommunicatorAdmin" visibility="private"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="75a4708a-6c1b-4a14-a377-76781951e9a5" name="NoCallStackClassLoader" visibility="package">
                <ownedComment xmi:id="9a1a6fbd-8bbc-436c-98c2-46354d3618f2" body="&lt;p>A class loader that only knows how to define a limited number&#xA;of classes, and load a limited number of other classes through&#xA;delegation to another loader.  It is used to get around a problem&#xA;with Serialization, in particular as used by RMI (including&#xA;RMI/IIOP).  The JMX Remote API defines exactly what class loader&#xA;must be used to deserialize arguments on the server, and return&#xA;values on the client.  We communicate this class loader to RMI by&#xA;setting it as the context class loader.  RMI uses the context&#xA;class loader to load classes as it deserializes, which is what we&#xA;want.  However, before consulting the context class loader, it&#xA;looks up the call stack for a class with a non-null class loader,&#xA;and uses that if it finds one.  So, in the standalone version of&#xA;javax.management.remote, if the class you're looking for is known&#xA;to the loader of jmxremote.jar (typically the system class loader)&#xA;then that loader will load it.  This contradicts the class-loading&#xA;semantics required.&#xA;&#xA;&lt;p>We get around the problem by ensuring that the search up the&#xA;call stack will find a non-null class loader that doesn't load any&#xA;classes of interest, namely this one.  So even though this loader&#xA;is indeed consulted during deserialization, it never finds the&#xA;class being deserialized.  RMI then proceeds to use the context&#xA;class loader, as we require.&#xA;&lt;p>This loader is constructed with the name and byte-code of one&#xA;or more classes that it defines, and a class-loader to which it&#xA;will delegate certain other classes required by that byte-code.&#xA;We construct the byte-code somewhat painstakingly, by compiling&#xA;the Java code directly, converting into a string, copying that&#xA;string into the class that needs this loader, and using the&#xA;stringToBytes method to convert it into the byte array.  We&#xA;compile with -g:none because there's not much point in having&#xA;line-number information and the like in these directly-encoded&#xA;classes.&#xA;&lt;p>The referencedClassNames should contain the names of all&#xA;classes that are referenced by the classes defined by this loader.&#xA;It is not necessary to include standard J2SE classes, however.&#xA;Here, a class is referenced if it is the superclass or a&#xA;superinterface of a defined class, or if it is the type of a&#xA;field, parameter, or return value.  A class is not referenced if&#xA;it only appears in the throws clause of a method or constructor.&#xA;Of course, referencedClassNames should not contain any classes&#xA;that the user might want to deserialize, because the whole point&#xA;of this loader is that it does not find such classes.&#xA;" annotatedElement="75a4708a-6c1b-4a14-a377-76781951e9a5"/>
                <generalization xmi:id="0b9f0c99-80d7-4afe-9e00-7e272e3a9bce" isSubstitutable="true" general="3f933483-0042-4439-b6a6-958ad9d81d2d"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="d3e3943a-7f14-4624-809f-183a8fc7f696" name="RMIJRMPServerImpl">
                <ownedComment xmi:id="e934bfee-766a-45a1-9b00-3edab02db2ae" body="&lt;p>An {@link RMIServer} object that is exported through JRMP and that&#xA;creates client connections as RMI objects exported through JRMP.&#xA;User code does not usually reference this class directly.&lt;/p>&#xA;&#xA;@see RMIServerImpl&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="d3e3943a-7f14-4624-809f-183a8fc7f696"/>
                <generalization xmi:id="3c602092-324c-4552-b0dd-eb862ea9d5fe" isSubstitutable="true" general="fc8f0b7c-1597-4204-b22e-c3f5f67f0f3d"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f005ca10-706f-4e2c-83f2-19a65471ea42" name="JMXConnectorServer" clientDependency="c86c225a-c7a6-4c47-8d6d-bf468fa8046e 193ab7fb-6c9e-44c9-b8a4-945f9c4fa3b2" isAbstract="true">
              <ownedComment xmi:id="5791526d-d29e-4a2e-9b9d-3dcfaf8a35d7" body="&lt;p>Superclass of every connector server.  A connector server is&#xA;attached to an MBean server.  It listens for client connection&#xA;requests and creates a connection for each one.&lt;/p>&#xA;&#xA;&lt;p>A connector server is associated with an MBean server either by&#xA;registering it in that MBean server, or by passing the MBean server&#xA;to its constructor.&lt;/p>&#xA;&#xA;&lt;p>A connector server is inactive when created.  It only starts&#xA;listening for client connections when the {@link #start() start}&#xA;method is called.  A connector server stops listening for client&#xA;connections when the {@link #stop() stop} method is called or when&#xA;the connector server is unregistered from its MBean server.&lt;/p>&#xA;&#xA;&lt;p>Stopping a connector server does not unregister it from its&#xA;MBean server.  A connector server once stopped cannot be&#xA;restarted.&lt;/p>&#xA;&#xA;&lt;p>Each time a client connection is made or broken, a notification&#xA;of class {@link JMXConnectionNotification} is emitted.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="f005ca10-706f-4e2c-83f2-19a65471ea42"/>
              <generalization xmi:id="7d11f7dc-a3c9-4cef-bceb-a9b88514a3dd" isSubstitutable="true" general="96afb4b0-bbf4-4b32-ae88-74b46a8f1635"/>
              <interfaceRealization xmi:id="c86c225a-c7a6-4c47-8d6d-bf468fa8046e" name="" supplier="c5c1a8c4-fc4d-41d6-9a3e-fbc4e85a91bc" client="f005ca10-706f-4e2c-83f2-19a65471ea42" contract="c5c1a8c4-fc4d-41d6-9a3e-fbc4e85a91bc"/>
              <interfaceRealization xmi:id="193ab7fb-6c9e-44c9-b8a4-945f9c4fa3b2" name="" supplier="3019d5cd-2bcd-410d-a5e7-fa278098becf" client="f005ca10-706f-4e2c-83f2-19a65471ea42" contract="3019d5cd-2bcd-410d-a5e7-fa278098becf"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="b5d69f39-d6f4-4af8-bc88-ff7fce3a41c3" name="JMXConnectorServerProvider" isAbstract="true">
              <ownedComment xmi:id="cddfa44f-edb7-49eb-af60-8a634b7fdc77" body="&lt;p>A provider for creating JMX API connector servers using a given&#xA;protocol.  Instances of this interface are created by {@link&#xA;JMXConnectorServerFactory} as part of its {@link&#xA;JMXConnectorServerFactory#newJMXConnectorServer(JMXServiceURL,Map,MBeanServer)&#xA;newJMXConnectorServer} method.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="b5d69f39-d6f4-4af8-bc88-ff7fce3a41c3"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="894a2d6f-a82c-47b7-8c73-3b4b0d26cc80" name="JMXConnectorServerFactory">
              <ownedComment xmi:id="1b610380-1cdb-4ce6-9c11-1f8542201b28" body="&lt;p>Factory to create JMX API connector servers.  There&#xA;are no instances of this class.&lt;/p>&#xA;&#xA;&lt;p>Each connector server is created by an instance of {@link&#xA;JMXConnectorServerProvider}.  This instance is found as follows.  Suppose&#xA;the given {@link JMXServiceURL} looks like&#xA;&lt;code>&quot;service:jmx:&lt;em>protocol&lt;/em>:&lt;em>remainder&lt;/em>&quot;&lt;/code>.&#xA;Then the factory will attempt to find the appropriate {@link&#xA;JMXConnectorServerProvider} for &lt;code>&lt;em>protocol&lt;/em>&lt;/code>.  Each&#xA;occurrence of the character &lt;code>+&lt;/code> or &lt;code>-&lt;/code> in&#xA;&lt;code>&lt;em>protocol&lt;/em>&lt;/code> is replaced by &lt;code>.&lt;/code> or&#xA;&lt;code>_&lt;/code>, respectively.&lt;/p>&#xA;&#xA;&lt;p>A &lt;em>provider package list&lt;/em> is searched for as follows:&lt;/p>&#xA;&#xA;&lt;ol>&#xA;&#xA;&lt;li>If the &lt;code>environment&lt;/code> parameter to {@link&#xA;#newJMXConnectorServer(JMXServiceURL,Map,MBeanServer)&#xA;newJMXConnectorServer} contains the key&#xA;&lt;code>jmx.remote.protocol.provider.pkgs&lt;/code> then the associated&#xA;value is the provider package list.&#xA;&#xA;&lt;li>Otherwise, if the system property&#xA;&lt;code>jmx.remote.protocol.provider.pkgs&lt;/code> exists, then its value&#xA;is the provider package list.&#xA;&#xA;&lt;li>Otherwise, there is no provider package list.&#xA;&#xA;&lt;/ol>&#xA;&#xA;&lt;p>The provider package list is a string that is interpreted as a&#xA;list of non-empty Java package names separated by vertical bars&#xA;(&lt;code>|&lt;/code>).  If the string is empty, then so is the provider&#xA;package list.  If the provider package list is not a String, or if&#xA;it contains an element that is an empty string, a {@link&#xA;JMXProviderException} is thrown.&lt;/p>&#xA;&#xA;&lt;p>If the provider package list exists and is not empty, then for&#xA;each element &lt;code>&lt;em>pkg&lt;/em>&lt;/code> of the list, the factory&#xA;will attempt to load the class&#xA;&#xA;&lt;blockquote>&#xA;&lt;code>&lt;em>pkg&lt;/em>.&lt;em>protocol&lt;/em>.ServerProvider&lt;/code>&#xA;&lt;/blockquote>&#xA;&lt;p>If the &lt;code>environment&lt;/code> parameter to {@link&#xA;#newJMXConnectorServer(JMXServiceURL, Map, MBeanServer)&#xA;newJMXConnectorServer} contains the key&#xA;&lt;code>jmx.remote.protocol.provider.class.loader&lt;/code> then the&#xA;associated value is the class loader to use to load the provider.&#xA;If the associated value is not an instance of {@link&#xA;java.lang.ClassLoader}, an {@link&#xA;java.lang.IllegalArgumentException} is thrown.&lt;/p>&#xA;&#xA;&lt;p>If the &lt;code>jmx.remote.protocol.provider.class.loader&lt;/code>&#xA;key is not present in the &lt;code>environment&lt;/code> parameter, the&#xA;calling thread's context class loader is used.&lt;/p>&#xA;&#xA;&lt;p>If the attempt to load this class produces a {@link&#xA;ClassNotFoundException}, the search for a handler continues with&#xA;the next element of the list.&lt;/p>&#xA;&#xA;&lt;p>Otherwise, a problem with the provider found is signalled by a&#xA;{@link JMXProviderException} whose {@link&#xA;JMXProviderException#getCause() &lt;em>cause&lt;/em>} indicates the&#xA;underlying exception, as follows:&lt;/p>&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>if the attempt to load the class produces an exception other&#xA;than &lt;code>ClassNotFoundException&lt;/code>, that is the&#xA;&lt;em>cause&lt;/em>;&#xA;&#xA;&lt;li>if {@link Class#newInstance()} for the class produces an&#xA;exception, that is the &lt;em>cause&lt;/em>.&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p>If no provider is found by the above steps, including the&#xA;default case where there is no provider package list, then the&#xA;implementation will use its own provider for&#xA;&lt;code>&lt;em>protocol&lt;/em>&lt;/code>, or it will throw a&#xA;&lt;code>MalformedURLException&lt;/code> if there is none.  An&#xA;implementation may choose to find providers by other means.  For&#xA;example, it may support the &lt;a&#xA;href=&quot;http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html#Service Provider&quot;>&#xA;JAR conventions for service providers&lt;/a>, where the service&#xA;interface is &lt;code>JMXConnectorServerProvider&lt;/code>.&lt;/p>&#xA;&#xA;&lt;p>Every implementation must support the RMI connector protocols,&#xA;specified with the string &lt;code>rmi&lt;/code> or&#xA;&lt;code>iiop&lt;/code>.&lt;/p>&#xA;&#xA;&lt;p>Once a provider is found, the result of the&#xA;&lt;code>newJMXConnectorServer&lt;/code> method is the result of calling&#xA;{@link&#xA;JMXConnectorServerProvider#newJMXConnectorServer(JMXServiceURL,&#xA;Map, MBeanServer) newJMXConnectorServer} on the provider.&lt;/p>&#xA;&#xA;&lt;p>The &lt;code>Map&lt;/code> parameter passed to the&#xA;&lt;code>JMXConnectorServerProvider&lt;/code> is a new read-only&#xA;&lt;code>Map&lt;/code> that contains all the entries that were in the&#xA;&lt;code>environment&lt;/code> parameter to {@link&#xA;#newJMXConnectorServer(JMXServiceURL,Map,MBeanServer)&#xA;JMXConnectorServerFactory.newJMXConnectorServer}, if there was one.&#xA;Additionally, if the&#xA;&lt;code>jmx.remote.protocol.provider.class.loader&lt;/code> key is not&#xA;present in the &lt;code>environment&lt;/code> parameter, it is added to&#xA;the new read-only &lt;code>Map&lt;/code>. The associated value is the&#xA;calling thread's context class loader.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="894a2d6f-a82c-47b7-8c73-3b4b0d26cc80"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9e19af2f-93db-443a-b4f4-58616f44d20a" name="JMXProviderException">
              <ownedComment xmi:id="6fed1d32-7735-4a06-85b7-73806cc627e0" body="&lt;p>Exception thrown by {@link JMXConnectorFactory} when a provider&#xA;exists for the required protocol but cannot be used for some&#xA;reason.&lt;/p>&#xA;&#xA;@see JMXConnectorFactory#connect(JMXServiceURL, Map)&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="9e19af2f-93db-443a-b4f4-58616f44d20a"/>
              <generalization xmi:id="0c6efa0f-e974-4258-a25e-4d6a4c84eb49" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="bf269b3b-a9d1-4e5a-9139-1c51d596f62d" name="JMXPrincipal" clientDependency="d7c25758-4033-4e98-aa03-2b9f05573bb0 7cc5070c-8558-4461-9004-237baba911d1">
              <ownedComment xmi:id="50f86338-3f7d-4a36-a816-8b632b0ad945" body="&lt;p>The identity of a remote client of the JMX Remote API.&lt;/p>&#xA;&#xA;&lt;p>Principals such as this &lt;code>JMXPrincipal&lt;/code>&#xA;may be associated with a particular &lt;code>Subject&lt;/code>&#xA;to augment that &lt;code>Subject&lt;/code> with an additional&#xA;identity.  Refer to the {@link javax.security.auth.Subject}&#xA;class for more information on how to achieve this.&#xA;Authorization decisions can then be based upon&#xA;the Principals associated with a &lt;code>Subject&lt;/code>.&#xA;&#xA;@see java.security.Principal&#xA;@see javax.security.auth.Subject&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="bf269b3b-a9d1-4e5a-9139-1c51d596f62d"/>
              <interfaceRealization xmi:id="d7c25758-4033-4e98-aa03-2b9f05573bb0" name="" supplier="516530d1-1bf1-40f1-8619-f08f8811875d" client="bf269b3b-a9d1-4e5a-9139-1c51d596f62d" contract="516530d1-1bf1-40f1-8619-f08f8811875d"/>
              <interfaceRealization xmi:id="7cc5070c-8558-4461-9004-237baba911d1" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="bf269b3b-a9d1-4e5a-9139-1c51d596f62d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="affed188-6b27-4e8e-b48e-cf3e8c51b60e" name="JMXConnectionNotification">
              <ownedComment xmi:id="4c801a50-f01e-4444-8eb1-ca723aa3671e" body="&lt;p>Notification emitted when a client connection is opened or&#xA;closed or when notifications are lost.  These notifications are&#xA;sent by connector servers (instances of {@link JMXConnectorServer})&#xA;and by connector clients (instances of {@link JMXConnector}).  For&#xA;certain connectors, a session can consist of a sequence of&#xA;connections.  Connection-opened and connection-closed notifications&#xA;will be sent for each one.&lt;/p>&#xA;&#xA;&lt;p>The notification type is one of the following:&lt;/p>&#xA;&#xA;&lt;table>&#xA;&#xA;&lt;tr>&#xA;&lt;th align=left>Type&lt;/th>&#xA;&lt;th align=left>Meaning&lt;/th>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>&lt;code>jmx.remote.connection.opened&lt;/code>&lt;/td>&#xA;&lt;td>A new client connection has been opened.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>&lt;code>jmx.remote.connection.closed&lt;/code>&lt;/td>&#xA;&lt;td>A client connection has been closed.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>&lt;code>jmx.remote.connection.failed&lt;/code>&lt;/td>&#xA;&lt;td>A client connection has failed unexpectedly.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>&lt;code>jmx.remote.connection.notifs.lost&lt;/code>&lt;/td>&#xA;&lt;td>A client connection has potentially lost notifications.  This&#xA;notification only appears on the client side.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&#xA;&lt;p>The &lt;code>timeStamp&lt;/code> of the notification is a time value&#xA;(consistent with {@link System#currentTimeMillis()}) indicating&#xA;when the notification was constructed.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="affed188-6b27-4e8e-b48e-cf3e8c51b60e"/>
              <generalization xmi:id="9fdacb2d-db0c-41d6-ace9-dbb761c595ca" isSubstitutable="true" general="4a926b62-e203-4046-b3fe-ba1f9d281ee7"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="2adfd5de-1dfa-455b-bf5c-0fcdb71afcdf" name="JMXAuthenticator" isAbstract="true">
              <ownedComment xmi:id="a68136b5-2423-4879-9f95-9d7a2df3c8f8" body="&lt;p>Interface to define how remote credentials are converted into a&#xA;JAAS Subject.  This interface is used by the RMI Connector Server,&#xA;and can be used by other connector servers.&lt;/p>&#xA;&#xA;&lt;p>The user-defined authenticator instance is passed to the&#xA;connector server in the environment map as the value of the&#xA;attribute {@link JMXConnectorServer#AUTHENTICATOR}.  For connector&#xA;servers that use only this authentication system, if this attribute&#xA;is not present or its value is &lt;code>null&lt;/code> then no user&#xA;authentication will be performed and full access to the methods&#xA;exported by the &lt;code>MBeanServerConnection&lt;/code> object will be&#xA;allowed.&lt;/p>&#xA;&#xA;&lt;p>If authentication is successful then an authenticated&#xA;{@link Subject subject} filled in with its associated&#xA;{@link Principal principals} is returned. Authorization checks&#xA;will be then performed based on the given set of principals.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="2adfd5de-1dfa-455b-bf5c-0fcdb71afcdf"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d881fc2d-40af-4924-8a05-b95400ab00bb" name="SubjectDelegationPermission" isLeaf="true">
              <ownedComment xmi:id="94305637-2a87-4ad8-8b86-8ccc72e2d48e" body="&lt;p>Permission required by an authentication identity to perform&#xA;operations on behalf of an authorization identity.&lt;/p>&#xA;&#xA;&lt;p>A SubjectDelegationPermission contains a name (also referred&#xA;to as a &quot;target name&quot;) but no actions list; you either have the&#xA;named permission or you don't.&lt;/p>&#xA;&#xA;&lt;p>The target name is the name of the authorization principal&#xA;classname followed by a period and the authorization principal&#xA;name, that is&#xA;&lt;code>&quot;&lt;em>PrincipalClassName&lt;/em>.&lt;em>PrincipalName&lt;/em>&quot;&lt;/code>.&lt;/p>&#xA;&#xA;&lt;p>An asterisk may appear by itself, or if immediately preceded&#xA;by a &quot;.&quot; may appear at the end of the target name, to signify a&#xA;wildcard match.&lt;/p>&#xA;&#xA;&lt;p>For example, &quot;*&quot;, &quot;javax.management.remote.JMXPrincipal.*&quot; and&#xA;&quot;javax.management.remote.JMXPrincipal.delegate&quot; are valid target&#xA;names. The first one denotes any principal name from any principal&#xA;class, the second one denotes any principal name of the concrete&#xA;principal class &lt;code>javax.management.remote.JMXPrincipal&lt;/code>&#xA;and the third one denotes a concrete principal name&#xA;&lt;code>delegate&lt;/code> of the concrete principal class&#xA;&lt;code>javax.management.remote.JMXPrincipal&lt;/code>.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="d881fc2d-40af-4924-8a05-b95400ab00bb"/>
              <generalization xmi:id="83ea7884-fea3-4e53-928b-ff3e294a7250" isSubstitutable="true" general="4831e368-c670-40b4-87bd-a8a910a528fa"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0f6e26e0-c53d-41b1-97b6-1dda5bd0d127" name="JMXConnectorFactory">
              <ownedComment xmi:id="5a2594fd-61fd-4a88-a0b4-fe361aea2a40" body="&lt;p>Factory to create JMX API connector clients.  There&#xA;are no instances of this class.&lt;/p>&#xA;&#xA;&lt;p>Connections are usually made using the {@link&#xA;#connect(JMXServiceURL) connect} method of this class.  More&#xA;advanced applications can separate the creation of the connector&#xA;client, using {@link #newJMXConnector(JMXServiceURL, Map)&#xA;newJMXConnector} and the establishment of the connection itself, using&#xA;{@link JMXConnector#connect(Map)}.&lt;/p>&#xA;&#xA;&lt;p>Each client is created by an instance of {@link&#xA;JMXConnectorProvider}.  This instance is found as follows.  Suppose&#xA;the given {@link JMXServiceURL} looks like&#xA;&lt;code>&quot;service:jmx:&lt;em>protocol&lt;/em>:&lt;em>remainder&lt;/em>&quot;&lt;/code>.&#xA;Then the factory will attempt to find the appropriate {@link&#xA;JMXConnectorProvider} for &lt;code>&lt;em>protocol&lt;/em>&lt;/code>.  Each&#xA;occurrence of the character &lt;code>+&lt;/code> or &lt;code>-&lt;/code> in&#xA;&lt;code>&lt;em>protocol&lt;/em>&lt;/code> is replaced by &lt;code>.&lt;/code> or&#xA;&lt;code>_&lt;/code>, respectively.&lt;/p>&#xA;&#xA;&lt;p>A &lt;em>provider package list&lt;/em> is searched for as follows:&lt;/p>&#xA;&#xA;&lt;ol>&#xA;&#xA;&lt;li>If the &lt;code>environment&lt;/code> parameter to {@link&#xA;#newJMXConnector(JMXServiceURL, Map) newJMXConnector} contains the&#xA;key &lt;code>jmx.remote.protocol.provider.pkgs&lt;/code> then the&#xA;associated value is the provider package list.&#xA;&#xA;&lt;li>Otherwise, if the system property&#xA;&lt;code>jmx.remote.protocol.provider.pkgs&lt;/code> exists, then its value&#xA;is the provider package list.&#xA;&#xA;&lt;li>Otherwise, there is no provider package list.&#xA;&#xA;&lt;/ol>&#xA;&#xA;&lt;p>The provider package list is a string that is interpreted as a&#xA;list of non-empty Java package names separated by vertical bars&#xA;(&lt;code>|&lt;/code>).  If the string is empty, then so is the provider&#xA;package list.  If the provider package list is not a String, or if&#xA;it contains an element that is an empty string, a {@link&#xA;JMXProviderException} is thrown.&lt;/p>&#xA;&#xA;&lt;p>If the provider package list exists and is not empty, then for&#xA;each element &lt;code>&lt;em>pkg&lt;/em>&lt;/code> of the list, the factory&#xA;will attempt to load the class&#xA;&#xA;&lt;blockquote>&#xA;&lt;code>&lt;em>pkg&lt;/em>.&lt;em>protocol&lt;/em>.ClientProvider&lt;/code>&#xA;&lt;/blockquote>&#xA;&lt;p>If the &lt;code>environment&lt;/code> parameter to {@link&#xA;#newJMXConnector(JMXServiceURL, Map) newJMXConnector} contains the&#xA;key &lt;code>jmx.remote.protocol.provider.class.loader&lt;/code> then the&#xA;associated value is the class loader to use to load the provider.&#xA;If the associated value is not an instance of {@link&#xA;java.lang.ClassLoader}, an {@link&#xA;java.lang.IllegalArgumentException} is thrown.&lt;/p>&#xA;&#xA;&lt;p>If the &lt;code>jmx.remote.protocol.provider.class.loader&lt;/code>&#xA;key is not present in the &lt;code>environment&lt;/code> parameter, the&#xA;calling thread's context class loader is used.&lt;/p>&#xA;&#xA;&lt;p>If the attempt to load this class produces a {@link&#xA;ClassNotFoundException}, the search for a handler continues with&#xA;the next element of the list.&lt;/p>&#xA;&#xA;&lt;p>Otherwise, a problem with the provider found is signalled by a&#xA;{@link JMXProviderException} whose {@link&#xA;JMXProviderException#getCause() &lt;em>cause&lt;/em>} indicates the underlying&#xA;exception, as follows:&lt;/p>&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>if the attempt to load the class produces an exception other&#xA;than &lt;code>ClassNotFoundException&lt;/code>, that is the&#xA;&lt;em>cause&lt;/em>;&#xA;&#xA;&lt;li>if {@link Class#newInstance()} for the class produces an&#xA;exception, that is the &lt;em>cause&lt;/em>.&#xA;&#xA;&lt;/ul>&#xA;&#xA;&lt;p>If no provider is found by the above steps, including the&#xA;default case where there is no provider package list, then the&#xA;implementation will use its own provider for&#xA;&lt;code>&lt;em>protocol&lt;/em>&lt;/code>, or it will throw a&#xA;&lt;code>MalformedURLException&lt;/code> if there is none.  An&#xA;implementation may choose to find providers by other means.  For&#xA;example, it may support the &lt;a&#xA;href=&quot;http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html#Service Provider&quot;>&#xA;JAR conventions for service providers&lt;/a>, where the service&#xA;interface is &lt;code>JMXConnectorProvider&lt;/code>.&lt;/p>&#xA;&#xA;&lt;p>Every implementation must support the RMI connector protocols,&#xA;specified with the string &lt;code>rmi&lt;/code> or&#xA;&lt;code>iiop&lt;/code>.&lt;/p>&#xA;&#xA;&lt;p>Once a provider is found, the result of the&#xA;&lt;code>newJMXConnector&lt;/code> method is the result of calling {@link&#xA;JMXConnectorProvider#newJMXConnector(JMXServiceURL,Map) newJMXConnector}&#xA;on the provider.&lt;/p>&#xA;&#xA;&lt;p>The &lt;code>Map&lt;/code> parameter passed to the&#xA;&lt;code>JMXConnectorProvider&lt;/code> is a new read-only&#xA;&lt;code>Map&lt;/code> that contains all the entries that were in the&#xA;&lt;code>environment&lt;/code> parameter to {@link&#xA;#newJMXConnector(JMXServiceURL,Map)&#xA;JMXConnectorFactory.newJMXConnector}, if there was one.&#xA;Additionally, if the&#xA;&lt;code>jmx.remote.protocol.provider.class.loader&lt;/code> key is not&#xA;present in the &lt;code>environment&lt;/code> parameter, it is added to&#xA;the new read-only &lt;code>Map&lt;/code>.  The associated value is the&#xA;calling thread's context class loader.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="0f6e26e0-c53d-41b1-97b6-1dda5bd0d127"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="53d3d2c8-2e6f-41e3-951f-111d97049037" name="TargetedNotification" clientDependency="567a22e4-ba8b-4b8e-b0e2-b80722b13fdd">
              <ownedComment xmi:id="5c200e9a-389b-4dbe-a6cf-6059f5e33fa4" body="&lt;p>A (Notification, Listener ID) pair.&lt;/p>&#xA;&lt;p>This class is used to associate an emitted notification&#xA;with the listener ID to which it is targeted.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="53d3d2c8-2e6f-41e3-951f-111d97049037"/>
              <interfaceRealization xmi:id="567a22e4-ba8b-4b8e-b0e2-b80722b13fdd" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="53d3d2c8-2e6f-41e3-951f-111d97049037" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="93e7ef48-8549-4839-9e44-88ff515c4e35" name="JMXServerErrorException">
              <ownedComment xmi:id="feadd918-fe00-44e5-b64b-3117aa1e27c8" body="Exception thrown as the result of a remote {@link MBeanServer}&#xA;method invocation when an &lt;code>Error&lt;/code> is thrown while&#xA;processing the invocation in the remote MBean server.  A&#xA;&lt;code>JMXServerErrorException&lt;/code> instance contains the original&#xA;&lt;code>Error&lt;/code> that occurred as its cause.&#xA;&#xA;@see java.rmi.ServerError&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="93e7ef48-8549-4839-9e44-88ff515c4e35"/>
              <generalization xmi:id="417c0dff-2293-427d-bb90-2278dd87cff3" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="0b80139e-1d2c-43ee-824f-f8c788ff4f72" name="JMXConnectorProvider" isAbstract="true">
              <ownedComment xmi:id="82bbf92b-6f37-449a-8592-d44809176067" body="&lt;p>A provider for creating JMX API connector clients using a given&#xA;protocol.  Instances of this interface are created by {@link&#xA;JMXConnectorFactory} as part of its {@link&#xA;JMXConnectorFactory#newJMXConnector(JMXServiceURL, Map)&#xA;newJMXConnector} method.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="0b80139e-1d2c-43ee-824f-f8c788ff4f72"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d95c6fe8-8b76-4945-bbf9-b9f164100d9f" name="JMXServiceURL" clientDependency="c37bcfc1-69a0-4e56-a738-a85779d6d850">
              <ownedComment xmi:id="13ae6884-e1f3-4316-96e9-6c1c180c7f36" body="&lt;p>The address of a JMX API connector server.  Instances of this class&#xA;are immutable.&lt;/p>&#xA;&#xA;&lt;p>The address is an &lt;em>Abstract Service URL&lt;/em> for SLP, as&#xA;defined in RFC 2609 and amended by RFC 3111.  It must look like&#xA;this:&lt;/p>&#xA;&#xA;&lt;blockquote>&#xA;&#xA;&lt;code>service:jmx:&lt;em>protocol&lt;/em>:&lt;em>sap&lt;/em>&lt;/code>&#xA;&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>Here, &lt;code>&lt;em>protocol&lt;/em>&lt;/code> is the transport&#xA;protocol to be used to connect to the connector server.  It is&#xA;a string of one or more ASCII characters, each of which is a&#xA;letter, a digit, or one of the characters &lt;code>+&lt;/code> or&#xA;&lt;code>-&lt;/code>.  The first character must be a letter.&#xA;Uppercase letters are converted into lowercase ones.&lt;/p>&#xA;&#xA;&lt;p>&lt;code>&lt;em>sap&lt;/em>&lt;/code> is the address at which the connector&#xA;server is found.  This address uses a subset of the syntax defined&#xA;by RFC 2609 for IP-based protocols.  It is a subset because the&#xA;&lt;code>user@host&lt;/code> syntax is not supported.&lt;/p>&#xA;&#xA;&lt;p>The other syntaxes defined by RFC 2609 are not currently&#xA;supported by this class.&lt;/p>&#xA;&#xA;&lt;p>The supported syntax is:&lt;/p>&#xA;&#xA;&lt;blockquote>&#xA;&#xA;&lt;code>//&lt;em>[host[&lt;/em>:&lt;em>port]][url-path]&lt;/em>&lt;/code>&#xA;&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>Square brackets &lt;code>[]&lt;/code> indicate optional parts of&#xA;the address.  Not all protocols will recognize all optional&#xA;parts.&lt;/p>&#xA;&#xA;&lt;p>The &lt;code>&lt;em>host&lt;/em>&lt;/code> is a host name, an IPv4 numeric&#xA;host address, or an IPv6 numeric address enclosed in square&#xA;brackets.&lt;/p>&#xA;&#xA;&lt;p>The &lt;code>&lt;em>port&lt;/em>&lt;/code> is a decimal port number.  0&#xA;means a default or anonymous port, depending on the protocol.&lt;/p>&#xA;&#xA;&lt;p>The &lt;code>&lt;em>host&lt;/em>&lt;/code> and &lt;code>&lt;em>port&lt;/em>&lt;/code>&#xA;can be omitted.  The &lt;code>&lt;em>port&lt;/em>&lt;/code> cannot be supplied&#xA;without a &lt;code>&lt;em>host&lt;/em>&lt;/code>.&lt;/p>&#xA;&#xA;&lt;p>The &lt;code>&lt;em>url-path&lt;/em>&lt;/code>, if any, begins with a slash&#xA;(&lt;code>/&lt;/code>) or a semicolon (&lt;code>;&lt;/code>) and continues to&#xA;the end of the address.  It can contain attributes using the&#xA;semicolon syntax specified in RFC 2609.  Those attributes are not&#xA;parsed by this class and incorrect attribute syntax is not&#xA;detected.&lt;/p>&#xA;&#xA;&lt;p>Although it is legal according to RFC 2609 to have a&#xA;&lt;code>&lt;em>url-path&lt;/em>&lt;/code> that begins with a semicolon, not&#xA;all implementations of SLP allow it, so it is recommended to avoid&#xA;that syntax.&lt;/p>&#xA;&#xA;&lt;p>Case is not significant in the initial&#xA;&lt;code>service:jmx:&lt;em>protocol&lt;/em>&lt;/code> string or in the host&#xA;part of the address.  Depending on the protocol, case can be&#xA;significant in the &lt;code>&lt;em>url-path&lt;/em>&lt;/code>.&lt;/p>&#xA;&#xA;@see &lt;a&#xA;href=&quot;ftp://ftp.rfc-editor.org/in-notes/rfc2609.txt&quot;>RFC 2609,&#xA;&quot;Service Templates and &lt;code>Service:&lt;/code> Schemes&quot;&lt;/a>&#xA;@see &lt;a&#xA;href=&quot;ftp://ftp.rfc-editor.org/in-notes/rfc3111.txt&quot;>RFC 3111,&#xA;&quot;Service Location Protocol Modifications for IPv6&quot;&lt;/a>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="d95c6fe8-8b76-4945-bbf9-b9f164100d9f"/>
              <interfaceRealization xmi:id="c37bcfc1-69a0-4e56-a738-a85779d6d850" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="d95c6fe8-8b76-4945-bbf9-b9f164100d9f" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="c5c1a8c4-fc4d-41d6-9a3e-fbc4e85a91bc" name="JMXConnectorServerMBean" isAbstract="true">
              <ownedComment xmi:id="27c77c95-ff7f-49f5-8726-75719ab5c638" body="&lt;p>MBean interface for connector servers.  A JMX API connector server&#xA;is attached to an MBean server, and establishes connections to that&#xA;MBean server for remote clients.&lt;/p>&#xA;&#xA;&lt;p>A newly-created connector server is &lt;em>inactive&lt;/em>, and does&#xA;not yet listen for connections.  Only when its {@link #start start}&#xA;method has been called does it start listening for connections.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="c5c1a8c4-fc4d-41d6-9a3e-fbc4e85a91bc"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d704c2eb-6c67-4f41-a79f-8946d9609674" name="JMXConnector" isAbstract="true">
              <ownedComment xmi:id="0b5fa7e3-ab6f-4213-aa7b-7377d61ee34d" body="&lt;p>The client end of a JMX API connector.  An object of this type can&#xA;be used to establish a connection to a connector server.&lt;/p>&#xA;&#xA;&lt;p>A newly-created object of this type is unconnected.  Its {@link&#xA;#connect connect} method must be called before it can be used.&#xA;However, objects created by {@link&#xA;JMXConnectorFactory#connect(JMXServiceURL, Map)&#xA;JMXConnectorFactory.connect} are already connected.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="d704c2eb-6c67-4f41-a79f-8946d9609674"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="5278df01-0618-438c-ad3f-a7fda3db9b52" name="MBeanServerForwarder" isAbstract="true">
              <ownedComment xmi:id="7de7ab6e-6cab-4a80-ac8d-b3217854652e" body="&lt;p>An object of this class implements the MBeanServer interface and&#xA;wraps another object that also implements that interface.&#xA;Typically, an implementation of this interface performs some action&#xA;in some or all methods of the &lt;code>MBeanServer&lt;/code> interface&#xA;before and/or after forwarding the method to the wrapped object.&#xA;Examples include security checking and logging.&lt;/p>&#xA;&#xA;@since 1.5&#xA;@since.unbundled 1.0&#xA;" annotatedElement="5278df01-0618-438c-ad3f-a7fda3db9b52"/>
              <generalization xmi:id="9f8554ca-02fe-4aeb-9385-2820c4a9b18b" isSubstitutable="true" general="5dee231c-7278-4911-97fc-7b8e09074a38"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="c5e8602b-901d-4c82-a5fc-8115008a32bb" name="timer">
            <packagedElement xmi:type="uml:Class" xmi:id="04b1ddf7-16fc-416e-ae01-72ddf0004bbc" name="TimerNotification">
              <ownedComment xmi:id="5be6fa10-059e-4e14-bc63-c9e388f72488" body="This class provides definitions of the notifications sent by timer MBeans.&#xA;&lt;BR>It defines a timer notification identifier which allows to retrieve a timer notification&#xA;from the list of notifications of a timer MBean.&#xA;&lt;P>&#xA;The timer notifications are created and handled by the timer MBean.&#xA;&#xA;@version     1.26     02/10/04&#xA;@author      Sun Microsystems, Inc&#xA;&#xA;@since 1.5&#xA;" annotatedElement="04b1ddf7-16fc-416e-ae01-72ddf0004bbc"/>
              <generalization xmi:id="98f0fdb1-2317-40bb-9166-3023826872d8" isSubstitutable="true" general="4a926b62-e203-4046-b3fe-ba1f9d281ee7"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="196e327f-927f-4dec-bcc8-48a53f9c7bff" name="TimerMBean" isAbstract="true">
              <ownedComment xmi:id="fecf7e49-5ce0-4509-8d27-553b18cd59ef" body="Exposes the management interface of the timer MBean.&#xA;&#xA;@version     4.25     02/10/04&#xA;@author      Sun Microsystems, Inc&#xA;&#xA;@since 1.5&#xA;" annotatedElement="196e327f-927f-4dec-bcc8-48a53f9c7bff"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="69ca3d66-4550-446b-9cf9-9130376e8628" name="TimerAlarmClockNotification">
              <ownedComment xmi:id="eb76d991-5e71-467a-8e26-f7af0462ae72" body="&lt;p>Definitions of the notifications sent by TimerAlarmClock&#xA;MBeans.&lt;/p>&#xA;&#xA;@deprecated This class is of no use to user code.  It is retained&#xA;purely for compatibility reasons.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="69ca3d66-4550-446b-9cf9-9130376e8628"/>
              <generalization xmi:id="a571113e-03d6-4aed-a89f-9f367dd793f2" isSubstitutable="true" general="4a926b62-e203-4046-b3fe-ba1f9d281ee7"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="292eddc1-16d5-4300-92a7-d0b5425771c6" name="Timer" clientDependency="274a63b7-05c4-4096-8be2-e2276259cc1e dbd36003-912f-483b-ba4f-6d18d6fb963e">
              <ownedComment xmi:id="de6212e3-3b5b-4ca0-ba3e-fa280407bd29" body="Provides the implementation of the timer MBean.&#xA;The timer MBean sends out an alarm at a specified time&#xA;that wakes up all the listeners registered to receive timer notifications.&#xA;&lt;P>&#xA;&#xA;This class manages a list of dated timer notifications.&#xA;A method allows users to add/remove as many notifications as required.&#xA;When a timer notification is emitted by the timer and becomes obsolete,&#xA;it is automatically removed from the list of timer notifications.&#xA;&lt;BR>Additional timer notifications can be added into regularly repeating notifications.&#xA;&lt;P>&#xA;&#xA;Note:&#xA;&lt;OL>&#xA;&lt;LI>All notifications before the time when the &lt;CODE>addNotification&lt;/CODE> method is called&#xA;are ignored, irrespective of the &lt;CODE>sendPastNotifications&lt;/CODE> flag.&#xA;&lt;LI>When sending timer notifications, the timer updates the notification sequence number&#xA;irrespective of the notification type.&#xA;&lt;LI>The timer service relies on the system date of the host where the &lt;CODE>Timer&lt;/CODE> class is loaded.&#xA;Listeners may receive untimely notifications&#xA;if their host has a different system date.&#xA;To avoid such problems, synchronize the system date of all host machines where timing is needed.&#xA;&lt;LI>The default behavior for periodic notifications is &lt;i>fixed-delay execution&lt;/i>, as&#xA;specified in {@link java.util.Timer}. In order to use &lt;i>fixed-rate execution&lt;/i>, use the&#xA;overloaded {@link #addNotification(String, String, Object, Date, long, long, boolean)} method.&#xA;&lt;LI>Notification listeners are potentially all executed in the same&#xA;thread.  Therefore, they should execute rapidly to avoid holding up&#xA;other listeners or perturbing the regularity of fixed-delay&#xA;executions.  See {@link NotificationBroadcasterSupport}.&#xA;&lt;/OL>&#xA;&#xA;@version     4.58     04/13/04&#xA;@author      Sun Microsystems, Inc&#xA;&#xA;@since 1.5&#xA;" annotatedElement="292eddc1-16d5-4300-92a7-d0b5425771c6"/>
              <generalization xmi:id="e2fa4061-a61b-48c1-8587-74e59061f9b2" isSubstitutable="true" general="96afb4b0-bbf4-4b32-ae88-74b46a8f1635"/>
              <interfaceRealization xmi:id="274a63b7-05c4-4096-8be2-e2276259cc1e" name="" supplier="196e327f-927f-4dec-bcc8-48a53f9c7bff" client="292eddc1-16d5-4300-92a7-d0b5425771c6" contract="196e327f-927f-4dec-bcc8-48a53f9c7bff"/>
              <interfaceRealization xmi:id="dbd36003-912f-483b-ba4f-6d18d6fb963e" name="" supplier="3019d5cd-2bcd-410d-a5e7-fa278098becf" client="292eddc1-16d5-4300-92a7-d0b5425771c6" contract="3019d5cd-2bcd-410d-a5e7-fa278098becf"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="089de1b5-d23e-4232-a28d-f21f7d36a5fd" name="TimerAlarmClock" visibility="package">
              <ownedComment xmi:id="d9210221-584b-47cd-a81e-356b7651f52d" body="TimerAlarmClock inner class:&#xA;This class provides a simple implementation of an alarm clock MBean.&#xA;The aim of this MBean is to set up an alarm which wakes up the timer every timeout (fixed-delay)&#xA;or at the specified date (fixed-rate).&#xA;" annotatedElement="089de1b5-d23e-4232-a28d-f21f7d36a5fd"/>
              <generalization xmi:id="17bd372a-40be-4fdc-a84d-48901e578587" isSubstitutable="true" general="2aaa7c97-4f05-4dfa-86ef-0082ac205f6c"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="79d015c3-bc44-48be-9fa2-91f4e1a5b37f" name="QualifiedAttributeValueExp" visibility="package">
            <ownedComment xmi:id="65eef7c8-df28-4ebc-8344-ee1aaad32d01" body="This class represents indexed attributes used as arguments to relational&#xA;constraints. An QualifiedAttributeValueExp may be used anywhere a&#xA;ValueExp is required.&#xA;@serial include&#xA;&#xA;@since 1.5&#xA;" annotatedElement="79d015c3-bc44-48be-9fa2-91f4e1a5b37f"/>
            <generalization xmi:id="15704f9d-5417-45eb-93ed-73fb0519056c" isSubstitutable="true" general="b5ed35f4-fe44-41af-8d0a-8fe274c744fc"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="f3e1f5d3-bee0-4d5e-b90f-cd5730c16f0d" name="DynamicMBean" isAbstract="true">
            <ownedComment xmi:id="50ccfc37-126e-406e-81ff-5b38746dd95f" body="Defines the methods that should be implemented by&#xA;a Dynamic MBean (MBean that exposes a dynamic management interface).&#xA;&#xA;@since 1.5&#xA;" annotatedElement="f3e1f5d3-bee0-4d5e-b90f-cd5730c16f0d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a324a67d-522c-4517-92be-5ce3ea38f118" name="NotQueryExp" visibility="package" clientDependency="770dfdc3-786b-43c8-b118-95a0539902e0">
            <ownedComment xmi:id="ba53303f-f8b6-476c-ba45-2827bf7e9044" body="This class is used by the query-building mechanism to represent negations&#xA;of relational expressions.&#xA;@serial include&#xA;&#xA;@since 1.5&#xA;" annotatedElement="a324a67d-522c-4517-92be-5ce3ea38f118"/>
            <generalization xmi:id="69acfd88-34b5-4724-8a88-1e0b1a1d033e" isSubstitutable="true" general="884220a1-d86c-4a9b-b5d1-05725d6e417f"/>
            <interfaceRealization xmi:id="770dfdc3-786b-43c8-b118-95a0539902e0" name="" supplier="63bea8af-c5ea-4b3b-87fe-e59aab8370df" client="a324a67d-522c-4517-92be-5ce3ea38f118" contract="63bea8af-c5ea-4b3b-87fe-e59aab8370df"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="07ea3c74-c95a-4d9d-a5cd-ff7b51c6fb5c" name="ListenerNotFoundException">
            <ownedComment xmi:id="174bcafc-2ac8-4aac-aaa4-3972a7b0edb3" body="The specified MBean listener does not exist in the repository.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="07ea3c74-c95a-4d9d-a5cd-ff7b51c6fb5c"/>
            <generalization xmi:id="b3a504bd-d98f-498b-b4c0-c7e90d3d2196" isSubstitutable="true" general="aae66ef6-d10b-4418-8784-f77f2c87f595"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4a926b62-e203-4046-b3fe-ba1f9d281ee7" name="Notification">
            <ownedComment xmi:id="af104067-96af-4700-bc1d-1e18d3c936a9" body="&lt;p>The Notification class represents a notification emitted by an&#xA;MBean.  It contains a reference to the source MBean: if the&#xA;notification has been forwarded through the MBean server, and the&#xA;original source of the notification was a reference to the emitting&#xA;MBean object, then the MBean server replaces it by the MBean's&#xA;ObjectName.  If the listener has registered directly with the&#xA;MBean, this is either the object name or a direct reference to the&#xA;MBean.&lt;/p>&#xA;&#xA;&lt;p>It is strongly recommended that notification senders use the&#xA;object name rather than a reference to the MBean object as the&#xA;source.&lt;/p>&#xA;&#xA;@since 1.5&#xA;" annotatedElement="4a926b62-e203-4046-b3fe-ba1f9d281ee7"/>
            <generalization xmi:id="a6c95c07-c6b9-40c9-99c9-61551d4010d1" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="9c64e054-32a0-4a22-abf5-34a98ffb7316" name="relation">
            <packagedElement xmi:type="uml:Interface" xmi:id="f1342e58-2885-4e02-9cb1-0cc4a3bcc918" name="RelationType" isAbstract="true">
              <ownedComment xmi:id="c39cea1c-5bc4-4422-81bf-2e1ab5180e3b" body="The RelationType interface has to be implemented by any class expected to&#xA;represent a relation type.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="f1342e58-2885-4e02-9cb1-0cc4a3bcc918"/>
              <generalization xmi:id="f6c0e587-ed7f-4dd0-8822-191a98fce52c" isSubstitutable="true" general="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="15958a3a-8078-479d-8518-6d752aeb955f" name="InvalidRoleInfoException">
              <ownedComment xmi:id="fbd9fa43-8704-46c6-a227-9d44ceef0fc4" body="This exception is raised when, in a role info, its minimum degree is greater&#xA;than its maximum degree.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="15958a3a-8078-479d-8518-6d752aeb955f"/>
              <generalization xmi:id="d5473253-a6a8-417a-af16-fda0372faea9" isSubstitutable="true" general="9f3a2423-55f4-4841-b273-87cab055e540"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0943d098-c17b-4f45-b172-f7e7503b28fb" name="Role" clientDependency="773591d7-1b6e-40a2-90e9-ef7913a80ffb">
              <ownedComment xmi:id="2d413287-01bc-408c-a990-b556a4c4b03b" body="Represents a role: includes a role name and referenced MBeans (via their&#xA;ObjectNames). The role value is always represented as an ArrayList&#xA;collection (of ObjectNames) to homogenize the access.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="0943d098-c17b-4f45-b172-f7e7503b28fb"/>
              <interfaceRealization xmi:id="773591d7-1b6e-40a2-90e9-ef7913a80ffb" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0943d098-c17b-4f45-b172-f7e7503b28fb" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2e2d34e6-94fa-439d-8c7f-402b4b439ea1" name="RoleResult" clientDependency="0ac0b68a-7ed9-4e77-98e3-ef442ffa9b6b">
              <ownedComment xmi:id="7edef4f0-56fb-4d74-a2dc-ea2f30fde2cb" body="Represents the result of a multiple access to several roles of a relation&#xA;(either for reading or writing).&#xA;&#xA;@since 1.5&#xA;" annotatedElement="2e2d34e6-94fa-439d-8c7f-402b4b439ea1"/>
              <interfaceRealization xmi:id="0ac0b68a-7ed9-4e77-98e3-ef442ffa9b6b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="2e2d34e6-94fa-439d-8c7f-402b4b439ea1" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="bef6511f-4e5a-4807-9115-a5446121044b" name="Relation" isAbstract="true">
              <ownedComment xmi:id="7d1dee3a-8d69-4935-8c1a-2e3400a6d431" body="This interface has to be implemented by any MBean class expected to&#xA;represent a relation managed using the Relation Service.&#xA;&lt;P>Simple relations, i.e. having only roles, no properties or methods, can&#xA;be created directly by the Relation Service (represented as RelationSupport&#xA;objects, internally handled by the Relation Service).&#xA;&lt;P>If the user wants to represent more complex relations, involving&#xA;properties and/or methods, he has to provide his own class implementing the&#xA;Relation interface. This can be achieved either by inheriting from&#xA;RelationSupport class, or by implementing the interface (fully or delegation to&#xA;a RelationSupport object member).&#xA;&lt;P>Specifying such user relation class is to introduce properties and/or&#xA;methods. Those have to be exposed for remote management. So this means that&#xA;any user relation class must be a MBean class.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="bef6511f-4e5a-4807-9115-a5446121044b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b74dca24-9827-45d0-8d2a-57c270e250c0" name="InvalidRoleValueException">
              <ownedComment xmi:id="e06507aa-dce0-405d-a9ef-746833c90e0e" body="Role value is invalid.&#xA;This exception is raised when, in a role, the number of referenced MBeans&#xA;in given value is less than expected minimum degree, or the number of&#xA;referenced MBeans in provided value exceeds expected maximum degree, or&#xA;one referenced MBean in the value is not an Object of the MBean&#xA;class expected for that role, or an MBean provided for that role does not&#xA;exist.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="b74dca24-9827-45d0-8d2a-57c270e250c0"/>
              <generalization xmi:id="262caf87-1f8b-422e-b2b3-3eda2aa76038" isSubstitutable="true" general="9f3a2423-55f4-4841-b273-87cab055e540"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d001ac36-7684-4409-9f4c-006a384ac489" name="RoleUnresolved" clientDependency="131d4098-8d9c-440c-b33a-40648acc2c45">
              <ownedComment xmi:id="1bde5794-319a-49c0-a3ac-d83c85d7be32" body="Represents an unresolved role: a role not retrieved from a relation due&#xA;to a problem. It provides the role name, value (if problem when trying to&#xA;set the role) and an integer defining the problem (constants defined in&#xA;RoleStatus).&#xA;&#xA;@since 1.5&#xA;" annotatedElement="d001ac36-7684-4409-9f4c-006a384ac489"/>
              <interfaceRealization xmi:id="131d4098-8d9c-440c-b33a-40648acc2c45" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="d001ac36-7684-4409-9f4c-006a384ac489" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="10c6fe36-35c8-4b94-b619-906d5d495320" name="RelationNotFoundException">
              <ownedComment xmi:id="d411d1bf-aa18-44c5-913a-1421d1e00abf" body="This exception is raised when there is no relation for a given relation id&#xA;in a Relation Service.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="10c6fe36-35c8-4b94-b619-906d5d495320"/>
              <generalization xmi:id="5e3a4009-643d-4311-a725-6a4fc596c917" isSubstitutable="true" general="9f3a2423-55f4-4841-b273-87cab055e540"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d262ac17-7578-4423-871f-e5954a5d648b" name="RelationSupportMBean" isAbstract="true">
              <ownedComment xmi:id="f4cb0240-ed91-4b9a-bdb2-54eeede2a758" body="A RelationSupport object is used internally by the Relation Service to&#xA;represent simple relations (only roles, no properties or methods), with an&#xA;unlimited number of roles, of any relation type. As internal representation,&#xA;it is not exposed to the user.&#xA;&lt;P>RelationSupport class conforms to the design patterns of standard MBean. So&#xA;the user can decide to instantiate a RelationSupport object himself as&#xA;a MBean (as it follows the MBean design patterns), to register it in the&#xA;MBean Server, and then to add it in the Relation Service.&#xA;&lt;P>The user can also, when creating his own MBean relation class, have it&#xA;extending RelationSupport, to retrieve the implementations of required&#xA;interfaces (see below).&#xA;&lt;P>It is also possible to have in a user relation MBean class a member&#xA;being a RelationSupport object, and to implement the required interfaces by&#xA;delegating all to this member.&#xA;&lt;P> RelationSupport implements the Relation interface (to be handled by the&#xA;Relation Service).&#xA;&#xA;@since 1.5&#xA;" annotatedElement="d262ac17-7578-4423-871f-e5954a5d648b"/>
              <generalization xmi:id="2a4313a5-e3df-4e53-aaa6-9d3a89d20a82" isSubstitutable="true" general="bef6511f-4e5a-4807-9115-a5446121044b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="df6171d3-b0a8-4b4c-ab3b-3001f54b8a54" name="RelationSupport" clientDependency="1281eac6-b0aa-47d8-a20d-572a52c02ff1 6ae19aab-ea94-4041-8881-caf9f5a3e05f">
              <ownedComment xmi:id="ae139a80-5bc6-4cae-b11b-5e197d424f37" body="A RelationSupport object is used internally by the Relation Service to&#xA;represent simple relations (only roles, no properties or methods), with an&#xA;unlimited number of roles, of any relation type. As internal representation,&#xA;it is not exposed to the user.&#xA;&lt;P>RelationSupport class conforms to the design patterns of standard MBean. So&#xA;the user can decide to instantiate a RelationSupport object himself as&#xA;a MBean (as it follows the MBean design patterns), to register it in the&#xA;MBean Server, and then to add it in the Relation Service.&#xA;&lt;P>The user can also, when creating his own MBean relation class, have it&#xA;extending RelationSupport, to retrieve the implementations of required&#xA;interfaces (see below).&#xA;&lt;P>It is also possible to have in a user relation MBean class a member&#xA;being a RelationSupport object, and to implement the required interfaces by&#xA;delegating all to this member.&#xA;&lt;P> RelationSupport implements the Relation interface (to be handled by the&#xA;Relation Service).&#xA;&lt;P>It implements also the MBeanRegistration interface to be able to retrieve&#xA;the MBean Server where it is registered (if registered as a MBean) to access&#xA;to its Relation Service.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="df6171d3-b0a8-4b4c-ab3b-3001f54b8a54"/>
              <interfaceRealization xmi:id="6ae19aab-ea94-4041-8881-caf9f5a3e05f" name="" supplier="d262ac17-7578-4423-871f-e5954a5d648b" client="df6171d3-b0a8-4b4c-ab3b-3001f54b8a54" contract="d262ac17-7578-4423-871f-e5954a5d648b"/>
              <interfaceRealization xmi:id="1281eac6-b0aa-47d8-a20d-572a52c02ff1" name="" supplier="3019d5cd-2bcd-410d-a5e7-fa278098becf" client="df6171d3-b0a8-4b4c-ab3b-3001f54b8a54" contract="3019d5cd-2bcd-410d-a5e7-fa278098becf"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="733c09d1-acbd-4f91-aac4-9d0bb23698d6" name="RoleInfo" clientDependency="24d070ea-8306-4490-9dd5-9f00c1175cdf">
              <ownedComment xmi:id="764c4c08-e24b-4b9b-86ab-f261e10cfa8d" body="A RoleInfo object summarises a role in a relation type.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="733c09d1-acbd-4f91-aac4-9d0bb23698d6"/>
              <interfaceRealization xmi:id="24d070ea-8306-4490-9dd5-9f00c1175cdf" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="733c09d1-acbd-4f91-aac4-9d0bb23698d6" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7736b694-62be-4af4-ad5c-3a09eb6ad173" name="RelationTypeNotFoundException">
              <ownedComment xmi:id="612620f8-8e01-4433-a158-97dfbe0fe4a6" body="This exception is raised when there is no relation type with given name in&#xA;Relation Service.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="7736b694-62be-4af4-ad5c-3a09eb6ad173"/>
              <generalization xmi:id="aba1fc24-996d-4242-84ec-b1930d60420d" isSubstitutable="true" general="9f3a2423-55f4-4841-b273-87cab055e540"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="dd006fe8-79d4-42d0-9a28-a5bc30a37dd8" name="MBeanServerNotificationFilter">
              <ownedComment xmi:id="61e003b6-60b0-43de-953f-497653df6eee" body="Filter for {@link MBeanServerNotification}.&#xA;This filter filters MBeanServerNotification notifications by&#xA;selecting the ObjectNames of interest and the operations (registration,&#xA;unregistration, both) of interest (corresponding to notification&#xA;types).&#xA;&#xA;@since 1.5&#xA;" annotatedElement="dd006fe8-79d4-42d0-9a28-a5bc30a37dd8"/>
              <generalization xmi:id="f7f1d1ea-0641-43d6-a0a1-d50e7db6d95e" isSubstitutable="true" general="77e94609-fe7f-4c46-a72c-fd151d45fd10"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f411f99a-3f0d-4677-8abe-44bbe1b899e0" name="RoleList">
              <ownedComment xmi:id="cb598b6a-93ce-4fb5-9b78-1d6f587ba879" body="A RoleList represents a list of roles (Role objects). It is used as&#xA;parameter when creating a relation, and when trying to set several roles in&#xA;a relation (via 'setRoles()' method). It is returned as part of a&#xA;RoleResult, to provide roles successfully retrieved.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="f411f99a-3f0d-4677-8abe-44bbe1b899e0"/>
              <generalization xmi:id="10853796-c5b2-4738-9e94-058ac5b70fab" isSubstitutable="true" general="18193b0c-b68c-4a5e-ba9a-01ccc68917e6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c739580d-2206-4b4a-a7ce-2b2eceb39762" name="RoleNotFoundException">
              <ownedComment xmi:id="efe5a011-7b1e-445d-8ccd-83cab9aac9d0" body="This exception is raised when a role in a relation does not exist, or is not&#xA;readable, or is not settable.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="c739580d-2206-4b4a-a7ce-2b2eceb39762"/>
              <generalization xmi:id="e5c0711f-206c-4e00-b5e5-63ba9620d124" isSubstitutable="true" general="9f3a2423-55f4-4841-b273-87cab055e540"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ce782431-c253-4fa1-b979-21ac1b970294" name="RoleStatus">
              <ownedComment xmi:id="79f063c5-b632-40ff-a3ca-62d29d11147f" body="This class describes the various problems which can be encountered when&#xA;accessing a role.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="ce782431-c253-4fa1-b979-21ac1b970294"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6aa6ad75-057c-4591-b206-a1251944a6e2" name="RelationNotification">
              <ownedComment xmi:id="aaf68a72-d47e-4e9e-88d5-1a93c5f5ad58" body="A notification of a change in the Relation Service.&#xA;A RelationNotification notification is sent when a relation is created via&#xA;the Relation Service, or an MBean is added as a relation in the Relation&#xA;Service, or a role is updated in a relation, or a relation is removed from&#xA;the Relation Service.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="6aa6ad75-057c-4591-b206-a1251944a6e2"/>
              <generalization xmi:id="ca9df5fe-12df-43de-8f06-ff58da6e68b6" isSubstitutable="true" general="4a926b62-e203-4046-b3fe-ba1f9d281ee7"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8b73b032-4685-4947-aa94-40c3f0acab5c" name="RoleUnresolvedList">
              <ownedComment xmi:id="0f310564-dfe9-4c6a-991e-874c137eeb58" body="A RoleUnresolvedList represents a list of RoleUnresolved objects,&#xA;representing roles not retrieved from a relation due to a problem&#xA;encountered when trying to access (read or write to roles).&#xA;&#xA;@since 1.5&#xA;" annotatedElement="8b73b032-4685-4947-aa94-40c3f0acab5c"/>
              <generalization xmi:id="e46ba758-abb4-494e-91fc-862aad803919" isSubstitutable="true" general="18193b0c-b68c-4a5e-ba9a-01ccc68917e6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5f3a0596-8791-402d-8b23-eefd55de08b9" name="RelationServiceNotRegisteredException">
              <ownedComment xmi:id="99ef0681-fd7b-48a5-91bc-c15e696fb164" body="This exception is raised when an access is done to the Relation Service and&#xA;that one is not registered.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="5f3a0596-8791-402d-8b23-eefd55de08b9"/>
              <generalization xmi:id="abe02652-ed69-43c8-9cbc-4dd683c5eaa0" isSubstitutable="true" general="9f3a2423-55f4-4841-b273-87cab055e540"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="54653fe8-7ce1-424f-83cf-7d272e2c1971" name="RelationServiceMBean" isAbstract="true">
              <ownedComment xmi:id="3cb5adb6-da80-4283-a6e3-083795897f55" body="The Relation Service is in charge of creating and deleting relation types&#xA;and relations, of handling the consistency and of providing query&#xA;mechanisms.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="54653fe8-7ce1-424f-83cf-7d272e2c1971"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f3387831-7f7e-42d0-9836-455994d921cd" name="RoleInfoNotFoundException">
              <ownedComment xmi:id="5425980a-b784-49cf-a03d-4a3db04f20cd" body="This exception is raised when there is no role info with given name in a&#xA;given relation type.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="f3387831-7f7e-42d0-9836-455994d921cd"/>
              <generalization xmi:id="1f2a3103-65c3-4bcd-925d-e8800433dcc0" isSubstitutable="true" general="9f3a2423-55f4-4841-b273-87cab055e540"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ae94d455-936a-46f3-b20e-0ef82e666fea" name="InvalidRelationServiceException">
              <ownedComment xmi:id="e438b9ab-6ecd-49bf-8505-3c24de9af46f" body="This exception is raised when an invalid Relation Service is provided.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="ae94d455-936a-46f3-b20e-0ef82e666fea"/>
              <generalization xmi:id="4d76a5d3-0875-47c9-b5b1-0aa5148e02c1" isSubstitutable="true" general="9f3a2423-55f4-4841-b273-87cab055e540"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8a4c4725-d1e8-490e-8405-e7f700eb7aae" name="RelationTypeSupport" clientDependency="b3088ea8-3808-4bc5-a83b-5ec42bf215c9">
              <ownedComment xmi:id="2f9e1ae4-4abc-4459-b73a-fc4e172db954" body="A RelationTypeSupport object implements the RelationType interface.&#xA;&lt;P>It represents a relation type, providing role information for each role&#xA;expected to be supported in every relation of that type.&#xA;&#xA;&lt;P>A relation type includes a relation type name and a list of&#xA;role infos (represented by RoleInfo objects).&#xA;&#xA;&lt;P>A relation type has to be declared in the Relation Service:&#xA;&lt;P>- either using the createRelationType() method, where a RelationTypeSupport&#xA;object will be created and kept in the Relation Service&#xA;&lt;P>- either using the addRelationType() method where the user has to create&#xA;an object implementing the RelationType interface, and this object will be&#xA;used as representing a relation type in the Relation Service.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="8a4c4725-d1e8-490e-8405-e7f700eb7aae"/>
              <interfaceRealization xmi:id="b3088ea8-3808-4bc5-a83b-5ec42bf215c9" name="" supplier="f1342e58-2885-4e02-9cb1-0cc4a3bcc918" client="8a4c4725-d1e8-490e-8405-e7f700eb7aae" contract="f1342e58-2885-4e02-9cb1-0cc4a3bcc918"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9f3a2423-55f4-4841-b273-87cab055e540" name="RelationException">
              <ownedComment xmi:id="f07635aa-2f9f-48c1-a5dc-e514c85067c2" body="This class is the superclass of any exception which can be raised during&#xA;relation management.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="9f3a2423-55f4-4841-b273-87cab055e540"/>
              <generalization xmi:id="389c4678-b8f0-4f52-92df-18ca3383166e" isSubstitutable="true" general="6a8199d1-b549-413b-97fb-2fce6a429c29"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ab025666-6c74-435b-b097-2aeaf2245516" name="InvalidRelationIdException">
              <ownedComment xmi:id="fc73ff29-23c8-467c-a77f-41461526b8d2" body="This exception is raised when relation id provided for a relation is already&#xA;used.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="ab025666-6c74-435b-b097-2aeaf2245516"/>
              <generalization xmi:id="6f2ac00c-4a50-4786-ba44-80f40a88b57b" isSubstitutable="true" general="9f3a2423-55f4-4841-b273-87cab055e540"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e0073229-5d9b-44bc-85b7-9ee384a1117c" name="InvalidRelationTypeException">
              <ownedComment xmi:id="ca0070e8-1aaa-480a-b492-21d690aa0711" body="Invalid relation type.&#xA;This exception is raised when, in a relation type, there is already a&#xA;relation type with that name, or the same name has been used for two&#xA;different role infos, or no role info provided, or one null role info&#xA;provided.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="e0073229-5d9b-44bc-85b7-9ee384a1117c"/>
              <generalization xmi:id="06dd3232-2bd5-4b1d-9a29-531bfe2bc6ce" isSubstitutable="true" general="9f3a2423-55f4-4841-b273-87cab055e540"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7214e9c6-24b2-46d8-bf5c-a68f06569186" name="RelationService" clientDependency="3ef6b07d-4f5d-40d6-9a90-13eda657fb78 703c81ee-b4a0-481a-b769-e8821675fb67 56ebc485-6536-4d34-8618-c03178465076">
              <ownedComment xmi:id="6a699e63-a145-4c39-9e68-7354432476dc" body="The Relation Service is in charge of creating and deleting relation types&#xA;and relations, of handling the consistency and of providing query&#xA;mechanisms.&#xA;&lt;P>It implements the NotificationBroadcaster by extending&#xA;NotificationBroadcasterSupport to send notifications when a relation is&#xA;removed from it.&#xA;&lt;P>It implements the NotificationListener interface to be able to receive&#xA;notifications concerning unregistration of MBeans referenced in relation&#xA;roles and of relation MBeans.&#xA;&lt;P>It implements the MBeanRegistration interface to be able to retrieve&#xA;its ObjectName and MBean Server.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="7214e9c6-24b2-46d8-bf5c-a68f06569186"/>
              <generalization xmi:id="e9d51b3a-f390-4824-ac37-9534b4d647b4" isSubstitutable="true" general="96afb4b0-bbf4-4b32-ae88-74b46a8f1635"/>
              <interfaceRealization xmi:id="3ef6b07d-4f5d-40d6-9a90-13eda657fb78" name="" supplier="54653fe8-7ce1-424f-83cf-7d272e2c1971" client="7214e9c6-24b2-46d8-bf5c-a68f06569186" contract="54653fe8-7ce1-424f-83cf-7d272e2c1971"/>
              <interfaceRealization xmi:id="703c81ee-b4a0-481a-b769-e8821675fb67" name="" supplier="3019d5cd-2bcd-410d-a5e7-fa278098becf" client="7214e9c6-24b2-46d8-bf5c-a68f06569186" contract="3019d5cd-2bcd-410d-a5e7-fa278098becf"/>
              <interfaceRealization xmi:id="56ebc485-6536-4d34-8618-c03178465076" name="" supplier="bb5f262f-f01f-4e17-9470-98b585f034bf" client="7214e9c6-24b2-46d8-bf5c-a68f06569186" contract="bb5f262f-f01f-4e17-9470-98b585f034bf"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="501154e5-926b-4725-8959-d80b685f4314" name="RuntimeErrorException">
            <ownedComment xmi:id="d74cbbe1-2d29-4332-8399-5a472b3c8a26" body="When a &lt;CODE>java.lang.Error&lt;/CODE> occurs in the agent it should be caught and&#xA;re-thrown as a &lt;CODE>RuntimeErrorException&lt;/CODE>.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="501154e5-926b-4725-8959-d80b685f4314"/>
            <generalization xmi:id="c14bfa01-7242-4b6a-992e-fb500e974ef6" isSubstitutable="true" general="7f2e7b92-30cf-4ae2-8830-06a10543b896"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="7d63c3ab-9827-47ae-b0a3-3ea186a5c21d" name="monitor">
            <packagedElement xmi:type="uml:Class" xmi:id="81c4c792-2d93-4281-a534-ea011ca0524a" name="GaugeMonitor" clientDependency="9d0c4afb-9ab0-4b10-8157-3a21dd1c2229">
              <ownedComment xmi:id="f971d8a1-37d8-494f-9307-e4af1db6cb25" body="Defines a monitor MBean designed to observe the values of a gauge attribute.&#xA;&#xA;&lt;P> A gauge monitor observes an attribute that is continuously&#xA;variable with time.  A gauge monitor sends notifications as&#xA;follows:&#xA;&#xA;&lt;UL>&#xA;&#xA;&lt;LI> if the attribute value is increasing and becomes equal to or&#xA;greater than the high threshold value, a {@link&#xA;MonitorNotification#THRESHOLD_HIGH_VALUE_EXCEEDED threshold high&#xA;notification} is sent.  The notify high flag must be set to&#xA;&lt;CODE>true&lt;/CODE>&#xA;&#xA;&lt;BR>Subsequent crossings of the high threshold value do not cause&#xA;further notifications unless the attribute value becomes equal to&#xA;or less than the low threshold value.&#xA;&#xA;&lt;LI> if the attribute value is decreasing and becomes equal to or&#xA;less than the low threshold value, a {@link&#xA;MonitorNotification#THRESHOLD_LOW_VALUE_EXCEEDED threshold low&#xA;notification} is sent.  The notify low flag must be set to&#xA;&lt;CODE>true&lt;/CODE>.&#xA;&#xA;&lt;BR>Subsequent crossings of the low threshold value do not cause&#xA;further notifications unless the attribute value becomes equal to&#xA;or greater than the high threshold value.&#xA;&#xA;&lt;/UL>&#xA;&#xA;This provides a hysteresis mechanism to avoid repeated triggering&#xA;of notifications when the attribute value makes small oscillations&#xA;around the high or low threshold value.&#xA;&#xA;&lt;P> If the gauge difference mode is used, the value of the derived&#xA;gauge is calculated as the difference between the observed gauge&#xA;values for two successive observations.&#xA;&#xA;&lt;BR>The derived gauge value (V[t]) is calculated using the following method:&#xA;&lt;UL>&#xA;&lt;LI>V[t] = gauge[t] - gauge[t-GP]&#xA;&lt;/UL>&#xA;&#xA;This implementation of the gauge monitor requires the observed&#xA;attribute to be of the type integer or floating-point&#xA;(&lt;CODE>Byte&lt;/CODE>, &lt;CODE>Integer&lt;/CODE>, &lt;CODE>Short&lt;/CODE>,&#xA;&lt;CODE>Long&lt;/CODE>, &lt;CODE>Float&lt;/CODE>, &lt;CODE>Double&lt;/CODE>).&#xA;&#xA;@version     1.73     05/18/04&#xA;@author      Sun Microsystems, Inc&#xA;&#xA;@since 1.5&#xA;" annotatedElement="81c4c792-2d93-4281-a534-ea011ca0524a"/>
              <generalization xmi:id="3ffb1307-3e2e-45c5-93f7-8ad2f281f806" isSubstitutable="true" general="da173702-279e-4a90-a221-24af22afa1b8"/>
              <interfaceRealization xmi:id="9d0c4afb-9ab0-4b10-8157-3a21dd1c2229" name="" supplier="c3dcc809-9969-49a2-acd2-184a88d6c1c5" client="81c4c792-2d93-4281-a534-ea011ca0524a" contract="c3dcc809-9969-49a2-acd2-184a88d6c1c5"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="d5da7ef1-6a70-40e2-818e-7691116317d6" name="GaugeAlarmClock" visibility="private">
                <ownedComment xmi:id="e551be49-c43b-41af-839e-1fea0f9ca49f" body="GaugeAlarmClock inner class:&#xA;This class provides a simple implementation of an alarm clock MBean.&#xA;The aim of this MBean is to set up an alarm which wakes up the&#xA;gauge monitor every granularity period.&#xA;" annotatedElement="d5da7ef1-6a70-40e2-818e-7691116317d6"/>
                <generalization xmi:id="34f77e73-23b6-4fa3-a53d-051573809a8a" isSubstitutable="true" general="2aaa7c97-4f05-4dfa-86ef-0082ac205f6c"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ef340cf3-2792-4e63-91f9-fdff47928c00" name="CounterMonitor" clientDependency="923faf78-b264-4362-a805-bd8eb8f2f8f9">
              <ownedComment xmi:id="7fcc74cb-a8bc-4dbc-98b3-face560732f5" body="Defines a monitor MBean designed to observe the values of a counter&#xA;attribute.&#xA;&#xA;&lt;P> A counter monitor sends a {@link&#xA;MonitorNotification#THRESHOLD_VALUE_EXCEEDED threshold&#xA;notification} when the value of the counter reaches or exceeds a&#xA;threshold known as the comparison level.  The notify flag must be&#xA;set to &lt;CODE>true&lt;/CODE>.&#xA;&#xA;&lt;P> In addition, an offset mechanism enables particular counting&#xA;intervals to be detected.  If the offset value is not zero,&#xA;whenever the threshold is triggered by the counter value reaching a&#xA;comparison level, that comparison level is incremented by the&#xA;offset value.  This is regarded as taking place instantaneously,&#xA;that is, before the count is incremented.  Thus, for each level,&#xA;the threshold triggers an event notification every time the count&#xA;increases by an interval equal to the offset value.&#xA;&#xA;&lt;P> If the counter can wrap around its maximum value, the modulus&#xA;needs to be specified.  The modulus is the value at which the&#xA;counter is reset to zero.&#xA;&#xA;&lt;P> If the counter difference mode is used, the value of the&#xA;derived gauge is calculated as the difference between the observed&#xA;counter values for two successive observations.  If this difference&#xA;is negative, the value of the derived gauge is incremented by the&#xA;value of the modulus.  The derived gauge value (V[t]) is calculated&#xA;using the following method:&#xA;&#xA;&lt;UL>&#xA;&lt;LI>if (counter[t] - counter[t-GP]) is positive then&#xA;V[t] = counter[t] - counter[t-GP]&#xA;&lt;LI>if (counter[t] - counter[t-GP]) is negative then&#xA;V[t] = counter[t] - counter[t-GP] + MODULUS&#xA;&lt;/UL>&#xA;&#xA;This implementation of the counter monitor requires the observed&#xA;attribute to be of the type integer (&lt;CODE>Byte&lt;/CODE>,&#xA;&lt;CODE>Integer&lt;/CODE>, &lt;CODE>Short&lt;/CODE>, &lt;CODE>Long&lt;/CODE>).&#xA;&#xA;@version     1.74     05/18/04&#xA;@author      Sun Microsystems, Inc&#xA;&#xA;@since 1.5&#xA;" annotatedElement="ef340cf3-2792-4e63-91f9-fdff47928c00"/>
              <generalization xmi:id="df8a527c-784f-4df9-849d-b1f17f971c00" isSubstitutable="true" general="da173702-279e-4a90-a221-24af22afa1b8"/>
              <interfaceRealization xmi:id="923faf78-b264-4362-a805-bd8eb8f2f8f9" name="" supplier="6ab57648-054a-415f-8958-a550bd08c9c2" client="ef340cf3-2792-4e63-91f9-fdff47928c00" contract="6ab57648-054a-415f-8958-a550bd08c9c2"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0aa9e689-221c-4eb2-80a6-76dab1cd6d9c" name="CounterAlarmClock" visibility="private">
                <ownedComment xmi:id="74c224b6-b4e5-4525-9f92-06a437a64e1c" body="CounterAlarmClock inner class: This class provides a simple&#xA;implementation of an alarm clock MBean.  The aim of this MBean is&#xA;to set up an alarm which wakes up the counter monitor every&#xA;granularity period.&#xA;" annotatedElement="0aa9e689-221c-4eb2-80a6-76dab1cd6d9c"/>
                <generalization xmi:id="6ea15370-5ef9-4431-9226-18d7aec408a8" isSubstitutable="true" general="2aaa7c97-4f05-4dfa-86ef-0082ac205f6c"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="1c9e4bda-461b-4793-a4d7-838db0fe7260" name="StringMonitorMBean" isAbstract="true">
              <ownedComment xmi:id="251fc545-9a83-4d64-8600-364813cfc7ec" body="Exposes the remote management interface of the string monitor MBean.&#xA;&#xA;@version     4.24     05/18/04&#xA;@author      Sun Microsystems, Inc&#xA;&#xA;@since 1.5&#xA;" annotatedElement="1c9e4bda-461b-4793-a4d7-838db0fe7260"/>
              <generalization xmi:id="f403208d-bbb6-4482-a67c-226f55981ab4" isSubstitutable="true" general="44242063-b309-4c82-a4f0-7f661a32cd79"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="cd54b254-3ee4-4d56-ad00-0a7a402a2791" name="StringMonitor" clientDependency="5abd4e8e-9087-4803-b4fe-ce540704b061">
              <ownedComment xmi:id="2f09d868-1beb-4289-b965-f33f82064227" body="Defines a monitor MBean designed to observe the values of a string&#xA;attribute.&#xA;&lt;P>&#xA;A string monitor sends notifications as follows:&#xA;&lt;UL>&#xA;&lt;LI> if the attribute value matches the string to compare value,&#xA;a {@link MonitorNotification#STRING_TO_COMPARE_VALUE_MATCHED&#xA;match notification} is sent.&#xA;The notify match flag must be set to &lt;CODE>true&lt;/CODE>.&#xA;&lt;BR>Subsequent matchings of the string to compare values do not&#xA;cause further notifications unless&#xA;the attribute value differs from the string to compare value.&#xA;&lt;LI> if the attribute value differs from the string to compare value,&#xA;a {@link MonitorNotification#STRING_TO_COMPARE_VALUE_DIFFERED&#xA;differ notification} is sent.&#xA;The notify differ flag must be set to &lt;CODE>true&lt;/CODE>.&#xA;&lt;BR>Subsequent differences from the string to compare value do&#xA;not cause further notifications unless&#xA;the attribute value matches the string to compare value.&#xA;&lt;/UL>&#xA;&#xA;@version     4.41     05/18/04&#xA;@author      Sun Microsystems, Inc&#xA;&#xA;@since 1.5&#xA;" annotatedElement="cd54b254-3ee4-4d56-ad00-0a7a402a2791"/>
              <generalization xmi:id="b175bbdf-0b6b-4baf-93a3-813e078ecfc0" isSubstitutable="true" general="da173702-279e-4a90-a221-24af22afa1b8"/>
              <interfaceRealization xmi:id="5abd4e8e-9087-4803-b4fe-ce540704b061" name="" supplier="1c9e4bda-461b-4793-a4d7-838db0fe7260" client="cd54b254-3ee4-4d56-ad00-0a7a402a2791" contract="1c9e4bda-461b-4793-a4d7-838db0fe7260"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="5b1ac70e-5555-44a1-bdad-d0b32c569026" name="StringAlarmClock" visibility="private">
                <ownedComment xmi:id="076ea07d-6a31-4655-a905-e1e88ad20040" body="StringAlarmClock inner class:&#xA;This class provides a simple implementation of an alarm clock MBean.&#xA;The aim of this MBean is to set up an alarm which wakes up the&#xA;string monitor every granularity period.&#xA;" annotatedElement="5b1ac70e-5555-44a1-bdad-d0b32c569026"/>
                <generalization xmi:id="2cc8b6e5-a87e-4971-a2ad-91d0fae25257" isSubstitutable="true" general="2aaa7c97-4f05-4dfa-86ef-0082ac205f6c"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="da173702-279e-4a90-a221-24af22afa1b8" name="Monitor" clientDependency="4356cf5b-b32f-48d7-9d95-58ae1d94134e 891a02fe-3bb5-4882-a1c2-a6fe58fc5298" isAbstract="true">
              <ownedComment xmi:id="426c7656-e292-441c-81ce-a16e28a81876" body="Defines the common part to all monitor MBeans.&#xA;A monitor MBean monitors values of an attribute common to a set of observed&#xA;MBeans. The observed attribute is monitored at intervals specified by the&#xA;granularity period. A gauge value (derived gauge) is derived from the values&#xA;of the observed attribute.&#xA;&#xA;@version     4.42     05/18/04&#xA;@author      Sun Microsystems, Inc&#xA;&#xA;@since 1.5&#xA;" annotatedElement="da173702-279e-4a90-a221-24af22afa1b8"/>
              <generalization xmi:id="b1629aa7-4cc3-4bf8-b00a-976e9dda5b23" isSubstitutable="true" general="96afb4b0-bbf4-4b32-ae88-74b46a8f1635"/>
              <interfaceRealization xmi:id="4356cf5b-b32f-48d7-9d95-58ae1d94134e" name="" supplier="44242063-b309-4c82-a4f0-7f661a32cd79" client="da173702-279e-4a90-a221-24af22afa1b8" contract="44242063-b309-4c82-a4f0-7f661a32cd79"/>
              <interfaceRealization xmi:id="891a02fe-3bb5-4882-a1c2-a6fe58fc5298" name="" supplier="3019d5cd-2bcd-410d-a5e7-fa278098becf" client="da173702-279e-4a90-a221-24af22afa1b8" contract="3019d5cd-2bcd-410d-a5e7-fa278098becf"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="c3dcc809-9969-49a2-acd2-184a88d6c1c5" name="GaugeMonitorMBean" isAbstract="true">
              <ownedComment xmi:id="70faa4f2-2574-443c-b621-d364fe9c7351" body="Exposes the remote management interface of the gauge monitor MBean.&#xA;&#xA;@version     4.25     05/18/04&#xA;@author      Sun Microsystems, Inc&#xA;&#xA;@since 1.5&#xA;" annotatedElement="c3dcc809-9969-49a2-acd2-184a88d6c1c5"/>
              <generalization xmi:id="b4f996cf-b349-4c62-8038-f4eda26aa7c5" isSubstitutable="true" general="44242063-b309-4c82-a4f0-7f661a32cd79"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4bb8a10a-da30-4732-bfff-f60696c3d67e" name="MonitorNotification">
              <ownedComment xmi:id="12fbd298-6439-411e-9c6c-8cd5a4225b3c" body="Provides definitions of the notifications sent by monitor MBeans.&#xA;&lt;P>&#xA;The notification source and a set of parameters concerning the monitor MBean's state&#xA;need to be specified when creating a new object of this class.&#xA;&#xA;The list of notifications fired by the monitor MBeans is the following:&#xA;&#xA;&lt;UL>&#xA;&lt;LI>Common to all kind of monitors:&#xA;&lt;UL>&#xA;&lt;LI>The observed object is not registered in the MBean server.&#xA;&lt;LI>The observed attribute is not contained in the observed object.&#xA;&lt;LI>The type of the observed attribute is not correct.&#xA;&lt;LI>Any exception (except the cases described above) occurs when trying to get the value of the observed attribute.&#xA;&lt;/UL>&#xA;&lt;LI>Common to the counter and the gauge monitors:&#xA;&lt;UL>&#xA;&lt;LI>The threshold high or threshold low are not of the same type as the gauge (gauge monitors).&#xA;&lt;LI>The threshold or the offset or the modulus are not of the same type as the counter (counter monitors).&#xA;&lt;/UL>&#xA;&lt;LI>Counter monitors only:&#xA;&lt;UL>&#xA;&lt;LI>The observed attribute has reached the threshold value.&#xA;&lt;/UL>&#xA;&lt;LI>Gauge monitors only:&#xA;&lt;UL>&#xA;&lt;LI>The observed attribute has exceeded the threshold high value.&#xA;&lt;LI>The observed attribute has exceeded the threshold low value.&#xA;&lt;/UL>&#xA;&lt;LI>String monitors only:&#xA;&lt;UL>&#xA;&lt;LI>The observed attribute has matched the &quot;string to compare&quot; value.&#xA;&lt;LI>The observed attribute has differed from the &quot;string to compare&quot; value.&#xA;&lt;/UL>&#xA;&lt;/UL>&#xA;&#xA;@version     4.22     12/19/03&#xA;@author      Sun Microsystems, Inc&#xA;&#xA;@since 1.5&#xA;" annotatedElement="4bb8a10a-da30-4732-bfff-f60696c3d67e"/>
              <generalization xmi:id="fc256170-8cec-4d95-bfed-a2ab0fe111cd" isSubstitutable="true" general="4a926b62-e203-4046-b3fe-ba1f9d281ee7"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7d056d63-4ba0-40c8-b517-ab828306b670" name="MonitorSettingException">
              <ownedComment xmi:id="cc597808-ed93-4c2b-b52e-78612f48c59c" body="Exception thrown by the monitor when a monitor setting becomes invalid while the monitor is running.&#xA;&lt;P>&#xA;As the monitor attributes may change at runtime, a check is performed before each observation.&#xA;If a monitor attribute has become invalid, a monitor setting exception is thrown.&#xA;&#xA;@version     4.16     12/19/03&#xA;@author      Sun Microsystems, Inc&#xA;&#xA;@since 1.5&#xA;" annotatedElement="7d056d63-4ba0-40c8-b517-ab828306b670"/>
              <generalization xmi:id="999d33c5-a58a-467f-a9a3-9a3374e9eb97" isSubstitutable="true" general="7f2e7b92-30cf-4ae2-8830-06a10543b896"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="44242063-b309-4c82-a4f0-7f661a32cd79" name="MonitorMBean" isAbstract="true">
              <ownedComment xmi:id="2caf75d3-04a6-407b-8131-136e9bb903ab" body="Exposes the remote management interface of monitor MBeans.&#xA;&#xA;@version     4.23     05/18/04&#xA;@author      Sun Microsystems, Inc&#xA;&#xA;@since 1.5&#xA;" annotatedElement="44242063-b309-4c82-a4f0-7f661a32cd79"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="6ab57648-054a-415f-8958-a550bd08c9c2" name="CounterMonitorMBean" isAbstract="true">
              <ownedComment xmi:id="c3a4c396-57f7-4eb1-883f-b927c2981953" body="Exposes the remote management interface of the counter monitor MBean.&#xA;&#xA;@version     4.26     05/18/04&#xA;@author      Sun Microsystems, Inc&#xA;&#xA;@since 1.5&#xA;" annotatedElement="6ab57648-054a-415f-8958-a550bd08c9c2"/>
              <generalization xmi:id="a6fe6671-e782-4dfc-af9b-429329390006" isSubstitutable="true" general="44242063-b309-4c82-a4f0-7f661a32cd79"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d5ec5541-ad68-46cb-9cab-e7a42d45ba11" name="ServiceNotFoundException">
            <ownedComment xmi:id="a372a920-9469-4eb9-a26b-1359d850ff9f" body="Represents exceptions raised when a requested service is not supported.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="d5ec5541-ad68-46cb-9cab-e7a42d45ba11"/>
            <generalization xmi:id="28600dcb-86cd-4e25-89d2-054c466bc96d" isSubstitutable="true" general="aae66ef6-d10b-4418-8784-f77f2c87f595"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2bac3378-292a-4cd8-8945-96e795b07dd1" name="InQueryExp" visibility="package" clientDependency="8556b262-c3b0-40a0-b44c-461e220d7b1a">
            <ownedComment xmi:id="8418dc10-a313-4580-8feb-676c337e0d50" body="This class is used by the query-building mechanism to represent binary&#xA;operations.&#xA;@serial include&#xA;&#xA;@since 1.5&#xA;" annotatedElement="2bac3378-292a-4cd8-8945-96e795b07dd1"/>
            <generalization xmi:id="16410e07-93a7-43c1-86e7-77ab01291484" isSubstitutable="true" general="884220a1-d86c-4a9b-b5d1-05725d6e417f"/>
            <interfaceRealization xmi:id="8556b262-c3b0-40a0-b44c-461e220d7b1a" name="" supplier="63bea8af-c5ea-4b3b-87fe-e59aab8370df" client="2bac3378-292a-4cd8-8945-96e795b07dd1" contract="63bea8af-c5ea-4b3b-87fe-e59aab8370df"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="6f54d93e-2aae-4017-b68f-773074b0b288" name="modelmbean">
            <packagedElement xmi:type="uml:Class" xmi:id="cf29bd46-aba4-49de-a9d2-7936008f55cc" name="XMLParseException">
              <ownedComment xmi:id="c74b7c98-fcac-4559-b813-c81ffa181639" body="This exception is thrown when an XML formatted string is being parsed into ModelMBean objects&#xA;or when XML formatted strings are being created from ModelMBean objects.&#xA;&#xA;It is also used to wrapper exceptions from XML parsers that may be used.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="cf29bd46-aba4-49de-a9d2-7936008f55cc"/>
              <generalization xmi:id="5b54ea63-2a13-4696-8733-e2b90844da0d" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5420a9a1-9724-442e-b8d0-2374633c2e03" name="ModelMBeanInfoSupport" clientDependency="7dd14d8e-393a-457b-939c-55671f653036 20c53f95-8d4a-4659-bb0b-5165d0a090f8">
              <ownedComment xmi:id="4d4a8a69-a8ae-4fe3-8b19-e0004ceb6ef2" body="This class represents the meta data for ModelMBeans.  Descriptors have been added on the meta data objects.&#xA;&lt;P>&#xA;Java resources wishing to be manageable instantiate the ModelMBean using the MBeanServer's&#xA;createMBean method.  The resource then sets the ModelMBeanInfo and Descriptors for the ModelMBean&#xA;instance. The attributes and operations exposed via the ModelMBeanInfo for the ModelMBean are accessible&#xA;from MBeans, connectors/adaptors like other MBeans. Through the Descriptors, values and methods in&#xA;the managed application can be defined and mapped to attributes and operations of the ModelMBean.&#xA;This mapping can be defined during development in a file or dynamically and&#xA;programmatically at runtime.&#xA;&lt;P>&#xA;Every ModelMBean which is instantiated in the MBeanServer becomes manageable:&#xA;its attributes and operations&#xA;become remotely accessible through the connectors/adaptors connected to that MBeanServer.&#xA;A Java object cannot be registered in the MBeanServer unless it is a JMX compliant MBean.&#xA;By instantiating a ModelMBean, resources are guaranteed that the MBean is valid.&#xA;&#xA;MBeanException and RuntimeOperationsException must be thrown on every public method.  This allows&#xA;for wrapping exceptions from distributed communications (RMI, EJB, etc.)&#xA;&#xA;@since 1.5&#xA;" annotatedElement="5420a9a1-9724-442e-b8d0-2374633c2e03"/>
              <generalization xmi:id="cfdc6b18-a044-44c0-b12f-5d87a431f98e" isSubstitutable="true" general="f73dc7a0-1d90-48b8-8326-32cb80abeff5"/>
              <interfaceRealization xmi:id="20c53f95-8d4a-4659-bb0b-5165d0a090f8" name="" supplier="2f3adb38-2e76-4418-bfe1-cd7ca2d1638f" client="5420a9a1-9724-442e-b8d0-2374633c2e03" contract="2f3adb38-2e76-4418-bfe1-cd7ca2d1638f"/>
              <interfaceRealization xmi:id="7dd14d8e-393a-457b-939c-55671f653036" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="5420a9a1-9724-442e-b8d0-2374633c2e03" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ff4178bd-04ad-4b40-a574-fb22039447c9" name="DescriptorSupport" clientDependency="daa8f9ac-42ee-4ee6-9fed-fdcc2ac4fc24">
              <ownedComment xmi:id="0d43362d-38d2-4d75-8093-4cee76086790" body="This class represents the metadata set for a ModelMBean element.  A&#xA;descriptor is part of the ModelMBeanInfo,&#xA;ModelMBeanNotificationInfo, ModelMBeanAttributeInfo,&#xA;ModelMBeanConstructorInfo, and ModelMBeanParameterInfo.&#xA;&lt;P>&#xA;A descriptor consists of a collection of fields.  Each field is in&#xA;fieldname=fieldvalue format.  Field names are not case sensitive,&#xA;case will be preserved on field values.&#xA;&lt;P>&#xA;All field names and values are not predefined. New fields can be&#xA;defined and added by any program.  Some fields have been predefined&#xA;for consistency of implementation and support by the&#xA;ModelMBeanInfo, ModelMBeanAttributeInfo, ModelMBeanConstructorInfo,&#xA;ModelMBeanNotificationInfo, ModelMBeanOperationInfo and ModelMBean&#xA;classes.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="ff4178bd-04ad-4b40-a574-fb22039447c9"/>
              <interfaceRealization xmi:id="daa8f9ac-42ee-4ee6-9fed-fdcc2ac4fc24" name="" supplier="3eaace4e-1965-4727-9ab5-be1761c0f942" client="ff4178bd-04ad-4b40-a574-fb22039447c9" contract="3eaace4e-1965-4727-9ab5-be1761c0f942"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="1b67a011-943d-4ef2-bdcd-ac215d88cd60" name="CaseIgnoreString" visibility="private"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="383ea63b-1bc9-45af-ac61-0496a7d5a118" name="RequiredModelMBean" clientDependency="f2469d66-fa20-461f-9c10-ccc0c3e5388d 606d78af-beb0-4cff-997a-c0f71ac6c6d0 22cebc81-aad2-403c-89ff-4fa592726ecd">
              <ownedComment xmi:id="bd63917e-5dec-427e-a358-d2217526a664" body="This class is the implementation of a ModelMBean. An appropriate&#xA;implementation of a ModelMBean must be shipped with every JMX Agent&#xA;and the class must be named RequiredModelMBean.&#xA;&lt;P>&#xA;Java resources wishing to be manageable instantiate the&#xA;RequiredModelMBean using the MBeanServer's createMBean method.&#xA;The resource then sets the MBeanInfo and Descriptors for the&#xA;RequiredModelMBean instance. The attributes and operations exposed&#xA;via the ModelMBeanInfo for the ModelMBean are accessible&#xA;from MBeans, connectors/adaptors like other MBeans. Through the&#xA;Descriptors, values and methods in the managed application can be&#xA;defined and mapped to attributes and operations of the ModelMBean.&#xA;This mapping can be defined in an XML formatted file or dynamically and&#xA;programmatically at runtime.&#xA;&lt;P>&#xA;Every RequiredModelMBean which is instantiated in the MBeanServer&#xA;becomes manageable:&lt;br>&#xA;its attributes and operations become remotely accessible through the&#xA;connectors/adaptors connected to that MBeanServer.&#xA;&lt;P>&#xA;A Java object cannot be registered in the MBeanServer unless it is a&#xA;JMX compliant MBean. By instantiating a RequiredModelMBean, resources&#xA;are guaranteed that the MBean is valid.&#xA;&#xA;MBeanException and RuntimeOperationsException must be thrown on every&#xA;public method.  This allows for wrapping exceptions from distributed&#xA;communications (RMI, EJB, etc.)&#xA;&#xA;@since 1.5&#xA;" annotatedElement="383ea63b-1bc9-45af-ac61-0496a7d5a118"/>
              <interfaceRealization xmi:id="606d78af-beb0-4cff-997a-c0f71ac6c6d0" name="" supplier="85248947-b931-4930-88a8-ff937b2d8f7b" client="383ea63b-1bc9-45af-ac61-0496a7d5a118" contract="85248947-b931-4930-88a8-ff937b2d8f7b"/>
              <interfaceRealization xmi:id="22cebc81-aad2-403c-89ff-4fa592726ecd" name="" supplier="3019d5cd-2bcd-410d-a5e7-fa278098becf" client="383ea63b-1bc9-45af-ac61-0496a7d5a118" contract="3019d5cd-2bcd-410d-a5e7-fa278098becf"/>
              <interfaceRealization xmi:id="f2469d66-fa20-461f-9c10-ccc0c3e5388d" name="" supplier="0b63085c-be9b-4448-8775-c18e28a39817" client="383ea63b-1bc9-45af-ac61-0496a7d5a118" contract="0b63085c-be9b-4448-8775-c18e28a39817"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="2f3adb38-2e76-4418-bfe1-cd7ca2d1638f" name="ModelMBeanInfo" isAbstract="true">
              <ownedComment xmi:id="cf9c4daf-2a69-4575-9fce-3df13dba5691" body="This interface is implemented by the ModelMBeanInfo for every ModelMBean. An implementation of this interface&#xA;must be shipped with every JMX Agent.&#xA;&lt;P>&#xA;Java resources wishing to be manageable instantiate the ModelMBean using the MBeanServer's&#xA;createMBean method.  The resource then sets the ModelMBeanInfo and Descriptors for the ModelMBean&#xA;instance. The attributes, operations, and notifications exposed via the ModelMBeanInfo for the&#xA;ModelMBean comprise the management interface and are accessible&#xA;from MBeans, connectors/adaptors like other MBeans. Through the Descriptors, values and methods in&#xA;the managed application can be defined and mapped to attributes and operations of the ModelMBean.&#xA;This mapping can be defined during development in a file or dynamically and&#xA;programmatically at runtime.&#xA;&lt;P>&#xA;Every ModelMBean which is instantiated in the MBeanServer becomes manageable:&#xA;its attributes, operations, and notifications&#xA;become remotely accessible through the connectors/adaptors connected to that MBeanServer.&#xA;A Java object cannot be registered in the MBeanServer unless it is a JMX compliant MBean.&#xA;By instantiating a ModelMBean, resources are guaranteed that the MBean is valid.&#xA;&#xA;MBeanException and RuntimeOperationsException must be thrown on every public method.  This allows&#xA;for wrapping exceptions from distributed communications (RMI, EJB, etc.)&#xA;&#xA;@since 1.5&#xA;" annotatedElement="2f3adb38-2e76-4418-bfe1-cd7ca2d1638f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b97d186b-2174-4108-8207-0dd8010d7e4d" name="ModelMBeanConstructorInfo" clientDependency="6164ad9b-4924-4477-943c-6f32d30029a7 1bc02d75-47ea-4465-8371-f9b033781461">
              <ownedComment xmi:id="5792b4bf-e717-477e-a2ac-3ab8d9224dce" body="The ModelMBeanConstructorInfo object describes a constructor of the ModelMBean.&#xA;It is a subclass of MBeanConstructorInfo with the addition of an associated Descriptor&#xA;and an implementation of the DescriptorAccess interface.&#xA;&lt;P>&#xA;&lt;PRE>&#xA;The fields in the descriptor are defined, but not limited to, the following: &lt;P>&#xA;name           : constructor name&#xA;descriptorType : must be &quot;operation&quot;&#xA;role           : must be &quot;constructor&quot;&#xA;displayName    : human readable name of constructor&#xA;visibility            : 1-4 where 1: always visible 4: rarely visible&#xA;presentationString :  xml formatted string to describe how to present operation&#xA;&lt;/PRE>&#xA;The persistPolicy and currencyTimeLimit fields are not valid for the constructor.&#xA;The default descriptor will have the name, descriptorType, displayName and role fields.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="b97d186b-2174-4108-8207-0dd8010d7e4d"/>
              <generalization xmi:id="de371d66-1d17-472b-a52d-a7131eaeab7d" isSubstitutable="true" general="2deb6e2c-05ad-4cc3-94a0-c82559168ed7"/>
              <interfaceRealization xmi:id="6164ad9b-4924-4477-943c-6f32d30029a7" name="" supplier="2a4cd2f2-78e8-4f33-a5c6-7f909214f036" client="b97d186b-2174-4108-8207-0dd8010d7e4d" contract="2a4cd2f2-78e8-4f33-a5c6-7f909214f036"/>
              <interfaceRealization xmi:id="1bc02d75-47ea-4465-8371-f9b033781461" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="b97d186b-2174-4108-8207-0dd8010d7e4d" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="85248947-b931-4930-88a8-ff937b2d8f7b" name="ModelMBean" isAbstract="true">
              <ownedComment xmi:id="6565400e-b048-4823-8c81-607e903930d4" body="This interface must be implemented by the ModelMBeans. An implementation of this interface&#xA;must be shipped with every JMX Agent.&#xA;&lt;P>&#xA;Java resources wishing to be manageable instantiate the ModelMBean using the MBeanServer's&#xA;createMBean method.  The resource then sets the ModelMBeanInfo (with Descriptors) for the ModelMBean&#xA;instance. The attributes and operations exposed via the ModelMBeanInfo for the ModelMBean are accessible&#xA;from MBeans, connectors/adaptors like other MBeans. Through the ModelMBeanInfo Descriptors, values and methods in&#xA;the managed application can be defined and mapped to attributes and operations of the ModelMBean.&#xA;This mapping can be defined during development in an XML formatted file or dynamically and&#xA;programmatically at runtime.&#xA;&lt;P>&#xA;Every ModelMBean which is instantiated in the MBeanServer becomes manageable:&#xA;its attributes and operations&#xA;become remotely accessible through the connectors/adaptors connected to that MBeanServer.&#xA;A Java object cannot be registered in the MBeanServer unless it is a JMX compliant MBean.&#xA;By instantiating a ModelMBean, resources are guaranteed that the MBean is valid.&#xA;&lt;P>&#xA;MBeanException and RuntimeOperationsException must be thrown on every public method.  This allows&#xA;for wrapping exceptions from distributed communications (RMI, EJB, etc.).  These exceptions do&#xA;not have to be thrown by the implementation except in the scenarios described in the specification&#xA;and javadoc.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="85248947-b931-4930-88a8-ff937b2d8f7b"/>
              <generalization xmi:id="e48059d2-f9e0-47cf-ba44-1b93abc044eb" isSubstitutable="true" general="f3e1f5d3-bee0-4d5e-b90f-cd5730c16f0d"/>
              <generalization xmi:id="42a6913c-6fe5-4e2b-b220-6a979e7c3a6b" isSubstitutable="true" general="da947d96-e62a-49e4-b4fc-07eed1b56c59"/>
              <generalization xmi:id="66f1d991-5b3e-4c9f-9f3d-911cd104894e" isSubstitutable="true" general="b74b11c4-f8db-4eed-99b8-d6463be4b549"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="db8fe25f-c833-4aa3-bc94-2039e63d75dd" name="ModelMBeanAttributeInfo" clientDependency="ae8d1bef-36cb-4488-a332-28c007143d43 4f570458-631f-43db-bf02-1de77be1dd62">
              <ownedComment xmi:id="10a588bd-be53-49a3-b638-03ec6bf2f9b8" body="The ModelMBeanAttributeInfo object describes an attribute of the ModelMBean.&#xA;It is a subclass of MBeanAttributeInfo with the addition of an associated Descriptor&#xA;and an implementation of the DescriptorAccess interface.&#xA;&lt;P>&#xA;The fields in the descriptor are defined, but not limited to, the following: &lt;P>&#xA;&lt;PRE>&#xA;name           : attribute name&#xA;descriptorType : must be &quot;attribute&quot;&#xA;value          : current value for attribute&#xA;default        : default value for attribute&#xA;displayName    : name of attribute to be used in displays&#xA;getMethod      : name of operation descriptor for get method&#xA;setMethod      : name of operation descriptor for set method&#xA;protocolMap    : object which implements the Descriptor interface: mappings must be appropriate for the attribute&#xA;and entries can be updated or augmented at runtime.&#xA;persistPolicy  : OnUpdate|OnTimer|NoMoreOftenThan|Always|Never&#xA;persistPeriod  : seconds - frequency of persist cycle. Used when persistPolicy is&quot;OnTimer&quot; or &quot;NoMoreOftenThan&quot;.&#xA;currencyTimeLimit : how long value is valid, &lt;0 never, =0 always, >0 seconds&#xA;lastUpdatedTimeStamp : when value was set&#xA;visibility     : 1-4 where 1: always visible 4: rarely visible&#xA;presentationString : xml formatted string to allow presentation of data&#xA;&lt;/PRE>&#xA;The default descriptor contains the name, descriptorType and displayName fields.&#xA;&#xA;&lt;p>&lt;b>Note:&lt;/b> because of inconsistencies in previous versions of&#xA;this specification, it is recommended not to use negative or zero&#xA;values for &lt;code>currencyTimeLimit&lt;/code>.  To indicate that a&#xA;cached value is never valid, omit the&#xA;&lt;code>currencyTimeLimit&lt;/code> field.  To indicate that it is&#xA;always valid, use a very large number for this field.&lt;/p>&#xA;&#xA;@since 1.5&#xA;" annotatedElement="db8fe25f-c833-4aa3-bc94-2039e63d75dd"/>
              <generalization xmi:id="cdb02305-3ec2-42d8-8565-fa1409cc1f47" isSubstitutable="true" general="86d082b1-fee3-4083-9d15-3d2c323de3bd"/>
              <interfaceRealization xmi:id="ae8d1bef-36cb-4488-a332-28c007143d43" name="" supplier="2a4cd2f2-78e8-4f33-a5c6-7f909214f036" client="db8fe25f-c833-4aa3-bc94-2039e63d75dd" contract="2a4cd2f2-78e8-4f33-a5c6-7f909214f036"/>
              <interfaceRealization xmi:id="4f570458-631f-43db-bf02-1de77be1dd62" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="db8fe25f-c833-4aa3-bc94-2039e63d75dd" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="b74b11c4-f8db-4eed-99b8-d6463be4b549" name="ModelMBeanNotificationBroadcaster" isAbstract="true">
              <ownedComment xmi:id="ba31674f-9809-497c-a619-a3e3d9d2072a" body="This interface must be implemented by the ModelMBeans. An implementation of this interface&#xA;must be shipped with every JMX Agent.&#xA;&lt;P>&#xA;Java resources wishing to be manageable instantiate the ModelMBean using the MBeanServer's&#xA;createMBean method.  The resource then sets the ModelMBeanInfo (with Descriptors) for the ModelMBean&#xA;instance. The attributes and operations exposed via the ModelMBeanInfo for the ModelMBean are accessible&#xA;from MBeans, connectors/adaptors like other MBeans. Through the ModelMBeanInfo Descriptors, values and methods in&#xA;the managed application can be defined and mapped to attributes and operations of the ModelMBean.&#xA;This mapping can be defined during development in an XML formatted file or dynamically and&#xA;programmatically at runtime.&#xA;&lt;P>&#xA;Every ModelMBean which is instantiated in the MBeanServer becomes manageable:&#xA;its attributes and operations&#xA;become remotely accessible through the connectors/adaptors connected to that MBeanServer.&#xA;A Java object cannot be registered in the MBeanServer unless it is a JMX compliant MBean.&#xA;By instantiating a ModelMBean, resources are guaranteed that the MBean is valid.&#xA;&lt;P>&#xA;MBeanException and RuntimeOperationsException must be thrown on every public method.  This allows&#xA;for wrapping exceptions from distributed communications (RMI, EJB, etc.).  These exceptions do&#xA;not have to be thrown by the implementation except in the scenarios described in the specification&#xA;and javadoc.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="b74b11c4-f8db-4eed-99b8-d6463be4b549"/>
              <generalization xmi:id="25689788-246a-4c1e-81d6-039fac767daf" isSubstitutable="true" general="02730453-ef05-4b39-9009-55ce1e2addfd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="619a66a3-e0d1-4f2f-9996-443c94e4a7ae" name="ModelMBeanNotificationInfo" clientDependency="e0c771cc-307a-40bd-8ae5-cdeceb600fa9 c437210e-e044-4b90-8703-a2c84ab90cdb">
              <ownedComment xmi:id="6fb2566b-6819-4400-8403-8bd8329c7fef" body="The ModelMBeanNotificationInfo object describes a notification emitted&#xA;by a ModelMBean.&#xA;It is a subclass of MBeanNotificationInfo with the addition of an&#xA;associated Descriptor and an implementation of the Descriptor interface.&#xA;&lt;P>&#xA;The fields in the descriptor are defined, but not limited to,&#xA;the following:&#xA;&lt;PRE>&#xA;name           : notification name&#xA;descriptorType : must be &quot;notification&quot;&#xA;severity       : 0-6 where 0: unknown; 1: non-recoverable;&#xA;2: critical, failure; 3: major, severe;&#xA;4: minor, marginal, error; 5: warning;&#xA;6: normal, cleared, informative&#xA;messageID      : unique key for message text (to allow translation,&#xA;analysis)&#xA;messageText    : text of notification&#xA;log            : T - log message F - do not log message&#xA;logfile        : string fully qualified file name appropriate for&#xA;operating system&#xA;visibility     : 1-4 where 1: always visible 4: rarely visible&#xA;presentationString : xml formatted string to allow presentation of data&#xA;&lt;/PRE>&#xA;The default descriptor contains the name, descriptorType, displayName&#xA;and severity(=6) fields.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="619a66a3-e0d1-4f2f-9996-443c94e4a7ae"/>
              <generalization xmi:id="afdb9fc7-c851-4164-a931-539ba4bdeac8" isSubstitutable="true" general="d18bfb2c-c52b-4f0d-988a-951ec17b8a8e"/>
              <interfaceRealization xmi:id="c437210e-e044-4b90-8703-a2c84ab90cdb" name="" supplier="2a4cd2f2-78e8-4f33-a5c6-7f909214f036" client="619a66a3-e0d1-4f2f-9996-443c94e4a7ae" contract="2a4cd2f2-78e8-4f33-a5c6-7f909214f036"/>
              <interfaceRealization xmi:id="e0c771cc-307a-40bd-8ae5-cdeceb600fa9" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="619a66a3-e0d1-4f2f-9996-443c94e4a7ae" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="216115f3-871a-4c96-82c1-73bcc7373b23" name="InvalidTargetObjectTypeException">
              <ownedComment xmi:id="4ca44561-03dd-47d1-84fc-991380e63a94" body="Exception thrown when an invalid target object type is specified.&#xA;&#xA;&#xA;@since 1.5&#xA;" annotatedElement="216115f3-871a-4c96-82c1-73bcc7373b23"/>
              <generalization xmi:id="334de07a-e4a2-40f4-ad2e-0a1c24d67023" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="da82b493-b560-4375-bd1c-c179a9cc5650" name="ModelMBeanOperationInfo" clientDependency="0912a049-0dd8-4f3a-b8a4-cca32da90d6f">
              <ownedComment xmi:id="375b2280-42ec-469c-b6ba-2bea5424b1ff" body="The ModelMBeanOperationInfo object describes a management operation of the ModelMBean.&#xA;It is a subclass of MBeanOperationInfo with the addition of an associated Descriptor&#xA;and an implementation of the DescriptorAccess interface.&#xA;&lt;P>&#xA;&lt;PRE>&#xA;The fields in the descriptor are defined, but not limited to, the following:&#xA;name           : operation name&#xA;descriptorType : must be &quot;operation&quot;&#xA;class          : class where method is defined (fully qualified)&#xA;role           : must be &quot;operation&quot;, &quot;getter&quot;, or &quot;setter&#xA;targetObject   : object on which to execute this method&#xA;targetType     : type of object reference for targetObject. Can be: ObjectReference | Handle | EJBHandle | IOR | RMIReference.&#xA;value          : cached value for operation&#xA;currencyTimeLimit : how long cached value is valid&#xA;lastUpdatedTimeStamp : when cached value was set&#xA;visibility            : 1-4 where 1: always visible 4: rarely visible&#xA;presentationString :  xml formatted string to describe how to present operation&#xA;&lt;/PRE>&#xA;The default descriptor will have name, descriptorType, displayName and role fields set.&#xA;&#xA;&lt;p>&lt;b>Note:&lt;/b> because of inconsistencies in previous versions of&#xA;this specification, it is recommended not to use negative or zero&#xA;values for &lt;code>currencyTimeLimit&lt;/code>.  To indicate that a&#xA;cached value is never valid, omit the&#xA;&lt;code>currencyTimeLimit&lt;/code> field.  To indicate that it is&#xA;always valid, use a very large number for this field.&lt;/p>&#xA;&#xA;@since 1.5&#xA;" annotatedElement="da82b493-b560-4375-bd1c-c179a9cc5650"/>
              <generalization xmi:id="388bb5b9-754b-4c56-8ec9-5f12029bea61" isSubstitutable="true" general="bb328e1f-3851-4767-8446-7de93582ffed"/>
              <interfaceRealization xmi:id="0912a049-0dd8-4f3a-b8a4-cca32da90d6f" name="" supplier="2a4cd2f2-78e8-4f33-a5c6-7f909214f036" client="da82b493-b560-4375-bd1c-c179a9cc5650" contract="2a4cd2f2-78e8-4f33-a5c6-7f909214f036"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="2a4cd2f2-78e8-4f33-a5c6-7f909214f036" name="DescriptorAccess" isAbstract="true">
            <ownedComment xmi:id="17f61367-20d6-4bfc-838a-0c706fdae100" body="This interface is used to gain access to descriptors of the Descriptor class&#xA;which are associated with a JMX component, i.e. MBean, MBeanInfo,&#xA;MBeanAttributeInfo, MBeanNotificationInfo,&#xA;MBeanOperationInfo, MBeanParameterInfo.&#xA;&lt;P>&#xA;ModelMBeans make extensive use of this interface in ModelMBeanInfo classes.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="2a4cd2f2-78e8-4f33-a5c6-7f909214f036"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="5dee231c-7278-4911-97fc-7b8e09074a38" name="MBeanServer" isAbstract="true">
            <ownedComment xmi:id="98dcf688-a9ec-4f2f-b640-19e43831799d" body="&lt;p>This is the interface for MBean manipulation on the agent&#xA;side. It contains the methods necessary for the creation,&#xA;registration, and deletion of MBeans as well as the access methods&#xA;for registered MBeans.  This is the core component of the JMX&#xA;infrastructure.&lt;/p>&#xA;&#xA;&lt;p>User code does not usually implement this interface.  Instead,&#xA;an object that implements this interface is obtained with one of&#xA;the methods in the {@link MBeanServerFactory} class.&lt;/p>&#xA;&#xA;&lt;p>Every MBean which is added to the MBean server becomes&#xA;manageable: its attributes and operations become remotely&#xA;accessible through the connectors/adaptors connected to that MBean&#xA;server.  A Java object cannot be registered in the MBean server&#xA;unless it is a JMX compliant MBean.&lt;/p>&#xA;&#xA;&lt;p>When an MBean is registered or unregistered in the MBean server&#xA;a {@link javax.management.MBeanServerNotification&#xA;MBeanServerNotification} Notification is emitted. To register an&#xA;object as listener to MBeanServerNotifications you should call the&#xA;MBean server method {@link #addNotificationListener&#xA;addNotificationListener} with &lt;CODE>ObjectName&lt;/CODE> the&#xA;&lt;CODE>ObjectName&lt;/CODE> of the {@link&#xA;javax.management.MBeanServerDelegate MBeanServerDelegate}.  This&#xA;&lt;CODE>ObjectName&lt;/CODE> is: &lt;BR>&#xA;&lt;CODE>JMImplementation:type=MBeanServerDelegate&lt;/CODE>.&lt;/p>&#xA;&#xA;&lt;p>An object obtained from the {@link&#xA;MBeanServerFactory#createMBeanServer(String) createMBeanServer} or&#xA;{@link MBeanServerFactory#newMBeanServer(String) newMBeanServer}&#xA;methods of the {@link MBeanServerFactory} class applies security&#xA;checks to its methods, as follows.&lt;/p>&#xA;&#xA;&lt;p>First, if there is no security manager ({@link&#xA;System#getSecurityManager()} is null), then no checks are made.&lt;/p>&#xA;&#xA;&lt;p>Assuming there is a security manager, the checks are made as&#xA;detailed below.  In what follows, &lt;code>className&lt;/code> is the&#xA;string returned by {@link MBeanInfo#getClassName()} for the target&#xA;MBean.&lt;/p>&#xA;&#xA;&lt;p>If a security check fails, the method throws {@link&#xA;SecurityException}.&lt;/p>&#xA;&#xA;&lt;p>For methods that can throw {@link InstanceNotFoundException},&#xA;this exception is thrown for a non-existent MBean, regardless of&#xA;permissions.  This is because a non-existent MBean has no&#xA;&lt;code>className&lt;/code>.&lt;/p>&#xA;&#xA;&lt;ul>&#xA;&#xA;&lt;li>&lt;p>For the {@link #invoke invoke} method, the caller's&#xA;permissions must imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(className, operationName, name, &quot;invoke&quot;)}.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the {@link #getAttribute getAttribute} method, the&#xA;caller's permissions must imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(className, attribute, name, &quot;getAttribute&quot;)}.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the {@link #getAttributes getAttributes} method, the&#xA;caller's permissions must imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(className, null, name, &quot;getAttribute&quot;)}.&#xA;Additionally, for each attribute &lt;em>a&lt;/em> in the {@link&#xA;AttributeList}, if the caller's permissions do not imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(className, &lt;em>a&lt;/em>, name, &quot;getAttribute&quot;)}, the&#xA;MBean server will behave as if that attribute had not been in the&#xA;supplied list.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the {@link #setAttribute setAttribute} method, the&#xA;caller's permissions must imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(className, attrName, name, &quot;setAttribute&quot;)}, where&#xA;&lt;code>attrName&lt;/code> is {@link Attribute#getName()&#xA;attribute.getName()}.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the {@link #setAttributes setAttributes} method, the&#xA;caller's permissions must imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(className, null, name, &quot;setAttribute&quot;)}.&#xA;Additionally, for each attribute &lt;em>a&lt;/em> in the {@link&#xA;AttributeList}, if the caller's permissions do not imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(className, &lt;em>a&lt;/em>, name, &quot;setAttribute&quot;)}, the&#xA;MBean server will behave as if that attribute had not been in the&#xA;supplied list.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the &lt;code>addNotificationListener&lt;/code> methods,&#xA;the caller's permissions must imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(className, null, name,&#xA;&quot;addNotificationListener&quot;)}.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the &lt;code>removeNotificationListener&lt;/code> methods,&#xA;the caller's permissions must imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(className, null, name,&#xA;&quot;removeNotificationListener&quot;)}.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the {@link #getMBeanInfo getMBeanInfo} method, the&#xA;caller's permissions must imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(className, null, name, &quot;getMBeanInfo&quot;)}.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the {@link #getObjectInstance getObjectInstance} method,&#xA;the caller's permissions must imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(className, null, name, &quot;getObjectInstance&quot;)}.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the {@link #isInstanceOf isInstanceOf} method, the&#xA;caller's permissions must imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(className, null, name, &quot;isInstanceOf&quot;)}.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the {@link #queryMBeans queryMBeans} method, the&#xA;caller's permissions must imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(null, null, name, &quot;queryMBeans&quot;)}.&#xA;Additionally, for each MBean that matches &lt;code>name&lt;/code>,&#xA;if the caller's permissions do not imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(className, null, name, &quot;queryMBeans&quot;)}, the&#xA;MBean server will behave as if that MBean did not exist.&lt;/p>&#xA;&#xA;&lt;p>Certain query elements perform operations on the MBean server.&#xA;If the caller does not have the required permissions for a given&#xA;MBean, that MBean will not be included in the result of the query.&#xA;The standard query elements that are affected are {@link&#xA;Query#attr(String)}, {@link Query#attr(String,String)}, and {@link&#xA;Query#classattr()}.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the {@link #queryNames queryNames} method, the checks&#xA;are the same as for &lt;code>queryMBeans&lt;/code> except that&#xA;&lt;code>&quot;queryNames&quot;&lt;/code> is used instead of&#xA;&lt;code>&quot;queryMBeans&quot;&lt;/code> in the &lt;code>MBeanPermission&lt;/code>&#xA;objects.  Note that a &lt;code>&quot;queryMBeans&quot;&lt;/code> permission implies&#xA;the corresponding &lt;code>&quot;queryNames&quot;&lt;/code> permission.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the {@link #getDomains getDomains} method, the caller's&#xA;permissions must imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(null, null, name, &quot;getDomains&quot;)}.  Additionally,&#xA;for each domain &lt;var>d&lt;/var> in the returned array, if the caller's&#xA;permissions do not imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(null, null, new ObjectName(&quot;&lt;var>d&lt;/var>:x=x&quot;),&#xA;&quot;getDomains&quot;)}, the domain is eliminated from the array.  Here,&#xA;&lt;code>x=x&lt;/code> is any &lt;var>key=value&lt;/var> pair, needed to&#xA;satisfy ObjectName's constructor but not otherwise relevant.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the {@link #getClassLoader getClassLoader} method, the&#xA;caller's permissions must imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(className, null, loaderName,&#xA;&quot;getClassLoader&quot;)}.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the {@link #getClassLoaderFor getClassLoaderFor} method,&#xA;the caller's permissions must imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(className, null, mbeanName,&#xA;&quot;getClassLoaderFor&quot;)}.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the {@link #getClassLoaderRepository&#xA;getClassLoaderRepository} method, the caller's permissions must&#xA;imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(null, null, null, &quot;getClassLoaderRepository&quot;)}.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the deprecated &lt;code>deserialize&lt;/code> methods, the&#xA;required permissions are the same as for the methods that replace&#xA;them.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the &lt;code>instantiate&lt;/code> methods, the caller's&#xA;permissions must imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(className, null, null, &quot;instantiate&quot;)}.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the {@link #registerMBean registerMBean} method, the&#xA;caller's permissions must imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(className, null, name, &quot;registerMBean&quot;)}.  Here&#xA;&lt;code>className&lt;/code> is the string returned by {@link&#xA;MBeanInfo#getClassName()} for an object of this class.&#xA;&#xA;&lt;p>If the &lt;code>MBeanPermission&lt;/code> check succeeds, the MBean's&#xA;class is validated by checking that its {@link&#xA;java.security.ProtectionDomain ProtectionDomain} implies {@link&#xA;MBeanTrustPermission#MBeanTrustPermission(String)&#xA;MBeanTrustPermission(&quot;register&quot;)}.&lt;/p>&#xA;&#xA;&lt;p>Finally, if the &lt;code>name&lt;/code> argument is null, another&#xA;&lt;code>MBeanPermission&lt;/code> check is made using the&#xA;&lt;code>ObjectName&lt;/code> returned by {@link&#xA;MBeanRegistration#preRegister MBeanRegistration.preRegister}.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the &lt;code>createMBean&lt;/code> methods, the caller's&#xA;permissions must imply the permissions needed by the equivalent&#xA;&lt;code>instantiate&lt;/code> followed by&#xA;&lt;code>registerMBean&lt;/code>.&lt;/p>&#xA;&#xA;&lt;li>&lt;p>For the {@link #unregisterMBean unregisterMBean} method,&#xA;the caller's permissions must imply {@link&#xA;MBeanPermission#MBeanPermission(String,String,ObjectName,String)&#xA;MBeanPermission(className, null, name, &quot;unregisterMBean&quot;)}.&lt;/p>&#xA;&#xA;&lt;/ul>&#xA;&#xA;@since 1.5&#xA;" annotatedElement="5dee231c-7278-4911-97fc-7b8e09074a38"/>
            <generalization xmi:id="1c69ef46-f72b-4745-8ecb-2eafa7b263cd" isSubstitutable="true" general="d65f178c-97eb-443f-a485-7bf90d11090a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="033d5623-cc88-4659-a7bf-cee72841d8a5" name="DefaultLoaderRepository">
            <ownedComment xmi:id="54630cc9-ffa2-412b-9e8d-4c02415859cd" body="&lt;p>Keeps the list of Class Loaders registered in the MBean Server.&#xA;It provides the necessary methods to load classes using the registered&#xA;Class Loaders.&lt;/p>&#xA;&#xA;&lt;p>This deprecated class is maintained for compatibility.  In&#xA;previous versions of the JMX API, there was one&#xA;&lt;code>DefaultLoaderRepository&lt;/code> shared by all MBean servers.&#xA;As of version 1.2 of the JMX API, that functionality is&#xA;approximated by using {@link MBeanServerFactory#findMBeanServer} to&#xA;find all known MBean servers, and consulting the {@link&#xA;ClassLoaderRepository} of each one.  It is strongly recommended&#xA;that code referencing &lt;code>DefaultLoaderRepository&lt;/code> be&#xA;rewritten.&lt;/p>&#xA;&#xA;@deprecated Use&#xA;{@link javax.management.MBeanServer#getClassLoaderRepository()}&#xA;instead.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="033d5623-cc88-4659-a7bf-cee72841d8a5"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a699d660-24db-4b4a-817f-41a4eb1112a8" name="MBeanParameterInfo" clientDependency="e60b3b64-a44a-4eba-8b52-ab98afdea917 88934c0f-fac3-42aa-aac0-8ec0a8be2ab9">
            <ownedComment xmi:id="01760030-e140-4a00-a27f-664050274536" body="Describes an argument of an operation exposed by an MBean.&#xA;Instances of this class are immutable.  Subclasses may be mutable&#xA;but this is not recommended.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="a699d660-24db-4b4a-817f-41a4eb1112a8"/>
            <generalization xmi:id="e11a1a4d-5a85-48a4-8438-7659167f8870" isSubstitutable="true" general="1622d866-591b-4a08-ace2-ed7c4952a6a0"/>
            <interfaceRealization xmi:id="88934c0f-fac3-42aa-aac0-8ec0a8be2ab9" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="a699d660-24db-4b4a-817f-41a4eb1112a8" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="e60b3b64-a44a-4eba-8b52-ab98afdea917" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="a699d660-24db-4b4a-817f-41a4eb1112a8" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6a8199d1-b549-413b-97fb-2fce6a429c29" name="JMException">
            <ownedComment xmi:id="54bdcd8b-a01c-4f29-a6c0-1c33ce21eaba" body="Exceptions thrown by JMX implementations.&#xA;It does not include the runtime exceptions.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="6a8199d1-b549-413b-97fb-2fce6a429c29"/>
            <generalization xmi:id="5f1dc01f-8b1a-4f5a-a8f1-acf52b82e474" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7d16273d-7e47-4e63-ae3f-d194cc82bd11" name="MBeanServerPermission">
            <ownedComment xmi:id="2db98be5-3c75-4b9f-8fdc-444f5202d7c4" body="A Permission to perform actions related to MBeanServers.&#xA;The &lt;em>name&lt;/em> of the permission specifies the operation requested&#xA;or granted by the permission.  For a granted permission, it can be&#xA;&lt;code>*&lt;/code> to allow all of the MBeanServer operations specified below.&#xA;Otherwise, for a granted or requested permission, it must be one of the&#xA;following:&#xA;&lt;dl>&#xA;&lt;dt>createMBeanServer&lt;/dt>&#xA;&lt;dd>Create a new MBeanServer object using the method&#xA;{@link MBeanServerFactory#createMBeanServer()} or&#xA;{@link MBeanServerFactory#createMBeanServer(java.lang.String)}.&#xA;&lt;dt>findMBeanServer&lt;/dt>&#xA;&lt;dd>Find an MBeanServer with a given name, or all MBeanServers in this&#xA;JVM, using the method {@link MBeanServerFactory#findMBeanServer}.&#xA;&lt;dt>newMBeanServer&lt;/dt>&#xA;&lt;dd>Create a new MBeanServer object without keeping a reference to it,&#xA;using the method {@link MBeanServerFactory#newMBeanServer()} or&#xA;{@link MBeanServerFactory#newMBeanServer(java.lang.String)}.&#xA;&lt;dt>releaseMBeanServer&lt;/dt>&#xA;&lt;dd>Remove the MBeanServerFactory's reference to an MBeanServer,&#xA;using the method {@link MBeanServerFactory#releaseMBeanServer}.&#xA;&lt;/dl>&#xA;The &lt;em>name&lt;/em> of the permission can also denote a list of one or more&#xA;comma-separated operations.  Spaces are allowed at the beginning and&#xA;end of the &lt;em>name&lt;/em> and before and after commas.&#xA;&lt;p>&#xA;&lt;code>MBeanServerPermission(&quot;createMBeanServer&quot;)&lt;/code> implies&#xA;&lt;code>MBeanServerPermission(&quot;newMBeanServer&quot;)&lt;/code>.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="7d16273d-7e47-4e63-ae3f-d194cc82bd11"/>
            <generalization xmi:id="946843d2-dac3-43fb-b6a9-f31a7df0b641" isSubstitutable="true" general="4831e368-c670-40b4-87bd-a8a910a528fa"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="185f208a-43d9-48c3-8a58-f987d0a27ebb" name="openmbean">
            <packagedElement xmi:type="uml:Class" xmi:id="3626ba47-8713-4e57-b15e-895ae79878c4" name="OpenType" clientDependency="e0b240e5-cd6f-48a8-b9d7-1204c37545e0" isAbstract="true">
              <ownedComment xmi:id="75f819ca-836a-4630-931f-d5909055cef0" body="The &lt;code>OpenType&lt;/code> class is the parent abstract class of all classes which describe the actual &lt;i>open type&lt;/i>&#xA;of open data values.&#xA;&lt;p>&#xA;An &lt;i>open type&lt;/i> is defined by:&#xA;&lt;ul>&#xA;&lt;li>the fully qualified Java class name of the open data values this type describes;&#xA;note that only a limited set of Java classes is allowed for open data values&#xA;(see {@link #ALLOWED_CLASSNAMES ALLOWED_CLASSNAMES}),&lt;/li>&#xA;&lt;li>its name,&lt;/li>&#xA;&lt;li>its description.&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;@version     3.27  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="3626ba47-8713-4e57-b15e-895ae79878c4"/>
              <interfaceRealization xmi:id="e0b240e5-cd6f-48a8-b9d7-1204c37545e0" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="3626ba47-8713-4e57-b15e-895ae79878c4" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ffdf7eca-cf81-448b-828f-8f14cb95e76d" name="CompositeType" clientDependency="c839d8f3-1dfe-415e-b109-166d0aaf295b">
              <ownedComment xmi:id="18eacbea-ed0b-46ef-ac55-3c1aacde4f0d" body="The &lt;code>CompositeType&lt;/code> class is the &lt;i>open type&lt;/i> class&#xA;whose instances describe the types of {@link CompositeData &lt;code>CompositeData&lt;/code>} values.&#xA;&#xA;@version     3.25  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="ffdf7eca-cf81-448b-828f-8f14cb95e76d"/>
              <generalization xmi:id="808075ec-611a-4bf5-96a3-e71c1377a2b1" isSubstitutable="true" general="3626ba47-8713-4e57-b15e-895ae79878c4"/>
              <interfaceRealization xmi:id="c839d8f3-1dfe-415e-b109-166d0aaf295b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ffdf7eca-cf81-448b-828f-8f14cb95e76d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="18ecce67-c831-4dcf-93e5-fbf0f7e76124" name="OpenMBeanConstructorInfoSupport" clientDependency="7a0089b1-71cc-4801-911d-5cabf1dca30e 74d67451-853b-4b22-85e2-8761de8caa17">
              <ownedComment xmi:id="71951ccb-73e2-4f8b-b49f-02231fabcaa6" body="Describes a constructor of an Open MBean.&#xA;&#xA;@version     3.22  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="18ecce67-c831-4dcf-93e5-fbf0f7e76124"/>
              <generalization xmi:id="55968fe4-6407-4693-a561-84b36346c499" isSubstitutable="true" general="2deb6e2c-05ad-4cc3-94a0-c82559168ed7"/>
              <interfaceRealization xmi:id="7a0089b1-71cc-4801-911d-5cabf1dca30e" name="" supplier="ececf2e3-a736-471e-aea0-809519c4f4b5" client="18ecce67-c831-4dcf-93e5-fbf0f7e76124" contract="ececf2e3-a736-471e-aea0-809519c4f4b5"/>
              <interfaceRealization xmi:id="74d67451-853b-4b22-85e2-8761de8caa17" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="18ecce67-c831-4dcf-93e5-fbf0f7e76124" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="df787128-15e8-4985-a5fa-f78238a28dd5" name="TabularData" isAbstract="true">
              <ownedComment xmi:id="094b6b51-e0bf-4c89-8a64-ebc0c2d4bb87" body="The &lt;tt>TabularData&lt;/tt> interface specifies the behavior of a specific type of complex &lt;i>open data&lt;/i> objects&#xA;which represent &lt;i>tabular data&lt;/i> structures.&#xA;&#xA;@version     3.19  04/02/10&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="df787128-15e8-4985-a5fa-f78238a28dd5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="6e0e03f8-33a0-48c1-a336-53c5d3e1d087" name="OpenMBeanAttributeInfo" isAbstract="true">
              <ownedComment xmi:id="d9b14188-4620-4523-b9cd-1c79a2d54ff7" body="&lt;p>Describes an attribute of an open MBean.&lt;/p>&#xA;&#xA;&lt;p>This interface declares the same methods as the class {@link&#xA;javax.management.MBeanAttributeInfo}.  A class implementing this&#xA;interface (typically {@link OpenMBeanAttributeInfoSupport}) should&#xA;extend {@link javax.management.MBeanAttributeInfo}.&lt;/p>&#xA;&#xA;@version     3.20  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="6e0e03f8-33a0-48c1-a336-53c5d3e1d087"/>
              <generalization xmi:id="3aad12ae-8580-49f2-8b37-e952494aa18c" isSubstitutable="true" general="bbcb6e84-a090-44c0-9b94-0a60159edc7d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7d0188ba-af70-494f-883d-14176eb481d4" name="SimpleType" clientDependency="022e3b33-2903-485d-b6d8-909f9be96e31" isLeaf="true">
              <ownedComment xmi:id="250743ac-33e5-46f0-9a32-7befb0545a5c" body="The &lt;code>SimpleType&lt;/code> class is the &lt;i>open type&lt;/i> class whose instances describe&#xA;all &lt;i>open data&lt;/i> values which are neither arrays,&#xA;nor {@link CompositeData &lt;code>CompositeData&lt;/code>} values,&#xA;nor {@link TabularData &lt;code>TabularData&lt;/code>} values.&#xA;It predefines all its possible instances as static fields, and has no public constructor.&#xA;&lt;p>&#xA;Given a &lt;code>SimpleType&lt;/code> instance describing values whose Java class name is &lt;i>className&lt;/i>,&#xA;the internal fields corresponding to the name and description of this &lt;code>SimpleType&lt;/code> instance&#xA;are also set to &lt;i>className&lt;/i>.&#xA;In other words, its methods &lt;code>getClassName&lt;/code>, &lt;code>getTypeName&lt;/code> and &lt;code>getDescription&lt;/code>&#xA;all return the same string value &lt;i>className&lt;/i>.&#xA;&#xA;@version     3.23  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="7d0188ba-af70-494f-883d-14176eb481d4"/>
              <generalization xmi:id="4fbdfc3f-9ba1-49a1-994d-0b9aff7ab39e" isSubstitutable="true" general="3626ba47-8713-4e57-b15e-895ae79878c4"/>
              <interfaceRealization xmi:id="022e3b33-2903-485d-b6d8-909f9be96e31" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="7d0188ba-af70-494f-883d-14176eb481d4" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0353ef6d-f6f2-427b-a6ab-821ce31c8fc8" name="OpenMBeanParameterInfoSupport" clientDependency="4f869579-f8d3-416e-bb81-fca42aa3a0c5 590e2588-78ee-4d23-b5e5-1dcab3d31223">
              <ownedComment xmi:id="506fc68d-f71c-4f77-b3f0-2c8433686a20" body="Describes a parameter used in one or more operations or constructors of an open MBean.&#xA;&#xA;@version     3.28  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="0353ef6d-f6f2-427b-a6ab-821ce31c8fc8"/>
              <generalization xmi:id="34f7b594-5d86-45a7-95d9-943f3719d30a" isSubstitutable="true" general="a699d660-24db-4b4a-817f-41a4eb1112a8"/>
              <interfaceRealization xmi:id="590e2588-78ee-4d23-b5e5-1dcab3d31223" name="" supplier="bbcb6e84-a090-44c0-9b94-0a60159edc7d" client="0353ef6d-f6f2-427b-a6ab-821ce31c8fc8" contract="bbcb6e84-a090-44c0-9b94-0a60159edc7d"/>
              <interfaceRealization xmi:id="4f869579-f8d3-416e-bb81-fca42aa3a0c5" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0353ef6d-f6f2-427b-a6ab-821ce31c8fc8" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="db59d4a2-f4fa-4562-9f1f-a0392b15b9f9" name="CompositeDataSupport" clientDependency="83e56fa7-1fe9-4034-afb2-9fe045ca9c96 c26bd782-0ed3-4c44-9c03-2fb18a9438f4">
              <ownedComment xmi:id="30084d79-9156-4208-97c2-3ac0fe4cc5ee" body="The &lt;tt>CompositeDataSupport&lt;/tt> class is the &lt;i>open data&lt;/i> class which implements the &lt;tt>CompositeData&lt;/tt> interface.&#xA;&#xA;@version     3.27  04/03/24&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="db59d4a2-f4fa-4562-9f1f-a0392b15b9f9"/>
              <interfaceRealization xmi:id="83e56fa7-1fe9-4034-afb2-9fe045ca9c96" name="" supplier="65dd7fce-484f-4a09-b2c7-7220976312ca" client="db59d4a2-f4fa-4562-9f1f-a0392b15b9f9" contract="65dd7fce-484f-4a09-b2c7-7220976312ca"/>
              <interfaceRealization xmi:id="c26bd782-0ed3-4c44-9c03-2fb18a9438f4" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="db59d4a2-f4fa-4562-9f1f-a0392b15b9f9" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="aa7ccea0-1023-4cce-95e9-5661131c891d" name="OpenMBeanInfoSupport" clientDependency="4ec5c170-c4e7-4ded-a996-57d20f6a8590 b4294b64-2464-4ea4-b3bd-1c9d95771b2a">
              <ownedComment xmi:id="b5f96f02-3108-4da2-af6d-393e6c8638af" body="The &lt;tt>OpenMBeanInfoSupport&lt;/tt> class describes the management information of an &lt;i>open MBean&lt;/i>:&#xA;it is a subclass of {@link javax.management.MBeanInfo}, and it implements the {@link OpenMBeanInfo} interface.&#xA;Note that an &lt;i>open MBean&lt;/i> is recognized as such if its &lt;tt>getMBeanInfo()&lt;/tt> method returns an instance of a class&#xA;which implements the OpenMBeanInfo interface, typically &lt;tt>OpenMBeanInfoSupport&lt;/tt>.&#xA;&#xA;@version     3.22  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="aa7ccea0-1023-4cce-95e9-5661131c891d"/>
              <generalization xmi:id="699808ea-28aa-4daf-8f23-e8caa0d24fcb" isSubstitutable="true" general="f73dc7a0-1d90-48b8-8326-32cb80abeff5"/>
              <interfaceRealization xmi:id="b4294b64-2464-4ea4-b3bd-1c9d95771b2a" name="" supplier="ca134ad8-4c5e-4c5e-a9d4-b82eda33f404" client="aa7ccea0-1023-4cce-95e9-5661131c891d" contract="ca134ad8-4c5e-4c5e-a9d4-b82eda33f404"/>
              <interfaceRealization xmi:id="4ec5c170-c4e7-4ded-a996-57d20f6a8590" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="aa7ccea0-1023-4cce-95e9-5661131c891d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2cd9af8a-18ab-4d83-9b1b-e265e8d00668" name="TabularDataSupport" clientDependency="865ec035-4cda-4824-ab42-59ac8b75139a 354967c9-116e-448d-8533-755dd5cf20e8 241e7d91-2e46-43a0-a755-901627cf61fb 35d027d3-e791-4423-ba00-1e1cd461bf4d">
              <ownedComment xmi:id="6b7ed50f-b7bd-4e16-9d11-d81621035230" body="The &lt;tt>TabularDataSupport&lt;/tt> class is the &lt;i>open data&lt;/i> class which implements the &lt;tt>TabularData&lt;/tt>&#xA;and the &lt;tt>Map&lt;/tt> interfaces, and which is internally based on a hash map data structure.&#xA;&#xA;@version     3.30  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="2cd9af8a-18ab-4d83-9b1b-e265e8d00668"/>
              <interfaceRealization xmi:id="354967c9-116e-448d-8533-755dd5cf20e8" name="" supplier="df787128-15e8-4985-a5fa-f78238a28dd5" client="2cd9af8a-18ab-4d83-9b1b-e265e8d00668" contract="df787128-15e8-4985-a5fa-f78238a28dd5"/>
              <interfaceRealization xmi:id="865ec035-4cda-4824-ab42-59ac8b75139a" name="" supplier="167fe9a9-9afb-46f2-8629-ffd4d1031dce" client="2cd9af8a-18ab-4d83-9b1b-e265e8d00668" contract="167fe9a9-9afb-46f2-8629-ffd4d1031dce"/>
              <interfaceRealization xmi:id="241e7d91-2e46-43a0-a755-901627cf61fb" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="2cd9af8a-18ab-4d83-9b1b-e265e8d00668" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <interfaceRealization xmi:id="35d027d3-e791-4423-ba00-1e1cd461bf4d" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="2cd9af8a-18ab-4d83-9b1b-e265e8d00668" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="ca134ad8-4c5e-4c5e-a9d4-b82eda33f404" name="OpenMBeanInfo" isAbstract="true">
              <ownedComment xmi:id="47831f29-a3e5-4f37-9f55-dbcf85a155fd" body="&lt;p>Describes an Open MBean: an Open MBean is recognized as such if&#xA;its {@link javax.management.DynamicMBean#getMBeanInfo()&#xA;getMBeanInfo()} method returns an instance of a class which&#xA;implements the {@link OpenMBeanInfo} interface, typically {@link&#xA;OpenMBeanInfoSupport}.&lt;/p>&#xA;&#xA;&lt;p>This interface declares the same methods as the class {@link&#xA;javax.management.MBeanInfo}.  A class implementing this interface&#xA;(typically {@link OpenMBeanInfoSupport}) should extend {@link&#xA;javax.management.MBeanInfo}.&lt;/p>&#xA;&#xA;&lt;p>The {@link #getAttributes()}, {@link #getOperations()} and&#xA;{@link #getConstructors()} methods of the implementing class should&#xA;return at runtime an array of instances of a subclass of {@link&#xA;MBeanAttributeInfo}, {@link MBeanOperationInfo} or {@link&#xA;MBeanConstructorInfo} respectively which implement the {@link&#xA;OpenMBeanAttributeInfo}, {@link OpenMBeanOperationInfo} or {@link&#xA;OpenMBeanConstructorInfo} interface respectively.&#xA;&#xA;@version     3.22  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="ca134ad8-4c5e-4c5e-a9d4-b82eda33f404"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a8d0bf1a-69f5-44a8-b702-956dbc8c7823" name="OpenDataException" clientDependency="e926a9d9-d58b-412c-8f83-5ae5663db437">
              <ownedComment xmi:id="61907a8b-dd17-456b-98cb-7c96365c79a1" body="This checked exception is thrown when an &lt;i>open type&lt;/i>, an &lt;i>open data&lt;/i>  or an &lt;i>open MBean metadata info&lt;/i> instance&#xA;could not be constructed because one or more validity constraints were not met.&#xA;&#xA;@version     3.17  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="a8d0bf1a-69f5-44a8-b702-956dbc8c7823"/>
              <generalization xmi:id="4ae68c58-6494-4e0c-ac73-115a6472f6c3" isSubstitutable="true" general="6a8199d1-b549-413b-97fb-2fce6a429c29"/>
              <interfaceRealization xmi:id="e926a9d9-d58b-412c-8f83-5ae5663db437" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="a8d0bf1a-69f5-44a8-b702-956dbc8c7823" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="bbcb6e84-a090-44c0-9b94-0a60159edc7d" name="OpenMBeanParameterInfo" isAbstract="true">
              <ownedComment xmi:id="9f2da721-47b7-4f0e-bcd5-526b8c146fa7" body="&lt;p>Describes a parameter used in one or more operations or&#xA;constructors of an open MBean.&lt;/p>&#xA;&#xA;&lt;p>This interface declares the same methods as the class {@link&#xA;javax.management.MBeanParameterInfo}.  A class implementing this&#xA;interface (typically {@link OpenMBeanParameterInfoSupport}) should&#xA;extend {@link javax.management.MBeanParameterInfo}.&lt;/p>&#xA;&#xA;@version     3.21  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="bbcb6e84-a090-44c0-9b94-0a60159edc7d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="ececf2e3-a736-471e-aea0-809519c4f4b5" name="OpenMBeanConstructorInfo" isAbstract="true">
              <ownedComment xmi:id="103a7b14-7ec8-4514-bcbc-fac20fa50312" body="&lt;p>Describes a constructor of an Open MBean.&lt;/p>&#xA;&#xA;&lt;p>This interface declares the same methods as the class {@link&#xA;javax.management.MBeanConstructorInfo}.  A class implementing this&#xA;interface (typically {@link OpenMBeanConstructorInfoSupport})&#xA;should extend {@link javax.management.MBeanConstructorInfo}.&lt;/p>&#xA;&#xA;&lt;p>The {@link #getSignature()} method should return at runtime an&#xA;array of instances of a subclass of {@link MBeanParameterInfo}&#xA;which implements the {@link OpenMBeanParameterInfo} interface&#xA;(typically {@link OpenMBeanParameterInfoSupport}).&lt;/p>&#xA;&#xA;&#xA;@version     3.19  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="ececf2e3-a736-471e-aea0-809519c4f4b5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c11fec16-f946-4824-8e0c-14802b753dee" name="InvalidOpenTypeException" clientDependency="9427386a-1d12-44fe-971f-684d47c2b7b8">
              <ownedComment xmi:id="db6ea7ec-182e-4c7c-88bf-8b0c912bda5e" body="This runtime exception is thrown to indicate that the &lt;i>open type&lt;/i> of an &lt;i>open data&lt;/i> value&#xA;is not the one expected.&#xA;&#xA;@version     3.17  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="c11fec16-f946-4824-8e0c-14802b753dee"/>
              <generalization xmi:id="ef7f0649-f08d-46ad-a919-acd0580d26f6" isSubstitutable="true" general="015b8627-f5b5-477f-8717-4d7c48152015"/>
              <interfaceRealization xmi:id="9427386a-1d12-44fe-971f-684d47c2b7b8" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="c11fec16-f946-4824-8e0c-14802b753dee" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ea565b78-f4cb-41a3-aa0c-be8f204bd799" name="KeyAlreadyExistsException" clientDependency="91c13eee-ecf2-401e-a208-2897feb2afa8">
              <ownedComment xmi:id="3a5fe69e-b35a-45f8-bef6-e6d29058aafc" body="This runtime exception is thrown to indicate that the index of a row to be added to a &lt;i>tabular data&lt;/i> instance&#xA;is already used to refer to another row in this &lt;i>tabular data&lt;/i> instance.&#xA;&#xA;@version     3.17  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="ea565b78-f4cb-41a3-aa0c-be8f204bd799"/>
              <generalization xmi:id="ce0eae4f-a9fe-4589-9b3b-b1557aee2572" isSubstitutable="true" general="015b8627-f5b5-477f-8717-4d7c48152015"/>
              <interfaceRealization xmi:id="91c13eee-ecf2-401e-a208-2897feb2afa8" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ea565b78-f4cb-41a3-aa0c-be8f204bd799" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5e2d885a-7be1-4e55-bf26-27aca85f7580" name="OpenMBeanOperationInfoSupport" clientDependency="52578951-af68-441c-8a54-cc3ea6e0ecb8 75af07ad-f251-4a91-824d-02fc4c44cba3">
              <ownedComment xmi:id="fc30832a-430e-412b-bfc8-0c2d5d18732a" body="Describes an operation of an Open MBean.&#xA;&#xA;@version     3.25  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="5e2d885a-7be1-4e55-bf26-27aca85f7580"/>
              <generalization xmi:id="1ed3475f-bde6-40cc-a9ed-e351cb15765e" isSubstitutable="true" general="bb328e1f-3851-4767-8446-7de93582ffed"/>
              <interfaceRealization xmi:id="52578951-af68-441c-8a54-cc3ea6e0ecb8" name="" supplier="4656c194-b66d-4fce-bc40-906a9da7b228" client="5e2d885a-7be1-4e55-bf26-27aca85f7580" contract="4656c194-b66d-4fce-bc40-906a9da7b228"/>
              <interfaceRealization xmi:id="75af07ad-f251-4a91-824d-02fc4c44cba3" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="5e2d885a-7be1-4e55-bf26-27aca85f7580" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="4656c194-b66d-4fce-bc40-906a9da7b228" name="OpenMBeanOperationInfo" isAbstract="true">
              <ownedComment xmi:id="b68c4dcd-8d71-42e2-828e-e1a828defab0" body="&lt;p>Describes an operation of an Open MBean.&lt;/p>&#xA;&#xA;&lt;p>This interface declares the same methods as the class {@link&#xA;javax.management.MBeanOperationInfo}.  A class implementing this&#xA;interface (typically {@link OpenMBeanOperationInfoSupport}) should&#xA;extend {@link javax.management.MBeanOperationInfo}.&lt;/p>&#xA;&#xA;&lt;p>The {@link #getSignature()} method should return at runtime an&#xA;array of instances of a subclass of {@link MBeanParameterInfo}&#xA;which implements the {@link OpenMBeanParameterInfo} interface&#xA;(typically {@link OpenMBeanParameterInfoSupport}).&lt;/p>&#xA;&#xA;@version     3.20  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="4656c194-b66d-4fce-bc40-906a9da7b228"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5a77d539-1ed6-4fa7-9be4-8c28b22aeaae" name="TabularType" clientDependency="3bda6a70-64b1-4129-91d7-9ed042efa16e">
              <ownedComment xmi:id="ae741422-e3a6-4650-842a-028ce83097df" body="The &lt;code>TabularType&lt;/code> class is the &lt;i> open type&lt;/i> class&#xA;whose instances describe the types of {@link TabularData &lt;code>TabularData&lt;/code>} values.&#xA;&#xA;@version     3.22  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="5a77d539-1ed6-4fa7-9be4-8c28b22aeaae"/>
              <generalization xmi:id="e48f5313-6a87-4282-96dc-5848251b1bf5" isSubstitutable="true" general="3626ba47-8713-4e57-b15e-895ae79878c4"/>
              <interfaceRealization xmi:id="3bda6a70-64b1-4129-91d7-9ed042efa16e" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="5a77d539-1ed6-4fa7-9be4-8c28b22aeaae" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="65dd7fce-484f-4a09-b2c7-7220976312ca" name="CompositeData" isAbstract="true">
              <ownedComment xmi:id="067a5e94-79b0-4ed2-963d-ee805d11ffc5" body="The &lt;tt>CompositeData&lt;/tt> interface specifies the behavior of a specific type of complex &lt;i>open data&lt;/i> objects&#xA;which represent &lt;i>composite data&lt;/i> structures.&#xA;&#xA;@version     3.19  04/02/10&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="65dd7fce-484f-4a09-b2c7-7220976312ca"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ce7621c9-6fe2-48af-8cd5-227f63ef5097" name="InvalidKeyException" clientDependency="42b9ff30-565c-4da0-bfad-01764979464f">
              <ownedComment xmi:id="77f65409-c8f8-4721-8869-62dad7d1e8d2" body="This runtime exception is thrown to indicate that a method parameter which was expected to be&#xA;an item name of a &lt;i>composite data&lt;/i> or a row index of a &lt;i>tabular data&lt;/i> is not valid.&#xA;&#xA;@version     3.17  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="ce7621c9-6fe2-48af-8cd5-227f63ef5097"/>
              <generalization xmi:id="31be7866-43bd-48ed-af78-51e42614bb3b" isSubstitutable="true" general="015b8627-f5b5-477f-8717-4d7c48152015"/>
              <interfaceRealization xmi:id="42b9ff30-565c-4da0-bfad-01764979464f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ce7621c9-6fe2-48af-8cd5-227f63ef5097" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="32c4e671-8670-4e65-9fd6-11b8e1210a88" name="OpenMBeanAttributeInfoSupport" clientDependency="8a6dcf2d-8b58-4806-b229-aca88ba98b12 0c336d34-2c87-48fe-8ea3-73f995091794">
              <ownedComment xmi:id="cad794dc-1d19-42d2-b402-75228e634145" body="Describes an attribute of an open MBean.&#xA;&#xA;@version     3.28  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="32c4e671-8670-4e65-9fd6-11b8e1210a88"/>
              <generalization xmi:id="2bce27c4-e44e-40cf-9824-32ce6aee94eb" isSubstitutable="true" general="86d082b1-fee3-4083-9d15-3d2c323de3bd"/>
              <interfaceRealization xmi:id="8a6dcf2d-8b58-4806-b229-aca88ba98b12" name="" supplier="6e0e03f8-33a0-48c1-a336-53c5d3e1d087" client="32c4e671-8670-4e65-9fd6-11b8e1210a88" contract="6e0e03f8-33a0-48c1-a336-53c5d3e1d087"/>
              <interfaceRealization xmi:id="0c336d34-2c87-48fe-8ea3-73f995091794" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="32c4e671-8670-4e65-9fd6-11b8e1210a88" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d74afc89-4951-40d2-bbb7-110909b32e58" name="ArrayType" clientDependency="ab49c8fc-fbb6-428d-a051-f247a50525bd">
              <ownedComment xmi:id="d8cd8904-4f25-4aa7-a879-0c4a87498fca" body="The &lt;code>ArrayType&lt;/code> class is the &lt;i>open type&lt;/i> class whose instances describe&#xA;all &lt;i>open data&lt;/i> values which are n-dimensional arrays of &lt;i>open data&lt;/i> values.&#xA;&#xA;@version     3.24  03/12/19&#xA;@author      Sun Microsystems, Inc.&#xA;&#xA;@since 1.5&#xA;@since.unbundled JMX 1.1&#xA;" annotatedElement="d74afc89-4951-40d2-bbb7-110909b32e58"/>
              <generalization xmi:id="6e99f1b7-556b-492a-9294-19e42758b3fd" isSubstitutable="true" general="3626ba47-8713-4e57-b15e-895ae79878c4"/>
              <interfaceRealization xmi:id="ab49c8fc-fbb6-428d-a051-f247a50525bd" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="d74afc89-4951-40d2-bbb7-110909b32e58" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e52c64fa-8f1e-401b-aba6-f0394e2c6d5a" name="AttributeNotFoundException">
            <ownedComment xmi:id="9c554070-acc5-4c00-8086-833a04c19977" body="The specified attribute does not exist or cannot be retrieved.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="e52c64fa-8f1e-401b-aba6-f0394e2c6d5a"/>
            <generalization xmi:id="c9d9fc0e-d3f1-44f4-8436-2d166e7bf535" isSubstitutable="true" general="aae66ef6-d10b-4418-8784-f77f2c87f595"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d5c19251-8362-4426-a8a2-62c1f4dece55" name="InstanceNotFoundException">
            <ownedComment xmi:id="dcf11c92-ccdc-4d9e-87a9-7c766a789e8a" body="The specified MBean does not exist in the repository.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="d5c19251-8362-4426-a8a2-62c1f4dece55"/>
            <generalization xmi:id="6f261961-e0b9-414c-85d0-556e7437c2fc" isSubstitutable="true" general="aae66ef6-d10b-4418-8784-f77f2c87f595"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1622d866-591b-4a08-ace2-ed7c4952a6a0" name="MBeanFeatureInfo" clientDependency="89c0bf4c-5348-4004-8ed9-abb3515b69ad">
            <ownedComment xmi:id="860213f5-9873-4b3f-ad8d-bd3d941b5a8c" body="&lt;p>Provides general information for an MBean descriptor object.&#xA;The feature described can be an attribute, an operation, a&#xA;parameter, or a notification.  Instances of this class are&#xA;immutable.  Subclasses may be mutable but this is not&#xA;recommended.&lt;/p>&#xA;&#xA;@since 1.5&#xA;" annotatedElement="1622d866-591b-4a08-ace2-ed7c4952a6a0"/>
            <interfaceRealization xmi:id="89c0bf4c-5348-4004-8ed9-abb3515b69ad" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="1622d866-591b-4a08-ace2-ed7c4952a6a0" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1d9eaf7a-1c6a-4bb6-a03a-0516b4ad8426" name="BadStringOperationException">
            <ownedComment xmi:id="229df102-0594-49af-a4b9-66bd073cdf4b" body="Thrown when an invalid string operation is passed&#xA;to a method for constructing a query.&#xA;&#xA;@since 1.5&#xA;" annotatedElement="1d9eaf7a-1c6a-4bb6-a03a-0516b4ad8426"/>
            <generalization xmi:id="8d4f9322-ce7d-4bbb-9ee9-66837cb89e3b" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c903d24d-6d54-4141-9970-240cd2a3c31e" name="MatchQueryExp" visibility="package" clientDependency="f59a0569-18e6-47ec-9ecb-cc289cd4c712">
            <ownedComment xmi:id="43d2ccfd-a0c3-4f7e-a28b-036719b7926f" body="This class is used by the query-building mechanism to represent binary&#xA;relations.&#xA;@serial include&#xA;&#xA;@since 1.5&#xA;" annotatedElement="c903d24d-6d54-4141-9970-240cd2a3c31e"/>
            <generalization xmi:id="661b86ed-9d80-46a3-8fe0-a5f7eb350580" isSubstitutable="true" general="884220a1-d86c-4a9b-b5d1-05725d6e417f"/>
            <interfaceRealization xmi:id="f59a0569-18e6-47ec-9ecb-cc289cd4c712" name="" supplier="63bea8af-c5ea-4b3b-87fe-e59aab8370df" client="c903d24d-6d54-4141-9970-240cd2a3c31e" contract="63bea8af-c5ea-4b3b-87fe-e59aab8370df"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="5eff95c7-2d7f-4b24-a3d2-8c72a80ddd2f" name="swing">
          <packagedElement xmi:type="uml:Interface" xmi:id="d1df3a10-353e-49ec-ba19-8c38aa33f546" name="GraphicsWrapper" visibility="package" isAbstract="true"/>
          <packagedElement xmi:type="uml:Class" xmi:id="c283c4f6-6dd3-42ac-8b11-a7379d2e9199" name="ProgressMonitorInputStream">
            <ownedComment xmi:id="7420d1fb-0d30-4660-a1ef-0b13d0d54e98" body="Monitors the progress of reading from some InputStream. This ProgressMonitor&#xA;is normally invoked in roughly this form:&#xA;&lt;pre>&#xA;InputStream in = new BufferedInputStream(&#xA;new ProgressMonitorInputStream(&#xA;parentComponent,&#xA;&quot;Reading &quot; + fileName,&#xA;new FileInputStream(fileName)));&#xA;&lt;/pre>&lt;p>&#xA;This creates a progress monitor to monitor the progress of reading&#xA;the input stream.  If it's taking a while, a ProgressDialog will&#xA;be popped up to inform the user.  If the user hits the Cancel button&#xA;an InterruptedIOException will be thrown on the next read.&#xA;All the right cleanup is done when the stream is closed.&#xA;&#xA;&#xA;&lt;p>&#xA;&#xA;For further documentation and examples see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/progress.html&quot;>How to Monitor Progress&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&#xA;@see ProgressMonitor&#xA;@see JOptionPane&#xA;@author James Gosling&#xA;@version 1.19 12/19/03&#xA;" annotatedElement="c283c4f6-6dd3-42ac-8b11-a7379d2e9199"/>
            <generalization xmi:id="4ff79335-740f-43e9-8e2f-c8158fb50f38" isSubstitutable="true" general="740d283f-3027-4647-a498-6f94656e662b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="af1edea1-9f7f-4b82-b767-d6003697802a" name="DefaultListModel">
            <ownedComment xmi:id="4b9d24bb-2f6e-41a1-8c04-af1f983330df" body="This class loosely implements the &lt;code>java.util.Vector&lt;/code>&#xA;API, in that it implements the 1.1.x version of&#xA;&lt;code>java.util.Vector&lt;/code>, has no collection class support,&#xA;and notifies the &lt;code>ListDataListener&lt;/code>s when changes occur.&#xA;Presently it delegates to a &lt;code>Vector&lt;/code>,&#xA;in a future release it will be a real Collection implementation.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.35 05/05/04&#xA;@author Hans Muller&#xA;" annotatedElement="af1edea1-9f7f-4b82-b767-d6003697802a"/>
            <generalization xmi:id="29c024b8-c4f5-43f1-a695-dde496fd3d7a" isSubstitutable="true" general="8cf5bc32-a3b1-4981-bc71-7af4f2144124"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b6918e1d-4696-4baa-9053-052981c3564c" name="TimerQueue" visibility="package" clientDependency="24d2e5e8-3ca5-4a72-8c9b-960d3362116a">
            <ownedComment xmi:id="0d153aee-7171-4339-a62c-b664b804048e" body="Internal class to manage all Timers using one thread.&#xA;TimerQueue manages a queue of Timers. The Timers are chained&#xA;together in a linked list sorted by the order in which they will expire.&#xA;&#xA;@version 1.37 12/19/03&#xA;@author Dave Moore&#xA;" annotatedElement="b6918e1d-4696-4baa-9053-052981c3564c"/>
            <interfaceRealization xmi:id="24d2e5e8-3ca5-4a72-8c9b-960d3362116a" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="b6918e1d-4696-4baa-9053-052981c3564c" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ba12283e-197e-4b93-adb2-51e23d08ce83" name="ArrayTable" visibility="package" clientDependency="582709a1-8c4e-4fee-b963-8fd9cf83a87c">
            <interfaceRealization xmi:id="582709a1-8c4e-4fee-b963-8fd9cf83a87c" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="ba12283e-197e-4b93-adb2-51e23d08ce83" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e8067418-1b52-408f-b67b-539259f17f26" name="JTable" clientDependency="d025a25a-fbd3-4838-bc21-9c69c8d5431d ca6c4787-ef80-4450-8039-fb5b23956e4e 4224e81c-b9e7-4b57-8c19-73c0db3420c8 f4d022af-1aac-4ccc-9805-4102f9f4de9b 0d8af24b-0a4c-4c9e-ae1e-c54f5d4bcc1b 6ff27c64-3b26-4b20-a1b3-4ac00a232754">
            <ownedComment xmi:id="28d57aa0-79c9-4700-a080-2281c9bc431d" body="The &lt;code>JTable&lt;/code> is used to display and edit regular two-dimensional tables&#xA;of cells.&#xA;See &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/table.html&quot;>How to Use Tables&lt;/a>&#xA;in &lt;em>The Java Tutorial&lt;/em>&#xA;for task-oriented documentation and examples of using &lt;code>JTable&lt;/code>.&#xA;&#xA;&lt;p>&#xA;The &lt;code>JTable&lt;/code> has many&#xA;facilities that make it possible to customize its rendering and editing&#xA;but provides defaults for these features so that simple tables can be&#xA;set up easily.  For example, to set up a table with 10 rows and 10&#xA;columns of numbers:&#xA;&lt;p>&#xA;&lt;pre>&#xA;TableModel dataModel = new AbstractTableModel() {&#xA;public int getColumnCount() { return 10; }&#xA;public int getRowCount() { return 10;}&#xA;public Object getValueAt(int row, int col) { return new Integer(row*col); }&#xA;};&#xA;JTable table = new JTable(dataModel);&#xA;JScrollPane scrollpane = new JScrollPane(table);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;Note that if you wish to use a &lt;code>JTable&lt;/code> in a standalone&#xA;view (outside of a &lt;code>JScrollPane&lt;/code>) and want the header&#xA;displayed, you can get it using {@link #getTableHeader} and&#xA;display it separately.&#xA;&lt;p>&#xA;When designing applications that use the &lt;code>JTable&lt;/code> it is worth paying&#xA;close attention to the data structures that will represent the table's data.&#xA;The &lt;code>DefaultTableModel&lt;/code> is a model implementation that&#xA;uses a &lt;code>Vector&lt;/code> of &lt;code>Vector&lt;/code>s of &lt;code>Object&lt;/code>s to&#xA;store the cell values. As well as copying the data from an&#xA;application into the &lt;code>DefaultTableModel&lt;/code>,&#xA;it is also possible to wrap the data in the methods of the&#xA;&lt;code>TableModel&lt;/code> interface so that the data can be passed to the&#xA;&lt;code>JTable&lt;/code> directly, as in the example above. This often results&#xA;in more efficient applications because the model is free to choose the&#xA;internal representation that best suits the data.&#xA;A good rule of thumb for deciding whether to use the &lt;code>AbstractTableModel&lt;/code>&#xA;or the &lt;code>DefaultTableModel&lt;/code> is to use the &lt;code>AbstractTableModel&lt;/code>&#xA;as the base class for creating subclasses and the &lt;code>DefaultTableModel&lt;/code>&#xA;when subclassing is not required.&#xA;&lt;p>&#xA;The &quot;TableExample&quot; directory in the demo area of the source distribution&#xA;gives a number of complete examples of &lt;code>JTable&lt;/code> usage,&#xA;covering how the &lt;code>JTable&lt;/code> can be used to provide an&#xA;editable view of data taken from a database and how to modify&#xA;the columns in the display to use specialized renderers and editors.&#xA;&lt;p>&#xA;The &lt;code>JTable&lt;/code> uses integers exclusively to refer to both the rows and the columns&#xA;of the model that it displays. The &lt;code>JTable&lt;/code> simply takes a tabular range of cells&#xA;and uses &lt;code>getValueAt(int, int)&lt;/code> to retrieve the&#xA;values from the model during painting.&#xA;&lt;p>&#xA;By default, columns may be rearranged in the &lt;code>JTable&lt;/code> so that the&#xA;view's columns appear in a different order to the columns in the model.&#xA;This does not affect the implementation of the model at all: when the&#xA;columns are reordered, the &lt;code>JTable&lt;/code> maintains the new order of the columns&#xA;internally and converts its column indices before querying the model.&#xA;&lt;p>&#xA;So, when writing a &lt;code>TableModel&lt;/code>, it is not necessary to listen for column&#xA;reordering events as the model will be queried in its own coordinate&#xA;system regardless of what is happening in the view.&#xA;In the examples area there is a demonstration of a sorting algorithm making&#xA;use of exactly this technique to interpose yet another coordinate system&#xA;where the order of the rows is changed, rather than the order of the columns.&#xA;&lt;p>&#xA;J2SE 5 adds methods to &lt;code>JTable&lt;/code> to provide convenient access to some&#xA;common printing needs. Simple new {@link #print()} methods allow for quick&#xA;and easy addition of printing support to your application. In addition, a new&#xA;{@link #getPrintable} method is available for more advanced printing needs.&#xA;&lt;p>&#xA;As for all &lt;code>JComponent&lt;/code> classes, you can use&#xA;{@link InputMap} and {@link ActionMap} to associate an&#xA;{@link Action} object with a {@link KeyStroke} and execute the&#xA;action under specified conditions.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A component which displays data in a two dimensional grid.&#xA;&#xA;@version 1.238 06/28/04&#xA;@author Philip Milne&#xA;@author Shannon Hickey (printing support)&#xA;" annotatedElement="e8067418-1b52-408f-b67b-539259f17f26"/>
            <generalization xmi:id="200bb5d5-b2f9-43f4-b6ad-44cddbe0a4c2" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="4224e81c-b9e7-4b57-8c19-73c0db3420c8" name="" supplier="38012c17-4b34-47c2-b7d8-dd3924836e2a" client="e8067418-1b52-408f-b67b-539259f17f26" contract="38012c17-4b34-47c2-b7d8-dd3924836e2a"/>
            <interfaceRealization xmi:id="d025a25a-fbd3-4838-bc21-9c69c8d5431d" name="" supplier="a1ad2c61-c036-48cb-85f4-7681cc6ba8fc" client="e8067418-1b52-408f-b67b-539259f17f26" contract="a1ad2c61-c036-48cb-85f4-7681cc6ba8fc"/>
            <interfaceRealization xmi:id="f4d022af-1aac-4ccc-9805-4102f9f4de9b" name="" supplier="f9333e5d-3556-4b2e-93d6-4e5f29f721e9" client="e8067418-1b52-408f-b67b-539259f17f26" contract="f9333e5d-3556-4b2e-93d6-4e5f29f721e9"/>
            <interfaceRealization xmi:id="0d8af24b-0a4c-4c9e-ae1e-c54f5d4bcc1b" name="" supplier="077ca4fe-3afb-4e22-bed0-5cc47445acf4" client="e8067418-1b52-408f-b67b-539259f17f26" contract="077ca4fe-3afb-4e22-bed0-5cc47445acf4"/>
            <interfaceRealization xmi:id="ca6c4787-ef80-4450-8039-fb5b23956e4e" name="" supplier="e228038f-21ca-440d-a484-f2bec602ff9e" client="e8067418-1b52-408f-b67b-539259f17f26" contract="e228038f-21ca-440d-a484-f2bec602ff9e"/>
            <interfaceRealization xmi:id="6ff27c64-3b26-4b20-a1b3-4ac00a232754" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="e8067418-1b52-408f-b67b-539259f17f26" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Interface" xmi:id="48ab7cbf-a26a-45ad-8af6-1d671b3cd2eb" name="Resizable2" visibility="private" isAbstract="true"/>
            <nestedClassifier xmi:type="uml:Interface" xmi:id="e601d8ad-9a2a-4aca-b1ab-3c19e92d8d82" name="Resizable3" visibility="private" isAbstract="true">
              <generalization xmi:id="f52a995b-3f1e-49c0-a54b-99df21ec9d70" isSubstitutable="true" general="48ab7cbf-a26a-45ad-8af6-1d671b3cd2eb"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ba242b61-13ca-4111-83c8-d5929f898e8b" name="NumberRenderer" visibility="package">
              <ownedComment xmi:id="361e223f-31f6-4a2d-aa2d-af191c43f6aa" body="Default Renderers&#xA;" annotatedElement="ba242b61-13ca-4111-83c8-d5929f898e8b"/>
              <generalization xmi:id="4a2ab084-876d-42db-a398-033e4d290301" isSubstitutable="true" general="9b192524-8c2c-4690-b989-6032ffb8bb39"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a7039b43-6c41-4f0b-b3b0-f2bc0d2ae53c" name="DoubleRenderer" visibility="package">
              <generalization xmi:id="d37ec894-b2d4-4e35-9e11-95eb80469dcb" isSubstitutable="true" general="ba242b61-13ca-4111-83c8-d5929f898e8b"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="5009fe3f-2175-4485-8eaa-e9659e855383" name="DateRenderer" visibility="package">
              <generalization xmi:id="0e40836f-4dc6-41f6-b34b-cc9110ef40b7" isSubstitutable="true" general="9b192524-8c2c-4690-b989-6032ffb8bb39"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="b6acd5f3-0b30-4fa2-b493-c6d4a19c4493" name="IconRenderer" visibility="package">
              <generalization xmi:id="79e03bdb-aebf-48b4-a95e-cce52d9adee1" isSubstitutable="true" general="9b192524-8c2c-4690-b989-6032ffb8bb39"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="7d3fe341-63b5-434f-8b57-1852d21e115b" name="BooleanRenderer" visibility="package" clientDependency="1f74640a-cb1a-452b-a1bc-ec53612719f9 393a4901-e517-4527-8ed6-5311ea52b02c">
              <generalization xmi:id="0c23a6c6-1faf-4f59-a658-03f27be98dc0" isSubstitutable="true" general="2f41a22f-9c7b-4953-83d7-06951a32cde7"/>
              <interfaceRealization xmi:id="393a4901-e517-4527-8ed6-5311ea52b02c" name="" supplier="d4cf2dd7-d632-412b-8dbb-574691c4af5b" client="7d3fe341-63b5-434f-8b57-1852d21e115b" contract="d4cf2dd7-d632-412b-8dbb-574691c4af5b"/>
              <interfaceRealization xmi:id="1f74640a-cb1a-452b-a1bc-ec53612719f9" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="7d3fe341-63b5-434f-8b57-1852d21e115b" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ff54638a-a7c1-41b6-a8d1-c09cb7f0abcb" name="GenericEditor" visibility="package">
              <ownedComment xmi:id="07a309ef-7134-41e5-b529-ede666ca075c" body="Default Editors&#xA;" annotatedElement="ff54638a-a7c1-41b6-a8d1-c09cb7f0abcb"/>
              <generalization xmi:id="d6941df1-3480-4b98-9f07-e49957cda357" isSubstitutable="true" general="7a3ededb-6011-4766-be76-c6a07c6c59db"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="45d4b260-9529-40aa-9bbd-920afac950d0" name="NumberEditor" visibility="package">
              <generalization xmi:id="fb7e05ce-7a25-4c66-8152-49d29dfba054" isSubstitutable="true" general="ff54638a-a7c1-41b6-a8d1-c09cb7f0abcb"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="3e7685d3-b711-47d5-97e2-940b7059d98d" name="BooleanEditor" visibility="package">
              <generalization xmi:id="63301873-e6b1-4f58-8ef9-61fdac545777" isSubstitutable="true" general="7a3ededb-6011-4766-be76-c6a07c6c59db"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a80e455d-3f4d-44b7-b449-39881ecc5afb" name="CellEditorRemover" visibility="package" clientDependency="a570e87e-7c96-491c-9096-2cd3fcf262b9">
              <interfaceRealization xmi:id="a570e87e-7c96-491c-9096-2cd3fcf262b9" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="a80e455d-3f4d-44b7-b449-39881ecc5afb" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="670ecacc-8165-4e25-86ab-2a0eaaa2959e" name="AccessibleJTable" visibility="protected" clientDependency="8484bae3-4340-4e2f-be4b-697062f9eb6a 346ee9ca-4a02-41ab-b715-1d224df24552 a540d637-813c-43c2-8aac-4e73b523cdea d7726280-483e-458d-b3df-a9d41f1c9f8e 6a7888f8-4ee8-44d6-bc2b-a24afdf66fd0 b38ac9df-0856-4411-a1c5-b0f569538f05 aa937105-342f-47b4-87e4-7a77af9ad42f">
              <ownedComment xmi:id="b5e614ca-4881-4986-a76c-48f021844da9" body="This class implements accessibility support for the&#xA;&lt;code>JTable&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to table user-interface elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="670ecacc-8165-4e25-86ab-2a0eaaa2959e"/>
              <generalization xmi:id="90ec6c6a-10c8-411b-95b8-be646963f907" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
              <interfaceRealization xmi:id="a540d637-813c-43c2-8aac-4e73b523cdea" name="" supplier="0dbef058-3ccc-4038-b98f-eea279be3f13" client="670ecacc-8165-4e25-86ab-2a0eaaa2959e" contract="0dbef058-3ccc-4038-b98f-eea279be3f13"/>
              <interfaceRealization xmi:id="8484bae3-4340-4e2f-be4b-697062f9eb6a" name="" supplier="077ca4fe-3afb-4e22-bed0-5cc47445acf4" client="670ecacc-8165-4e25-86ab-2a0eaaa2959e" contract="077ca4fe-3afb-4e22-bed0-5cc47445acf4"/>
              <interfaceRealization xmi:id="d7726280-483e-458d-b3df-a9d41f1c9f8e" name="" supplier="38012c17-4b34-47c2-b7d8-dd3924836e2a" client="670ecacc-8165-4e25-86ab-2a0eaaa2959e" contract="38012c17-4b34-47c2-b7d8-dd3924836e2a"/>
              <interfaceRealization xmi:id="6a7888f8-4ee8-44d6-bc2b-a24afdf66fd0" name="" supplier="f9333e5d-3556-4b2e-93d6-4e5f29f721e9" client="670ecacc-8165-4e25-86ab-2a0eaaa2959e" contract="f9333e5d-3556-4b2e-93d6-4e5f29f721e9"/>
              <interfaceRealization xmi:id="b38ac9df-0856-4411-a1c5-b0f569538f05" name="" supplier="e228038f-21ca-440d-a484-f2bec602ff9e" client="670ecacc-8165-4e25-86ab-2a0eaaa2959e" contract="e228038f-21ca-440d-a484-f2bec602ff9e"/>
              <interfaceRealization xmi:id="aa937105-342f-47b4-87e4-7a77af9ad42f" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="670ecacc-8165-4e25-86ab-2a0eaaa2959e" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              <interfaceRealization xmi:id="346ee9ca-4a02-41ab-b715-1d224df24552" name="" supplier="cc2f0e23-a6af-42db-ba9f-e6fe3a98545f" client="670ecacc-8165-4e25-86ab-2a0eaaa2959e" contract="cc2f0e23-a6af-42db-ba9f-e6fe3a98545f"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f9277e27-b6cc-4c28-8875-440c4872a25a" name="AccessibleJTableModelChange" visibility="protected" clientDependency="10f0b3f1-a6ea-4006-9292-1c2fda66f1a8">
                <interfaceRealization xmi:id="10f0b3f1-a6ea-4006-9292-1c2fda66f1a8" name="" supplier="2435f4d0-033e-42b0-8149-f61597803866" client="f9277e27-b6cc-4c28-8875-440c4872a25a" contract="2435f4d0-033e-42b0-8149-f61597803866"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="46da08cc-83cb-42c8-8266-e07592f1a049" name="AccessibleTableHeader" visibility="private" clientDependency="2e5d494b-f7c6-4725-9f6a-89d6a4d857bc">
                <interfaceRealization xmi:id="2e5d494b-f7c6-4725-9f6a-89d6a4d857bc" name="" supplier="15c29f0c-7e33-493e-b7e6-3488fb280927" client="46da08cc-83cb-42c8-8266-e07592f1a049" contract="15c29f0c-7e33-493e-b7e6-3488fb280927"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="65f681d1-1f3d-4c0e-8620-65dab006ef2a" name="AccessibleJTableCell" visibility="protected" clientDependency="d75fd624-b0ce-4bfe-94b0-bf5b43009269 b724f648-dd17-4eaa-8d44-7bf2202fa15c">
                <ownedComment xmi:id="5facf240-8763-4d4f-b810-a3e167074b9c" body="The class provides an implementation of the Java Accessibility&#xA;API appropriate to table cells.&#xA;" annotatedElement="65f681d1-1f3d-4c0e-8620-65dab006ef2a"/>
                <generalization xmi:id="b493fecc-ad1f-4307-a8c1-751d77633b62" isSubstitutable="true" general="5e5fecb3-251d-4b0e-b142-9f3aac1d4c57"/>
                <interfaceRealization xmi:id="d75fd624-b0ce-4bfe-94b0-bf5b43009269" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="65f681d1-1f3d-4c0e-8620-65dab006ef2a" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
                <interfaceRealization xmi:id="b724f648-dd17-4eaa-8d44-7bf2202fa15c" name="" supplier="a13045dc-df1a-4751-8aff-9b7e320e05bf" client="65f681d1-1f3d-4c0e-8620-65dab006ef2a" contract="a13045dc-df1a-4751-8aff-9b7e320e05bf"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="51b9992f-b0f6-4c9b-adff-949da9809195" name="AccessibleJTableHeaderCell" visibility="private" clientDependency="778116e7-dc37-47b8-b467-85ee5cead573 e85b618c-922a-4640-aebe-7530f2d0acd4">
                <ownedComment xmi:id="b1419994-2725-4e3e-9b22-e28fc903e23c" body="This class implements accessibility for JTable header cells.&#xA;" annotatedElement="51b9992f-b0f6-4c9b-adff-949da9809195"/>
                <generalization xmi:id="fa6140a5-cf4f-4858-bf93-77cdcddbaa9d" isSubstitutable="true" general="5e5fecb3-251d-4b0e-b142-9f3aac1d4c57"/>
                <interfaceRealization xmi:id="778116e7-dc37-47b8-b467-85ee5cead573" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="51b9992f-b0f6-4c9b-adff-949da9809195" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
                <interfaceRealization xmi:id="e85b618c-922a-4640-aebe-7530f2d0acd4" name="" supplier="a13045dc-df1a-4751-8aff-9b7e320e05bf" client="51b9992f-b0f6-4c9b-adff-949da9809195" contract="a13045dc-df1a-4751-8aff-9b7e320e05bf"/>
              </nestedClassifier>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="497c29ef-dc35-4a50-a1e5-25573da57482" name="PrintMode">
              <ownedComment xmi:id="62b46615-b1ec-4a7b-85ab-e8be8858d833" body="Printing modes, used in printing &lt;code>JTable&lt;/code>s.&#xA;&#xA;@see #print(JTable.PrintMode, MessageFormat, MessageFormat,&#xA;boolean, PrintRequestAttributeSet, boolean)&#xA;@see #getPrintable&#xA;@since 1.5&#xA;" annotatedElement="497c29ef-dc35-4a50-a1e5-25573da57482"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="08821610-57bb-403a-83d7-440871cb1d23" name="ThreadSafePrintable" visibility="private" clientDependency="551b9301-8ba4-427f-9519-7bb58fa34c4d">
              <ownedComment xmi:id="9bf4e99a-03d4-4c71-88b5-11dee91fe416" body="A &lt;code>Printable&lt;/code> implementation that wraps another&#xA;&lt;code>Printable&lt;/code>, making it safe for printing on another thread.&#xA;&lt;p>&#xA;Also performs steps that are specific to this table printing&#xA;implementation, such as hiding the selection and focus in the table,&#xA;and updating the given &lt;code>JLabel&lt;/code> with the page number&#xA;based on the specified message format.&#xA;" annotatedElement="08821610-57bb-403a-83d7-440871cb1d23"/>
              <interfaceRealization xmi:id="551b9301-8ba4-427f-9519-7bb58fa34c4d" name="" supplier="f54fba22-4a31-4697-8da1-29309df40d39" client="08821610-57bb-403a-83d7-440871cb1d23" contract="f54fba22-4a31-4697-8da1-29309df40d39"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="99f7e322-1606-4858-877c-5c7caf28dd42" name="DesktopManager" isAbstract="true">
            <ownedComment xmi:id="a9ac8318-294f-44d3-ba97-afa1bf4988be" body="DesktopManager objects are owned by a JDesktopPane object. They are responsible&#xA;for implementing L&amp;F specific behaviors for the JDesktopPane. JInternalFrame&#xA;implementations should delegate specific behaviors to the DesktopManager. For&#xA;instance, if a JInternalFrame was asked to iconify, it should try:&#xA;&lt;PRE>&#xA;getDesktopPane().getDesktopManager().iconifyFrame(frame);&#xA;&lt;/PRE>&#xA;This delegation allows each L&amp;F to provide custom behaviors for desktop-specific&#xA;actions. (For example, how and where the internal frame's icon would appear.)&#xA;&lt;p>This class provides a policy for the various JInternalFrame methods, it is not&#xA;meant to be called directly rather the various JInternalFrame methods will call&#xA;into the DesktopManager.&lt;/p>&#xA;&#xA;@see JDesktopPane&#xA;@see JInternalFrame&#xA;@see JInternalFrame.JDesktopIcon&#xA;&#xA;@version 1.15 12/19/03&#xA;@author David Kloba&#xA;" annotatedElement="99f7e322-1606-4858-877c-5c7caf28dd42"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="65b8f3d5-6945-429f-a21d-328e33a7ca6d" name="ButtonGroup" clientDependency="41b3c913-3f6a-4251-a27b-b0e41af697d3">
            <ownedComment xmi:id="876776bf-d882-45aa-b095-da20c1c4061e" body="This class is used to create a multiple-exclusion scope for&#xA;a set of buttons. Creating a set of buttons with the&#xA;same &lt;code>ButtonGroup&lt;/code> object means that&#xA;turning &quot;on&quot; one of those buttons&#xA;turns off all other buttons in the group.&#xA;&lt;p>&#xA;A &lt;code>ButtonGroup&lt;/code> can be used with&#xA;any set of objects that inherit from &lt;code>AbstractButton&lt;/code>.&#xA;Typically a button group contains instances of&#xA;&lt;code>JRadioButton&lt;/code>,&#xA;&lt;code>JRadioButtonMenuItem&lt;/code>,&#xA;or &lt;code>JToggleButton&lt;/code>.&#xA;It wouldn't make sense to put an instance of&#xA;&lt;code>JButton&lt;/code> or &lt;code>JMenuItem&lt;/code>&#xA;in a button group&#xA;because &lt;code>JButton&lt;/code> and &lt;code>JMenuItem&lt;/code>&#xA;don't implement the selected state.&#xA;&lt;p>&#xA;Initially, all buttons in the group are unselected. Once any button is&#xA;selected, one button is always selected in the group. There is no way&#xA;to turn a button programmatically to &quot;off&quot;, in order to clear the button&#xA;group. To give the appearance of &quot;none selected&quot;, add an invisible radio&#xA;button to the group and then programmatically select that button to&#xA;turn off all the displayed radio buttons. For example, a normal button&#xA;with the label &quot;none&quot; could be wired to select the invisible radio button.&#xA;&lt;p>&#xA;For examples and further information on using button groups see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/button.html#radiobutton&quot;>How to Use Radio Buttons&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.37 05/05/04&#xA;@author Jeff Dinkins&#xA;" annotatedElement="65b8f3d5-6945-429f-a21d-328e33a7ca6d"/>
            <interfaceRealization xmi:id="41b3c913-3f6a-4251-a27b-b0e41af697d3" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="65b8f3d5-6945-429f-a21d-328e33a7ca6d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="bef91138-6780-4c26-8173-782522359953" name="JMenuItem" clientDependency="3b4c5024-ff2b-4241-8350-460c07552006 c828ff98-3fba-45fb-a7b8-ebf77d2494ba">
            <ownedComment xmi:id="a79c4226-a161-42f1-ab0a-a6e16e4df58f" body="An implementation of an item in a menu. A menu item is essentially a button&#xA;sitting in a list. When the user selects the &quot;button&quot;, the action&#xA;associated with the menu item is performed. A &lt;code>JMenuItem&lt;/code>&#xA;contained in a &lt;code>JPopupMenu&lt;/code> performs exactly that function.&#xA;&lt;p>&#xA;For further documentation and for examples, see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html&quot;>How to Use Menus&lt;/a>&#xA;in &lt;em>The Java Tutorial.&lt;/em>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: An item which can be selected in a menu.&#xA;&#xA;@version 1.118 03/05/04&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;@see JPopupMenu&#xA;@see JMenu&#xA;@see JCheckBoxMenuItem&#xA;@see JRadioButtonMenuItem&#xA;" annotatedElement="bef91138-6780-4c26-8173-782522359953"/>
            <generalization xmi:id="0484a699-c6af-431b-b7d3-82a64f030d11" isSubstitutable="true" general="5e46952d-1199-4624-8b80-51b76d0ae441"/>
            <interfaceRealization xmi:id="3b4c5024-ff2b-4241-8350-460c07552006" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="bef91138-6780-4c26-8173-782522359953" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <interfaceRealization xmi:id="c828ff98-3fba-45fb-a7b8-ebf77d2494ba" name="" supplier="de6cdb33-0a16-47b4-939d-325aedf18238" client="bef91138-6780-4c26-8173-782522359953" contract="de6cdb33-0a16-47b4-939d-325aedf18238"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="90963d94-8b43-491d-8c3a-554137f22ff5" name="MenuItemFocusListener" visibility="private" clientDependency="4ddb00ee-b446-4740-ba3d-ac233227b13f 0f724d3e-6b2c-4bd2-81ff-c680def1092d">
              <interfaceRealization xmi:id="4ddb00ee-b446-4740-ba3d-ac233227b13f" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="90963d94-8b43-491d-8c3a-554137f22ff5" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
              <interfaceRealization xmi:id="0f724d3e-6b2c-4bd2-81ff-c680def1092d" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="90963d94-8b43-491d-8c3a-554137f22ff5" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8b8029ee-6702-46f4-8721-7eb5a2c36ae0" name="AccessibleJMenuItem" visibility="protected" clientDependency="f152a29b-68d7-4ab5-af2d-7d70537ebc0f">
              <ownedComment xmi:id="93938ca2-9d2e-4888-9585-97a570e572ee" body="This class implements accessibility support for the&#xA;&lt;code>JMenuItem&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to menu item user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="8b8029ee-6702-46f4-8721-7eb5a2c36ae0"/>
              <generalization xmi:id="3f298946-5dcd-47a1-87fa-301a67c5148f" isSubstitutable="true" general="fc324df8-f45f-40cb-bb56-c8b492559e6c"/>
              <interfaceRealization xmi:id="f152a29b-68d7-4ab5-af2d-7d70537ebc0f" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="8b8029ee-6702-46f4-8721-7eb5a2c36ae0" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="35ff81f0-395c-4b96-8504-5cb8d2f59c04" name="MenuItemPropertyChangeListener" visibility="private" clientDependency="5a742063-1804-421f-ba2a-d8bf0d401a42">
              <generalization xmi:id="f246706f-884b-410a-a4f7-d6a2ce0ca710" isSubstitutable="true" general="cbed774c-a97b-48be-b3e8-5222836b97c6"/>
              <interfaceRealization xmi:id="5a742063-1804-421f-ba2a-d8bf0d401a42" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="35ff81f0-395c-4b96-8504-5cb8d2f59c04" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8bfc2cad-08f1-4d29-8fe0-bc919f7e8ed9" name="DefaultComboBoxModel" clientDependency="73263718-2b94-48b8-b978-91284bc830a7 c6bd1947-8ec5-4cd7-912c-0c2496752dac">
            <ownedComment xmi:id="524976a1-6483-4404-87a4-3390ead85f32" body="The default model for combo boxes.&#xA;&#xA;@version 1.19 05/05/04&#xA;@author Arnaud Weber&#xA;@author Tom Santos&#xA;" annotatedElement="8bfc2cad-08f1-4d29-8fe0-bc919f7e8ed9"/>
            <generalization xmi:id="5356c30c-b4fd-4df9-801a-f865d04652cc" isSubstitutable="true" general="8cf5bc32-a3b1-4981-bc71-7af4f2144124"/>
            <interfaceRealization xmi:id="c6bd1947-8ec5-4cd7-912c-0c2496752dac" name="" supplier="cd3b9bbe-f405-4cf4-8080-26d9f37d6ad1" client="8bfc2cad-08f1-4d29-8fe0-bc919f7e8ed9" contract="cd3b9bbe-f405-4cf4-8080-26d9f37d6ad1"/>
            <interfaceRealization xmi:id="73263718-2b94-48b8-b978-91284bc830a7" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="8bfc2cad-08f1-4d29-8fe0-bc919f7e8ed9" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="12940c73-f99b-49af-983a-57a4135cb8fb" name="DefaultButtonModel" clientDependency="a8a866c8-bd74-432a-92b6-99e6987ac926 c7e46ee6-7702-4937-9cf4-f9e9ce350979">
            <ownedComment xmi:id="f9b5a691-c3ed-4154-927c-4b9842de0356" body="The default implementation of a &lt;code>Button&lt;/code> component's data model.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.45 05/05/04&#xA;@author Jeff Dinkins&#xA;" annotatedElement="12940c73-f99b-49af-983a-57a4135cb8fb"/>
            <interfaceRealization xmi:id="c7e46ee6-7702-4937-9cf4-f9e9ce350979" name="" supplier="9891cee7-a32e-47c4-90bd-23415c032643" client="12940c73-f99b-49af-983a-57a4135cb8fb" contract="9891cee7-a32e-47c4-90bd-23415c032643"/>
            <interfaceRealization xmi:id="a8a866c8-bd74-432a-92b6-99e6987ac926" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="12940c73-f99b-49af-983a-57a4135cb8fb" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="18cb35a3-9f9e-4251-ba29-48407f975f19" name="JPanel" clientDependency="81888cf4-941e-4516-aa3e-e2cf19d8ab91">
            <ownedComment xmi:id="228963d8-01b7-4a7e-871a-2258d77f0df4" body="&lt;code>JPanel&lt;/code> is a generic lightweight container.&#xA;For examples and task-oriented documentation for JPanel, see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/panel.html&quot;>How to Use Panels&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;description: A generic lightweight container.&#xA;&#xA;@version 1.46 12/19/03&#xA;@author Arnaud Weber&#xA;@author Steve Wilson&#xA;" annotatedElement="18cb35a3-9f9e-4251-ba29-48407f975f19"/>
            <generalization xmi:id="581d575b-870d-409f-9b2a-2d4b60adc5ed" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="81888cf4-941e-4516-aa3e-e2cf19d8ab91" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="18cb35a3-9f9e-4251-ba29-48407f975f19" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c44f51b9-2a53-4bb8-b732-5bc26faba475" name="AccessibleJPanel" visibility="protected">
              <ownedComment xmi:id="62da7759-e33a-448b-abb8-38b05a8078d2" body="This class implements accessibility support for the&#xA;&lt;code>JPanel&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to panel user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="c44f51b9-2a53-4bb8-b732-5bc26faba475"/>
              <generalization xmi:id="5ec2ebf5-8110-4c3c-8764-73a86f34f0c9" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2639dd2a-3908-4215-811d-05d8d3e44453" name="AncestorNotifier" visibility="package" clientDependency="f4b1c855-75fe-4167-8964-b68b02b0fccc 0584cd39-e5c1-4c4e-9b03-9550e190ca3c 2b0e47b5-34e9-4245-b60e-d0ce81b79a78">
            <ownedComment xmi:id="2da2b5fc-dcd8-406e-b75c-acaa7efbb79c" body="@version 1.19 12/19/03&#xA;@author Dave Moore&#xA;" annotatedElement="2639dd2a-3908-4215-811d-05d8d3e44453"/>
            <interfaceRealization xmi:id="f4b1c855-75fe-4167-8964-b68b02b0fccc" name="" supplier="476f85cb-73d6-493e-8dda-f7ed06712460" client="2639dd2a-3908-4215-811d-05d8d3e44453" contract="476f85cb-73d6-493e-8dda-f7ed06712460"/>
            <interfaceRealization xmi:id="0584cd39-e5c1-4c4e-9b03-9550e190ca3c" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="2639dd2a-3908-4215-811d-05d8d3e44453" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
            <interfaceRealization xmi:id="2b0e47b5-34e9-4245-b60e-d0ce81b79a78" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="2639dd2a-3908-4215-811d-05d8d3e44453" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ac8f7ef0-78f7-45c0-86b3-299e9ad201f4" name="JFileChooser" clientDependency="6d40546b-b5b2-438b-bdaa-27439757b2e1">
            <ownedComment xmi:id="8c22d360-bb35-488a-8f81-eb62e55fe7f5" body="&lt;code>JFileChooser&lt;/code> provides a simple mechanism for the user to&#xA;choose a file.&#xA;For information about using &lt;code>JFileChooser&lt;/code>, see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/filechooser.html&quot;>How to Use File Choosers&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&#xA;&lt;p>&#xA;&#xA;The following code pops up a file chooser for the user's home directory that&#xA;sees only .jpg and .gif images:&#xA;&lt;pre>&#xA;JFileChooser chooser = new JFileChooser();&#xA;Note: source for ExampleFileFilter can be found in FileChooserDemo,&#xA;under the demo/jfc directory in the JDK.&#xA;ExampleFileFilter filter = new ExampleFileFilter();&#xA;filter.addExtension(&quot;jpg&quot;);&#xA;filter.addExtension(&quot;gif&quot;);&#xA;filter.setDescription(&quot;JPG &amp; GIF Images&quot;);&#xA;chooser.setFileFilter(filter);&#xA;int returnVal = chooser.showOpenDialog(parent);&#xA;if(returnVal == JFileChooser.APPROVE_OPTION) {&#xA;System.out.println(&quot;You chose to open this file: &quot; +&#xA;chooser.getSelectedFile().getName());&#xA;}&#xA;&lt;/pre>&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A component which allows for the interactive selection of a file.&#xA;&#xA;@version 1.106 06/28/04&#xA;@author Jeff Dinkins&#xA;&#xA;" annotatedElement="ac8f7ef0-78f7-45c0-86b3-299e9ad201f4"/>
            <generalization xmi:id="fd42e8b1-fb30-45c4-a806-73b69722e506" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="6d40546b-b5b2-438b-bdaa-27439757b2e1" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="ac8f7ef0-78f7-45c0-86b3-299e9ad201f4" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="007cda07-0c75-41a5-a0af-e80ffaba043b" name="AccessibleJFileChooser" visibility="protected">
              <ownedComment xmi:id="d236e4c8-2db8-4d08-9cf2-f3cf078f4c2b" body="This class implements accessibility support for the&#xA;&lt;code>JFileChooser&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to file chooser user-interface&#xA;elements.&#xA;" annotatedElement="007cda07-0c75-41a5-a0af-e80ffaba043b"/>
              <generalization xmi:id="ea5ac651-3e84-4fe4-b72c-ea8acf6045bb" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="772dfbdb-ec88-4690-a092-485d2f820790" name="WeakPCL" visibility="private" clientDependency="d6441e6a-6162-4d7b-8d30-69317b890a69">
              <interfaceRealization xmi:id="d6441e6a-6162-4d7b-8d30-69317b890a69" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="772dfbdb-ec88-4690-a092-485d2f820790" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="3fb287b2-c20f-4b71-bf92-42fce6060ce7" name="Renderer" isAbstract="true">
            <ownedComment xmi:id="46d2aacd-29b6-4058-b0c3-d8e98a919d22" body="Defines the requirements for an object responsible for&#xA;&quot;rendering&quot; (displaying) a value.&#xA;&#xA;@version 1.12 12/19/03&#xA;@author Arnaud Weber&#xA;" annotatedElement="3fb287b2-c20f-4b71-bf92-42fce6060ce7"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5c4734e3-15a0-4595-b905-8c8d9c300797" name="JRadioButtonMenuItem" clientDependency="d46626ac-5d27-4fa8-86d1-2a22f1a7c979">
            <ownedComment xmi:id="d9681aa2-46aa-4899-909a-e65dce30af2c" body="An implementation of a radio button menu item.&#xA;A &lt;code>JRadioButtonMenuItem&lt;/code> is&#xA;a menu item that is part of a group of menu items in which only one&#xA;item in the group can be selected. The selected item displays its&#xA;selected state. Selecting it causes any other selected item to&#xA;switch to the unselected state.&#xA;To control the selected state of a group of radio button menu items,&#xA;use a &lt;code>ButtonGroup&lt;/code> object.&#xA;&lt;p>&#xA;For further documentation and examples see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html&quot;>How to Use Menus&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A component within a group of menu items which can be selected.&#xA;&#xA;@version 1.49 12/19/03&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;@see ButtonGroup&#xA;" annotatedElement="5c4734e3-15a0-4595-b905-8c8d9c300797"/>
            <generalization xmi:id="613fe431-a2aa-4378-a258-b8006c5801aa" isSubstitutable="true" general="bef91138-6780-4c26-8173-782522359953"/>
            <interfaceRealization xmi:id="d46626ac-5d27-4fa8-86d1-2a22f1a7c979" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="5c4734e3-15a0-4595-b905-8c8d9c300797" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="df4ded9b-6a18-4fb6-82ea-2c547cb015db" name="AccessibleJRadioButtonMenuItem" visibility="protected">
              <ownedComment xmi:id="c8fc471d-8415-49e0-bebd-ab0857d1a5dd" body="This class implements accessibility support for the&#xA;&lt;code>JRadioButtonMenuItem&lt;/code> class.  It provides an&#xA;implementation of the Java Accessibility API appropriate to&#xA;&lt;code>JRadioButtonMenuItem&lt;/code> user-interface elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="df4ded9b-6a18-4fb6-82ea-2c547cb015db"/>
              <generalization xmi:id="e536a2cd-ab29-40b1-bb6d-c217da452da0" isSubstitutable="true" general="8b8029ee-6702-46f4-8721-7eb5a2c36ae0"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="1d296297-48b4-43e4-a988-0ace4e4c3e98" name="BoundedRangeModel" isAbstract="true">
            <ownedComment xmi:id="c11d946f-e7b7-4171-b28a-c2a842df7046" body="Defines the data model used by components like &lt;code>Slider&lt;/code>s&#xA;and &lt;code>ProgressBar&lt;/code>s.&#xA;Defines four interrelated integer properties: minimum, maximum, extent&#xA;and value.  These four integers define two nested ranges like this:&#xA;&lt;pre>&#xA;minimum &lt;= value &lt;= value+extent &lt;= maximum&#xA;&lt;/pre>&#xA;The outer range is &lt;code>minimum,maximum&lt;/code> and the inner&#xA;range is &lt;code>value,value+extent&lt;/code>.  The inner range&#xA;must lie within the outer one, i.e. &lt;code>value&lt;/code> must be&#xA;less than or equal to &lt;code>maximum&lt;/code> and &lt;code>value+extent&lt;/code>&#xA;must greater than or equal to &lt;code>minimum&lt;/code>, and &lt;code>maximum&lt;/code>&#xA;must be greater than or equal to &lt;code>minimum&lt;/code>.&#xA;There are a few features of this model that one might find a little&#xA;surprising.  These quirks exist for the convenience of the&#xA;Swing BoundedRangeModel clients, such as &lt;code>Slider&lt;/code> and&#xA;&lt;code>ScrollBar&lt;/code>.&#xA;&lt;ul>&#xA;&lt;li>&#xA;The minimum and maximum set methods &quot;correct&quot; the other&#xA;three properties to accommodate their new value argument.  For&#xA;example setting the model's minimum may change its maximum, value,&#xA;and extent properties (in that order), to maintain the constraints&#xA;specified above.&#xA;&#xA;&lt;li>&#xA;The value and extent set methods &quot;correct&quot; their argument to&#xA;fit within the limits defined by the other three properties.&#xA;For example if &lt;code>value == maximum&lt;/code>, &lt;code>setExtent(10)&lt;/code>&#xA;would change the extent (back) to zero.&#xA;&#xA;&lt;li>&#xA;The four BoundedRangeModel values are defined as Java Beans properties&#xA;however Swing ChangeEvents are used to notify clients of changes rather&#xA;than PropertyChangeEvents. This was done to keep the overhead of monitoring&#xA;a BoundedRangeModel low. Changes are often reported at MouseDragged rates.&#xA;&lt;/ul>&#xA;&#xA;&lt;p>&#xA;&#xA;For an example of specifying custom bounded range models used by sliders,&#xA;see &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/overview/anatomy.html&quot;>The Anatomy of a Swing-Based Program&lt;/a>&#xA;in &lt;em>The Java Tutorial.&lt;/em>&#xA;&#xA;@version 1.28 12/19/03&#xA;@author Hans Muller&#xA;@see DefaultBoundedRangeModel&#xA;" annotatedElement="1d296297-48b4-43e4-a988-0ace4e4c3e98"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="efdfa417-b7f3-4341-b934-46a809d7aa5a" name="ProgressMonitor" clientDependency="90dc55bd-5878-4e1f-b3d3-46466467f454">
            <ownedComment xmi:id="18859d0b-e52d-400e-8d00-444e0c92c4d6" body="A class to monitor the progress of some operation. If it looks&#xA;like the operation will take a while, a progress dialog will be popped up.&#xA;When the ProgressMonitor is created it is given a numeric range and a&#xA;descriptive string. As the operation progresses, call the setProgress method&#xA;to indicate how far along the [min,max] range the operation is.&#xA;Initially, there is no ProgressDialog. After the first millisToDecideToPopup&#xA;milliseconds (default 500) the progress monitor will predict how long&#xA;the operation will take.  If it is longer than millisToPopup (default 2000,&#xA;2 seconds) a ProgressDialog will be popped up.&#xA;&lt;p>&#xA;From time to time, when the Dialog box is visible, the progress bar will&#xA;be updated when setProgress is called.  setProgress won't always update&#xA;the progress bar, it will only be done if the amount of progress is&#xA;visibly significant.&#xA;&#xA;&lt;p>&#xA;&#xA;For further documentation and examples see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/progress.html&quot;>How to Monitor Progress&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&#xA;@see ProgressMonitorInputStream&#xA;@author James Gosling&#xA;@author Lynn Monsanto (accessibility)&#xA;@version 1.30 04/15/04&#xA;" annotatedElement="efdfa417-b7f3-4341-b934-46a809d7aa5a"/>
            <generalization xmi:id="570f4e5c-4a26-485b-ad05-9203ac52f132" isSubstitutable="true" general="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
            <interfaceRealization xmi:id="90dc55bd-5878-4e1f-b3d3-46466467f454" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="efdfa417-b7f3-4341-b934-46a809d7aa5a" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="96558bad-0e76-4436-b99d-619e6fd11d57" name="ProgressOptionPane" visibility="private">
              <generalization xmi:id="646199d0-3830-4a8e-8137-e90d110cc13f" isSubstitutable="true" general="e14824fd-e2d0-47e8-b952-0062cc012ad1"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="32cbaf21-c6ea-44a4-81f3-fc443a600612" name="AccessibleProgressMonitor" visibility="protected" clientDependency="2ec844db-bf4a-408b-abb7-890b7dbe87c0 983f3bd7-5064-4c42-a46c-6eb5d795a3a1 5d6b0752-8a9f-450b-a6f9-7f003eed470a">
              <ownedComment xmi:id="52f695c3-4e24-42c1-8281-4187edc21dea" body="&lt;code>AccessibleProgressMonitor&lt;/code> implements accessibility&#xA;support for the &lt;code>ProgressMonitor&lt;/code> class.&#xA;@since 1.5&#xA;" annotatedElement="32cbaf21-c6ea-44a4-81f3-fc443a600612"/>
              <generalization xmi:id="284c3ea2-3e87-4e5f-bb79-3de4199ae61c" isSubstitutable="true" general="5e5fecb3-251d-4b0e-b142-9f3aac1d4c57"/>
              <interfaceRealization xmi:id="2ec844db-bf4a-408b-abb7-890b7dbe87c0" name="" supplier="a6772e39-fecf-4aaa-b8ba-55f63854a725" client="32cbaf21-c6ea-44a4-81f3-fc443a600612" contract="a6772e39-fecf-4aaa-b8ba-55f63854a725"/>
              <interfaceRealization xmi:id="5d6b0752-8a9f-450b-a6f9-7f003eed470a" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="32cbaf21-c6ea-44a4-81f3-fc443a600612" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
              <interfaceRealization xmi:id="983f3bd7-5064-4c42-a46c-6eb5d795a3a1" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="32cbaf21-c6ea-44a4-81f3-fc443a600612" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ef8b5e69-9567-4164-8dde-503b0e38ae0c" name="ColorTracker" visibility="package" clientDependency="110d0245-794a-42c3-80b3-9b9e141fa50b dd919f96-77c1-444a-a699-636456a3d69f">
            <interfaceRealization xmi:id="110d0245-794a-42c3-80b3-9b9e141fa50b" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="ef8b5e69-9567-4164-8dde-503b0e38ae0c" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
            <interfaceRealization xmi:id="dd919f96-77c1-444a-a699-636456a3d69f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ef8b5e69-9567-4164-8dde-503b0e38ae0c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="11cd8cee-945c-468e-b8a4-4a925845a8eb" name="DebugGraphics">
            <ownedComment xmi:id="73385018-7d43-4d12-8586-45c398d7c279" body="Graphics subclass supporting graphics debugging. Overrides most methods&#xA;from Graphics.  DebugGraphics objects are rarely created by hand.  They&#xA;are most frequently created automatically when a JComponent's&#xA;debugGraphicsOptions are changed using the setDebugGraphicsOptions()&#xA;method.&#xA;&lt;p>&#xA;NOTE: You must turn off double buffering to use DebugGraphics:&#xA;RepaintManager repaintManager = RepaintManager.currentManager(component);&#xA;repaintManager.setDoubleBufferingEnabled(false);&#xA;&#xA;@see JComponent#setDebugGraphicsOptions&#xA;@see RepaintManager#currentManager&#xA;@see RepaintManager#setDoubleBufferingEnabled&#xA;&#xA;@version 1.25 12/19/03&#xA;@author Dave Karlton&#xA;" annotatedElement="11cd8cee-945c-468e-b8a4-4a925845a8eb"/>
            <generalization xmi:id="7d7ef108-350d-4f29-9fe3-168af108a13c" isSubstitutable="true" general="d2ffb4de-d6fb-4ac8-abf2-5e6f98e72ba6"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="e2a40fee-6367-4510-acfe-2350ac769cdb" name="SingleSelectionModel" isAbstract="true">
            <ownedComment xmi:id="1a8f7e86-bcab-4a34-b266-5882f02813dc" body="A model that supports at most one indexed selection.&#xA;&#xA;@version 1.19 12/19/03&#xA;@author Dave Moore&#xA;" annotatedElement="e2a40fee-6367-4510-acfe-2350ac769cdb"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="be64f521-3657-4ad1-9008-a1349d557347" name="WindowConstants" isAbstract="true">
            <ownedComment xmi:id="236ce043-80fb-43b4-a766-4b1f0a80a83a" body="Constants used to control the window-closing operation.&#xA;The &lt;code>setDefaultCloseOperation&lt;/code> and&#xA;&lt;code>getDefaultCloseOperation&lt;/code> methods&#xA;provided by &lt;code>JFrame&lt;/code>,&#xA;&lt;code>JInternalFrame&lt;/code>, and&#xA;&lt;code>JDialog&lt;/code>&#xA;use these constants.&#xA;For examples of setting the default window-closing operation, see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/frame.html#windowevents&quot;>Responding to Window-Closing Events&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;@see JFrame#setDefaultCloseOperation(int)&#xA;@see JDialog#setDefaultCloseOperation(int)&#xA;@see JInternalFrame#setDefaultCloseOperation(int)&#xA;&#xA;&#xA;@version 1.21 12/19/03&#xA;@author Amy Fowler&#xA;" annotatedElement="be64f521-3657-4ad1-9008-a1349d557347"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5e46952d-1199-4624-8b80-51b76d0ae441" name="AbstractButton" clientDependency="85e9be6d-5eae-4953-ae23-ce19c0e5a1d4 594846ff-7ea2-4b04-96d9-d970c79c6828" isAbstract="true">
            <ownedComment xmi:id="59020ea4-ff73-4709-83cf-209be9f36e8a" body="Defines common behaviors for buttons and menu items.&#xA;For further information see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/button.html&quot;>How to Use Buttons, Check Boxes, and Radio Buttons&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&#xA;&lt;p>&#xA;&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.174 05/18/04&#xA;@author Jeff Dinkins&#xA;" annotatedElement="5e46952d-1199-4624-8b80-51b76d0ae441"/>
            <generalization xmi:id="dbc06696-f372-4bc8-944b-1ee09f831e52" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="85e9be6d-5eae-4953-ae23-ce19c0e5a1d4" name="" supplier="db09b331-737d-46b0-b88c-ec77f93dd925" client="5e46952d-1199-4624-8b80-51b76d0ae441" contract="db09b331-737d-46b0-b88c-ec77f93dd925"/>
            <interfaceRealization xmi:id="594846ff-7ea2-4b04-96d9-d970c79c6828" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="5e46952d-1199-4624-8b80-51b76d0ae441" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a8e7585c-747f-4d17-a9b1-60e80d0997e9" name="ButtonActionPropertyChangeListener" visibility="private" clientDependency="1aa0bc25-1406-4f5e-99f5-87452ef8c75c">
              <generalization xmi:id="f3b72d1b-f0b7-4981-a32a-59c66000583c" isSubstitutable="true" general="cbed774c-a97b-48be-b3e8-5222836b97c6"/>
              <interfaceRealization xmi:id="1aa0bc25-1406-4f5e-99f5-87452ef8c75c" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="a8e7585c-747f-4d17-a9b1-60e80d0997e9" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="98d423c0-a240-4c99-863c-b1e8d3a6de2c" name="ButtonChangeListener" visibility="protected" clientDependency="2aab483b-923b-4f46-8c11-890583361101 f5a13241-5fcc-4746-aecc-5ab53e3b4aae">
              <ownedComment xmi:id="f7e4aea8-36fd-4df8-8afc-74091c1a7832" body="Extends &lt;code>ChangeListener&lt;/code> to be serializable.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="98d423c0-a240-4c99-863c-b1e8d3a6de2c"/>
              <interfaceRealization xmi:id="2aab483b-923b-4f46-8c11-890583361101" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="98d423c0-a240-4c99-863c-b1e8d3a6de2c" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
              <interfaceRealization xmi:id="f5a13241-5fcc-4746-aecc-5ab53e3b4aae" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="98d423c0-a240-4c99-863c-b1e8d3a6de2c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="fc324df8-f45f-40cb-bb56-c8b492559e6c" name="AccessibleAbstractButton" visibility="protected" clientDependency="f5c88b36-bf0b-4132-a9da-10708954665e a9b14da9-07d6-4fec-9500-7b7e4433bedd 8b6baa99-3a51-4293-b6ef-e6773d469d37 9fb620fe-d1ff-4eeb-a5b9-fe8d58e82df4" isAbstract="true">
              <ownedComment xmi:id="bf5bfe99-4cfa-434f-94c6-d287aa17413e" body="This class implements accessibility support for the&#xA;&lt;code>AbstractButton&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to button and menu item&#xA;user-interface elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="fc324df8-f45f-40cb-bb56-c8b492559e6c"/>
              <generalization xmi:id="adb24fbd-5c8f-4764-8041-085992ef09c7" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
              <interfaceRealization xmi:id="f5c88b36-bf0b-4132-a9da-10708954665e" name="" supplier="1f04210f-dd56-4dbb-861c-7a19813caf4c" client="fc324df8-f45f-40cb-bb56-c8b492559e6c" contract="1f04210f-dd56-4dbb-861c-7a19813caf4c"/>
              <interfaceRealization xmi:id="a9b14da9-07d6-4fec-9500-7b7e4433bedd" name="" supplier="48ff1225-61c7-495b-a398-c2903fb1210d" client="fc324df8-f45f-40cb-bb56-c8b492559e6c" contract="48ff1225-61c7-495b-a398-c2903fb1210d"/>
              <interfaceRealization xmi:id="8b6baa99-3a51-4293-b6ef-e6773d469d37" name="" supplier="a6772e39-fecf-4aaa-b8ba-55f63854a725" client="fc324df8-f45f-40cb-bb56-c8b492559e6c" contract="a6772e39-fecf-4aaa-b8ba-55f63854a725"/>
              <interfaceRealization xmi:id="9fb620fe-d1ff-4eeb-a5b9-fe8d58e82df4" name="" supplier="c852d880-774f-46c5-ab2e-f0ab04fefa0b" client="fc324df8-f45f-40cb-bb56-c8b492559e6c" contract="c852d880-774f-46c5-ab2e-f0ab04fefa0b"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="cbc959e2-4447-44f3-8fca-c40691659798" name="ButtonKeyBinding" visibility="package" clientDependency="b5d47397-d07c-4c30-b605-8fdd0a4bdf2e">
                <interfaceRealization xmi:id="b5d47397-d07c-4c30-b605-8fdd0a4bdf2e" name="" supplier="3ca72526-7c1c-4937-b3c5-b4dfd0213fcb" client="cbc959e2-4447-44f3-8fca-c40691659798" contract="3ca72526-7c1c-4937-b3c5-b4dfd0213fcb"/>
              </nestedClassifier>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="cc75768c-1e4e-4c62-8549-2eeafec6e1dc" name="Handler" visibility="package" clientDependency="2692c009-f33f-41eb-9949-8f987d8ea5bb 1073da23-40bd-447a-8e8f-de7d6f652f51 f5384d06-265b-4268-a8a3-fb632f2e47c1 50283ecf-934e-4b21-9550-684b20c0e9bb">
              <interfaceRealization xmi:id="50283ecf-934e-4b21-9550-684b20c0e9bb" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="cc75768c-1e4e-4c62-8549-2eeafec6e1dc" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
              <interfaceRealization xmi:id="f5384d06-265b-4268-a8a3-fb632f2e47c1" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="cc75768c-1e4e-4c62-8549-2eeafec6e1dc" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
              <interfaceRealization xmi:id="2692c009-f33f-41eb-9949-8f987d8ea5bb" name="" supplier="1dd642cc-ad4c-43b8-91c1-a201cb5d8292" client="cc75768c-1e4e-4c62-8549-2eeafec6e1dc" contract="1dd642cc-ad4c-43b8-91c1-a201cb5d8292"/>
              <interfaceRealization xmi:id="1073da23-40bd-447a-8e8f-de7d6f652f51" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="cc75768c-1e4e-4c62-8549-2eeafec6e1dc" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d0b3f13c-82de-4fa1-b0cc-0211d66f1aa0" name="JColorChooser" clientDependency="3bf0868e-20e6-41d8-9645-399d681c4a85">
            <ownedComment xmi:id="cf54b593-f1be-4793-b04f-21f20765cbb9" body="&lt;code>JColorChooser&lt;/code> provides a pane of controls designed to allow&#xA;a user to manipulate and select a color.&#xA;For information about using color choosers, see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/colorchooser.html&quot;>How to Use Color Choosers&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&#xA;&lt;p>&#xA;&#xA;This class provides three levels of API:&#xA;&lt;ol>&#xA;&lt;li>A static convenience method which shows a modal color-chooser&#xA;dialog and returns the color selected by the user.&#xA;&lt;li>A static convenience method for creating a color-chooser dialog&#xA;where &lt;code>ActionListeners&lt;/code> can be specified to be invoked when&#xA;the user presses one of the dialog buttons.&#xA;&lt;li>The ability to create instances of &lt;code>JColorChooser&lt;/code> panes&#xA;directly (within any container). &lt;code>PropertyChange&lt;/code> listeners&#xA;can be added to detect when the current &quot;color&quot; property changes.&#xA;&lt;/ol>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A component that supports selecting a Color.&#xA;&#xA;&#xA;@version 1.47 12/19/03&#xA;@author James Gosling&#xA;@author Amy Fowler&#xA;@author Steve Wilson&#xA;" annotatedElement="d0b3f13c-82de-4fa1-b0cc-0211d66f1aa0"/>
            <generalization xmi:id="f70ffd8a-755d-471f-891e-5b8faf76b90e" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="3bf0868e-20e6-41d8-9645-399d681c4a85" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="d0b3f13c-82de-4fa1-b0cc-0211d66f1aa0" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="40b26894-bec7-410b-ba81-9658515497af" name="AccessibleJColorChooser" visibility="protected">
              <ownedComment xmi:id="9ac1b3b1-872c-4821-9b19-b40555f18cd2" body="This class implements accessibility support for the&#xA;&lt;code>JColorChooser&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to color chooser user-interface&#xA;elements.&#xA;" annotatedElement="40b26894-bec7-410b-ba81-9658515497af"/>
              <generalization xmi:id="38537818-00dc-40ea-b7f1-0738bce354b1" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="cd3b9bbe-f405-4cf4-8080-26d9f37d6ad1" name="MutableComboBoxModel" isAbstract="true">
            <ownedComment xmi:id="fc66cdc9-d33c-42c0-999e-d526272a7d36" body="A mutable version of &lt;code>ComboBoxModel&lt;/code>.&#xA;&#xA;@version 1.12 12/19/03&#xA;@author Tom Santos&#xA;" annotatedElement="cd3b9bbe-f405-4cf4-8080-26d9f37d6ad1"/>
            <generalization xmi:id="7c05a047-f49f-4be5-be0a-728508278636" isSubstitutable="true" general="97e663de-bcd4-4b75-a4ee-664a63a2c272"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5631db61-5a9e-41f0-be2c-d20664f57077" name="MenuSelectionManager">
            <ownedComment xmi:id="23f2b67b-c888-4f16-86d8-e05934143c47" body="A MenuSelectionManager owns the selection in menu hierarchy.&#xA;&#xA;@version 1.38 12/19/03&#xA;@author Arnaud Weber&#xA;" annotatedElement="5631db61-5a9e-41f0-be2c-d20664f57077"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="98246b5d-ac1a-4bf4-92a3-1a8192d7dd4a" name="FocusManager" isAbstract="true">
            <ownedComment xmi:id="0161ec9c-9c29-4765-b376-983d205f1541" body="This class has been obsoleted by the 1.4 focus APIs. While client code may&#xA;still use this class, developers are strongly encouraged to use&#xA;&lt;code>java.awt.KeyboardFocusManager&lt;/code> and&#xA;&lt;code>java.awt.DefaultKeyboardFocusManager&lt;/code> instead.&#xA;&lt;p>&#xA;Please see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html&quot;>&#xA;How to Use the Focus Subsystem&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>, and the&#xA;&lt;a href=&quot;../../java/awt/doc-files/FocusSpec.html&quot;>Focus Specification&lt;/a>&#xA;for more information.&#xA;&#xA;@see &lt;a href=&quot;../../java/awt/doc-files/FocusSpec.html&quot;>Focus Specification&lt;/a>&#xA;&#xA;@version 1.28, 05/18/04&#xA;@author Arnaud Weber&#xA;@author David Mendenhall&#xA;" annotatedElement="98246b5d-ac1a-4bf4-92a3-1a8192d7dd4a"/>
            <generalization xmi:id="e4644745-b291-4f96-9871-38dbc79a905b" isSubstitutable="true" general="f355334b-be82-454d-a4ad-c985690a4620"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a1e5294c-5cb9-4dcd-8c36-32d89d3e828f" name="MultiUIDefaults" visibility="package">
            <ownedComment xmi:id="4954e428-ae59-4685-b59f-cbfaa642301c" body="@version 1.10 02/02/00&#xA;@author Hans Muller&#xA;" annotatedElement="a1e5294c-5cb9-4dcd-8c36-32d89d3e828f"/>
            <generalization xmi:id="7e8b7e59-41ad-4258-9ba6-7ea261e99299" isSubstitutable="true" general="07efb30b-f3bf-4a82-8804-829b13b9bf19"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="eb765936-42e3-4bc2-b788-a202fd887e79" name="MultiUIDefaultsEnumerator" visibility="private" clientDependency="e6a8e959-f9a2-4796-9cc2-423f3f6408b1">
              <interfaceRealization xmi:id="e6a8e959-f9a2-4796-9cc2-423f3f6408b1" name="" supplier="9e9adaa7-1ac1-4cd9-89db-7b98e385abf9" client="eb765936-42e3-4bc2-b788-a202fd887e79" contract="9e9adaa7-1ac1-4cd9-89db-7b98e385abf9"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="a3bc83b9-743b-4792-a0e2-17eddbedafec" name="undo">
            <packagedElement xmi:type="uml:Class" xmi:id="e9bed295-2da5-47ac-86c5-af6a94a3d1b3" name="StateEdit">
              <ownedComment xmi:id="4376e3ad-60eb-41f1-ad90-d9fbbdc129bd" body="&lt;P>StateEdit is a general edit for objects that change state.&#xA;Objects being edited must conform to the StateEditable interface.&lt;/P>&#xA;&#xA;&lt;P>This edit class works by asking an object to store it's state in&#xA;Hashtables before and after editing occurs.  Upon undo or redo the&#xA;object is told to restore it's state from these Hashtables.&lt;/P>&#xA;&#xA;A state edit is used as follows:&#xA;&lt;PRE>&#xA;Create the edit during the &quot;before&quot; state of the object&#xA;StateEdit newEdit = new StateEdit(myObject);&#xA;Modify the object&#xA;myObject.someStateModifyingMethod();&#xA;&quot;end&quot; the edit when you are done modifying the object&#xA;newEdit.end();&#xA;&lt;/PRE>&#xA;&#xA;&lt;P>&lt;EM>Note that when a StateEdit ends, it removes redundant state from&#xA;the Hashtables - A state Hashtable is not guaranteed to contain all&#xA;keys/values placed into it when the state is stored!&lt;/EM>&lt;/P>&#xA;&#xA;@see StateEditable&#xA;&#xA;@version 1.14 05/05/04&#xA;@author Ray Ryan&#xA;" annotatedElement="e9bed295-2da5-47ac-86c5-af6a94a3d1b3"/>
              <generalization xmi:id="7b801356-7957-43c2-88eb-a37116af7e44" isSubstitutable="true" general="01807a27-262a-407f-9ff1-9f482a3fceb4"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0b779f40-1cb6-4617-8b2d-5eb47e9fad2c" name="UndoableEditSupport">
              <ownedComment xmi:id="c3eaa000-be42-4140-b294-ea9e36eb4e3c" body="A support class used for managing &lt;code>UndoableEdit&lt;/code> listeners.&#xA;&#xA;@author Ray Ryan&#xA;@version 1.20 05/05/04&#xA;" annotatedElement="0b779f40-1cb6-4617-8b2d-5eb47e9fad2c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="42c28ed5-cd72-42d5-acbd-694b4fb1cc86" name="UndoManager" clientDependency="479856cf-c509-4fc0-bdd2-cb26e9c110af">
              <ownedComment xmi:id="826a4f00-3fef-43f7-8f46-3c2d416d99b4" body="Concrete subclass of &lt;code>CompoundEdit&lt;/code>&#xA;which can serve as a &lt;code>UndoableEditListener&lt;/code>,&#xA;consolidating the &lt;code>UndoableEditEvents&lt;/code> from a&#xA;variety of sources, and undoing or redoing them one at a time.&#xA;&#xA;Unlike &lt;code>AbstractUndoableEdit&lt;/code> and &lt;code>CompoundEdit&lt;/code>,&#xA;the public methods of this&#xA;class are synchronized, and should be safe to call from multiple&#xA;threads. This should make &lt;code>UndoManager&lt;/code>&#xA;a convenient marshall for sets of undoable JavaBeans.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author Ray Ryan&#xA;@version 1.35, 12/19/03&#xA;" annotatedElement="42c28ed5-cd72-42d5-acbd-694b4fb1cc86"/>
              <generalization xmi:id="807407ed-7f33-4a10-8466-889c1f3352aa" isSubstitutable="true" general="64fb6629-40e8-4ab5-b8bf-84a4b23e2e66"/>
              <interfaceRealization xmi:id="479856cf-c509-4fc0-bdd2-cb26e9c110af" name="" supplier="f4c98f3d-8995-45e9-b8b0-6e599175474b" client="42c28ed5-cd72-42d5-acbd-694b4fb1cc86" contract="f4c98f3d-8995-45e9-b8b0-6e599175474b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="ba4010f6-2088-4473-8eda-c341d14d2db9" name="UndoableEdit" isAbstract="true">
              <ownedComment xmi:id="092a9db2-c556-4489-8bfa-5cb0ee9ac0ea" body="An object representing an edit that has been done, and that can be&#xA;undone and redone.&#xA;&#xA;@version 1.19, 12/19/03&#xA;@author Ray Ryan&#xA;" annotatedElement="ba4010f6-2088-4473-8eda-c341d14d2db9"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="64fb6629-40e8-4ab5-b8bf-84a4b23e2e66" name="CompoundEdit">
              <ownedComment xmi:id="ec926fce-1edb-4568-81a2-450e363a58a6" body="A concrete subclass of AbstractUndoableEdit, used to assemble little&#xA;UndoableEdits into great big ones.&#xA;&#xA;@version 1.25 05/05/04&#xA;@author Ray Ryan&#xA;" annotatedElement="64fb6629-40e8-4ab5-b8bf-84a4b23e2e66"/>
              <generalization xmi:id="4cd9614a-4bc0-4b23-87c3-9c55c37efa08" isSubstitutable="true" general="01807a27-262a-407f-9ff1-9f482a3fceb4"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f63ced99-333e-45bb-8975-ccc9cecb11b3" name="CannotRedoException">
              <ownedComment xmi:id="2d52b1f2-1d30-4117-8e04-7a6377d671b6" body="Thrown when an UndoableEdit is told to &lt;code>redo()&lt;/code> and can't.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.5 07/16/97&#xA;@author Ray Ryan&#xA;" annotatedElement="f63ced99-333e-45bb-8975-ccc9cecb11b3"/>
              <generalization xmi:id="38ec6966-06f3-4503-a45c-536c83718f9d" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="01807a27-262a-407f-9ff1-9f482a3fceb4" name="AbstractUndoableEdit" clientDependency="ee570643-1de6-4621-a834-817aaf539c46 0e9df5f6-5243-408f-9d9d-be1b932ce45e">
              <ownedComment xmi:id="b43bf159-c09d-4e16-9356-a300e25b0492" body="An abstract implementation of &lt;code>UndoableEdit&lt;/code>,&#xA;implementing simple responses to all boolean methods in&#xA;that interface.&#xA;&#xA;@version 1.29 12/19/03&#xA;@author Ray Ryan&#xA;" annotatedElement="01807a27-262a-407f-9ff1-9f482a3fceb4"/>
              <interfaceRealization xmi:id="ee570643-1de6-4621-a834-817aaf539c46" name="" supplier="ba4010f6-2088-4473-8eda-c341d14d2db9" client="01807a27-262a-407f-9ff1-9f482a3fceb4" contract="ba4010f6-2088-4473-8eda-c341d14d2db9"/>
              <interfaceRealization xmi:id="0e9df5f6-5243-408f-9d9d-be1b932ce45e" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="01807a27-262a-407f-9ff1-9f482a3fceb4" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="37d5719f-1a2c-4d68-a7d8-4eddfc6b930a" name="CannotUndoException">
              <ownedComment xmi:id="444f94b4-947d-459c-8bb9-80dcef598013" body="Thrown when an UndoableEdit is told to &lt;code>undo()&lt;/code> and can't.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.5 07/16/97&#xA;@author Ray Ryan&#xA;" annotatedElement="37d5719f-1a2c-4d68-a7d8-4eddfc6b930a"/>
              <generalization xmi:id="55d5762c-84e2-426a-a405-c3c1394b0418" isSubstitutable="true" general="35b06425-fc81-4524-afea-1bf6ce40c667"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="11394166-6a9c-4923-a15a-82d0e2f444f8" name="StateEditable" isAbstract="true">
              <ownedComment xmi:id="3f6dc697-d49b-42ac-9c52-44cc3bca1d08" body="StateEditable defines the interface for objects that can have&#xA;their state undone/redone by a StateEdit.&#xA;&#xA;@see StateEdit&#xA;" annotatedElement="11394166-6a9c-4923-a15a-82d0e2f444f8"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e14824fd-e2d0-47e8-b952-0062cc012ad1" name="JOptionPane" clientDependency="09e1ee3c-0a89-406f-82c6-fdd97ab35784">
            <ownedComment xmi:id="b0580ba3-f860-45b8-a3c5-c3cb6019d0cf" body="&lt;code>JOptionPane&lt;/code> makes it easy to pop up a standard dialog box that&#xA;prompts users for a value or informs them of something.&#xA;For information about using &lt;code>JOptionPane&lt;/code>, see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/dialog.html&quot;>How to Make Dialogs&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&#xA;&lt;p>&#xA;&#xA;While the &lt;code>JOptionPane&lt;/code>&#xA;class may appear complex because of the large number of methods, almost&#xA;all uses of this class are one-line calls to one of the static&#xA;&lt;code>showXxxDialog&lt;/code> methods shown below:&#xA;&lt;blockquote>&#xA;&#xA;&#xA;&lt;table border=1 summary=&quot;Common JOptionPane method names and their descriptions&quot;>&#xA;&lt;tr>&#xA;&lt;th>Method Name&lt;/th>&#xA;&lt;th>Description&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>showConfirmDialog&lt;/td>&#xA;&lt;td>Asks a confirming question, like yes/no/cancel.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>showInputDialog&lt;/td>&#xA;&lt;td>Prompt for some input.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>showMessageDialog&lt;/td>&#xA;&lt;td>Tell the user about something that has happened.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>showOptionDialog&lt;/td>&#xA;&lt;td>The Grand Unification of the above three.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&#xA;&lt;/blockquote>&#xA;Each of these methods also comes in a &lt;code>showInternalXXX&lt;/code>&#xA;flavor, which uses an internal frame to hold the dialog box (see&#xA;{@link JInternalFrame}).&#xA;Multiple convenience methods have also been defined -- overloaded&#xA;versions of the basic methods that use different parameter lists.&#xA;&lt;p>&#xA;All dialogs are modal. Each &lt;code>showXxxDialog&lt;/code> method blocks&#xA;the current thread until the user's interaction is complete.&#xA;&lt;p>&#xA;&#xA;&lt;table cellspacing=6 cellpadding=4 border=0 align=right summary=&quot;layout&quot;>&#xA;&lt;tr>&#xA;&lt;td bgcolor=#FFe0d0 rowspan=2>icon&lt;/td>&#xA;&lt;td bgcolor=#FFe0d0>message&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td bgcolor=#FFe0d0>input value&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td bgcolor=#FFe0d0 colspan=2>option buttons&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&#xA;The basic appearance of one of these dialog boxes is generally&#xA;similar to the picture at the right, although the various&#xA;look-and-feels are&#xA;ultimately responsible for the final result.  In particular, the&#xA;look-and-feels will adjust the layout to accommodate the option pane's&#xA;&lt;code>ComponentOrientation&lt;/code> property.&#xA;&lt;br clear=all>&#xA;&lt;p>&#xA;&lt;b>Parameters:&lt;/b>&lt;br>&#xA;The parameters to these methods follow consistent patterns:&#xA;&lt;blockquote>&#xA;&lt;dl compact>&#xA;&lt;dt>parentComponent&lt;dd>&#xA;Defines the &lt;code>Component&lt;/code> that is to be the parent of this&#xA;dialog box.&#xA;It is used in two ways: the &lt;code>Frame&lt;/code> that contains&#xA;it is used as the &lt;code>Frame&lt;/code>&#xA;parent for the dialog box, and its screen coordinates are used in&#xA;the placement of the dialog box. In general, the dialog box is placed&#xA;just below the component. This parameter may be &lt;code>null&lt;/code>,&#xA;in which case a default &lt;code>Frame&lt;/code> is used as the parent,&#xA;and the dialog will be&#xA;centered on the screen (depending on the L&amp;F).&#xA;&lt;dt>&lt;a name=message>message&lt;/a>&lt;dd>&#xA;A descriptive message to be placed in the dialog box.&#xA;In the most common usage, message is just a &lt;code>String&lt;/code> or&#xA;&lt;code>String&lt;/code> constant.&#xA;However, the type of this parameter is actually &lt;code>Object&lt;/code>. Its&#xA;interpretation depends on its type:&#xA;&lt;dl compact>&#xA;&lt;dt>Object[]&lt;dd>An array of objects is interpreted as a series of&#xA;messages (one per object) arranged in a vertical stack.&#xA;The interpretation is recursive -- each object in the&#xA;array is interpreted according to its type.&#xA;&lt;dt>Component&lt;dd>The &lt;code>Component&lt;/code> is displayed in the dialog.&#xA;&lt;dt>Icon&lt;dd>The &lt;code>Icon&lt;/code> is wrapped in a &lt;code>JLabel&lt;/code>&#xA;and displayed in the dialog.&#xA;&lt;dt>others&lt;dd>The object is converted to a &lt;code>String&lt;/code> by calling&#xA;its &lt;code>toString&lt;/code> method. The result is wrapped in a&#xA;&lt;code>JLabel&lt;/code> and displayed.&#xA;&lt;/dl>&#xA;&lt;dt>messageType&lt;dd>Defines the style of the message. The Look and Feel&#xA;manager may lay out the dialog differently depending on this value, and&#xA;will often provide a default icon. The possible values are:&#xA;&lt;ul>&#xA;&lt;li>&lt;code>ERROR_MESSAGE&lt;/code>&#xA;&lt;li>&lt;code>INFORMATION_MESSAGE&lt;/code>&#xA;&lt;li>&lt;code>WARNING_MESSAGE&lt;/code>&#xA;&lt;li>&lt;code>QUESTION_MESSAGE&lt;/code>&#xA;&lt;li>&lt;code>PLAIN_MESSAGE&lt;/code>&#xA;&lt;/ul>&#xA;&lt;dt>optionType&lt;dd>Defines the set of option buttons that appear at&#xA;the bottom of the dialog box:&#xA;&lt;ul>&#xA;&lt;li>&lt;code>DEFAULT_OPTION&lt;/code>&#xA;&lt;li>&lt;code>YES_NO_OPTION&lt;/code>&#xA;&lt;li>&lt;code>YES_NO_CANCEL_OPTION&lt;/code>&#xA;&lt;li>&lt;code>OK_CANCEL_OPTION&lt;/code>&#xA;&lt;/ul>&#xA;You aren't limited to this set of option buttons.  You can provide any&#xA;buttons you want using the options parameter.&#xA;&lt;dt>options&lt;dd>A more detailed description of the set of option buttons&#xA;that will appear at the bottom of the dialog box.&#xA;The usual value for the options parameter is an array of&#xA;&lt;code>String&lt;/code>s. But&#xA;the parameter type is an array of &lt;code>Objects&lt;/code>.&#xA;A button is created for each object depending on its type:&#xA;&lt;dl compact>&#xA;&lt;dt>Component&lt;dd>The component is added to the button row directly.&#xA;&lt;dt>Icon&lt;dd>A &lt;code>JButton&lt;/code> is created with this as its label.&#xA;&lt;dt>other&lt;dd>The &lt;code>Object&lt;/code> is converted to a string using its&#xA;&lt;code>toString&lt;/code> method and the result is used to&#xA;label a &lt;code>JButton&lt;/code>.&#xA;&lt;/dl>&#xA;&lt;dt>icon&lt;dd>A decorative icon to be placed in the dialog box. A default&#xA;value for this is determined by the &lt;code>messageType&lt;/code> parameter.&#xA;&lt;dt>title&lt;dd>The title for the dialog box.&#xA;&lt;dt>initialValue&lt;dd>The default selection (input value).&#xA;&lt;/dl>&#xA;&lt;/blockquote>&#xA;&lt;p>&#xA;When the selection is changed, &lt;code>setValue&lt;/code> is invoked,&#xA;which generates a &lt;code>PropertyChangeEvent&lt;/code>.&#xA;&lt;p>&#xA;If a &lt;code>JOptionPane&lt;/code> has configured to all input&#xA;&lt;code>setWantsInput&lt;/code>&#xA;the bound property &lt;code>JOptionPane.INPUT_VALUE_PROPERTY&lt;/code>&#xA;can also be listened&#xA;to, to determine when the user has input or selected a value.&#xA;&lt;p>&#xA;When one of the &lt;code>showXxxDialog&lt;/code> methods returns an integer,&#xA;the possible values are:&#xA;&lt;ul>&#xA;&lt;li>&lt;code>YES_OPTION&lt;/code>&#xA;&lt;li>&lt;code>NO_OPTION&lt;/code>&#xA;&lt;li>&lt;code>CANCEL_OPTION&lt;/code>&#xA;&lt;li>&lt;code>OK_OPTION&lt;/code>&#xA;&lt;li>&lt;code>CLOSED_OPTION&lt;/code>&#xA;&lt;/ul>&#xA;&lt;b>Examples:&lt;/b>&#xA;&lt;dl>&#xA;&lt;dt>Show an error dialog that displays the message, 'alert':&#xA;&lt;dd>&lt;code>&#xA;JOptionPane.showMessageDialog(null, &quot;alert&quot;, &quot;alert&quot;, JOptionPane.ERROR_MESSAGE);&#xA;&lt;/code>&lt;p>&#xA;&lt;dt>Show an internal information dialog with the message, 'information':&#xA;&lt;dd>&lt;code>&#xA;JOptionPane.showInternalMessageDialog(frame, &quot;information&quot;,&lt;br>&#xA;&lt;ul>&lt;ul>&quot;information&quot;, JOptionPane.INFORMATION_MESSAGE);&lt;/ul>&lt;/ul>&#xA;&lt;/code>&lt;p>&#xA;&lt;dt>Show an information panel with the options yes/no and message 'choose one':&#xA;&lt;dd>&lt;code>JOptionPane.showConfirmDialog(null,&#xA;&lt;ul>&lt;ul>&quot;choose one&quot;, &quot;choose one&quot;, JOptionPane.YES_NO_OPTION);&lt;/ul>&lt;/ul>&#xA;&lt;/code>&lt;p>&#xA;&lt;dt>Show an internal information dialog with the options yes/no/cancel and&#xA;message 'please choose one' and title information:&#xA;&lt;dd>&lt;code>JOptionPane.showInternalConfirmDialog(frame,&#xA;&lt;ul>&lt;ul>&quot;please choose one&quot;, &quot;information&quot;,&lt;/ul>&lt;/ul>&#xA;&lt;ul>&lt;ul>JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE);&lt;/ul>&lt;/ul>&#xA;&lt;/code>&lt;p>&#xA;&lt;dt>Show a warning dialog with the options OK, CANCEL, title 'Warning', and&#xA;message 'Click OK to continue':&#xA;&lt;dd>&lt;code>&#xA;Object[] options = { &quot;OK&quot;, &quot;CANCEL&quot; };&lt;br>&#xA;JOptionPane.showOptionDialog(null, &quot;Click OK to continue&quot;, &quot;Warning&quot;,&#xA;&lt;ul>&lt;ul>JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,&lt;/ul>&lt;/ul>&#xA;&lt;ul>&lt;ul>null, options, options[0]);&lt;/ul>&lt;/ul>&#xA;&lt;/code>&lt;p>&#xA;&lt;dt>Show a dialog asking the user to type in a String:&#xA;&lt;dd>&lt;code>&#xA;String inputValue = JOptionPane.showInputDialog(&quot;Please input a value&quot;);&#xA;&lt;/code>&lt;p>&#xA;&lt;dt>Show a dialog asking the user to select a String:&#xA;&lt;dd>&lt;code>&#xA;Object[] possibleValues = { &quot;First&quot;, &quot;Second&quot;, &quot;Third&quot; };&lt;br>&#xA;Object selectedValue = JOptionPane.showInputDialog(null,&#xA;&lt;ul>&lt;ul>&quot;Choose one&quot;, &quot;Input&quot;,&lt;/ul>&lt;/ul>&#xA;&lt;ul>&lt;ul>JOptionPane.INFORMATION_MESSAGE, null,&lt;/ul>&lt;/ul>&#xA;&lt;ul>&lt;ul>possibleValues, possibleValues[0]);&lt;/ul>&lt;/ul>&#xA;&lt;/code>&lt;p>&#xA;&lt;/dl>&#xA;&lt;b>Direct Use:&lt;/b>&lt;br>&#xA;To create and use an &lt;code>JOptionPane&lt;/code> directly, the&#xA;standard pattern is roughly as follows:&#xA;&lt;pre>&#xA;JOptionPane pane = new JOptionPane(&lt;i>arguments&lt;/i>);&#xA;pane.set&lt;i>.Xxxx(...); // Configure&lt;/i>&#xA;JDialog dialog = pane.createDialog(&lt;i>parentComponent, title&lt;/i>);&#xA;dialog.show();&#xA;Object selectedValue = pane.getValue();&#xA;if(selectedValue == null)&#xA;return CLOSED_OPTION;&#xA;&lt;i>//If there is &lt;b>not&lt;/b> an array of option buttons:&lt;/i>&#xA;if(options == null) {&#xA;if(selectedValue instanceof Integer)&#xA;return ((Integer)selectedValue).intValue();&#xA;return CLOSED_OPTION;&#xA;}&#xA;&lt;i>//If there is an array of option buttons:&lt;/i>&#xA;for(int counter = 0, maxCounter = options.length;&#xA;counter &lt; maxCounter; counter++) {&#xA;if(options[counter].equals(selectedValue))&#xA;return counter;&#xA;}&#xA;return CLOSED_OPTION;&#xA;&lt;/pre>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see JInternalFrame&#xA;&#xA;@beaninfo&#xA;attribute: isContainer true&#xA;description: A component which implements standard dialog box controls.&#xA;&#xA;@version 1.91 03/04/04&#xA;@author James Gosling&#xA;@author Scott Violet&#xA;" annotatedElement="e14824fd-e2d0-47e8-b952-0062cc012ad1"/>
            <generalization xmi:id="58b7c74d-cdf0-4b9c-9d59-6c800673673e" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="09e1ee3c-0a89-406f-82c6-fdd97ab35784" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="e14824fd-e2d0-47e8-b952-0062cc012ad1" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="4740729a-8bd9-440f-9276-2dd180c0e210" name="AccessibleJOptionPane" visibility="protected">
              <ownedComment xmi:id="4ab9e4a7-175f-4abd-b488-ad9d21e1c664" body="This class implements accessibility support for the&#xA;&lt;code>JOptionPane&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to option pane user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="4740729a-8bd9-440f-9276-2dd180c0e210"/>
              <generalization xmi:id="1c719576-62a5-428e-a834-6ac76073b7fe" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="58b42fc6-0747-4374-abd7-b3a8709001c6" name="ModalPrivilegedAction" visibility="private" clientDependency="85ba768d-02c5-495d-9dfe-6467bc306219">
              <ownedComment xmi:id="d74404a6-9dd7-406c-ae8a-5d4cd83a674e" body="Retrieves a method from the provided class and makes it accessible.&#xA;" annotatedElement="58b42fc6-0747-4374-abd7-b3a8709001c6"/>
              <interfaceRealization xmi:id="85ba768d-02c5-495d-9dfe-6467bc306219" name="" supplier="5646b95f-c8d5-4f70-8c2b-9996e66b63ce" client="58b42fc6-0747-4374-abd7-b3a8709001c6" contract="5646b95f-c8d5-4f70-8c2b-9996e66b63ce"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="077d0b24-8305-4eeb-a301-15642735b20b" name="ScrollPaneConstants" isAbstract="true">
            <ownedComment xmi:id="185a4d48-ef30-4442-b619-54b0b233d019" body="Constants used with the JScrollPane component.&#xA;&#xA;@version 1.17 12/19/03&#xA;@author Hans Muller&#xA;" annotatedElement="077d0b24-8305-4eeb-a301-15642735b20b"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="77961fb9-276c-4b0b-b5e6-0ad18ca5ce78" name="KeyStroke">
            <ownedComment xmi:id="72c2a117-cb2f-4627-817b-5440dcc79f6a" body="A KeyStroke represents a key action on the keyboard, or equivalent input&#xA;device. KeyStrokes can correspond to only a press or release of a particular&#xA;key, just as KEY_PRESSED and KEY_RELEASED KeyEvents do; alternately, they&#xA;can correspond to typing a specific Java character, just as KEY_TYPED&#xA;KeyEvents do. In all cases, KeyStrokes can specify modifiers (alt, shift,&#xA;control, meta, or a combination thereof) which must be present during the&#xA;action for an exact match.&#xA;&lt;p>&#xA;KeyStrokes are used to define high-level (semantic) action events. Instead&#xA;of trapping every keystroke and throwing away the ones you are not&#xA;interested in, those keystrokes you care about automatically initiate&#xA;actions on the Components with which they are registered.&#xA;&lt;p>&#xA;KeyStrokes are immutable, and are intended to be unique. Client code cannot&#xA;create a KeyStroke; a variant of &lt;code>getKeyStroke&lt;/code> must be used&#xA;instead. These factory methods allow the KeyStroke implementation to cache&#xA;and share instances efficiently.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see javax.swing.text.Keymap&#xA;@see #getKeyStroke&#xA;&#xA;@version 1.49, 05/18/04&#xA;@author Arnaud Weber&#xA;@author David Mendenhall&#xA;" annotatedElement="77961fb9-276c-4b0b-b5e6-0ad18ca5ce78"/>
            <generalization xmi:id="1e727bdf-c828-4c5e-bc8a-9ba3a79183d1" isSubstitutable="true" general="ae98e8af-ea7c-403d-8c88-c48043536c19"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f5f01a9b-801b-4e59-b16c-5b963c598749" name="JCheckBoxMenuItem" clientDependency="d1c9410e-4f58-47ca-94ad-9968fc8a1a4c b8ca9568-def6-4736-bd21-352e60e0a138">
            <ownedComment xmi:id="2590ba21-123b-40a2-aae4-21fa69a94a90" body="A menu item that can be selected or deselected. If selected, the menu&#xA;item typically appears with a checkmark next to it. If unselected or&#xA;deselected, the menu item appears without a checkmark. Like a regular&#xA;menu item, a check box menu item can have either text or a graphic&#xA;icon associated with it, or both.&#xA;&lt;p>&#xA;Either &lt;code>isSelected&lt;/code>/&lt;code>setSelected&lt;/code> or&#xA;&lt;code>getState&lt;/code>/&lt;code>setState&lt;/code> can be used&#xA;to determine/specify the menu item's selection state. The&#xA;preferred methods are &lt;code>isSelected&lt;/code> and&#xA;&lt;code>setSelected&lt;/code>, which work for all menus and buttons.&#xA;The &lt;code>getState&lt;/code> and &lt;code>setState&lt;/code> methods exist for&#xA;compatibility with other component sets.&#xA;&lt;p>&#xA;For further information and examples of using check box menu items,&#xA;see &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html&quot;>How to Use Menus&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A menu item which can be selected or deselected.&#xA;&#xA;@version 1.55 12/19/03&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;" annotatedElement="f5f01a9b-801b-4e59-b16c-5b963c598749"/>
            <generalization xmi:id="1e47c008-ad36-4f59-a074-c554133b3c07" isSubstitutable="true" general="bef91138-6780-4c26-8173-782522359953"/>
            <interfaceRealization xmi:id="d1c9410e-4f58-47ca-94ad-9968fc8a1a4c" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="f5f01a9b-801b-4e59-b16c-5b963c598749" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
            <interfaceRealization xmi:id="b8ca9568-def6-4736-bd21-352e60e0a138" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="f5f01a9b-801b-4e59-b16c-5b963c598749" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8a851a45-e424-4632-997b-5c4b2528e2e9" name="AccessibleJCheckBoxMenuItem" visibility="protected">
              <ownedComment xmi:id="055d09cf-3f22-44e1-84d7-d17eaffdf389" body="This class implements accessibility support for the&#xA;&lt;code>JCheckBoxMenuItem&lt;/code> class.  It provides an implementation&#xA;of the Java Accessibility API appropriate to checkbox menu item&#xA;user-interface elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="8a851a45-e424-4632-997b-5c4b2528e2e9"/>
              <generalization xmi:id="d76226c9-ee8f-4986-be39-e3a1712931ea" isSubstitutable="true" general="8b8029ee-6702-46f4-8721-7eb5a2c36ae0"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="20b7bf72-932f-4b6f-81a2-b85271b557dc" name="CellRendererPane" clientDependency="b30f79b9-e0ab-47ac-a057-ce990105cdce">
            <ownedComment xmi:id="3344a7c9-1e08-41b8-98a9-f7391ea97650" body="This class is inserted in between cell renderers and the components that&#xA;use them.  It just exists to thwart the repaint() and invalidate() methods&#xA;which would otherwise propagate up the tree when the renderer was configured.&#xA;It's used by the implementations of JTable, JTree, and JList.  For example,&#xA;here's how CellRendererPane is used in the code the paints each row&#xA;in a JList:&#xA;&lt;pre>&#xA;cellRendererPane = new CellRendererPane();&#xA;...&#xA;Component rendererComponent = renderer.getListCellRendererComponent();&#xA;renderer.configureListCellRenderer(dataModel.getElementAt(row), row);&#xA;cellRendererPane.paintComponent(g, rendererComponent, this, x, y, w, h);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;A renderer component must override isShowing() and unconditionally return&#xA;true to work correctly because the Swing paint does nothing for components&#xA;with isShowing false.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.39 12/19/03&#xA;@author Hans Muller&#xA;" annotatedElement="20b7bf72-932f-4b6f-81a2-b85271b557dc"/>
            <generalization xmi:id="99de5955-677d-422f-8c41-171e7c012c63" isSubstitutable="true" general="a4edac23-263c-4616-857d-4de97445e12a"/>
            <interfaceRealization xmi:id="b30f79b9-e0ab-47ac-a057-ce990105cdce" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="20b7bf72-932f-4b6f-81a2-b85271b557dc" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c15cfd1b-69a4-48d1-a170-88e2608d9da9" name="AccessibleCellRendererPane" visibility="protected">
              <ownedComment xmi:id="74e550d6-452d-427d-907f-d929ae09d85d" body="This class implements accessibility support for the&#xA;&lt;code>CellRendererPane&lt;/code> class.&#xA;" annotatedElement="c15cfd1b-69a4-48d1-a170-88e2608d9da9"/>
              <generalization xmi:id="b38437fe-1a2e-437a-9644-feb99da9151b" isSubstitutable="true" general="b3e98866-f74c-49b9-bf05-d16c3c4114d5"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ab0cae1e-3609-4f84-b012-181f2f0d7acf" name="JComponent" clientDependency="00507d6e-5063-4bac-86c0-816eb146ebfe" isAbstract="true">
            <ownedComment xmi:id="224fa195-54b3-41a7-9c47-fd0fbdad398c" body="The base class for all Swing components except top-level containers.&#xA;To use a component that inherits from &lt;code>JComponent&lt;/code>,&#xA;you must place the component in a containment hierarchy&#xA;whose root is a top-level Swing container.&#xA;Top-level Swing containers --&#xA;such as &lt;code>JFrame&lt;/code>, &lt;code>JDialog&lt;/code>,&#xA;and &lt;code>JApplet&lt;/code> --&#xA;are specialized components&#xA;that provide a place for other Swing components to paint themselves.&#xA;For an explanation of containment hierarchies, see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/overview/hierarchy.html&quot;>Swing Components and the Containment Hierarchy&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&#xA;&lt;p>&#xA;The &lt;code>JComponent&lt;/code> class provides:&#xA;&lt;ul>&#xA;&lt;li>The base class for both standard and custom components&#xA;that use the Swing architecture.&#xA;&lt;li>A &quot;pluggable look and feel&quot; (L&amp;F) that can be specified by the&#xA;programmer or (optionally) selected by the user at runtime.&#xA;The look and feel for each component is provided by a&#xA;&lt;em>UI delegate&lt;/em> -- an object that descends from&#xA;{@link javax.swing.plaf.ComponentUI}.&#xA;See &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/plaf.html&quot;>How&#xA;to Set the Look and Feel&lt;/a>&#xA;in &lt;em>The Java Tutorial&lt;/em>&#xA;for more information.&#xA;&lt;li>Comprehensive keystroke handling.&#xA;See the document &lt;a&#xA;href=&quot;http://java.sun.com/products/jfc/tsc/special_report/kestrel/keybindings.html&quot;>Keyboard&#xA;Bindings in Swing&lt;/a>,&#xA;an article in &lt;em>The Swing Connection&lt;/em>,&#xA;for more information.&#xA;&lt;li>Support for tool tips --&#xA;short descriptions that pop up when the cursor lingers&#xA;over a component.&#xA;See &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/tooltip.html&quot;>How&#xA;to Use Tool Tips&lt;/a>&#xA;in &lt;em>The Java Tutorial&lt;/em>&#xA;for more information.&#xA;&lt;li>Support for accessibility.&#xA;&lt;code>JComponent&lt;/code> contains all of the methods in the&#xA;&lt;code>Accessible&lt;/code> interface,&#xA;but it doesn't actually implement the interface.  That is the&#xA;responsibility of the individual classes&#xA;that extend &lt;code>JComponent&lt;/code>.&#xA;&lt;li>Support for component-specific properties.&#xA;With the {@link #putClientProperty}&#xA;and {@link #getClientProperty} methods,&#xA;you can associate name-object pairs&#xA;with any object that descends from &lt;code>JComponent&lt;/code>.&#xA;&lt;li>An infrastructure for painting&#xA;that includes double buffering and support for borders.&#xA;For more information see &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/overview/draw.html&quot;>Painting&lt;/a> and&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/border.html&quot;>How&#xA;to Use Borders&lt;/a>,&#xA;both of which are sections in &lt;em>The Java Tutorial&lt;/em>.&#xA;&lt;/ul>&#xA;For more information on these subjects, see the&#xA;&lt;a href=&quot;package-summary.html#package_description&quot;>Swing package description&lt;/a>&#xA;and &lt;em>The Java Tutorial&lt;/em> section&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/jcomponent.html&quot;>The JComponent Class&lt;/a>.&#xA;&lt;p>&#xA;&lt;code>JComponent&lt;/code> and its subclasses document default values&#xA;for certain properties.  For example, &lt;code>JTable&lt;/code> documents the&#xA;default row height as 16.  Each &lt;code>JComponent&lt;/code> subclass&#xA;that has a &lt;code>ComponentUI&lt;/code> will create the&#xA;&lt;code>ComponentUI&lt;/code> as part of its constructor.  In order&#xA;to provide a particular look and feel each&#xA;&lt;code>ComponentUI&lt;/code> may set properties back on the&#xA;&lt;code>JComponent&lt;/code> that created it.  For example, a custom&#xA;look and feel may require &lt;code>JTable&lt;/code>s to have a row&#xA;height of 24. The documented defaults are the value of a property&#xA;BEFORE the &lt;code>ComponentUI&lt;/code> has been installed.  If you&#xA;need a specific value for a particular property you should&#xA;explicitly set it.&#xA;&lt;p>&#xA;In release 1.4, the focus subsystem was rearchitected.&#xA;For more information, see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html&quot;>&#xA;How to Use the Focus Subsystem&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see KeyStroke&#xA;@see Action&#xA;@see #setBorder&#xA;@see #registerKeyboardAction&#xA;@see JOptionPane&#xA;@see #setDebugGraphicsOptions&#xA;@see #setToolTipText&#xA;@see #setAutoscrolls&#xA;&#xA;@version 2.130 07/09/99&#xA;@author Hans Muller&#xA;@author Arnaud Weber&#xA;" annotatedElement="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <generalization xmi:id="dfd01fd2-a660-4d67-89da-69d422d78d02" isSubstitutable="true" general="a4edac23-263c-4616-857d-4de97445e12a"/>
            <interfaceRealization xmi:id="00507d6e-5063-4bac-86c0-816eb146ebfe" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ab0cae1e-3609-4f84-b012-181f2f0d7acf" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a522dc75-5a5f-4f8d-a17c-d91384bcf4d6" name="ActionStandin" visibility="package" clientDependency="1de30a2f-386c-444a-a3fa-c8ee53abc58a" isLeaf="true">
              <ownedComment xmi:id="60334d3f-9a75-472e-aaae-508bf1a2a875" body="&lt;code>ActionStandin&lt;/code> is used as a standin for&#xA;&lt;code>ActionListeners&lt;/code> that are&#xA;added via &lt;code>registerKeyboardAction&lt;/code>.&#xA;" annotatedElement="a522dc75-5a5f-4f8d-a17c-d91384bcf4d6"/>
              <interfaceRealization xmi:id="1de30a2f-386c-444a-a3fa-c8ee53abc58a" name="" supplier="463f6495-d475-4ff3-9983-0e53f95e8741" client="a522dc75-5a5f-4f8d-a17c-d91384bcf4d6" contract="463f6495-d475-4ff3-9983-0e53f95e8741"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="2e75b41f-1964-48da-bae5-fc75bf163aac" name="IntVector" visibility="package" isLeaf="true"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="0515a4c0-1509-4a7c-bca0-7abca1e6258a" name="KeyboardState" visibility="package" clientDependency="3592f8c9-e77f-4a16-8bfc-ed9b8bfcec24">
              <interfaceRealization xmi:id="3592f8c9-e77f-4a16-8bfc-ed9b8bfcec24" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0515a4c0-1509-4a7c-bca0-7abca1e6258a" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="7476a5d9-16dc-482c-bb13-90f59bc1c7b6" name="AccessibleJComponent" clientDependency="76638fb5-8bd0-42cc-b6ba-74cd5fdce890" isAbstract="true">
              <ownedComment xmi:id="e5ec93fa-68e3-4860-b1fa-10c97f8c8151" body="Inner class of JComponent used to provide default support for&#xA;accessibility.  This class is not meant to be used directly by&#xA;application developers, but is instead meant only to be&#xA;subclassed by component developers.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
              <generalization xmi:id="a42fe092-4927-46a5-8eb1-03dbeb856869" isSubstitutable="true" general="b3e98866-f74c-49b9-bf05-d16c3c4114d5"/>
              <interfaceRealization xmi:id="76638fb5-8bd0-42cc-b6ba-74cd5fdce890" name="" supplier="c852d880-774f-46c5-ab2e-f0ab04fefa0b" client="7476a5d9-16dc-482c-bb13-90f59bc1c7b6" contract="c852d880-774f-46c5-ab2e-f0ab04fefa0b"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="22a724c4-22bb-49c5-83db-973a1019044c" name="AccessibleContainerHandler" visibility="protected" clientDependency="56842faa-be7f-48c2-9868-3be5bf2b9df2">
                <ownedComment xmi:id="44f36d92-b964-4cda-81f4-888ab31454fa" body="Fire PropertyChange listener, if one is registered,&#xA;when children added/removed.&#xA;" annotatedElement="22a724c4-22bb-49c5-83db-973a1019044c"/>
                <interfaceRealization xmi:id="56842faa-be7f-48c2-9868-3be5bf2b9df2" name="" supplier="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8" client="22a724c4-22bb-49c5-83db-973a1019044c" contract="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0cb5c3ff-79c5-4d2b-9268-a8fd5682bfd0" name="AccessibleFocusHandler" visibility="protected" clientDependency="f32398ba-6090-4ac5-a810-98dc9fdb8212">
                <ownedComment xmi:id="ef00a3e9-d7b2-4879-859c-d6fc0b623560" body="Fire PropertyChange listener, if one is registered,&#xA;when focus events happen&#xA;" annotatedElement="0cb5c3ff-79c5-4d2b-9268-a8fd5682bfd0"/>
                <interfaceRealization xmi:id="f32398ba-6090-4ac5-a810-98dc9fdb8212" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="0cb5c3ff-79c5-4d2b-9268-a8fd5682bfd0" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
              </nestedClassifier>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c9ac2a46-c8a0-4f2b-8037-5f59d35c5218" name="ReadObjectCallback" visibility="private" clientDependency="09085cdd-99b9-44e8-8037-ac1596f511c3">
              <ownedComment xmi:id="8fb3f856-ecb2-4291-bf16-5651caeafdaa" body="This object is the &lt;code>ObjectInputStream&lt;/code> callback&#xA;that's called after a complete graph of objects (including at least&#xA;one &lt;code>JComponent&lt;/code>) has been read.&#xA;It sets the UI property of each Swing component&#xA;that was read to the current default with &lt;code>updateUI&lt;/code>.&#xA;&lt;p>&#xA;As each  component is read in we keep track of the current set of&#xA;root components here, in the roots vector.  Note that there's only one&#xA;&lt;code>ReadObjectCallback&lt;/code> per &lt;code>ObjectInputStream&lt;/code>,&#xA;they're stored in the static &lt;code>readObjectCallbacks&lt;/code>&#xA;hashtable.&#xA;&#xA;@see java.io.ObjectInputStream#registerValidation&#xA;@see SwingUtilities#updateComponentTreeUI&#xA;" annotatedElement="c9ac2a46-c8a0-4f2b-8037-5f59d35c5218"/>
              <interfaceRealization xmi:id="09085cdd-99b9-44e8-8037-ac1596f511c3" name="" supplier="7318f315-7cf5-4cfc-91a2-727624996aca" client="c9ac2a46-c8a0-4f2b-8037-5f59d35c5218" contract="7318f315-7cf5-4cfc-91a2-727624996aca"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7ea14471-c4b1-4670-978c-84b18ddf174a" name="SystemEventQueueUtilities" visibility="package">
            <ownedComment xmi:id="0bdf501e-4426-4418-a728-61586fd0d349" body="Swing internal utilities for dealing with the AWT system event&#xA;queue.  Four methods are exported, see the individual method javadoc&#xA;for more information: addRunnableCanvas(), removeRunnableCanvas(),&#xA;postRunnable(), queueComponentWorkRequest().&#xA;&#xA;Note: most of the code in this class is no longer needed since&#xA;we're no longer supporting Swing in 1.1.x VM's and in 1.2 we're&#xA;guaranteed access to the AWT event queue.  However all of the entry&#xA;points, save postRunnable(), are still used.&#xA;&#xA;@see RepaintManager&#xA;@see JRootPane&#xA;" annotatedElement="7ea14471-c4b1-4670-978c-84b18ddf174a"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="e9985891-cef2-4b5b-94c2-811a6ec5b313" name="SystemEventQueue" visibility="private">
              <ownedComment xmi:id="bd7700c7-bd58-439d-bc46-f49779e29666" body="SystemEventQueue class.  This private class just exists to&#xA;encapsulate the details of getting at the System Event queue&#xA;in the Java 2 platform.  The rest of the SystemEventQueueUtilities&#xA;class just uses SystemEventQueue.get() to access the event queue.&#xA;" annotatedElement="e9985891-cef2-4b5b-94c2-811a6ec5b313"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="f3948fc1-c0c8-420a-b1e6-1fa26d3649ea" name="ComponentWorkRequest" visibility="private" clientDependency="92fd4246-324d-4947-9294-1060b77ec94b">
              <ownedComment xmi:id="9c676aad-3d8e-40c2-bc45-30f2817fb770" body="A Runnable with a component.  If we need to post this&#xA;runnable to the AWT system event queue, we'll find it's&#xA;JRootPane ancestor and use that as the key to the table&#xA;of RunnableCanvas's.&#xA;&#xA;@see RunnableCanvas&#xA;" annotatedElement="f3948fc1-c0c8-420a-b1e6-1fa26d3649ea"/>
              <interfaceRealization xmi:id="92fd4246-324d-4947-9294-1060b77ec94b" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="f3948fc1-c0c8-420a-b1e6-1fa26d3649ea" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="483faeed-8f2e-4f44-ac00-6f4e6a18cd00" name="TimerQueueRestart" visibility="private" clientDependency="7fe88ded-37ce-410c-87b9-9beac9b22d49">
              <ownedComment xmi:id="a67255fa-49ba-494d-bdce-80d531c80850" body="Runnable that will message the shared instance of the Timer Queue&#xA;to restart.&#xA;&#xA;@see #restartTimerQueueThread&#xA;" annotatedElement="483faeed-8f2e-4f44-ac00-6f4e6a18cd00"/>
              <interfaceRealization xmi:id="7fe88ded-37ce-410c-87b9-9beac9b22d49" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="483faeed-8f2e-4f44-ac00-6f4e6a18cd00" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="255f0f65-5048-4aff-ad38-09485dd42ffe" name="RunnableEvent" visibility="private">
              <ownedComment xmi:id="e157f009-ba73-4686-8934-fcd4455996c3" body="Event type used for dispatching runnable objects for&#xA;SwingUtilities.invokeLater() and SwingUtilities.invokeAndWait().&#xA;&#xA;@see #postRunnable&#xA;" annotatedElement="255f0f65-5048-4aff-ad38-09485dd42ffe"/>
              <generalization xmi:id="33ba4969-c441-43b7-9890-5d5effa3ca2b" isSubstitutable="true" general="dc3e23e7-09df-4daf-b0e1-0ea40dc8c9ee"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="28fe6881-b1ed-4bdc-b4ec-c3869d93cfb5" name="RunnableTarget" visibility="private">
              <ownedComment xmi:id="675e822b-0aa1-421e-aa77-a91fb8cac950" body="A dummy Component subclass that (only) handles RunnableEvents.  If the&#xA;AWT System event queue is accessible (i.e. we're running as&#xA;an application or as trusted code), RunnableEvents are dispatched&#xA;to this component.&#xA;&#xA;@see #processRunnableEvent&#xA;" annotatedElement="28fe6881-b1ed-4bdc-b4ec-c3869d93cfb5"/>
              <generalization xmi:id="8a0c0ee2-e7b4-4af0-bf7e-677bc5290aef" isSubstitutable="true" general="4d925b7b-d68e-4e13-b87b-98bdb93e9024"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="b340b327-0a23-4230-a8f7-12782ed48b83" name="RunnableCanvas" visibility="private">
              <ownedComment xmi:id="0f2bed1d-f9c8-4d75-ad29-2902a3465dcc" body="Applets don't have direct access to the AWT SystemEvent queue.  To&#xA;work around this we call RunnableCanvas.repaint() on a per applet&#xA;instance of this class.  The AWT deals with this by queuing a&#xA;java.awt.PaintEvent for the event dispatching thread which&#xA;is dispatched (Component.dispatchEvent()) the usual way.&#xA;Component.dispatchEvent() handles PaintEvents by calling our update()&#xA;method (on the event dispatching thread) which processes&#xA;the RunnableEvents stashed in the runnableEvents vector.&#xA;" annotatedElement="b340b327-0a23-4230-a8f7-12782ed48b83"/>
              <generalization xmi:id="200c4552-6d6c-4a9b-a3c5-e2c7600e4b49" isSubstitutable="true" general="93f5dd0f-d95d-44e3-91da-1ae055375a3d"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="1cf645d3-a0c1-4bff-9eb5-2acbf248c08a" name="RunnableCanvasGraphics" visibility="private">
              <ownedComment xmi:id="7b9f71c9-759d-42bb-b2d0-4c7687496807" body="A no-op Graphics object for the RunnableCanvas component.&#xA;Most AWT Component implementations handle update events&#xA;like this:&#xA;&lt;pre>&#xA;Graphics g = getGraphics();&#xA;Rectangle r = ((PaintEvent)e).getUpdateRect();&#xA;g.clipRect(r.x, r.y, r.width, r.height);&#xA;update(g)&#xA;g.dispose();&#xA;&lt;/pre>&#xA;Since the RunnableCanvas component isn't really going to do&#xA;any painting we don't bother with creating/disposing real&#xA;graphics objects, or setting any of the properties.&#xA;&#xA;" annotatedElement="1cf645d3-a0c1-4bff-9eb5-2acbf248c08a"/>
              <generalization xmi:id="5812d3ae-f6a0-4fd4-903e-514bbcd8374a" isSubstitutable="true" general="d2ffb4de-d6fb-4ac8-abf2-5e6f98e72ba6"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c9ab6369-faf9-4d4f-8a58-fa6a4a41feb0" name="JLabel" clientDependency="fa801e1e-71f7-47d6-9aa4-a89c1f089563 7f103603-46cf-478d-85b3-6b3eeefeb166">
            <ownedComment xmi:id="33a67abe-f481-461c-b042-a163d3f908ee" body="A display area for a short text string or an image,&#xA;or both.&#xA;A label does not react to input events.&#xA;As a result, it cannot get the keyboard focus.&#xA;A label can, however, display a keyboard alternative&#xA;as a convenience for a nearby component&#xA;that has a keyboard alternative but can't display it.&#xA;&lt;p>&#xA;A &lt;code>JLabel&lt;/code> object can display&#xA;either text, an image, or both.&#xA;You can specify where in the label's display area&#xA;the label's contents are aligned&#xA;by setting the vertical and horizontal alignment.&#xA;By default, labels are vertically centered&#xA;in their display area.&#xA;Text-only labels are leading edge aligned, by default;&#xA;image-only labels are horizontally centered, by default.&#xA;&lt;p>&#xA;You can also specify the position of the text&#xA;relative to the image.&#xA;By default, text is on the trailing edge of the image,&#xA;with the text and image vertically aligned.&#xA;&lt;p>&#xA;A label's leading and trailing edge are determined from the value of its&#xA;{@link java.awt.ComponentOrientation} property.  At present, the default&#xA;ComponentOrientation setting maps the leading edge to left and the trailing&#xA;edge to right.&#xA;&#xA;&lt;p>&#xA;Finally, you can use the &lt;code>setIconTextGap&lt;/code> method&#xA;to specify how many pixels&#xA;should appear between the text and the image.&#xA;The default is 4 pixels.&#xA;&lt;p>&#xA;See &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/label.html&quot;>How to Use Labels&lt;/a>&#xA;in &lt;em>The Java Tutorial&lt;/em>&#xA;for further documentation.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A component that displays a short string and an icon.&#xA;&#xA;@version 1.116 04/02/04&#xA;@author Hans Muller&#xA;" annotatedElement="c9ab6369-faf9-4d4f-8a58-fa6a4a41feb0"/>
            <generalization xmi:id="bb3a5d98-3383-4581-8735-5ccb2447c2c3" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="fa801e1e-71f7-47d6-9aa4-a89c1f089563" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="c9ab6369-faf9-4d4f-8a58-fa6a4a41feb0" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
            <interfaceRealization xmi:id="7f103603-46cf-478d-85b3-6b3eeefeb166" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="c9ab6369-faf9-4d4f-8a58-fa6a4a41feb0" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="0d6f4758-7bd5-4d88-905b-6919f486a44e" name="AccessibleJLabel" visibility="protected" clientDependency="d34e5ea0-8608-4314-8f9e-76f4e36a9d11 fbe1297d-6458-487a-ab64-3e847a022194">
              <ownedComment xmi:id="7b7ff7f4-b4d0-4cb8-88cb-953216f0d775" body="The class used to obtain the accessible role for this object.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="0d6f4758-7bd5-4d88-905b-6919f486a44e"/>
              <generalization xmi:id="2c7ade26-1f88-4ef2-9d0f-f7609d4cac87" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
              <interfaceRealization xmi:id="d34e5ea0-8608-4314-8f9e-76f4e36a9d11" name="" supplier="a6772e39-fecf-4aaa-b8ba-55f63854a725" client="0d6f4758-7bd5-4d88-905b-6919f486a44e" contract="a6772e39-fecf-4aaa-b8ba-55f63854a725"/>
              <interfaceRealization xmi:id="fbe1297d-6458-487a-ab64-3e847a022194" name="" supplier="c852d880-774f-46c5-ab2e-f0ab04fefa0b" client="0d6f4758-7bd5-4d88-905b-6919f486a44e" contract="c852d880-774f-46c5-ab2e-f0ab04fefa0b"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f9a90e3c-505f-423a-ac07-43c25cbed728" name="LabelKeyBinding" visibility="package" clientDependency="6b4723a1-8240-4aae-8be9-4b4eb8175bd9">
                <interfaceRealization xmi:id="6b4723a1-8240-4aae-8be9-4b4eb8175bd9" name="" supplier="3ca72526-7c1c-4937-b3c5-b4dfd0213fcb" client="f9a90e3c-505f-423a-ac07-43c25cbed728" contract="3ca72526-7c1c-4937-b3c5-b4dfd0213fcb"/>
              </nestedClassifier>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="8cf3a8f2-ac94-4aea-8cf2-9fc323d23b85" name="CellEditor" isAbstract="true">
            <ownedComment xmi:id="4e014444-1b64-4032-b2fd-2874e6610b06" body="This interface defines the methods any general editor should be able&#xA;to implement. &lt;p>&#xA;&#xA;Having this interface enables complex components (the client of the&#xA;editor) such as &lt;code>JList&lt;/code>, &lt;code>JTree&lt;/code>, and&#xA;&lt;code>JTable&lt;/code> to allow any generic editor to&#xA;edit values in a table cell, or tree cell, etc.  Without this generic&#xA;editor interface, &lt;code>JTable&lt;/code> would have to know about specific editors,&#xA;such as &lt;code>JTextField&lt;/code>, &lt;code>JCheckBox&lt;/code>, &lt;code>JComboBox&lt;/code>,&#xA;etc.  In addition, without this interface, clients of editors such as&#xA;&lt;code>JTable&lt;/code> would not be able&#xA;to work with any editors developed in the future by the user&#xA;or a 3rd party ISV. &lt;p>&#xA;&#xA;To use this interface, a developer creating a new editor can have the&#xA;new component implement the interface.  Or the developer can&#xA;choose a wrapper based approach and provide a companion object which&#xA;implements the &lt;code>CellEditor&lt;/code> interface (See&#xA;&lt;code>JCellEditor&lt;/code> for example).  The wrapper approach&#xA;is particularly useful if the user want to use a 3rd party ISV&#xA;editor with &lt;code>JTable&lt;/code>, but the ISV didn't implement the&#xA;&lt;code>CellEditor&lt;/code> interface.  The user can simply create an object&#xA;that contains an instance of the 3rd party editor object and &quot;translate&quot;&#xA;the &lt;code>CellEditor&lt;/code> API into the 3rd party editor's API.&#xA;&#xA;@see javax.swing.event.CellEditorListener&#xA;&#xA;@version 1.24 12/19/03&#xA;@author Alan Chung&#xA;" annotatedElement="8cf3a8f2-ac94-4aea-8cf2-9fc323d23b85"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ea26209b-bde8-456a-9774-339c169a57a6" name="KeyboardManager" visibility="package">
            <ownedComment xmi:id="e7cb779d-49e5-4d06-9f8a-0fbdc30d42f5" body="The KeyboardManager class is used to help dispatch keyboard actions for the&#xA;WHEN_IN_FOCUSED_WINDOW style actions.  Actions with other conditions are handled&#xA;directly in JComponent.&#xA;&#xA;Here's a description of the symantics of how keyboard dispatching should work&#xA;atleast as I understand it.&#xA;&#xA;KeyEvents are dispatched to the focused component.  The focus manager gets first&#xA;crack at processing this event.  If the focus manager doesn't want it, then&#xA;the JComponent calls super.processKeyEvent() this allows listeners a chance&#xA;to process the event.&#xA;&#xA;If none of the listeners &quot;consumes&quot; the event then the keybindings get a shot.&#xA;This is where things start to get interesting.  First, KeyStokes defined with the&#xA;WHEN_FOCUSED condition get a chance.  If none of these want the event, then the component&#xA;walks though it's parents looked for actions of type WHEN_ANCESTOR_OF_FOCUSED_COMPONENT.&#xA;&#xA;If no one has taken it yet, then it winds up here.  We then look for components registered&#xA;for WHEN_IN_FOCUSED_WINDOW events and fire to them.  Note that if none of those are found&#xA;then we pass the event to the menubars and let them have a crack at it.  They're handled differently.&#xA;&#xA;Lastly, we check if we're looking at an internal frame.  If we are and no one wanted the event&#xA;then we move up to the InternalFrame's creator and see if anyone wants the event (and so on and so on).&#xA;&#xA;&#xA;@see InputMap&#xA;" annotatedElement="ea26209b-bde8-456a-9774-339c169a57a6"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a6768a80-018d-4315-a394-4e672c9f0a50" name="ComponentKeyStrokePair" visibility="package">
              <ownedComment xmi:id="b6db9d74-b205-4687-a678-f03d5f7b9855" body="This class is used to create keys for a hashtable&#xA;which looks up topContainers based on component, keystroke pairs&#xA;This is used to make unregistering KeyStrokes fast&#xA;" annotatedElement="a6768a80-018d-4315-a394-4e672c9f0a50"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8e3e0707-da20-4081-b9b1-0a8cb379d61a" name="LookAndFeel" isAbstract="true">
            <ownedComment xmi:id="5f61551e-d043-4c99-81a5-108d51d47e8b" body="Completely characterizes a look and feel from the point of view&#xA;of the pluggable look and feel components.&#xA;&#xA;@version 1.36 05/05/04&#xA;@author Tom Ball&#xA;@author Hans Muller&#xA;" annotatedElement="8e3e0707-da20-4081-b9b1-0a8cb379d61a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="d9dda4f0-9e1c-4afc-a288-475863ddcf1d" name="RootPaneContainer" isAbstract="true">
            <ownedComment xmi:id="e86d106d-30b1-4a7a-82c0-48f240f7d932" body="This interface is implemented by components that have a single&#xA;JRootPane child: JDialog, JFrame, JWindow, JApplet, JInternalFrame.&#xA;The methods in  this interface are just &lt;i>covers&lt;/i> for the JRootPane&#xA;properties, e.g. &lt;code>getContentPane()&lt;/code> is generally implemented&#xA;like this:&lt;pre>&#xA;public Container getContentPane() {&#xA;return getRootPane().getContentPane();&#xA;}&#xA;&lt;/pre>&#xA;This interface serves as a &lt;i>marker&lt;/i> for Swing GUI builders&#xA;that need to treat components like JFrame, that contain a&#xA;single JRootPane, specially.  For example in a GUI builder,&#xA;dropping a component on a RootPaneContainer would be interpreted&#xA;as &lt;code>frame.getContentPane().add(child)&lt;/code>.&#xA;&lt;p>&#xA;For conveniance&#xA;&lt;code>JFrame&lt;/code>, &lt;code>JDialog&lt;/code>, &lt;code>JWindow&lt;/code>,&#xA;&lt;code>JApplet&lt;/code> and &lt;code>JInternalFrame&lt;/code>, by default,&#xA;forward, by default, all calls to the &lt;code>add&lt;/code>,&#xA;&lt;code>remove&lt;/code> and &lt;code>setLayout&lt;/code> methods, to the&#xA;&lt;code>contentPane&lt;/code>. This means you can call:&#xA;&lt;pre>&#xA;rootPaneContainer.add(component);&#xA;&lt;/pre>&#xA;instead of:&#xA;&lt;pre>&#xA;rootPaneContainer.getContentPane().add(component);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;The behavior of the &lt;code>add&lt;/code> and&#xA;&lt;code>setLayout&lt;/code> methods for&#xA;&lt;code>JFrame&lt;/code>, &lt;code>JDialog&lt;/code>, &lt;code>JWindow&lt;/code>,&#xA;&lt;code>JApplet&lt;/code> and &lt;code>JInternalFrame&lt;/code> is controlled by&#xA;the &lt;code>rootPaneCheckingEnabled&lt;/code> property. If this property is&#xA;true (the default), then calls to these methods are&#xA;forwarded to the &lt;code>contentPane&lt;/code>; if false, these&#xA;methods operate directly on the &lt;code>RootPaneContainer&lt;/code>. This&#xA;property is only intended for subclasses, and is therefore protected.&#xA;&#xA;@see JRootPane&#xA;@see JFrame&#xA;@see JDialog&#xA;@see JWindow&#xA;@see JApplet&#xA;@see JInternalFrame&#xA;&#xA;@version 1.15 12/19/03&#xA;@author Hans Muller&#xA;" annotatedElement="d9dda4f0-9e1c-4afc-a288-475863ddcf1d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="032bf7df-9c0a-4d07-9acd-8488f74d44b5" name="filechooser">
            <packagedElement xmi:type="uml:Class" xmi:id="6f2ff785-2405-4e6d-8ecd-7dd923b852a0" name="FileFilter" isAbstract="true">
              <ownedComment xmi:id="ccae7063-5434-4615-a6f6-22cae62e90df" body="&lt;code>FileFilter&lt;/code> is an abstract class that has no default&#xA;implementation.  A &lt;code>FileFilter&lt;/code>, once implemented,&#xA;can be set on a &lt;code>JFileChooser&lt;/code> to&#xA;keep unwanted files from appearing in the directory listing.&#xA;For an example implementation of a simple file filter, see&#xA;&lt;code>&lt;i>yourJDK&lt;/i>/demo/jfc/FileChooserDemo/ExampleFileFilter.java&lt;/code>.&#xA;For more information and examples see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/filechooser.html&quot;>How to Use File Choosers&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&#xA;@see javax.swing.JFileChooser#setFileFilter&#xA;@see javax.swing.JFileChooser#addChoosableFileFilter&#xA;&#xA;@version 1.19 06/28/04&#xA;@author Jeff Dinkins&#xA;" annotatedElement="6f2ff785-2405-4e6d-8ecd-7dd923b852a0"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6b79a56c-6583-4b50-8bfb-fd903766adb1" name="UnixFileSystemView" visibility="package">
              <ownedComment xmi:id="9afd1c2e-ad18-4dcb-b347-f18e4a0f2bfa" body="FileSystemView that handles some specific unix-isms.&#xA;" annotatedElement="6b79a56c-6583-4b50-8bfb-fd903766adb1"/>
              <generalization xmi:id="bb4752e5-df59-4736-8cba-364943deae3e" isSubstitutable="true" general="da916f04-1170-405c-8ef9-44bbacc4360d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d3bf06d0-3344-432b-8879-300bc34b7c4e" name="WindowsFileSystemView" visibility="package">
              <ownedComment xmi:id="8e5513de-8aec-4049-bc08-760ce7ebaaa0" body="FileSystemView that handles some specific windows concepts.&#xA;" annotatedElement="d3bf06d0-3344-432b-8879-300bc34b7c4e"/>
              <generalization xmi:id="555c4d2f-c901-4a0c-b1aa-67d76569f9b1" isSubstitutable="true" general="da916f04-1170-405c-8ef9-44bbacc4360d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="da916f04-1170-405c-8ef9-44bbacc4360d" name="FileSystemView" isAbstract="true">
              <ownedComment xmi:id="d5239683-57a8-4ca8-b869-8fa4ed637644" body="FileSystemView is JFileChooser's gateway to the&#xA;file system. Since the JDK1.1 File API doesn't allow&#xA;access to such information as root partitions, file type&#xA;information, or hidden file bits, this class is designed&#xA;to intuit as much OS-specific file system information as&#xA;possible.&#xA;&#xA;&lt;p>&#xA;&#xA;Java Licensees may want to provide a different implementation of&#xA;FileSystemView to better handle a given operating system.&#xA;&#xA;@version 1.46 04/27/04&#xA;@author Jeff Dinkins&#xA;" annotatedElement="da916f04-1170-405c-8ef9-44bbacc4360d"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="d9687443-9edf-42b3-b0d1-748e6a731b04" name="FileSystemRoot" visibility="package">
                <generalization xmi:id="9c21e1b0-aacb-4c6f-8741-4237f4ba7975" isSubstitutable="true" general="e1feca05-3181-4a18-8383-7cb66a5caac2"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="08af036a-f435-4aa6-9d81-1b1eb0330cfb" name="GenericFileSystemView" visibility="package">
              <ownedComment xmi:id="5c8b9218-6679-4bf8-a772-80243298de11" body="Fallthrough FileSystemView in case we can't determine the OS.&#xA;" annotatedElement="08af036a-f435-4aa6-9d81-1b1eb0330cfb"/>
              <generalization xmi:id="2db8fc8d-c4cf-46be-96d6-e4708464480f" isSubstitutable="true" general="da916f04-1170-405c-8ef9-44bbacc4360d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ddb804cd-7e9a-4def-b1ab-2acdcf70c97a" name="FileView" isAbstract="true">
              <ownedComment xmi:id="b972550c-a88e-4d61-af96-e1f3893f9b23" body="&lt;code>FileView&lt;/code> defines an abstract class that can be implemented&#xA;to provide the filechooser with UI information for a &lt;code>File&lt;/code>.&#xA;Each L&amp;F &lt;code>JFileChooserUI&lt;/code> object implements this&#xA;class to pass back the correct icons and type descriptions specific to&#xA;that L&amp;F. For example, the Microsoft Windows L&amp;F returns the&#xA;generic Windows icons for directories and generic files.&#xA;Additionally, you may want to provide your own &lt;code>FileView&lt;/code> to&#xA;&lt;code>JFileChooser&lt;/code> to return different icons or additional&#xA;information using {@link javax.swing.JFileChooser#setFileView}.&#xA;&#xA;&lt;p>&#xA;&#xA;&lt;code>JFileChooser&lt;/code> first looks to see if there is a user defined&#xA;&lt;code>FileView&lt;/code>, if there is, it gets type information from&#xA;there first. If &lt;code>FileView&lt;/code> returns &lt;code>null&lt;/code> for&#xA;any method, &lt;code>JFileChooser&lt;/code> then uses the L&amp;F specific&#xA;view to get the information.&#xA;So, for example, if you provide a &lt;code>FileView&lt;/code> class that&#xA;returns an &lt;code>Icon&lt;/code> for JPG files, and returns &lt;code>null&lt;/code>&#xA;icons for all other files, the UI's &lt;code>FileView&lt;/code> will provide&#xA;default icons for all other files.&#xA;&#xA;&lt;p>&#xA;&#xA;For an example implementation of a simple file view, see&#xA;&lt;code>&lt;i>yourJDK&lt;/i>/demo/jfc/FileChooserDemo/ExampleFileView.java&lt;/code>.&#xA;For more information and examples see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/filechooser.html&quot;>How to Use File Choosers&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&#xA;@see javax.swing.JFileChooser&#xA;&#xA;@version 1.19 06/28/04&#xA;@author Jeff Dinkins&#xA;&#xA;" annotatedElement="ddb804cd-7e9a-4def-b1ab-2acdcf70c97a"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2cdf053a-2c3e-468c-b5e1-90d9541d3a65" name="JPopupMenu" clientDependency="c7541327-f1f3-47d0-b931-41b66b7a9680 5100baba-64b2-4302-9f28-b9fb55876dba">
            <ownedComment xmi:id="9e88889b-0b8d-4f33-a947-3bead673f2f8" body="An implementation of a popup menu -- a small window that pops up&#xA;and displays a series of choices. A &lt;code>JPopupMenu&lt;/code> is used for the&#xA;menu that appears when the user selects an item on the menu bar.&#xA;It is also used for &quot;pull-right&quot; menu that appears when the&#xA;selects a menu item that activates it. Finally, a &lt;code>JPopupMenu&lt;/code>&#xA;can also be used anywhere else you want a menu to appear.  For&#xA;example, when the user right-clicks in a specified area.&#xA;&lt;p>&#xA;For information and examples of using popup menus, see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html&quot;>How to Use Menus&lt;/a>&#xA;in &lt;em>The Java Tutorial.&lt;/em>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A small window that pops up and displays a series of choices.&#xA;&#xA;@version 1.191 @(#)JPopupMenu.java&#x9;1.191&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;@author Arnaud Weber&#xA;" annotatedElement="2cdf053a-2c3e-468c-b5e1-90d9541d3a65"/>
            <generalization xmi:id="6c055b39-12bf-4088-9e68-87f07f9c796e" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="5100baba-64b2-4302-9f28-b9fb55876dba" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="2cdf053a-2c3e-468c-b5e1-90d9541d3a65" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <interfaceRealization xmi:id="c7541327-f1f3-47d0-b931-41b66b7a9680" name="" supplier="de6cdb33-0a16-47b4-939d-325aedf18238" client="2cdf053a-2c3e-468c-b5e1-90d9541d3a65" contract="de6cdb33-0a16-47b4-939d-325aedf18238"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="2f35dfe1-d6b1-4443-aee1-e382d026b690" name="ActionChangedListener" visibility="private" clientDependency="8b506a29-b07d-4687-b12d-d5973b73796b 7ef9a948-785a-4788-9b36-17bb22b20028">
              <interfaceRealization xmi:id="8b506a29-b07d-4687-b12d-d5973b73796b" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="2f35dfe1-d6b1-4443-aee1-e382d026b690" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              <interfaceRealization xmi:id="7ef9a948-785a-4788-9b36-17bb22b20028" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="2f35dfe1-d6b1-4443-aee1-e382d026b690" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="69adafc9-cb1b-46b3-9741-729098ecab50" name="AccessibleJPopupMenu" visibility="protected" clientDependency="8abde2d9-f3ee-4519-b815-776c71fb87f5">
              <ownedComment xmi:id="6583676c-591e-4be8-96e5-4ad21b299866" body="This class implements accessibility support for the&#xA;&lt;code>JPopupMenu&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to popup menu user-interface&#xA;elements.&#xA;" annotatedElement="69adafc9-cb1b-46b3-9741-729098ecab50"/>
              <generalization xmi:id="9d39e29f-c0ed-465b-b009-a548314b79d9" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
              <interfaceRealization xmi:id="8abde2d9-f3ee-4519-b815-776c71fb87f5" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="69adafc9-cb1b-46b3-9741-729098ecab50" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="730e8de8-c160-44cc-b6a9-454d76406f71" name="Separator">
              <ownedComment xmi:id="3ab16410-a0b4-4917-8118-eb68fa516908" body="A popup menu-specific separator.&#xA;" annotatedElement="730e8de8-c160-44cc-b6a9-454d76406f71"/>
              <generalization xmi:id="df3e03a7-ed0c-4090-8511-aa0baaf07b22" isSubstitutable="true" general="d44327c5-7f44-4870-87e1-b0c1494ccee6"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="687748b3-4f44-4ddb-a779-c556c35afb44" name="JSplitPane" clientDependency="99109d97-284a-4306-9b6d-300f36af06f5">
            <ownedComment xmi:id="80e4dea4-ef8c-4ce5-a8e8-ec0434fd5619" body="&lt;code>JSplitPane&lt;/code> is used to divide two (and only two)&#xA;&lt;code>Component&lt;/code>s. The two &lt;code>Component&lt;/code>s&#xA;are graphically divided based on the look and feel&#xA;implementation, and the two &lt;code>Component&lt;/code>s can then be&#xA;interactively resized by the user.&#xA;Information on using &lt;code>JSplitPane&lt;/code> is in&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/splitpane.html&quot;>How to Use Split Panes&lt;/a> in&#xA;&lt;em>The Java Tutorial&lt;/em>.&#xA;&lt;p>&#xA;The two &lt;code>Component&lt;/code>s in a split pane can be aligned&#xA;left to right using&#xA;&lt;code>JSplitPane.HORIZONTAL_SPLIT&lt;/code>, or top to bottom using&#xA;&lt;code>JSplitPane.VERTICAL_SPLIT&lt;/code>.&#xA;The preferred way to change the size of the &lt;code>Component&lt;/code>s&#xA;is to invoke&#xA;&lt;code>setDividerLocation&lt;/code> where &lt;code>location&lt;/code> is either&#xA;the new x or y position, depending on the orientation of the&#xA;&lt;code>JSplitPane&lt;/code>.&#xA;&lt;p>&#xA;To resize the &lt;code>Component&lt;/code>s to their preferred sizes invoke&#xA;&lt;code>resetToPreferredSizes&lt;/code>.&#xA;&lt;p>&#xA;When the user is resizing the &lt;code>Component&lt;/code>s the minimum&#xA;size of the &lt;code>Components&lt;/code> is used to determine the&#xA;maximum/minimum position the &lt;code>Component&lt;/code>s&#xA;can be set to. If the minimum size of the two&#xA;components is greater than the size of the split pane the divider&#xA;will not allow you to resize it. To alter the minimum size of a&#xA;&lt;code>JComponent&lt;/code>, see {@link JComponent#setMinimumSize}.&#xA;&lt;p>&#xA;When the user resizes the split pane the new space is distributed between&#xA;the two components based on the &lt;code>resizeWeight&lt;/code> property.&#xA;A value of 0,&#xA;the default, indicates the right/bottom component gets all the space,&#xA;where as a value of 1 indicates the left/top component gets all the space.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see #setDividerLocation&#xA;@see #resetToPreferredSizes&#xA;&#xA;@version 1.76 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="687748b3-4f44-4ddb-a779-c556c35afb44"/>
            <generalization xmi:id="9b016129-d501-40b9-8c3e-dae0faf56205" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="99109d97-284a-4306-9b6d-300f36af06f5" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="687748b3-4f44-4ddb-a779-c556c35afb44" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8ac23076-a538-4e83-aa75-ee64e6799a94" name="AccessibleJSplitPane" visibility="protected" clientDependency="7460dc31-03ee-405a-9ee7-42725fbc446e">
              <ownedComment xmi:id="de5cf396-47c0-4134-afd5-5c5fb4ac6bc9" body="This class implements accessibility support for the&#xA;&lt;code>JSplitPane&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to split pane user-interface elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="8ac23076-a538-4e83-aa75-ee64e6799a94"/>
              <generalization xmi:id="e3bb18f7-f68a-4614-968c-42e40ee64f45" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
              <interfaceRealization xmi:id="7460dc31-03ee-405a-9ee7-42725fbc446e" name="" supplier="48ff1225-61c7-495b-a398-c2903fb1210d" client="8ac23076-a538-4e83-aa75-ee64e6799a94" contract="48ff1225-61c7-495b-a398-c2903fb1210d"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="97e663de-bcd4-4b75-a4ee-664a63a2c272" name="ComboBoxModel" isAbstract="true">
            <ownedComment xmi:id="7fec6fbb-2b6f-4d54-bd11-9129440493cc" body="A data model for a combo box. This interface extends &lt;code>ListDataModel&lt;/code>&#xA;and adds the concept of a &lt;i>selected item&lt;/i>. The selected item is generally&#xA;the item which is visible in the combo box display area.&#xA;&lt;p>&#xA;The selected item may not necessarily be managed by the underlying&#xA;&lt;code>ListModel&lt;/code>. This disjoint behavior allows for the temporary&#xA;storage and retrieval of a selected item in the model.&#xA;&#xA;@version 1.15 12/19/03&#xA;@author Arnaud Weber&#xA;" annotatedElement="97e663de-bcd4-4b75-a4ee-664a63a2c272"/>
            <generalization xmi:id="0a64c7ef-d939-44a6-a4fb-3902c7615819" isSubstitutable="true" general="51e5a92e-9f51-44ce-9b72-74f997d3869e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8326cb65-5a13-4328-bb8b-28739df7f1a5" name="JRootPane" clientDependency="96f867a8-6eb2-477b-b718-dc9e60ef2728">
            <ownedComment xmi:id="1be00b3c-0e26-45fb-b1bf-4ac8bb69e7a5" body="A lightweight container used behind the scenes by&#xA;&lt;code>JFrame&lt;/code>, &lt;code>JDialog&lt;/code>, &lt;code>JWindow&lt;/code>,&#xA;&lt;code>JApplet&lt;/code>, and &lt;code>JInternalFrame&lt;/code>.&#xA;For task-oriented information on functionality provided by root panes&#xA;see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/rootpane.html&quot;>How to Use Root Panes&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&#xA;&lt;p>&#xA;The following image shows the relationships between&#xA;the classes that use root panes.&#xA;&lt;p align=center>&lt;img src=&quot;doc-files/JRootPane-1.gif&quot;&#xA;alt=&quot;The following text describes this graphic.&quot;&#xA;HEIGHT=484 WIDTH=629>&lt;/p>&#xA;The &quot;heavyweight&quot; components (those that delegate to a peer, or native&#xA;component on the host system) are shown with a darker, heavier box. The four&#xA;heavyweight JFC/Swing containers (&lt;code>JFrame&lt;/code>, &lt;code>JDialog&lt;/code>,&#xA;&lt;code>JWindow&lt;/code>, and &lt;code>JApplet&lt;/code>) are&#xA;shown in relation to the AWT classes they extend.&#xA;These four components are the&#xA;only heavyweight containers in the Swing library. The lightweight container&#xA;&lt;code>JInternalPane&lt;/code> is also shown.&#xA;All five of these JFC/Swing containers implement the&#xA;&lt;code>RootPaneContainer&lt;/code> interface,&#xA;and they all delegate their operations to a&#xA;&lt;code>JRootPane&lt;/code> (shown with a little &quot;handle&quot; on top).&#xA;&lt;blockquote>&#xA;&lt;b>Note:&lt;/b> The &lt;code>JComponent&lt;/code> method &lt;code>getRootPane&lt;/code>&#xA;can be used to obtain the &lt;code>JRootPane&lt;/code> that contains&#xA;a given component.&#xA;&lt;/blockquote>&#xA;&lt;table align=&quot;right&quot; border=&quot;0&quot; summary=&quot;layout&quot;>&#xA;&lt;tr>&#xA;&lt;td align=&quot;center&quot;>&#xA;&lt;img src=&quot;doc-files/JRootPane-2.gif&quot;&#xA;alt=&quot;The following text describes this graphic.&quot; HEIGHT=386 WIDTH=349>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;The diagram at right shows the structure of a &lt;code>JRootPane&lt;/code>.&#xA;A &lt;code>JRootpane&lt;/code> is made up of a &lt;code>glassPane&lt;/code>,&#xA;an optional &lt;code>menuBar&lt;/code>, and a &lt;code>contentPane&lt;/code>.&#xA;(The &lt;code>JLayeredPane&lt;/code> manages the &lt;code>menuBar&lt;/code>&#xA;and the &lt;code>contentPane&lt;/code>.)&#xA;The &lt;code>glassPane&lt;/code> sits over the top of everything,&#xA;where it is in a position to intercept mouse movements.&#xA;Since the &lt;code>glassPane&lt;/code> (like the &lt;code>contentPane&lt;/code>)&#xA;can be an arbitrary component, it is also possible to set up the&#xA;&lt;code>glassPane&lt;/code> for drawing. Lines and images on the&#xA;&lt;code>glassPane&lt;/code> can then range&#xA;over the frames underneath without being limited by their boundaries.&#xA;&lt;p>&#xA;Although the &lt;code>menuBar&lt;/code> component is optional,&#xA;the &lt;code>layeredPane&lt;/code>, &lt;code>contentPane&lt;/code>,&#xA;and &lt;code>glassPane&lt;/code> always exist.&#xA;Attempting to set them to &lt;code>null&lt;/code> generates an exception.&#xA;&lt;p>&#xA;To add components to the &lt;code>JRootPane&lt;/code> (other than the&#xA;optional menu bar), you add the object to the &lt;code>contentPane&lt;/code>&#xA;of the &lt;code>JRootPane&lt;/code>, like this:&#xA;&lt;pre>&#xA;rootPane.getContentPane().add(child);&#xA;&lt;/pre>&#xA;The same principle holds true for setting layout managers, removing&#xA;components, listing children, etc. All these methods are invoked on&#xA;the &lt;code>contentPane&lt;/code> instead of on the &lt;code>JRootPane&lt;/code>.&#xA;&lt;blockquote>&#xA;&lt;b>Note:&lt;/b> The default layout manager for the &lt;code>contentPane&lt;/code> is&#xA;a &lt;code>BorderLayout&lt;/code> manager. However, the &lt;code>JRootPane&lt;/code>&#xA;uses a custom &lt;code>LayoutManager&lt;/code>.&#xA;So, when you want to change the layout manager for the components you added&#xA;to a &lt;code>JRootPane&lt;/code>, be sure to use code like this:&#xA;&lt;pre>&#xA;rootPane.getContentPane().setLayout(new BoxLayout());&#xA;&lt;/pre>&lt;/blockquote>&#xA;If a &lt;code>JMenuBar&lt;/code> component is set on the &lt;code>JRootPane&lt;/code>,&#xA;it is positioned along the upper edge of the frame.&#xA;The &lt;code>contentPane&lt;/code> is adjusted in location and size to&#xA;fill the remaining area.&#xA;(The &lt;code>JMenuBar&lt;/code> and the &lt;code>contentPane&lt;/code> are added to the&#xA;&lt;code>layeredPane&lt;/code> component at the&#xA;&lt;code>JLayeredPane.FRAME_CONTENT_LAYER&lt;/code> layer.)&#xA;&lt;p>&#xA;The &lt;code>layeredPane&lt;/code> is the parent of all children in the&#xA;&lt;code>JRootPane&lt;/code> -- both as the direct parent of the menu and&#xA;the grandparent of all components added to the &lt;code>contentPane&lt;/code>.&#xA;It is an instance of &lt;code>JLayeredPane&lt;/code>,&#xA;which provides the ability to add components at several layers.&#xA;This capability is very useful when working with menu popups,&#xA;dialog boxes, and dragging -- situations in which you need to place&#xA;a component on top of all other components in the pane.&#xA;&lt;p>&#xA;The &lt;code>glassPane&lt;/code> sits on top of all other components in the&#xA;&lt;code>JRootPane&lt;/code>.&#xA;That provides a convenient place to draw above all other components,&#xA;and makes it possible to intercept mouse events,&#xA;which is useful both for dragging and for drawing.&#xA;Developers can use &lt;code>setVisible&lt;/code> on the &lt;code>glassPane&lt;/code>&#xA;to control when the &lt;code>glassPane&lt;/code> displays over the other children.&#xA;By default the &lt;code>glassPane&lt;/code> is not visible.&#xA;&lt;p>&#xA;The custom &lt;code>LayoutManager&lt;/code> used by &lt;code>JRootPane&lt;/code>&#xA;ensures that:&#xA;&lt;OL>&#xA;&lt;LI>The &lt;code>glassPane&lt;/code> fills the entire viewable&#xA;area of the &lt;code>JRootPane&lt;/code> (bounds - insets).&#xA;&lt;LI>The &lt;code>layeredPane&lt;/code> fills the entire viewable area of the&#xA;&lt;code>JRootPane&lt;/code>. (bounds - insets)&#xA;&lt;LI>The &lt;code>menuBar&lt;/code> is positioned at the upper edge of the&#xA;&lt;code>layeredPane&lt;/code>.&#xA;&lt;LI>The &lt;code>contentPane&lt;/code> fills the entire viewable area,&#xA;minus the &lt;code>menuBar&lt;/code>, if present.&#xA;&lt;/OL>&#xA;Any other views in the &lt;code>JRootPane&lt;/code> view hierarchy are ignored.&#xA;&lt;p>&#xA;If you replace the &lt;code>LayoutManager&lt;/code> of the &lt;code>JRootPane&lt;/code>,&#xA;you are responsible for managing all of these views.&#xA;So ordinarily you will want to be sure that you&#xA;change the layout manager for the &lt;code>contentPane&lt;/code> rather than&#xA;for the &lt;code>JRootPane&lt;/code> itself!&#xA;&lt;p>&#xA;The painting architecture of Swing requires an opaque&#xA;&lt;code>JComponent&lt;/code>&#xA;to exist in the containment hieararchy above all other components. This is&#xA;typically provided by way of the content pane. If you replace the content&#xA;pane, it is recommended that you make the content pane opaque&#xA;by way of &lt;code>setOpaque(true)&lt;/code>. Additionally, if the content pane&#xA;overrides &lt;code>paintComponent&lt;/code>, it&#xA;will need to completely fill in the background in an opaque color in&#xA;&lt;code>paintComponent&lt;/code>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see JLayeredPane&#xA;@see JMenuBar&#xA;@see JWindow&#xA;@see JFrame&#xA;@see JDialog&#xA;@see JApplet&#xA;@see JInternalFrame&#xA;@see JComponent&#xA;@see BoxLayout&#xA;&#xA;@see &lt;a href=&quot;http://java.sun.com/products/jfc/swingdoc-archive/mixing.html&quot;>&#xA;Mixing Heavy and Light Components&lt;/a>&#xA;&#xA;@version 1.86 05/18/04&#xA;@author David Kloba&#xA;" annotatedElement="8326cb65-5a13-4328-bb8b-28739df7f1a5"/>
            <generalization xmi:id="b91088b7-9725-4398-a0d2-ef7eccbf545d" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="96f867a8-6eb2-477b-b718-dc9e60ef2728" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="8326cb65-5a13-4328-bb8b-28739df7f1a5" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="0086e86c-b95d-4471-99cb-452bbd3897e6" name="DefaultAction" visibility="package">
              <generalization xmi:id="41044039-14c6-4a6a-9a90-30a7a1d771bb" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="417c3b50-12bd-44ea-8c4e-ab2f5cb51edb" name="RootLayout" visibility="protected" clientDependency="8723ea83-5cd1-4e81-83b5-faa1db306dce 4d08e5ae-1213-4aa8-a47c-1bddf9ba2bfe">
              <ownedComment xmi:id="560deb04-c8f0-4f7c-93a8-ff544b07775c" body="A custom layout manager that is responsible for the layout of&#xA;layeredPane, glassPane, and menuBar.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="417c3b50-12bd-44ea-8c4e-ab2f5cb51edb"/>
              <interfaceRealization xmi:id="8723ea83-5cd1-4e81-83b5-faa1db306dce" name="" supplier="a42fe497-3d64-40e3-8aae-e48bec8b7d93" client="417c3b50-12bd-44ea-8c4e-ab2f5cb51edb" contract="a42fe497-3d64-40e3-8aae-e48bec8b7d93"/>
              <interfaceRealization xmi:id="4d08e5ae-1213-4aa8-a47c-1bddf9ba2bfe" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="417c3b50-12bd-44ea-8c4e-ab2f5cb51edb" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="5c0be48c-7d85-4db5-ac58-743871b98785" name="AccessibleJRootPane" visibility="protected">
              <ownedComment xmi:id="b47e5891-1900-4afe-85e0-badb844893bc" body="This class implements accessibility support for the&#xA;&lt;code>JRootPane&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to root pane user-interface elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="5c0be48c-7d85-4db5-ac58-743871b98785"/>
              <generalization xmi:id="1ddcdbf2-bec5-473a-ba07-a69c42acb646" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0da36637-56ae-44fe-85a6-35c45462ff40" name="ToolTipManager" clientDependency="5d5ba909-15a5-45c9-b8b7-8543dfa83a50">
            <ownedComment xmi:id="21d140e9-772a-4ec5-9dd2-93ea3d716ecb" body="Manages all the &lt;code>ToolTips&lt;/code> in the system.&#xA;&lt;p>&#xA;ToolTipManager contains numerous properties for configuring how long it&#xA;will take for the tooltips to become visible, and how long till they&#xA;hide. Consider a component that has a different tooltip based on where&#xA;the mouse is, such as JTree. When the mouse moves into the JTree and&#xA;over a region that has a valid tooltip, the tooltip will become&#xA;visibile after &lt;code>initialDelay&lt;/code> milliseconds. After&#xA;&lt;code>dismissDelay&lt;/code> milliseconds the tooltip will be hidden. If&#xA;the mouse is over a region that has a valid tooltip, and the tooltip&#xA;is currently visible, when the mouse moves to a region that doesn't have&#xA;a valid tooltip the tooltip will be hidden. If the mouse then moves back&#xA;into a region that has a valid tooltip within &lt;code>reshowDelay&lt;/code>&#xA;milliseconds, the tooltip will immediately be shown, otherwise the&#xA;tooltip will be shown again after &lt;code>initialDelay&lt;/code> milliseconds.&#xA;&#xA;@see JComponent#createToolTip&#xA;@version 1.70 01/16/04&#xA;@author Dave Moore&#xA;@author Rich Schiavi&#xA;" annotatedElement="0da36637-56ae-44fe-85a6-35c45462ff40"/>
            <generalization xmi:id="b7e86faf-d8b7-497f-b922-a18378f2d735" isSubstitutable="true" general="0db79cd4-0757-4282-b2c3-730fa54c5c55"/>
            <interfaceRealization xmi:id="5d5ba909-15a5-45c9-b8b7-8543dfa83a50" name="" supplier="8747391f-bebd-47e3-888b-8e509ac223c9" client="0da36637-56ae-44fe-85a6-35c45462ff40" contract="8747391f-bebd-47e3-888b-8e509ac223c9"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="646bbdf8-2214-417b-9b24-b7387e03662e" name="insideTimerAction" visibility="protected" clientDependency="e85f5a8a-7e31-412f-b36c-db3976c0e4d8">
              <interfaceRealization xmi:id="e85f5a8a-7e31-412f-b36c-db3976c0e4d8" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="646bbdf8-2214-417b-9b24-b7387e03662e" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="b297da97-fa70-40b7-afef-502e4377cdf9" name="outsideTimerAction" visibility="protected" clientDependency="cbe9d851-366d-4242-b353-5eaf7490b45c">
              <interfaceRealization xmi:id="cbe9d851-366d-4242-b353-5eaf7490b45c" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="b297da97-fa70-40b7-afef-502e4377cdf9" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="14afa420-45fc-434a-a0bd-da64ae9509ce" name="stillInsideTimerAction" visibility="protected" clientDependency="823a7985-6462-4beb-95d6-24e1d08ef264">
              <interfaceRealization xmi:id="823a7985-6462-4beb-95d6-24e1d08ef264" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="14afa420-45fc-434a-a0bd-da64ae9509ce" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="0ffbc106-f7b9-4b4b-a447-ba2652e28474" name="MoveBeforeEnterListener" visibility="private">
              <generalization xmi:id="a5d3abb1-4741-4aa5-a1b3-4f0977c3d506" isSubstitutable="true" general="78c02022-5533-497c-8742-d33826e44a9c"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="176e16fe-3409-4fe7-8a71-54fb076bdf95" name="Actions" visibility="private"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d8bf3c90-af6b-43b6-ad48-43b8e3c37f15" name="JScrollBar" clientDependency="d4463ba6-4e63-4a12-ac72-6d3ac304ba37 34a8075d-4120-492c-8c13-f6af067264b1">
            <ownedComment xmi:id="cc2eea36-1ce1-4030-a215-8584aeabfd83" body="An implementation of a scrollbar. The user positions the knob in the&#xA;scrollbar to determine the contents of the viewing area. The&#xA;program typically adjusts the display so that the end of the&#xA;scrollbar represents the end of the displayable contents, or 100%&#xA;of the contents. The start of the scrollbar is the beginning of the&#xA;displayable contents, or 0%. The position of the knob within&#xA;those bounds then translates to the corresponding percentage of&#xA;the displayable contents.&#xA;&lt;p>&#xA;Typically, as the position of the knob in the scrollbar changes&#xA;a corresponding change is made to the position of the JViewport on&#xA;the underlying view, changing the contents of the JViewport.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see JScrollPane&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A component that helps determine the visible content range of an area.&#xA;&#xA;@version 1.78 12/19/03&#xA;@author David Kloba&#xA;" annotatedElement="d8bf3c90-af6b-43b6-ad48-43b8e3c37f15"/>
            <generalization xmi:id="80f05907-c7b8-4442-a652-a4ef4e676494" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="d4463ba6-4e63-4a12-ac72-6d3ac304ba37" name="" supplier="39efaa72-49ea-4322-8011-eae19f7cd24b" client="d8bf3c90-af6b-43b6-ad48-43b8e3c37f15" contract="39efaa72-49ea-4322-8011-eae19f7cd24b"/>
            <interfaceRealization xmi:id="34a8075d-4120-492c-8c13-f6af067264b1" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="d8bf3c90-af6b-43b6-ad48-43b8e3c37f15" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="75c28d34-1c6e-4fd2-b086-32319457349f" name="ModelListener" visibility="private" clientDependency="7d2ccb93-b1b3-4af7-808b-1e4eb4ee9884 5bbab313-1cff-4416-9895-b700a29eaea7">
              <ownedComment xmi:id="65053c4c-ae3d-4e02-bac5-9a0feeed36d3" body="This class listens to ChangeEvents on the model and forwards&#xA;AdjustmentEvents for the sake of backwards compatibility.&#xA;Unfortunately there's no way to determine the proper&#xA;type of the AdjustmentEvent as all updates to the model's&#xA;value are considered equivalent.&#xA;" annotatedElement="75c28d34-1c6e-4fd2-b086-32319457349f"/>
              <interfaceRealization xmi:id="5bbab313-1cff-4416-9895-b700a29eaea7" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="75c28d34-1c6e-4fd2-b086-32319457349f" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
              <interfaceRealization xmi:id="7d2ccb93-b1b3-4af7-808b-1e4eb4ee9884" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="75c28d34-1c6e-4fd2-b086-32319457349f" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="b87cc600-f391-40cb-8271-83e00fc5a23c" name="AccessibleJScrollBar" visibility="protected" clientDependency="d089c1be-a65d-414f-958f-901201530a85">
              <ownedComment xmi:id="b0b13979-91bb-4def-98f6-d650322ede04" body="This class implements accessibility support for the&#xA;&lt;code>JScrollBar&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to scroll bar user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="b87cc600-f391-40cb-8271-83e00fc5a23c"/>
              <generalization xmi:id="31527905-27c5-4003-920b-6814dcbc0504" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
              <interfaceRealization xmi:id="d089c1be-a65d-414f-958f-901201530a85" name="" supplier="48ff1225-61c7-495b-a398-c2903fb1210d" client="b87cc600-f391-40cb-8271-83e00fc5a23c" contract="48ff1225-61c7-495b-a398-c2903fb1210d"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="262e504b-6a5b-403f-96a3-67e93fa0d361" name="border">
            <packagedElement xmi:type="uml:Class" xmi:id="e4b6d3b3-b9b2-4119-ae3d-a35274a8f5ca" name="SoftBevelBorder">
              <ownedComment xmi:id="bffe41f2-2b66-4ee0-b24e-f03e63b57640" body="A class which implements a raised or lowered bevel with&#xA;softened corners.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.16 12/19/03&#xA;@author Amy Fowler&#xA;@author Chester Rose&#xA;" annotatedElement="e4b6d3b3-b9b2-4119-ae3d-a35274a8f5ca"/>
              <generalization xmi:id="a036a7ee-51e4-41c7-a1e2-074aff7e5a3b" isSubstitutable="true" general="0f617e9c-5a95-4f26-b557-cbdbd7cc98c2"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d42f7e02-d576-42bd-80f4-467b0673d9b3" name="CompoundBorder">
              <ownedComment xmi:id="890c6e39-9ec1-4f2e-adc0-d30b15ec4ba5" body="A composite Border class used to compose two Border objects&#xA;into a single border by nesting an inside Border object within&#xA;the insets of an outside Border object.&#xA;&#xA;For example, this class may be used to add blank margin space&#xA;to a component with an existing decorative border:&#xA;&lt;p>&#xA;&lt;code>&lt;pre>&#xA;Border border = comp.getBorder();&#xA;Border margin = new EmptyBorder(10,10,10,10);&#xA;comp.setBorder(new CompoundBorder(border, margin));&#xA;&lt;/pre>&lt;/code>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.20 12/19/03&#xA;@author David Kloba&#xA;" annotatedElement="d42f7e02-d576-42bd-80f4-467b0673d9b3"/>
              <generalization xmi:id="49cccf0d-2e55-4b86-a484-2707ab327db2" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0f617e9c-5a95-4f26-b557-cbdbd7cc98c2" name="BevelBorder">
              <ownedComment xmi:id="0d5b671e-91ef-4970-90b1-500581b9d56f" body="A class which implements a simple two-line bevel border.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.20 12/19/03&#xA;@author David Kloba&#xA;" annotatedElement="0f617e9c-5a95-4f26-b557-cbdbd7cc98c2"/>
              <generalization xmi:id="ced027b1-be91-4a2c-b699-5339af0a81b6" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a58674eb-dba4-425f-9845-128b99228447" name="EtchedBorder">
              <ownedComment xmi:id="3504f18b-085c-4324-bf71-2dd16ce2cf21" body="A class which implements a simple etched border which can&#xA;either be etched-in or etched-out.  If no highlight/shadow&#xA;colors are initialized when the border is created, then&#xA;these colors will be dynamically derived from the background&#xA;color of the component argument passed into the paintBorder()&#xA;method.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.18 12/19/03&#xA;@author David Kloba&#xA;@author Amy Fowler&#xA;" annotatedElement="a58674eb-dba4-425f-9845-128b99228447"/>
              <generalization xmi:id="206b1931-9853-4de6-a73c-eee7b2242f52" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="51ccc5da-5363-4eaa-b342-50df34ce0bcf" name="TitledBorder">
              <ownedComment xmi:id="95c50a26-cb75-4956-95ec-c7accc7a4e4e" body="A class which implements an arbitrary border&#xA;with the addition of a String title in a&#xA;specified position and justification.&#xA;&lt;p>&#xA;If the border, font, or color property values are not&#xA;specified in the constuctor or by invoking the appropriate&#xA;set methods, the property values will be defined by the current&#xA;look and feel, using the following property names in the&#xA;Defaults Table:&#xA;&lt;ul>&#xA;&lt;li>&quot;TitledBorder.border&quot;&#xA;&lt;li>&quot;TitledBorder.font&quot;&#xA;&lt;li>&quot;TitledBorder.titleColor&quot;&#xA;&lt;/ul>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.40 12/19/03&#xA;@author David Kloba&#xA;@author Amy Fowler&#xA;" annotatedElement="51ccc5da-5363-4eaa-b342-50df34ce0bcf"/>
              <generalization xmi:id="309f6fba-f202-4f1a-bd9b-d18d7617d318" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="05de9e87-5ebf-43fd-8c26-85ddcb139ab6" name="LineBorder">
              <ownedComment xmi:id="0003b2f8-693e-4d9f-8456-82c0fe15f94a" body="A class which implements a line border of arbitrary thickness&#xA;and of a single color.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.23 12/19/03&#xA;@author David Kloba&#xA;" annotatedElement="05de9e87-5ebf-43fd-8c26-85ddcb139ab6"/>
              <generalization xmi:id="7fb27461-4d47-49fa-a8aa-32560756b7b2" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b5cc2773-d96e-42f9-b281-64db08986958" name="MatteBorder">
              <ownedComment xmi:id="73a2c7c6-93d4-4944-a0b4-0a7d90a169c2" body="A class which provides a matte-like border of either a solid color&#xA;or a tiled icon.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.22 12/19/03&#xA;@author Amy Fowler&#xA;" annotatedElement="b5cc2773-d96e-42f9-b281-64db08986958"/>
              <generalization xmi:id="fe9254ad-bf99-468b-9b3d-78ad9c5dc13f" isSubstitutable="true" general="ba1d8083-a97f-4414-80bf-1b4e4b806277"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="5cae9314-8ddc-4110-8183-02749e337ef8" name="Border" isAbstract="true">
              <ownedComment xmi:id="f393cc08-e571-4fa5-bce6-5f3a348b275c" body="Interface describing an object capable of rendering a border&#xA;around the edges of a swing component.&#xA;For examples of using borders see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/border.html&quot;>How to Use Borders&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&lt;p>&#xA;In the Swing component set, borders supercede Insets as the&#xA;mechanism for creating a (decorated or plain) area around the&#xA;edge of a component.&#xA;&lt;p>&#xA;Usage Notes:&#xA;&lt;ul>&#xA;&lt;li>Use EmptyBorder to create a plain border (this mechanism&#xA;replaces its predecessor, &lt;code>setInsets&lt;/code>).&#xA;&lt;li>Use CompoundBorder to nest multiple border objects, creating&#xA;a single, combined border.&#xA;&lt;li>Border instances are designed to be shared. Rather than creating&#xA;a new border object using one of border classes, use the&#xA;BorderFactory methods, which produces a shared instance of the&#xA;common border types.&#xA;&lt;li>Additional border styles include BevelBorder, SoftBevelBorder,&#xA;EtchedBorder, LineBorder, TitledBorder, and MatteBorder.&#xA;&lt;li>To create a new border class, subclass AbstractBorder.&#xA;&lt;/ul>&#xA;&#xA;@version 1.19 12/19/03&#xA;@author David Kloba&#xA;@author Amy Fowler&#xA;@see javax.swing.BorderFactory&#xA;@see EmptyBorder&#xA;@see CompoundBorder&#xA;" annotatedElement="5cae9314-8ddc-4110-8183-02749e337ef8"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ba1d8083-a97f-4414-80bf-1b4e4b806277" name="EmptyBorder" clientDependency="499aa21d-12d7-4cde-80e3-5b48bb9a6bd3">
              <ownedComment xmi:id="8abf0682-cd06-4a25-ba44-72e8c4632bb6" body="A class which provides an empty, transparent border which&#xA;takes up space but does no drawing.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.26 12/19/03&#xA;@author David Kloba&#xA;" annotatedElement="ba1d8083-a97f-4414-80bf-1b4e4b806277"/>
              <generalization xmi:id="c8812b22-bfcb-4e4b-9f57-ef538731bbe9" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
              <interfaceRealization xmi:id="499aa21d-12d7-4cde-80e3-5b48bb9a6bd3" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ba1d8083-a97f-4414-80bf-1b4e4b806277" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="3dc01fa3-d79e-404b-a1b0-7c03864f4204" name="AbstractBorder" clientDependency="0d37e1f0-53c9-4c90-93b1-3298377bddac 8d5858cc-9780-4163-81ee-ea27503bb0e9" isAbstract="true">
              <ownedComment xmi:id="8c8a7e84-cdea-4202-9856-e5d81787c814" body="A class that implements an empty border with no size.&#xA;This provides a convenient base class from which other border&#xA;classes can be easily derived.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.33 12/19/03&#xA;@author David Kloba&#xA;" annotatedElement="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
              <interfaceRealization xmi:id="8d5858cc-9780-4163-81ee-ea27503bb0e9" name="" supplier="5cae9314-8ddc-4110-8183-02749e337ef8" client="3dc01fa3-d79e-404b-a1b0-7c03864f4204" contract="5cae9314-8ddc-4110-8183-02749e337ef8"/>
              <interfaceRealization xmi:id="0d37e1f0-53c9-4c90-93b1-3298377bddac" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="3dc01fa3-d79e-404b-a1b0-7c03864f4204" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="f688b776-4369-448e-9c0f-3923899d392b" name="DefaultSingleSelectionModel" clientDependency="1905caa8-e912-429d-b311-e74a5b900206 a4b656a4-2705-4a77-94c4-ae05a5b91445">
            <ownedComment xmi:id="2ac50945-0b2e-49c5-aaa1-e756929cb6a2" body="A generic implementation of SingleSelectionModel.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.35 05/05/04&#xA;@author Dave Moore&#xA;" annotatedElement="f688b776-4369-448e-9c0f-3923899d392b"/>
            <interfaceRealization xmi:id="a4b656a4-2705-4a77-94c4-ae05a5b91445" name="" supplier="e2a40fee-6367-4510-acfe-2350ac769cdb" client="f688b776-4369-448e-9c0f-3923899d392b" contract="e2a40fee-6367-4510-acfe-2350ac769cdb"/>
            <interfaceRealization xmi:id="1905caa8-e912-429d-b311-e74a5b900206" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f688b776-4369-448e-9c0f-3923899d392b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9aef9eb0-28a1-4ccb-88a9-78fa020e0df1" name="ViewportLayout" clientDependency="e29651bc-c349-455a-90b7-7be82009c7f9 d6722824-2501-43da-961f-1c548d1558da">
            <ownedComment xmi:id="45e6b521-9015-4b48-9298-ed2074cd1f17" body="The default layout manager for &lt;code>JViewport&lt;/code>.&#xA;&lt;code>ViewportLayout&lt;/code> defines&#xA;a policy for layout that should be useful for most applications.&#xA;The viewport makes its view the same size as the viewport,&#xA;however it will not make the view smaller than its minimum size.&#xA;As the viewport grows the view is kept bottom justified until&#xA;the entire view is visible, subsequently the view is kept top&#xA;justified.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.38 12/19/03&#xA;@author Hans Muller&#xA;" annotatedElement="9aef9eb0-28a1-4ccb-88a9-78fa020e0df1"/>
            <interfaceRealization xmi:id="d6722824-2501-43da-961f-1c548d1558da" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="9aef9eb0-28a1-4ccb-88a9-78fa020e0df1" contract="c3507179-c29c-40a9-8869-092757900e53"/>
            <interfaceRealization xmi:id="e29651bc-c349-455a-90b7-7be82009c7f9" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="9aef9eb0-28a1-4ccb-88a9-78fa020e0df1" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="836cc1f4-ee45-4a77-8d58-5e1454cd64da" name="JLayeredPane" clientDependency="6cf565d2-9f0b-4b6e-b5bd-9c604b7c6802">
            <ownedComment xmi:id="a2522d03-2995-4cf5-a2ab-2c886c8eed1a" body="&lt;code>JLayeredPane&lt;/code> adds depth to a JFC/Swing container,&#xA;allowing components to overlap each other when needed.&#xA;An &lt;code>Integer&lt;/code> object specifies each component's depth in the&#xA;container, where higher-numbered components sit &quot;on top&quot; of other&#xA;components.&#xA;For task-oriented documentation and examples of using layered panes see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/layeredpane.html&quot;>How to Use a Layered Pane&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&lt;P>&#xA;&lt;TABLE ALIGN=&quot;RIGHT&quot; BORDER=&quot;0&quot; SUMMARY=&quot;layout&quot;>&#xA;&lt;TR>&#xA;&lt;TD ALIGN=&quot;CENTER&quot;>&#xA;&lt;P ALIGN=&quot;CENTER&quot;>&lt;IMG SRC=&quot;doc-files/JLayeredPane-1.gif&quot;&#xA;alt=&quot;The following text describes this image.&quot;&#xA;WIDTH=&quot;269&quot; HEIGHT=&quot;264&quot; ALIGN=&quot;BOTTOM&quot; BORDER=&quot;0&quot;>&#xA;&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;/TABLE>&#xA;For convenience, &lt;code>JLayeredPane&lt;/code> divides the depth-range&#xA;into several different layers. Putting a component into one of those&#xA;layers makes it easy to ensure that components overlap properly,&#xA;without having to worry about specifying numbers for specific depths:&#xA;&lt;DL>&#xA;&lt;DT>&lt;FONT SIZE=&quot;2&quot;>DEFAULT_LAYER&lt;/FONT>&lt;/DT>&#xA;&lt;DD>The standard layer, where most components go. This the bottommost&#xA;layer.&#xA;&lt;DT>&lt;FONT SIZE=&quot;2&quot;>PALETTE_LAYER&lt;/FONT>&lt;/DT>&#xA;&lt;DD>The palette layer sits over the default layer. Useful for floating&#xA;toolbars and palettes, so they can be positioned above other components.&#xA;&lt;DT>&lt;FONT SIZE=&quot;2&quot;>MODAL_LAYER&lt;/FONT>&lt;/DT>&#xA;&lt;DD>The layer used for modal dialogs. They will appear on top of any&#xA;toolbars, palettes, or standard components in the container.&#xA;&lt;DT>&lt;FONT SIZE=&quot;2&quot;>POPUP_LAYER&lt;/FONT>&lt;/DT>&#xA;&lt;DD>The popup layer displays above dialogs. That way, the popup windows&#xA;associated with combo boxes, tooltips, and other help text will appear&#xA;above the component, palette, or dialog that generated them.&#xA;&lt;DT>&lt;FONT SIZE=&quot;2&quot;>DRAG_LAYER&lt;/FONT>&lt;/DT>&#xA;&lt;DD>When dragging a component, reassigning it to the drag layer ensures&#xA;that it is positioned over every other component in the container. When&#xA;finished dragging, it can be reassigned to its normal layer.&#xA;&lt;/DL>&#xA;The &lt;code>JLayeredPane&lt;/code> methods &lt;code>moveToFront(Component)&lt;/code>,&#xA;&lt;code>moveToBack(Component)&lt;/code> and &lt;code>setPosition&lt;/code> can be used&#xA;to reposition a component within its layer. The &lt;code>setLayer&lt;/code> method&#xA;can also be used to change the component's current layer.&#xA;&#xA;&lt;h2>Details&lt;/h2>&#xA;&lt;code>JLayeredPane&lt;/code> manages its list of children like&#xA;&lt;code>Container&lt;/code>, but allows for the definition of a several&#xA;layers within itself. Children in the same layer are managed exactly&#xA;like the normal &lt;code>Container&lt;/code> object,&#xA;with the added feature that when children components overlap, children&#xA;in higher layers display above the children in lower layers.&#xA;&lt;p>&#xA;Each layer is a distinct integer number. The layer attribute can be set&#xA;on a &lt;code>Component&lt;/code> by passing an &lt;code>Integer&lt;/code>&#xA;object during the add call.&lt;br> For example:&#xA;&lt;PRE>&#xA;layeredPane.add(child, JLayeredPane.DEFAULT_LAYER);&#xA;or&#xA;layeredPane.add(child, new Integer(10));&#xA;&lt;/PRE>&#xA;The layer attribute can also be set on a Component by calling&lt;PRE>&#xA;layeredPaneParent.setLayer(child, 10)&lt;/PRE>&#xA;on the &lt;code>JLayeredPane&lt;/code> that is the parent of component. The layer&#xA;should be set &lt;i>before&lt;/i> adding the child to the parent.&#xA;&lt;p>&#xA;Higher number layers display above lower number layers. So, using&#xA;numbers for the layers and letters for individual components, a&#xA;representative list order would look like this:&lt;PRE>&#xA;5a, 5b, 5c, 2a, 2b, 2c, 1a &lt;/PRE>&#xA;where the leftmost components are closest to the top of the display.&#xA;&lt;p>&#xA;A component can be moved to the top or bottom position within its&#xA;layer by calling &lt;code>moveToFront&lt;/code> or &lt;code>moveToBack&lt;/code>.&#xA;&lt;p>&#xA;The position of a component within a layer can also be specified directly.&#xA;Valid positions range from 0 up to one less than the number of&#xA;components in that layer. A value of -1 indicates the bottommost&#xA;position. A value of 0 indicates the topmost position. Unlike layer&#xA;numbers, higher position values are &lt;i>lower&lt;/i> in the display.&#xA;&lt;blockquote>&#xA;&lt;b>Note:&lt;/b> This sequence (defined by java.awt.Container) is the reverse&#xA;of the layer numbering sequence. Usually though, you will use &lt;code>moveToFront&lt;/code>,&#xA;&lt;code>moveToBack&lt;/code>, and &lt;code>setLayer&lt;/code>.&#xA;&lt;/blockquote>&#xA;Here are some examples using the method add(Component, layer, position):&#xA;Calling add(5x, 5, -1) results in:&lt;PRE>&#xA;5a, 5b, 5c, 5x, 2a, 2b, 2c, 1a &lt;/PRE>&#xA;&#xA;Calling add(5z, 5, 2) results in:&lt;PRE>&#xA;5a, 5b, 5z, 5c, 5x, 2a, 2b, 2c, 1a &lt;/PRE>&#xA;&#xA;Calling add(3a, 3, 7) results in:&lt;PRE>&#xA;5a, 5b, 5z, 5c, 5x, 3a, 2a, 2b, 2c, 1a &lt;/PRE>&#xA;&#xA;Using normal paint/event mechanics results in 1a appearing at the bottom&#xA;and 5a being above all other components.&#xA;&lt;p>&#xA;&lt;b>Note:&lt;/b> that these layers are simply a logical construct and LayoutManagers&#xA;will affect all child components of this container without regard for&#xA;layer settings.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.36 02/02/00&#xA;@author David Kloba&#xA;" annotatedElement="836cc1f4-ee45-4a77-8d58-5e1454cd64da"/>
            <generalization xmi:id="0d2b8d47-f0bc-4e8b-87ac-8c7faf93711d" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="6cf565d2-9f0b-4b6e-b5bd-9c604b7c6802" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="836cc1f4-ee45-4a77-8d58-5e1454cd64da" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="f699f4e1-9c9d-4c9b-858c-cce6474e786d" name="AccessibleJLayeredPane" visibility="protected">
              <ownedComment xmi:id="229f6004-5386-4180-8324-378363efaf23" body="This class implements accessibility support for the&#xA;&lt;code>JLayeredPane&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to layered pane user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="f699f4e1-9c9d-4c9b-858c-cce6474e786d"/>
              <generalization xmi:id="862f0cbe-ce9a-4815-b66d-aa90fc53eb63" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ad5c535d-3150-461d-8ae5-9c7b1fc90fb1" name="DebugGraphicsInfo" visibility="package">
            <ownedComment xmi:id="6f8b4ba1-71da-4e58-a262-4d8404d09475" body="Class used by DebugGraphics for maintaining information about how&#xA;to render graphics calls.&#xA;&#xA;@version 1.13 12/19/03&#xA;@author Dave Karlton&#xA;" annotatedElement="ad5c535d-3150-461d-8ae5-9c7b1fc90fb1"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="cbed774c-a97b-48be-b3e8-5222836b97c6" name="AbstractActionPropertyChangeListener" visibility="package" clientDependency="fbe9407b-d568-4be4-8cee-ba0e355de83a" isAbstract="true">
            <ownedComment xmi:id="0dadc98f-df4e-489e-b938-58e2753362ab" body="A package-private PropertyChangeListener which listens for&#xA;property changes on an Action and updates the properties&#xA;of an ActionEvent source.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.11 12/19/03&#xA;@author Georges Saab&#xA;@see AbstractButton&#xA;" annotatedElement="cbed774c-a97b-48be-b3e8-5222836b97c6"/>
            <interfaceRealization xmi:id="fbe9407b-d568-4be4-8cee-ba0e355de83a" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="cbed774c-a97b-48be-b3e8-5222836b97c6" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="9513a497-9de5-4df2-bce3-0dbb921244ca" name="OwnedWeakReference" visibility="private">
              <generalization xmi:id="894f3474-d035-4363-9a65-4ba49c99488d" isSubstitutable="true" general="9fe410d6-a23d-4e51-b67a-70e7810968b4"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="28fef9fd-591b-486e-876c-673d998479b3" name="JInternalFrame" clientDependency="ba7265ae-71ac-4b5d-9bdf-4c9257cc1199 a5787c71-d099-43dd-ab6a-36aacfd9de5a 51df9875-5cb3-4300-b133-0f038518bc2a">
            <ownedComment xmi:id="d8b15b0b-a63b-4cd7-a481-05576a63d868" body="A lightweight object that provides many of the features of&#xA;a native frame, including dragging, closing, becoming an icon,&#xA;resizing, title display, and support for a menu bar.&#xA;For task-oriented documentation and examples of using internal frames,&#xA;see &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/internalframe.html&quot; target=&quot;_top&quot;>How to Use Internal Frames&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&#xA;&lt;p>&#xA;&#xA;Generally,&#xA;you add &lt;code>JInternalFrame&lt;/code>s to a &lt;code>JDesktopPane&lt;/code>. The UI&#xA;delegates the look-and-feel-specific actions to the&#xA;&lt;code>DesktopManager&lt;/code>&#xA;object maintained by the &lt;code>JDesktopPane&lt;/code>.&#xA;&lt;p>&#xA;The &lt;code>JInternalFrame&lt;/code> content pane&#xA;is where you add child components.&#xA;As a conveniance &lt;code>add&lt;/code> and its variants, &lt;code>remove&lt;/code> and&#xA;&lt;code>setLayout&lt;/code> have been overridden to forward to the&#xA;&lt;code>contentPane&lt;/code> as necessary. This means you can write:&#xA;&lt;pre>&#xA;internalFrame.add(child);&#xA;&lt;/pre>&#xA;And the child will be added to the contentPane.&#xA;The content pane is actually managed by an instance of&#xA;&lt;code>JRootPane&lt;/code>,&#xA;which also manages a layout pane, glass pane, and&#xA;optional menu bar for the internal frame. Please see the&#xA;&lt;code>JRootPane&lt;/code>&#xA;documentation for a complete description of these components.&#xA;Refer to {@link javax.swing.RootPaneContainer}&#xA;for details on adding, removing and setting the &lt;code>LayoutManager&lt;/code>&#xA;of a &lt;code>JInternalFrame&lt;/code>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see InternalFrameEvent&#xA;@see JDesktopPane&#xA;@see DesktopManager&#xA;@see JInternalFrame.JDesktopIcon&#xA;@see JRootPane&#xA;@see javax.swing.RootPaneContainer&#xA;&#xA;@version 1.147 05/18/04&#xA;@author David Kloba&#xA;@author Rich Schiavi&#xA;@beaninfo&#xA;attribute: isContainer true&#xA;attribute: containerDelegate getContentPane&#xA;description: A frame container which is contained within&#xA;another window.&#xA;" annotatedElement="28fef9fd-591b-486e-876c-673d998479b3"/>
            <generalization xmi:id="436ab242-8def-4eb5-8c1d-30687f90d450" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="ba7265ae-71ac-4b5d-9bdf-4c9257cc1199" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="28fef9fd-591b-486e-876c-673d998479b3" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <interfaceRealization xmi:id="a5787c71-d099-43dd-ab6a-36aacfd9de5a" name="" supplier="be64f521-3657-4ad1-9008-a1349d557347" client="28fef9fd-591b-486e-876c-673d998479b3" contract="be64f521-3657-4ad1-9008-a1349d557347"/>
            <interfaceRealization xmi:id="51df9875-5cb3-4300-b133-0f038518bc2a" name="" supplier="d9dda4f0-9e1c-4afc-a288-475863ddcf1d" client="28fef9fd-591b-486e-876c-673d998479b3" contract="d9dda4f0-9e1c-4afc-a288-475863ddcf1d"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a2c34204-68e5-4268-b394-1fc1eb0821f4" name="AccessibleJInternalFrame" visibility="protected" clientDependency="b93173e6-0361-40ca-940d-ae5631765be1">
              <ownedComment xmi:id="528e64ef-5f6c-4016-ba9e-6791119649dd" body="This class implements accessibility support for the&#xA;&lt;code>JInternalFrame&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to internal frame user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="a2c34204-68e5-4268-b394-1fc1eb0821f4"/>
              <generalization xmi:id="08527bce-191e-41d0-90b7-8b78bbc58ea7" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
              <interfaceRealization xmi:id="b93173e6-0361-40ca-940d-ae5631765be1" name="" supplier="48ff1225-61c7-495b-a398-c2903fb1210d" client="a2c34204-68e5-4268-b394-1fc1eb0821f4" contract="48ff1225-61c7-495b-a398-c2903fb1210d"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="9d8da61e-ae3a-4382-9c00-17480946530a" name="JDesktopIcon" clientDependency="c940657c-c7c7-4c71-b4ac-22556f629429">
              <ownedComment xmi:id="f4514596-a83f-4a21-900a-89326e1f0aff" body="This component represents an iconified version of a&#xA;&lt;code>JInternalFrame&lt;/code>.&#xA;This API should NOT BE USED by Swing applications, as it will go&#xA;away in future versions of Swing as its functionality is moved into&#xA;&lt;code>JInternalFrame&lt;/code>.  This class is public only so that&#xA;UI objects can display a desktop icon.  If an application&#xA;wants to display a desktop icon, it should create a&#xA;&lt;code>JInternalFrame&lt;/code> instance and iconify it.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author David Kloba&#xA;" annotatedElement="9d8da61e-ae3a-4382-9c00-17480946530a"/>
              <generalization xmi:id="481b754a-356e-45ff-a122-1177d1994083" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
              <interfaceRealization xmi:id="c940657c-c7c7-4c71-b4ac-22556f629429" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="9d8da61e-ae3a-4382-9c00-17480946530a" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="b06c2bd0-9896-4125-8f1a-7bc5044ee31a" name="AccessibleJDesktopIcon" visibility="protected" clientDependency="0a8b0ae9-0a04-4f5b-9aed-5b2feb3d8ed6">
                <ownedComment xmi:id="12fa1e6f-74cf-43b3-953a-80d0828f8bab" body="This class implements accessibility support for the&#xA;&lt;code>JInternalFrame.JDesktopIcon&lt;/code> class.  It provides an&#xA;implementation of the Java Accessibility API appropriate to&#xA;desktop icon user-interface elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="b06c2bd0-9896-4125-8f1a-7bc5044ee31a"/>
                <generalization xmi:id="c8d20227-57b0-4daa-8f2b-d31bf83a787d" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
                <interfaceRealization xmi:id="0a8b0ae9-0a04-4f5b-9aed-5b2feb3d8ed6" name="" supplier="48ff1225-61c7-495b-a398-c2903fb1210d" client="b06c2bd0-9896-4125-8f1a-7bc5044ee31a" contract="48ff1225-61c7-495b-a398-c2903fb1210d"/>
              </nestedClassifier>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b9c1325c-0ef8-43c1-a768-dee6cf242f0d" name="DefaultListCellRenderer" clientDependency="8666f4c1-1d29-4832-8200-8322428ad660 f2c5f0f7-80b7-4697-97c4-e39e8a947f12">
            <ownedComment xmi:id="0ca5ad7e-e62e-473e-abf6-fd692e4c2f05" body="Renders an item in a list.&#xA;&lt;p>&#xA;&lt;strong>&lt;a name=&quot;override&quot;>Implementation Note:&lt;/a>&lt;/strong>&#xA;This class overrides&#xA;&lt;code>invalidate&lt;/code>,&#xA;&lt;code>validate&lt;/code>,&#xA;&lt;code>revalidate&lt;/code>,&#xA;&lt;code>repaint&lt;/code>,&#xA;&lt;code>isOpaque&lt;/code>,&#xA;and&#xA;&lt;code>firePropertyChange&lt;/code>&#xA;solely to improve performance.&#xA;If not overridden, these frequently called methods would execute code paths&#xA;that are unnecessary for the default list cell renderer.&#xA;If you write your own renderer,&#xA;take care to weigh the benefits and&#xA;drawbacks of overriding these methods.&#xA;&#xA;&lt;p>&#xA;&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.25 12/19/03&#xA;@author Philip Milne&#xA;@author Hans Muller&#xA;" annotatedElement="b9c1325c-0ef8-43c1-a768-dee6cf242f0d"/>
            <generalization xmi:id="247eff2f-c621-45af-907a-b570f2ac8720" isSubstitutable="true" general="c9ab6369-faf9-4d4f-8a58-fa6a4a41feb0"/>
            <interfaceRealization xmi:id="f2c5f0f7-80b7-4697-97c4-e39e8a947f12" name="" supplier="1a95f1ea-7980-4ae4-b14e-b495104a675d" client="b9c1325c-0ef8-43c1-a768-dee6cf242f0d" contract="1a95f1ea-7980-4ae4-b14e-b495104a675d"/>
            <interfaceRealization xmi:id="8666f4c1-1d29-4832-8200-8322428ad660" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="b9c1325c-0ef8-43c1-a768-dee6cf242f0d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="92b352db-49e4-4e17-89eb-ceb4d13f3a1b" name="UIResource" clientDependency="b2d97c2f-57bb-4260-a1b1-35e86703361a">
              <ownedComment xmi:id="d1ef3789-0411-427c-8a01-108550eb5d0b" body="A subclass of DefaultListCellRenderer that implements UIResource.&#xA;DefaultListCellRenderer doesn't implement UIResource&#xA;directly so that applications can safely override the&#xA;cellRenderer property with DefaultListCellRenderer subclasses.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="92b352db-49e4-4e17-89eb-ceb4d13f3a1b"/>
              <generalization xmi:id="72ee0bc4-b975-4e92-bb7a-34d6978b540e" isSubstitutable="true" general="b9c1325c-0ef8-43c1-a768-dee6cf242f0d"/>
              <interfaceRealization xmi:id="b2d97c2f-57bb-4260-a1b1-35e86703361a" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="92b352db-49e4-4e17-89eb-ceb4d13f3a1b" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b824fd4c-05e4-4afb-b145-899a5c369314" name="JFrame" clientDependency="b40a4f06-caf6-4a90-a9f8-290b30c18aab 5742b045-3bc8-4450-8ed7-42e439a84b21 3e9e7318-1692-4c51-95f7-22f33e6335d3">
            <ownedComment xmi:id="43602fbb-32ed-4830-9a50-e044f1ea30d9" body="An extended version of &lt;code>java.awt.Frame&lt;/code> that adds support for&#xA;the JFC/Swing component architecture.&#xA;You can find task-oriented documentation about using &lt;code>JFrame&lt;/code>&#xA;in &lt;em>The Java Tutorial&lt;/em>, in the section&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/frame.html&quot;>How to Make Frames&lt;/a>.&#xA;&#xA;&lt;p>&#xA;The &lt;code>JFrame&lt;/code> class is slightly incompatible with &lt;code>Frame&lt;/code>.&#xA;Like all other JFC/Swing top-level containers,&#xA;a &lt;code>JFrame&lt;/code> contains a &lt;code>JRootPane&lt;/code> as its only child.&#xA;The &lt;b>content pane&lt;/b> provided by the root pane should,&#xA;as a rule, contain&#xA;all the non-menu components displayed by the &lt;code>JFrame&lt;/code>.&#xA;This is different from the AWT &lt;code>Frame&lt;/code> case.&#xA;As a conveniance &lt;code>add&lt;/code> and its variants, &lt;code>remove&lt;/code> and&#xA;&lt;code>setLayout&lt;/code> have been overridden to forward to the&#xA;&lt;code>contentPane&lt;/code> as necessary. This means you can write:&#xA;&lt;pre>&#xA;frame.add(child);&#xA;&lt;/pre>&#xA;And the child will be added to the contentPane.&#xA;The content pane will&#xA;always be non-null. Attempting to set it to null will cause the JFrame&#xA;to throw an exception. The default content pane will have a BorderLayout&#xA;manager set on it.&#xA;Refer to {@link javax.swing.RootPaneContainer}&#xA;for details on adding, removing and setting the &lt;code>LayoutManager&lt;/code>&#xA;of a &lt;code>JFrame&lt;/code>.&#xA;&lt;p>&#xA;Unlike a &lt;code>Frame&lt;/code>, a &lt;code>JFrame&lt;/code> has some notion of how to&#xA;respond when the user attempts to close the window. The default behavior&#xA;is to simply hide the JFrame when the user closes the window. To change the&#xA;default behavior, you invoke the method&#xA;{@link #setDefaultCloseOperation}.&#xA;To make the &lt;code>JFrame&lt;/code> behave the same as a &lt;code>Frame&lt;/code>&#xA;instance, use&#xA;&lt;code>setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)&lt;/code>.&#xA;&lt;p>&#xA;For more information on content panes&#xA;and other features that root panes provide,&#xA;see &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html&quot;>Using Top-Level Containers&lt;/a> in &lt;em>The Java Tutorial&lt;/em>.&#xA;&lt;p>&#xA;In a multi-screen environment, you can create a &lt;code>JFrame&lt;/code>&#xA;on a different screen device.  See {@link java.awt.Frame} for more&#xA;information.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see JRootPane&#xA;@see #setDefaultCloseOperation&#xA;@see java.awt.event.WindowListener#windowClosing&#xA;@see javax.swing.RootPaneContainer&#xA;&#xA;@beaninfo&#xA;attribute: isContainer true&#xA;attribute: containerDelegate getContentPane&#xA;description: A toplevel window which can be minimized to an icon.&#xA;&#xA;@version 1.104 12/19/03&#xA;@author Jeff Dinkins&#xA;@author Georges Saab&#xA;@author David Kloba&#xA;" annotatedElement="b824fd4c-05e4-4afb-b145-899a5c369314"/>
            <generalization xmi:id="8913a642-3285-4039-a9e9-6bb087ebebe9" isSubstitutable="true" general="6f2ca193-05d8-41df-b71a-a59fa5cf0c37"/>
            <interfaceRealization xmi:id="3e9e7318-1692-4c51-95f7-22f33e6335d3" name="" supplier="be64f521-3657-4ad1-9008-a1349d557347" client="b824fd4c-05e4-4afb-b145-899a5c369314" contract="be64f521-3657-4ad1-9008-a1349d557347"/>
            <interfaceRealization xmi:id="b40a4f06-caf6-4a90-a9f8-290b30c18aab" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="b824fd4c-05e4-4afb-b145-899a5c369314" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <interfaceRealization xmi:id="5742b045-3bc8-4450-8ed7-42e439a84b21" name="" supplier="d9dda4f0-9e1c-4afc-a288-475863ddcf1d" client="b824fd4c-05e4-4afb-b145-899a5c369314" contract="d9dda4f0-9e1c-4afc-a288-475863ddcf1d"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="3de4a895-c515-4f8c-af00-fe8e8bcdf12e" name="AccessibleJFrame" visibility="protected">
              <ownedComment xmi:id="055e754c-e37c-4584-bb95-db297b3c64cf" body="This class implements accessibility support for the&#xA;&lt;code>JFrame&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to frame user-interface&#xA;elements.&#xA;" annotatedElement="3de4a895-c515-4f8c-af00-fe8e8bcdf12e"/>
              <generalization xmi:id="7516f8eb-31f1-4f33-a0a2-2e593c596502" isSubstitutable="true" general="c13c176c-d79c-46be-a38e-289e28607811"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5945c650-59ab-4b3f-87ba-2249230bdda8" name="JToolTip" clientDependency="7464d276-0390-4299-98e2-1e4e11fbe88d">
            <ownedComment xmi:id="e0491f01-c80a-465c-8e19-15fb5a73ba5b" body="Used to display a &quot;Tip&quot; for a Component. Typically components provide api&#xA;to automate the process of using &lt;code>ToolTip&lt;/code>s.&#xA;For example, any Swing component can use the &lt;code>JComponent&lt;/code>&#xA;&lt;code>setToolTipText&lt;/code> method to specify the text&#xA;for a standard tooltip. A component that wants to create a custom&#xA;&lt;code>ToolTip&lt;/code>&#xA;display can override &lt;code>JComponent&lt;/code>'s &lt;code>createToolTip&lt;/code>&#xA;method and use a subclass of this class.&#xA;&lt;p>&#xA;See &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/tooltip.html&quot;>How to Use Tool Tips&lt;/a>&#xA;in &lt;em>The Java Tutorial&lt;/em>&#xA;for further documentation.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see JComponent#setToolTipText&#xA;@see JComponent#createToolTip&#xA;@version 1.47 12/19/03&#xA;@author Dave Moore&#xA;@author Rich Shiavi&#xA;" annotatedElement="5945c650-59ab-4b3f-87ba-2249230bdda8"/>
            <generalization xmi:id="b9aab0f2-0654-45a5-b42e-2cc1ee3d0de3" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="7464d276-0390-4299-98e2-1e4e11fbe88d" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="5945c650-59ab-4b3f-87ba-2249230bdda8" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8c4c7655-6471-4085-81d0-c7caba8a806c" name="AccessibleJToolTip" visibility="protected">
              <ownedComment xmi:id="aee272dc-1b9e-40e8-8c46-7270f96cf362" body="This class implements accessibility support for the&#xA;&lt;code>JToolTip&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to tool tip user-interface elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="8c4c7655-6471-4085-81d0-c7caba8a806c"/>
              <generalization xmi:id="d0929dcf-3223-453e-935e-033e6ec49585" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3f10b1c3-0725-419f-b438-415deee7a9d4" name="AbstractCellEditor" clientDependency="602f0739-4c37-4019-971f-da25a5d9705a 90463538-a02d-475a-a0e0-7dde805cafe1" isAbstract="true">
            <ownedComment xmi:id="86e0eb90-aa36-4fa4-886c-310207296121" body="@version 1.11 12/19/03&#xA;&#xA;A base class for &lt;code>CellEditors&lt;/code>, providing default&#xA;implementations for the methods in the &lt;code>CellEditor&lt;/code>&#xA;interface except &lt;code>getCellEditorValue()&lt;/code>.&#xA;Like the other abstract implementations in Swing, also manages a list&#xA;of listeners.&#xA;&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author Philip Milne&#xA;" annotatedElement="3f10b1c3-0725-419f-b438-415deee7a9d4"/>
            <interfaceRealization xmi:id="90463538-a02d-475a-a0e0-7dde805cafe1" name="" supplier="8cf3a8f2-ac94-4aea-8cf2-9fc323d23b85" client="3f10b1c3-0725-419f-b438-415deee7a9d4" contract="8cf3a8f2-ac94-4aea-8cf2-9fc323d23b85"/>
            <interfaceRealization xmi:id="602f0739-4c37-4019-971f-da25a5d9705a" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="3f10b1c3-0725-419f-b438-415deee7a9d4" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="583017e7-290c-453a-8d79-a26c55d22434" name="OverlayLayout" clientDependency="13ae9713-f0d3-4b4a-882f-f38eef7ba373 72803389-e0c0-44fb-b913-08fec9d2ecf0">
            <ownedComment xmi:id="17a2e215-ea41-488a-8419-2787c895b214" body="A layout manager to arrange components over the top&#xA;of each other.  The requested size of the container&#xA;will be the largest requested size of the children,&#xA;taking alignment needs into consideration.&#xA;&#xA;The alignment is based upon what is needed to properly&#xA;fit the children in the allocation area.  The children&#xA;will be placed such that their alignment points are all&#xA;on top of each other.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.27 12/19/03&#xA;@author   Timothy Prinzing&#xA;" annotatedElement="583017e7-290c-453a-8d79-a26c55d22434"/>
            <interfaceRealization xmi:id="13ae9713-f0d3-4b4a-882f-f38eef7ba373" name="" supplier="a42fe497-3d64-40e3-8aae-e48bec8b7d93" client="583017e7-290c-453a-8d79-a26c55d22434" contract="a42fe497-3d64-40e3-8aae-e48bec8b7d93"/>
            <interfaceRealization xmi:id="72803389-e0c0-44fb-b913-08fec9d2ecf0" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="583017e7-290c-453a-8d79-a26c55d22434" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="51e5a92e-9f51-44ce-9b72-74f997d3869e" name="ListModel" isAbstract="true">
            <ownedComment xmi:id="41bdeb07-935a-4d95-b48f-1ec0b02a7f39" body="This interface defines the methods components like JList use&#xA;to get the value of each cell in a list and the length of the list.&#xA;Logically the model is a vector, indices vary from 0 to&#xA;ListDataModel.getSize() - 1.  Any change to the contents or&#xA;length of the data model must be reported to all of the&#xA;ListDataListeners.&#xA;&#xA;@version 0.0 03/01/97&#xA;@author Hans Muller&#xA;@see JList&#xA;" annotatedElement="51e5a92e-9f51-44ce-9b72-74f997d3869e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="238cba2d-317f-4958-8d1a-878583de7542" name="InputVerifier" isAbstract="true">
            <ownedComment xmi:id="3dcb54c4-b8d3-43ca-a85e-0ffac47594a0" body="The purpose of this class is to help clients support smooth focus&#xA;navigation through GUIs with text fields. Such GUIs often need&#xA;to ensure that the text entered by the user is valid (for example,&#xA;that it's in&#xA;the proper format) before allowing the user to navigate out of&#xA;the text field. To do this, clients create a subclass of&#xA;&lt;code>InputVerifier&lt;/code> and, using &lt;code>JComponent&lt;/code>'s&#xA;&lt;code>setInputVerifier&lt;/code> method,&#xA;attach an instance of their subclass to the &lt;code>JComponent&lt;/code> whose input they&#xA;want to validate. Before focus is transfered to another Swing component&#xA;that requests it, the input verifier's &lt;code>shouldYieldFocus&lt;/code> method is&#xA;called.  Focus is transfered only if that method returns &lt;code>true&lt;/code>.&#xA;&lt;p>&#xA;The following example has two text fields, with the first one expecting&#xA;the string &quot;pass&quot; to be entered by the user. If that string is entered in&#xA;the first text field, then the user can advance to the second text field&#xA;either by clicking in it or by pressing TAB. However, if another string&#xA;is entered in the first text field, then the user will be unable to&#xA;transfer focus to the second text field.&#xA;&lt;p>&#xA;&lt;pre>&#xA;import java.awt.*;&#xA;import java.util.*;&#xA;import java.awt.event.*;&#xA;import javax.swing.*;&#xA;&#xA;This program demonstrates the use of the Swing InputVerifier class.&#xA;It creates two text fields; the first of the text fields expects the&#xA;string &quot;pass&quot; as input, and will allow focus to advance out of it&#xA;only after that string is typed in by the user.&#xA;&#xA;public class VerifierTest extends JFrame {&#xA;public VerifierTest() {&#xA;JTextField tf1 = new JTextField (&quot;Type \&quot;pass\&quot; here&quot;);&#xA;getContentPane().add (tf1, BorderLayout.NORTH);&#xA;tf1.setInputVerifier(new PassVerifier());&#xA;&#xA;JTextField tf2 = new JTextField (&quot;TextField2&quot;);&#xA;getContentPane().add (tf2, BorderLayout.SOUTH);&#xA;&#xA;WindowListener l = new WindowAdapter() {&#xA;public void windowClosing(WindowEvent e) {&#xA;System.exit(0);&#xA;}&#xA;};&#xA;addWindowListener(l);&#xA;}&#xA;&#xA;class PassVerifier extends InputVerifier {&#xA;public boolean verify(JComponent input) {&#xA;JTextField tf = (JTextField) input;&#xA;return &quot;pass&quot;.equals(tf.getText());&#xA;}&#xA;}&#xA;&#xA;public static void main(String[] args) {&#xA;Frame f = new VerifierTest();&#xA;f.pack();&#xA;f.setVisible(true);&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;@since 1.3&#xA;" annotatedElement="238cba2d-317f-4958-8d1a-878583de7542"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="5c06fbf7-98f9-4325-b704-4a71440cce4f" name="JList" clientDependency="2e001067-f2cd-4ad5-8b94-8ae0af75088b d0c4b402-1779-48b0-bac4-a05eca7a1bae">
            <ownedComment xmi:id="fe740a69-df29-4a74-9758-8ad8c91c9041" body="A component that allows the user to select one or more objects from a&#xA;list.  A separate model, &lt;code>ListModel&lt;/code>, represents the contents&#xA;of the list.  It's easy to display an array or vector of objects, using&#xA;a &lt;code>JList&lt;/code> constructor that builds a &lt;code>ListModel&lt;/code>&#xA;instance for you:&#xA;&lt;pre>&#xA;Create a JList that displays the strings in data[]&#xA;&#xA;String[] data = {&quot;one&quot;, &quot;two&quot;, &quot;three&quot;, &quot;four&quot;};&#xA;JList dataList = new JList(data);&#xA;&#xA;The value of the JList model property is an object that provides&#xA;a read-only view of the data.  It was constructed automatically.&#xA;&#xA;for(int i = 0; i &lt; dataList.getModel().getSize(); i++) {&#xA;System.out.println(dataList.getModel().getElementAt(i));&#xA;}&#xA;&#xA;Create a JList that displays the superclass of JList.class.&#xA;We store the superclasses in a java.util.Vector.&#xA;&#xA;Vector superClasses = new Vector();&#xA;Class rootClass = javax.swing.JList.class;&#xA;for(Class cls = rootClass; cls != null; cls = cls.getSuperclass()) {&#xA;superClasses.addElement(cls);&#xA;}&#xA;JList classList = new JList(superClasses);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;&lt;code>JList&lt;/code> doesn't support scrolling directly.&#xA;To create a scrolling&#xA;list you make the &lt;code>JList&lt;/code> the viewport view of a&#xA;&lt;code>JScrollPane&lt;/code>.  For example:&#xA;&lt;pre>&#xA;JScrollPane scrollPane = new JScrollPane(dataList);&#xA;Or in two steps:&#xA;JScrollPane scrollPane = new JScrollPane();&#xA;scrollPane.getViewport().setView(dataList);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;By default the &lt;code>JList&lt;/code> selection model allows any&#xA;combination of items to be selected at a time, using the constant&#xA;&lt;code>MULTIPLE_INTERVAL_SELECTION&lt;/code>.&#xA;The selection state is actually managed&#xA;by a separate delegate object, an instance of&#xA;&lt;code>ListSelectionModel&lt;/code>.&#xA;However &lt;code>JList&lt;/code> provides convenient properties for&#xA;managing the selection.&#xA;&lt;pre>&#xA;String[] data = {&quot;one&quot;, &quot;two&quot;, &quot;three&quot;, &quot;four&quot;};&#xA;JList dataList = new JList(data);&#xA;&#xA;dataList.setSelectedIndex(1);  // select &quot;two&quot;&#xA;dataList.getSelectedValue();   // returns &quot;two&quot;&#xA;&lt;/pre>&#xA;&lt;p>&#xA;The contents of a &lt;code>JList&lt;/code> can be dynamic,&#xA;in other words, the list elements can&#xA;change value and the size of the list can change after the&#xA;&lt;code>JList&lt;/code> has&#xA;been created.  The &lt;code>JList&lt;/code> observes changes in its model with a&#xA;&lt;code>swing.event.ListDataListener&lt;/code> implementation.  A correct&#xA;implementation of &lt;code>ListModel&lt;/code> notifies&#xA;it's listeners each time a change occurs.  The changes are&#xA;characterized by a &lt;code>swing.event.ListDataEvent&lt;/code>, which identifies&#xA;the range of list indices that have been modified, added, or removed.&#xA;Simple dynamic-content &lt;code>JList&lt;/code> applications can use the&#xA;&lt;code>DefaultListModel&lt;/code> class to store list elements.  This class&#xA;implements the &lt;code>ListModel&lt;/code> interface and provides the&#xA;&lt;code>java.util.Vector&lt;/code> API as well.  Applications that need to&#xA;provide custom &lt;code>ListModel&lt;/code> implementations can subclass&#xA;&lt;code>AbstractListModel&lt;/code>, which provides basic&#xA;&lt;code>ListDataListener&lt;/code> support.  For example:&#xA;&lt;pre>&#xA;This list model has about 2^16 elements.  Enjoy scrolling.&#xA;&#xA;&lt;a name=&quot;prototype_example&quot;>&#xA;ListModel bigData = new AbstractListModel() {&#xA;public int getSize() { return Short.MAX_VALUE; }&#xA;public Object getElementAt(int index) { return &quot;Index &quot; + index; }&#xA;};&#xA;&#xA;JList bigDataList = new JList(bigData);&#xA;&#xA;We don't want the JList implementation to compute the width&#xA;or height of all of the list cells, so we give it a string&#xA;that's as big as we'll need for any cell.  It uses this to&#xA;compute values for the fixedCellWidth and fixedCellHeight&#xA;properties.&#xA;&#xA;bigDataList.setPrototypeCellValue(&quot;Index 1234567890&quot;);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;&lt;code>JList&lt;/code> uses a &lt;code>java.awt.Component&lt;/code>, provided by&#xA;a delegate called the&#xA;&lt;code>cellRendererer&lt;/code>, to paint the visible cells in the list.&#xA;The cell renderer component is used like a &quot;rubber stamp&quot; to paint&#xA;each visible row.  Each time the &lt;code>JList&lt;/code> needs to paint a cell&#xA;it asks the cell renderer for the component, moves it into place&#xA;using &lt;code>setBounds()&lt;/code> and then draws it by calling its paint method.&#xA;The default cell renderer uses a &lt;code>JLabel&lt;/code> component to render&#xA;the string value of each component.   You can substitute your&#xA;own cell renderer, using code like this:&#xA;&lt;pre>&#xA;Display an icon and a string for each object in the list.&#xA;&#xA;&lt;a name=&quot;cellrenderer_example&quot;>&#xA;class MyCellRenderer extends JLabel implements ListCellRenderer {&#xA;final static ImageIcon longIcon = new ImageIcon(&quot;long.gif&quot;);&#xA;final static ImageIcon shortIcon = new ImageIcon(&quot;short.gif&quot;);&#xA;&#xA;This is the only method defined by ListCellRenderer.&#xA;We just reconfigure the JLabel each time we're called.&#xA;&#xA;public Component getListCellRendererComponent(&#xA;JList list,&#xA;Object value,            // value to display&#xA;int index,               // cell index&#xA;boolean isSelected,      // is the cell selected&#xA;boolean cellHasFocus)    // the list and the cell have the focus&#xA;{&#xA;String s = value.toString();&#xA;setText(s);&#xA;setIcon((s.length() > 10) ? longIcon : shortIcon);&#xA;if (isSelected) {&#xA;setBackground(list.getSelectionBackground());&#xA;setForeground(list.getSelectionForeground());&#xA;}&#xA;else {&#xA;setBackground(list.getBackground());&#xA;setForeground(list.getForeground());&#xA;}&#xA;setEnabled(list.isEnabled());&#xA;setFont(list.getFont());&#xA;setOpaque(true);&#xA;return this;&#xA;}&#xA;}&#xA;&#xA;String[] data = {&quot;one&quot;, &quot;two&quot;, &quot;three&quot;, &quot;four&quot;};&#xA;JList dataList = new JList(data);&#xA;dataList.setCellRenderer(new MyCellRenderer());&#xA;&lt;/pre>&#xA;&lt;p>&#xA;&lt;code>JList&lt;/code> doesn't provide any special support for handling double or&#xA;triple (or N) mouse clicks however it's easy to handle them using&#xA;a &lt;code>MouseListener&lt;/code>.  Use the &lt;code>JList&lt;/code> method&#xA;&lt;code>locationToIndex()&lt;/code> to&#xA;determine what cell was clicked.  For example:&#xA;&lt;pre>&#xA;final JList list = new JList(dataModel);&#xA;MouseListener mouseListener = new MouseAdapter() {&#xA;public void mouseClicked(MouseEvent e) {&#xA;if (e.getClickCount() == 2) {&#xA;int index = list.locationToIndex(e.getPoint());&#xA;System.out.println(&quot;Double clicked on Item &quot; + index);&#xA;}&#xA;}&#xA;};&#xA;list.addMouseListener(mouseListener);&#xA;&lt;/pre>&#xA;Note that in this example the &lt;code>dataList&lt;/code> is &lt;code>final&lt;/code>&#xA;because it's referred to by the anonymous &lt;code>MouseListener&lt;/code> class.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;&lt;p>&#xA;See &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/list.html&quot;>How to Use Lists&lt;/a>&#xA;in &lt;a href=&quot;http://java.sun.com/Series/Tutorial/index.html&quot;>&lt;em>The Java Tutorial&lt;/em>&lt;/a>&#xA;for further documentation.&#xA;Also see the article &lt;a href=&quot;http://java.sun.com/products/jfc/tsc/tech_topics/jlist_1/jlist.html&quot;>Advanced JList Programming&lt;/a>&#xA;in &lt;a href=&quot;http://java.sun.com/products/jfc/tsc&quot;>&lt;em>The Swing Connection&lt;/em>&lt;/a>.&#xA;&lt;p>&#xA;@see ListModel&#xA;@see AbstractListModel&#xA;@see DefaultListModel&#xA;@see ListSelectionModel&#xA;@see DefaultListSelectionModel&#xA;@see ListCellRenderer&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A component which allows for the selection of one or more objects from a list.&#xA;&#xA;@version 1.112 05/05/04&#xA;@author Hans Muller&#xA;" annotatedElement="5c06fbf7-98f9-4325-b704-4a71440cce4f"/>
            <generalization xmi:id="1afe5fa4-c1d6-4c5b-8911-db1ff5f17f0c" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="d0c4b402-1779-48b0-bac4-a05eca7a1bae" name="" supplier="a1ad2c61-c036-48cb-85f4-7681cc6ba8fc" client="5c06fbf7-98f9-4325-b704-4a71440cce4f" contract="a1ad2c61-c036-48cb-85f4-7681cc6ba8fc"/>
            <interfaceRealization xmi:id="2e001067-f2cd-4ad5-8b94-8ae0af75088b" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="5c06fbf7-98f9-4325-b704-4a71440cce4f" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="267e36ab-5b7e-4813-9ca9-c105f4fd50c5" name="ListSelectionHandler" visibility="private" clientDependency="11a948fb-3db0-4306-b134-5f8d9c7aafc2 f873d1fb-5ef9-4271-9a59-43c65813aefa">
              <interfaceRealization xmi:id="11a948fb-3db0-4306-b134-5f8d9c7aafc2" name="" supplier="077ca4fe-3afb-4e22-bed0-5cc47445acf4" client="267e36ab-5b7e-4813-9ca9-c105f4fd50c5" contract="077ca4fe-3afb-4e22-bed0-5cc47445acf4"/>
              <interfaceRealization xmi:id="f873d1fb-5ef9-4271-9a59-43c65813aefa" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="267e36ab-5b7e-4813-9ca9-c105f4fd50c5" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="1e20491f-e3d6-491f-bc90-52a8b919e6a1" name="AccessibleJList" visibility="protected" clientDependency="b5b6376b-6a1d-4594-aaaa-de9faa03e34c d351b80c-4ff2-426c-877d-c1cae85de8e3 09b5d086-c5ef-405c-874c-eb035183a347 ba4b8bc8-9b7a-4467-8b34-af0905349cba">
              <ownedComment xmi:id="82574573-3f3f-4793-9c41-0471babadf1e" body="This class implements accessibility support for the&#xA;&lt;code>JList&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to list user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="1e20491f-e3d6-491f-bc90-52a8b919e6a1"/>
              <generalization xmi:id="95852410-6ff2-44d5-be08-66e1cbf00bfe" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
              <interfaceRealization xmi:id="09b5d086-c5ef-405c-874c-eb035183a347" name="" supplier="0dbef058-3ccc-4038-b98f-eea279be3f13" client="1e20491f-e3d6-491f-bc90-52a8b919e6a1" contract="0dbef058-3ccc-4038-b98f-eea279be3f13"/>
              <interfaceRealization xmi:id="ba4b8bc8-9b7a-4467-8b34-af0905349cba" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="1e20491f-e3d6-491f-bc90-52a8b919e6a1" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              <interfaceRealization xmi:id="b5b6376b-6a1d-4594-aaaa-de9faa03e34c" name="" supplier="077ca4fe-3afb-4e22-bed0-5cc47445acf4" client="1e20491f-e3d6-491f-bc90-52a8b919e6a1" contract="077ca4fe-3afb-4e22-bed0-5cc47445acf4"/>
              <interfaceRealization xmi:id="d351b80c-4ff2-426c-877d-c1cae85de8e3" name="" supplier="bcdeadf8-6999-41e4-bdd9-4404260fdf22" client="1e20491f-e3d6-491f-bc90-52a8b919e6a1" contract="bcdeadf8-6999-41e4-bdd9-4404260fdf22"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="619e42e9-eb5c-4ac8-ace3-6b27609cb496" name="AccessibleJListChild" visibility="protected" clientDependency="95d38960-2043-47e5-9471-e501c35907c7 aa66521b-8105-481d-99a0-779a10e3a40c">
                <ownedComment xmi:id="84dc463a-a681-4da5-9ed9-c32861f26e96" body="This class implements accessibility support appropriate&#xA;for list children.&#xA;" annotatedElement="619e42e9-eb5c-4ac8-ace3-6b27609cb496"/>
                <generalization xmi:id="03483b5b-6ae9-4c82-97b0-89278e36ef65" isSubstitutable="true" general="5e5fecb3-251d-4b0e-b142-9f3aac1d4c57"/>
                <interfaceRealization xmi:id="95d38960-2043-47e5-9471-e501c35907c7" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="619e42e9-eb5c-4ac8-ace3-6b27609cb496" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
                <interfaceRealization xmi:id="aa66521b-8105-481d-99a0-779a10e3a40c" name="" supplier="a13045dc-df1a-4751-8aff-9b7e320e05bf" client="619e42e9-eb5c-4ac8-ace3-6b27609cb496" contract="a13045dc-df1a-4751-8aff-9b7e320e05bf"/>
              </nestedClassifier>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="f0b1b096-15d8-42b1-b13a-bbad617c38c7" name="colorchooser">
            <packagedElement xmi:type="uml:Class" xmi:id="475871dc-0c50-4ca8-a137-83ae0e5c0e5c" name="DefaultColorSelectionModel" clientDependency="9fc98042-bc2c-41b3-974c-1761bb334715 59170a4e-c01e-4dd9-b0be-335c8f47412e">
              <ownedComment xmi:id="c44388f4-cc62-4671-a6ad-59361b00dea9" body="A generic implementation of &lt;code>ColorSelectionModel&lt;/code>.&#xA;&#xA;@version 1.15 12/19/03&#xA;@author Steve Wilson&#xA;&#xA;@see java.awt.Color&#xA;" annotatedElement="475871dc-0c50-4ca8-a137-83ae0e5c0e5c"/>
              <interfaceRealization xmi:id="59170a4e-c01e-4dd9-b0be-335c8f47412e" name="" supplier="c457c5f8-c7e7-47cd-b02b-c0abfb5cc6f9" client="475871dc-0c50-4ca8-a137-83ae0e5c0e5c" contract="c457c5f8-c7e7-47cd-b02b-c0abfb5cc6f9"/>
              <interfaceRealization xmi:id="9fc98042-bc2c-41b3-974c-1761bb334715" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="475871dc-0c50-4ca8-a137-83ae0e5c0e5c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a3e379b8-95ba-47c4-840f-af6ef4fe051a" name="SwatchPanel" visibility="package">
              <generalization xmi:id="d7d7660b-13dc-4f32-a7c2-6503643cd976" isSubstitutable="true" general="18cb35a3-9f9e-4251-ba29-48407f975f19"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ca51558d-22a0-4d94-a433-2d6da609be07" name="RecentSwatchPanel" visibility="package">
              <generalization xmi:id="3089a06a-aa13-47ab-92e2-812989fd6722" isSubstitutable="true" general="a3e379b8-95ba-47c4-840f-af6ef4fe051a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="fd8a0d0d-e505-476c-bba9-4a7573de4274" name="SyntheticImageGenerator" visibility="package">
              <generalization xmi:id="02d82447-ddb2-4c00-8dd6-b0b123f7b757" isSubstitutable="true" general="c9830202-c9c4-48c6-a18c-376520128934"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="18838f6e-9f2f-46ec-8afd-ab5704286ccb" name="SmartGridLayout" visibility="package" clientDependency="9275ec70-58c4-4cec-b719-583c2d0532be f34d97e3-cd9b-4eda-aff7-3e24155eb237">
              <ownedComment xmi:id="4fafeb5b-dac7-4ea3-9697-cda8d4fcaefd" body="A better GridLayout class&#xA;&#xA;@version 1.8 12/19/03&#xA;@author Steve Wilson&#xA;" annotatedElement="18838f6e-9f2f-46ec-8afd-ab5704286ccb"/>
              <interfaceRealization xmi:id="9275ec70-58c4-4cec-b719-583c2d0532be" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="18838f6e-9f2f-46ec-8afd-ab5704286ccb" contract="c3507179-c29c-40a9-8869-092757900e53"/>
              <interfaceRealization xmi:id="f34d97e3-cd9b-4eda-aff7-3e24155eb237" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="18838f6e-9f2f-46ec-8afd-ab5704286ccb" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="00ef0b6b-d10b-4782-b56b-1133e4ae77fe" name="ColorChooserComponentFactory">
              <ownedComment xmi:id="0479abd6-0b87-414e-86ff-d87c047f0204" body="A class designed to produce preconfigured &quot;accessory&quot; objects to&#xA;insert into color choosers.&#xA;&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.17 12/19/03&#xA;@author Steve Wilson&#xA;" annotatedElement="00ef0b6b-d10b-4782-b56b-1133e4ae77fe"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d6777476-210c-4e7d-a681-7ef4c4974821" name="DefaultRGBChooserPanel" visibility="package" clientDependency="5746acaa-9156-407a-9c93-5b8297b3d2c2">
              <ownedComment xmi:id="e890c22c-f6dc-4825-8db9-fe37bb56bdff" body="The standard RGB chooser.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.31 01/23/03&#xA;@author Steve Wilson&#xA;@author Mark Davidson&#xA;@see JColorChooser&#xA;@see AbstractColorChooserPanel&#xA;" annotatedElement="d6777476-210c-4e7d-a681-7ef4c4974821"/>
              <generalization xmi:id="c4783807-5a09-4f6d-88d9-3455e1f25364" isSubstitutable="true" general="010aaf06-0abd-449d-8cdd-63ef58f73b97"/>
              <interfaceRealization xmi:id="5746acaa-9156-407a-9c93-5b8297b3d2c2" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="d6777476-210c-4e7d-a681-7ef4c4974821" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="342e7285-456c-4a40-8525-dd7a95849fe7" name="CenterLayout" visibility="package" clientDependency="38c82c24-ba5c-4496-a387-f91cb37e665c 05c0abc1-3a4c-4a66-bfa6-04073535c9b5">
              <ownedComment xmi:id="ffe25831-62a5-4f3f-a8fc-259af625d8cf" body="Center-positioning layout manager.&#xA;@version 1.10 12/19/03&#xA;@author Tom Santos&#xA;@author Steve Wilson&#xA;" annotatedElement="342e7285-456c-4a40-8525-dd7a95849fe7"/>
              <interfaceRealization xmi:id="38c82c24-ba5c-4496-a387-f91cb37e665c" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="342e7285-456c-4a40-8525-dd7a95849fe7" contract="c3507179-c29c-40a9-8869-092757900e53"/>
              <interfaceRealization xmi:id="05c0abc1-3a4c-4a66-bfa6-04073535c9b5" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="342e7285-456c-4a40-8525-dd7a95849fe7" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="c457c5f8-c7e7-47cd-b02b-c0abfb5cc6f9" name="ColorSelectionModel" isAbstract="true">
              <ownedComment xmi:id="313e8ce2-6666-4cce-a56e-4b97684f53b0" body="A model that supports selecting a &lt;code>Color&lt;/code>.&#xA;&#xA;@version 1.11 12/19/03&#xA;@author Steve Wilson&#xA;&#xA;@see java.awt.Color&#xA;" annotatedElement="c457c5f8-c7e7-47cd-b02b-c0abfb5cc6f9"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="cd791b53-057f-42aa-89d4-1483f495a8e8" name="DefaultPreviewPanel" visibility="package">
              <ownedComment xmi:id="a3af1fed-62a6-4218-8ba8-19e53afad880" body="The standard preview panel for the color chooser.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.13 12/19/03&#xA;@author Steve Wilson&#xA;@see JColorChooser&#xA;" annotatedElement="cd791b53-057f-42aa-89d4-1483f495a8e8"/>
              <generalization xmi:id="59b7bf42-f591-4a19-a10d-c8baced22d83" isSubstitutable="true" general="18cb35a3-9f9e-4251-ba29-48407f975f19"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="010aaf06-0abd-449d-8cdd-63ef58f73b97" name="AbstractColorChooserPanel" isAbstract="true">
              <ownedComment xmi:id="9af75298-4f0a-46b5-9754-8adb97568c67" body="This is the abstract superclass for color choosers.  If you want to add&#xA;a new color chooser panel into a &lt;code>JColorChooser&lt;/code>, subclass&#xA;this class.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.20 12/19/03&#xA;@author Tom Santos&#xA;@author Steve Wilson&#xA;" annotatedElement="010aaf06-0abd-449d-8cdd-63ef58f73b97"/>
              <generalization xmi:id="2a99ea94-792f-4c96-8764-b1ef2d01fcbd" isSubstitutable="true" general="18cb35a3-9f9e-4251-ba29-48407f975f19"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f59cb518-f1f9-478a-af3c-b93c2ae7b8f2" name="ModelListener" visibility="package" clientDependency="a354036e-93a2-4338-937e-3292c25b7e73 32c9b0d8-52f8-4fa4-aceb-55cab13967d0">
                <interfaceRealization xmi:id="32c9b0d8-52f8-4fa4-aceb-55cab13967d0" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="f59cb518-f1f9-478a-af3c-b93c2ae7b8f2" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                <interfaceRealization xmi:id="a354036e-93a2-4338-937e-3292c25b7e73" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f59cb518-f1f9-478a-af3c-b93c2ae7b8f2" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6ec4ecd1-688c-44d2-97e9-b7ee9541fce6" name="MainSwatchPanel" visibility="package">
              <generalization xmi:id="0a00c479-fcf8-405a-8696-0f2a792dbf34" isSubstitutable="true" general="a3e379b8-95ba-47c4-840f-af6ef4fe051a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1ec23840-4f1b-49c6-bb6f-4ad8723eb7b4" name="DefaultHSBChooserPanel" visibility="package" clientDependency="d037c369-ffce-49f2-9b14-6dd134368d94 59a42771-144d-4eca-89ff-36f9df4d51b3">
              <ownedComment xmi:id="f2927d56-7e0f-4785-a50e-bd61b1411711" body="Implements the default HSB Color chooser&#xA;&#xA;@version 1.25 12/19/03&#xA;@author Tom Santos&#xA;@author Steve Wilson&#xA;@author Mark Davidson&#xA;@author Shannon Hickey&#xA;" annotatedElement="1ec23840-4f1b-49c6-bb6f-4ad8723eb7b4"/>
              <generalization xmi:id="8d2d129c-afbf-43dc-82c0-7cba63fc7ae0" isSubstitutable="true" general="010aaf06-0abd-449d-8cdd-63ef58f73b97"/>
              <interfaceRealization xmi:id="d037c369-ffce-49f2-9b14-6dd134368d94" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="1ec23840-4f1b-49c6-bb6f-4ad8723eb7b4" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
              <interfaceRealization xmi:id="59a42771-144d-4eca-89ff-36f9df4d51b3" name="" supplier="c4e4a91d-3aeb-48b7-836b-feaf66fc4ce9" client="1ec23840-4f1b-49c6-bb6f-4ad8723eb7b4" contract="c4e4a91d-3aeb-48b7-836b-feaf66fc4ce9"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="a59e6b75-09d7-4379-b9f7-b209f555c4cc" name="RadioButtonHandler" visibility="private" clientDependency="917d0231-8ad1-46e8-bea3-74a19088ddc5">
                <ownedComment xmi:id="c1a81f1c-487a-40c5-96c1-43acb4c28bc6" body="Handler for the radio button classes.&#xA;" annotatedElement="a59e6b75-09d7-4379-b9f7-b209f555c4cc"/>
                <interfaceRealization xmi:id="917d0231-8ad1-46e8-bea3-74a19088ddc5" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="a59e6b75-09d7-4379-b9f7-b209f555c4cc" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="d6994f0b-a9b8-43b2-8fcd-88a35e19eaf8" name="HSBImage" visibility="package">
                <ownedComment xmi:id="7635534d-be45-4c67-acb9-b94e129909b1" body="Class for the slider and palette images.&#xA;" annotatedElement="d6994f0b-a9b8-43b2-8fcd-88a35e19eaf8"/>
                <generalization xmi:id="c4bb1ed0-9194-470f-94d1-39e70732f629" isSubstitutable="true" general="9d9051e2-0387-408b-b2b6-82bc26688db4"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9d9051e2-0387-408b-b2b6-82bc26688db4" name="SyntheticImage" visibility="package" clientDependency="949d139c-1d97-40b9-aede-04eb7aeaca9f" isAbstract="true">
              <ownedComment xmi:id="7fd97da7-61e1-4a39-b619-18a30a2e6368" body="A helper class to make computing synthetic images a little easier.&#xA;All you need to do is define a subclass that overrides computeRow&#xA;to compute a row of the image.  It is passed the y coordinate of the&#xA;row and an array into which to put the pixels in&#xA;&lt;a href=&quot;http://java.sun.com/products/jdk/1.1/docs/api/java.awt.image.ColorModel.html#getRGBdefault()&quot;>&#xA;standard ARGB format&lt;/a>.&#xA;&lt;p>Normal usage looks something like this:&#xA;&lt;pre>&amp;nbsp;Image i = createImage(new SyntheticImage(200, 100) {&#xA;&amp;nbsp;    protected void computeRow(int y, int[] row) {&#xA;&amp;nbsp;&#x9;for(int i = width; --i>=0; ) {&#xA;&amp;nbsp;&#x9;    int grey = i*255/(width-1);&#xA;&amp;nbsp;&#x9;    row[i] = (255&lt;&lt;24)|(grey&lt;&lt;16)|(grey&lt;&lt;8)|grey;&#xA;&amp;nbsp;&#x9;}&#xA;&amp;nbsp;    }&#xA;&amp;nbsp;}&#xA;&lt;/pre>This creates a image 200 pixels wide and 100 pixels high&#xA;that is a horizontal grey ramp, going from black on the left to&#xA;white on the right.&#xA;&lt;p>&#xA;If the image is to be a movie, override isStatic to return false,&#xA;&lt;i>y&lt;/i> cycling back to 0 is computeRow's signal that the next&#xA;frame has started.  It is acceptable (expected?) for computeRow(0,r)&#xA;to pause until the appropriate time to start the next frame.&#xA;&#xA;@version 1.24 12/19/03&#xA;@author James Gosling&#xA;" annotatedElement="9d9051e2-0387-408b-b2b6-82bc26688db4"/>
              <interfaceRealization xmi:id="949d139c-1d97-40b9-aede-04eb7aeaca9f" name="" supplier="bfda1810-f0f5-4de1-93e9-08d4325e6d23" client="9d9051e2-0387-408b-b2b6-82bc26688db4" contract="bfda1810-f0f5-4de1-93e9-08d4325e6d23"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="adffca6b-b667-452b-bc45-63f132897eb5" name="DefaultSwatchChooserPanel" visibility="package">
              <ownedComment xmi:id="3a65059f-590f-47f0-9f81-aca46fe50aa4" body="The standard color swatch chooser.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.26 12/19/03&#xA;@author Steve Wilson&#xA;" annotatedElement="adffca6b-b667-452b-bc45-63f132897eb5"/>
              <generalization xmi:id="fc287f71-722a-4ef0-9718-3aa6cb62eeed" isSubstitutable="true" general="010aaf06-0abd-449d-8cdd-63ef58f73b97"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f90af106-05a8-484a-93b1-a9dc4e03fa6b" name="RecentSwatchListener" visibility="package" clientDependency="dbd409b7-d67f-4c60-bc8c-3f51108c0335">
                <generalization xmi:id="aa73db7c-20d2-46fb-ae90-11e13ee1064d" isSubstitutable="true" general="0db79cd4-0757-4282-b2c3-730fa54c5c55"/>
                <interfaceRealization xmi:id="dbd409b7-d67f-4c60-bc8c-3f51108c0335" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f90af106-05a8-484a-93b1-a9dc4e03fa6b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="ff3dfe10-4632-44ac-88d4-c56bc6b9f353" name="MainSwatchListener" visibility="package" clientDependency="fa31ca91-462e-4c36-b6c2-62efa4e7a444">
                <generalization xmi:id="89b87311-8600-45b4-8a16-06bf375f0449" isSubstitutable="true" general="0db79cd4-0757-4282-b2c3-730fa54c5c55"/>
                <interfaceRealization xmi:id="fa31ca91-462e-4c36-b6c2-62efa4e7a444" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ff3dfe10-4632-44ac-88d4-c56bc6b9f353" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="dc182424-9b61-4af6-9290-13584b2c5491" name="JPasswordField">
            <ownedComment xmi:id="a57e2c0c-eae4-40c4-9e5f-7346272a7c4b" body="&lt;code>JPasswordField&lt;/code> is a lightweight component that allows&#xA;the editing of a single line of text where the view indicates&#xA;something was typed, but does not show the original characters.&#xA;You can find further information and examples in&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/textfield.html&quot;>How to Use Text Fields&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&lt;p>&#xA;&lt;code>JPasswordField&lt;/code> is intended&#xA;to be source-compatible with &lt;code>java.awt.TextField&lt;/code>&#xA;used with &lt;code>echoChar&lt;/code> set.  It is provided separately&#xA;to make it easier to safely change the UI for the&#xA;&lt;code>JTextField&lt;/code> without affecting password entries.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: Allows the editing of a line of text but doesn't show the characters.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.54 06/02/04&#xA;" annotatedElement="dc182424-9b61-4af6-9290-13584b2c5491"/>
            <generalization xmi:id="a34e4e7f-ac4f-442e-a7c0-3e8861c0bf68" isSubstitutable="true" general="e8b3dc5a-f346-4fc4-b077-bbe69ee386a3"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="603eeb5d-63cc-4fe6-b5eb-71faf3946a97" name="AccessibleJPasswordField" visibility="protected">
              <ownedComment xmi:id="d2eabde5-d2b1-46e6-9c25-1f85f36852e7" body="This class implements accessibility support for the&#xA;&lt;code>JPasswordField&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to password field user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="603eeb5d-63cc-4fe6-b5eb-71faf3946a97"/>
              <generalization xmi:id="fcd5247b-2b8c-434f-9569-50ff11d090c2" isSubstitutable="true" general="490daf1c-5a6b-40b4-bfaa-97389c49c945"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="31ee61bd-0b9b-4622-99e0-10f74b277eab" name="SwingUtilities" clientDependency="945a83bd-2c95-460e-b1d1-f98e1287b706">
            <ownedComment xmi:id="1e3fe371-109e-4149-9e04-477750b8274e" body="A collection of utility methods for Swing.&#xA;&#xA;@version 1.134 06/15/04&#xA;@author unknown&#xA;" annotatedElement="31ee61bd-0b9b-4622-99e0-10f74b277eab"/>
            <interfaceRealization xmi:id="945a83bd-2c95-460e-b1d1-f98e1287b706" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="31ee61bd-0b9b-4622-99e0-10f74b277eab" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="6d917a82-b85e-4690-a06e-4ae726e3eb6f" name="SharedOwnerFrame" visibility="package" clientDependency="1e35d449-bbd1-45d9-b3a6-834aadad8030">
              <generalization xmi:id="7fa07cd4-fe5c-42fd-b8ac-d4bada010220" isSubstitutable="true" general="6f2ca193-05d8-41df-b71a-a59fa5cf0c37"/>
              <interfaceRealization xmi:id="1e35d449-bbd1-45d9-b3a6-834aadad8030" name="" supplier="10e58da0-0032-467f-9dec-983a8fcb7211" client="6d917a82-b85e-4690-a06e-4ae726e3eb6f" contract="10e58da0-0032-467f-9dec-983a8fcb7211"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4678db07-1ada-4fb9-8301-f47c794744ad" name="ColorChooserDialog" visibility="package">
            <generalization xmi:id="83b6ecdb-1474-4dac-9868-b8f3afe542a6" isSubstitutable="true" general="ae41674a-b919-4e25-a825-e1b4eb685d2e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a41d78af-4b0c-4de3-a9ee-e35f651a0386" name="Closer" visibility="package" clientDependency="bafc4b73-55ea-42e8-9c94-e811a2e4ee0e">
              <generalization xmi:id="85ba7d53-95b5-4560-9ed5-38a7829b4444" isSubstitutable="true" general="569edcca-f9c2-4c19-854b-a7ea38aaff69"/>
              <interfaceRealization xmi:id="bafc4b73-55ea-42e8-9c94-e811a2e4ee0e" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="a41d78af-4b0c-4de3-a9ee-e35f651a0386" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8fb5008f-f246-4e74-a0dd-29afdb199bc3" name="DisposeOnClose" visibility="package" clientDependency="9ca0ebaa-a7bb-482f-a807-50d3bc169400">
              <generalization xmi:id="41b5075f-28d4-4d05-a254-ebcc3ae69cc1" isSubstitutable="true" general="8e908659-53e3-4daf-b1e1-dc64b00db367"/>
              <interfaceRealization xmi:id="9ca0ebaa-a7bb-482f-a807-50d3bc169400" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="8fb5008f-f246-4e74-a0dd-29afdb199bc3" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a5a5e346-1f83-4d16-9813-46d056f091d6" name="JApplet" clientDependency="7784098b-935c-4194-86df-a8395a4c0c55 466d94b9-0cad-43e7-b90c-7c7a5be5acff">
            <ownedComment xmi:id="fc8e48aa-c6ac-41d9-abf8-7da570c3937f" body="An extended version of &lt;code>java.applet.Applet&lt;/code> that adds support for&#xA;the JFC/Swing component architecture.&#xA;You can find task-oriented documentation about using &lt;code>JApplet&lt;/code>&#xA;in &lt;em>The Java Tutorial&lt;/em>,&#xA;in the section&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/applet.html&quot;>How to Make Applets&lt;/a>.&#xA;&lt;p>&#xA;The &lt;code>JApplet&lt;/code> class is slightly incompatible with&#xA;&lt;code>java.applet.Applet&lt;/code>.  &lt;code>JApplet&lt;/code> contains a&#xA;&lt;code>JRootPane&lt;/code> as its only child.  The &lt;code>contentPane&lt;/code>&#xA;should be the parent of any children of the &lt;code>JApplet&lt;/code>.&#xA;As a convenience &lt;code>add&lt;/code> and its variants, &lt;code>remove&lt;/code> and&#xA;&lt;code>setLayout&lt;/code> have been overridden to forward to the&#xA;&lt;code>contentPane&lt;/code> as necessary. This means you can write:&#xA;&lt;pre>&#xA;applet.add(child);&#xA;&lt;/pre>&#xA;&#xA;And the child will be added to the &lt;code>contentPane&lt;/code>.&#xA;The &lt;code>contentPane&lt;/code> will always be non-&lt;code>null&lt;/code>.&#xA;Attempting to set it to &lt;code>null&lt;/code> will cause the&#xA;&lt;code>JApplet&lt;/code> to throw an exception. The default&#xA;&lt;code>contentPane&lt;/code> will have a &lt;code>BorderLayout&lt;/code>&#xA;manager set on it.&#xA;Refer to {@link javax.swing.RootPaneContainer}&#xA;for details on adding, removing and setting the &lt;code>LayoutManager&lt;/code>&#xA;of a &lt;code>JApplet&lt;/code>.&#xA;&lt;p>&#xA;Please see the &lt;code>JRootPane&lt;/code> documentation for a&#xA;complete description of the &lt;code>contentPane&lt;/code>, &lt;code>glassPane&lt;/code>,&#xA;and &lt;code>layeredPane&lt;/code> properties.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see javax.swing.RootPaneContainer&#xA;@beaninfo&#xA;attribute: isContainer true&#xA;attribute: containerDelegate getContentPane&#xA;description: Swing's Applet subclass.&#xA;&#xA;@version 1.65 12/19/03&#xA;@author Arnaud Weber&#xA;" annotatedElement="a5a5e346-1f83-4d16-9813-46d056f091d6"/>
            <generalization xmi:id="b118d10c-7847-4b3a-a851-e8e10229f134" isSubstitutable="true" general="b6026033-1e31-4022-b1ec-911620291ec8"/>
            <interfaceRealization xmi:id="7784098b-935c-4194-86df-a8395a4c0c55" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="a5a5e346-1f83-4d16-9813-46d056f091d6" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <interfaceRealization xmi:id="466d94b9-0cad-43e7-b90c-7c7a5be5acff" name="" supplier="d9dda4f0-9e1c-4afc-a288-475863ddcf1d" client="a5a5e346-1f83-4d16-9813-46d056f091d6" contract="d9dda4f0-9e1c-4afc-a288-475863ddcf1d"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="119fce26-8c33-4d90-becb-b8e8f1b55231" name="AccessibleJApplet" visibility="protected">
              <ownedComment xmi:id="9bef2d86-4415-4ba5-8bb2-bde9eddf2d4c" body="This class implements accessibility support for the&#xA;&lt;code>JApplet&lt;/code> class.&#xA;" annotatedElement="119fce26-8c33-4d90-becb-b8e8f1b55231"/>
              <generalization xmi:id="02471acb-e68b-4699-b079-7602fb594e70" isSubstitutable="true" general="71a30111-a3d9-4418-b0dd-53ed2c74486e"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="1c2f22f0-8bbd-4e4b-915e-ea57b72df83b" name="JButton" clientDependency="c461224a-b41e-45c3-a324-d1214585a943">
            <ownedComment xmi:id="7eb078f4-0990-4072-881a-6dceb476156a" body="An implementation of a &quot;push&quot; button.&#xA;See &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/button.html&quot;>How to Use Buttons, Check Boxes, and Radio Buttons&lt;/a>&#xA;in &lt;em>The Java Tutorial&lt;/em>&#xA;for information and examples of using buttons.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: An implementation of a \&quot;push\&quot; button.&#xA;&#xA;@version 1.97 12/19/03&#xA;@author Jeff Dinkins&#xA;" annotatedElement="1c2f22f0-8bbd-4e4b-915e-ea57b72df83b"/>
            <generalization xmi:id="726bfb26-41f8-462d-bd8f-5904cbe0dc21" isSubstitutable="true" general="5e46952d-1199-4624-8b80-51b76d0ae441"/>
            <interfaceRealization xmi:id="c461224a-b41e-45c3-a324-d1214585a943" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="1c2f22f0-8bbd-4e4b-915e-ea57b72df83b" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="7ea7e67d-7994-4591-8c28-526c0b39afd7" name="AccessibleJButton" visibility="protected">
              <ownedComment xmi:id="7b91ab17-25f6-4d9a-aeb0-c365ae955b7a" body="This class implements accessibility support for the&#xA;&lt;code>JButton&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to button user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="7ea7e67d-7994-4591-8c28-526c0b39afd7"/>
              <generalization xmi:id="b092b396-0a1b-43e0-b5f8-0a86975c6ed2" isSubstitutable="true" general="fc324df8-f45f-40cb-bb56-c8b492559e6c"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9f7b108d-e74d-495d-a027-bdabc4bdcfec" name="JTextPane">
            <ownedComment xmi:id="3f1c2690-eb44-4938-8309-05696d8fd623" body="A text component that can be marked up with attributes that are&#xA;represented graphically.&#xA;You can find how-to information and examples of using text panes in&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/text.html&quot;>Using Text Components&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&#xA;&lt;p>&#xA;This component models paragraphs&#xA;that are composed of runs of character level attributes.  Each&#xA;paragraph may have a logical style attached to it which contains&#xA;the default attributes to use if not overridden by attributes set&#xA;on the paragraph or character run.  Components and images may&#xA;be embedded in the flow of text.&#xA;&lt;p>&#xA;&lt;dt>&lt;b>&lt;font size=+1>Newlines&lt;/font>&lt;/b>&#xA;&lt;dd>&#xA;For a discussion on how newlines are handled, see&#xA;&lt;a href=&quot;text/DefaultEditorKit.html&quot;>DefaultEditorKit&lt;/a>.&#xA;&lt;/dl>&#xA;&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer true&#xA;description: A text component that can be marked up with attributes that are graphically represented.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.90 12/19/03&#xA;@see javax.swing.text.StyledEditorKit&#xA;" annotatedElement="9f7b108d-e74d-495d-a027-bdabc4bdcfec"/>
            <generalization xmi:id="1510a579-0e43-4a00-9b48-17d2b31f309e" isSubstitutable="true" general="10cb57cb-a0cb-4b2a-9e6c-eb1010d6d335"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="999cbcae-fea3-4dfc-ad23-363141fb7447" name="JSlider" clientDependency="2982b4a5-ba71-497a-b542-66394ba2ec92 f813819a-154b-4e0b-8cec-ca87b6a01751">
            <ownedComment xmi:id="29214f73-5f0d-4b4e-a0a6-566bce205bad" body="A component that lets the user graphically select a value by sliding&#xA;a knob within a bounded interval. The slider can show both&#xA;major tick marks and minor tick marks between them. The number of&#xA;values between the tick marks is controlled with&#xA;&lt;code>setMajorTickSpacing&lt;/code> and &lt;code>setMinorTickSpacing&lt;/code>.&#xA;&lt;p>&#xA;For further information and examples see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/slider.html&quot;>How to Use Sliders&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A component that supports selecting a integer value from a range.&#xA;&#xA;@version 1.105 05/12/04&#xA;@author David Kloba&#xA;" annotatedElement="999cbcae-fea3-4dfc-ad23-363141fb7447"/>
            <generalization xmi:id="58ad50fc-44f6-42b5-a6ae-277da8b62815" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="2982b4a5-ba71-497a-b542-66394ba2ec92" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="999cbcae-fea3-4dfc-ad23-363141fb7447" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
            <interfaceRealization xmi:id="f813819a-154b-4e0b-8cec-ca87b6a01751" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="999cbcae-fea3-4dfc-ad23-363141fb7447" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="3ebe92e6-5c03-4864-b894-6c0d32446c1a" name="ModelListener" visibility="private" clientDependency="57ba50b7-d428-4a12-b3e9-ec16e81635dd 01fcc590-1da6-4d4f-9947-18c239c53cee">
              <ownedComment xmi:id="dc8ed25b-0a84-4420-80d0-5e50cc5a0253" body="We pass Change events along to the listeners with the&#xA;the slider (instead of the model itself) as the event source.&#xA;" annotatedElement="3ebe92e6-5c03-4864-b894-6c0d32446c1a"/>
              <interfaceRealization xmi:id="57ba50b7-d428-4a12-b3e9-ec16e81635dd" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="3ebe92e6-5c03-4864-b894-6c0d32446c1a" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
              <interfaceRealization xmi:id="01fcc590-1da6-4d4f-9947-18c239c53cee" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="3ebe92e6-5c03-4864-b894-6c0d32446c1a" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="52c63c65-fc88-4401-bea5-151da84c1101" name="AccessibleJSlider" visibility="protected" clientDependency="eabaa293-806c-4756-a60f-165dd3e89a64">
              <ownedComment xmi:id="a7ec9a8d-b563-4170-b29b-813571ebae9b" body="This class implements accessibility support for the&#xA;&lt;code>JSlider&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to slider user-interface elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="52c63c65-fc88-4401-bea5-151da84c1101"/>
              <generalization xmi:id="b5a5e4b5-0088-445a-8683-c108b7e01b66" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
              <interfaceRealization xmi:id="eabaa293-806c-4756-a60f-165dd3e89a64" name="" supplier="48ff1225-61c7-495b-a398-c2903fb1210d" client="52c63c65-fc88-4401-bea5-151da84c1101" contract="48ff1225-61c7-495b-a398-c2903fb1210d"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="10438a71-5dd4-482d-b427-d79b77853113" name="DebugGraphicsObserver" visibility="package" clientDependency="cf1255ce-7acb-4408-a031-ba0473d5a5f7">
            <ownedComment xmi:id="46c1786e-45da-494d-9bcc-5c9abf33162b" body="ImageObserver for DebugGraphics, used for images only.&#xA;&#xA;@version 1.11 12/19/03&#xA;@author Dave Karlton&#xA;" annotatedElement="10438a71-5dd4-482d-b427-d79b77853113"/>
            <interfaceRealization xmi:id="cf1255ce-7acb-4408-a031-ba0473d5a5f7" name="" supplier="72ede030-0691-4953-be91-11a6a0047536" client="10438a71-5dd4-482d-b427-d79b77853113" contract="72ede030-0691-4953-be91-11a6a0047536"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="50f572f2-2be0-42fe-b0ca-3bdc40441747" name="Autoscroller" visibility="package" clientDependency="046a3b05-96ac-4b6c-ae46-4b911200ff40">
            <ownedComment xmi:id="5f6b96f1-45ed-457e-85ae-74ac827c912d" body="Autoscroller is responsible for generating synthetic mouse dragged&#xA;events. It is the responsibility of the Component (or its MouseListeners)&#xA;that receive the events to do the actual scrolling in response to the&#xA;mouse dragged events.&#xA;&#xA;@version 1.14 12/19/03&#xA;@author Dave Moore&#xA;@author Scott Violet&#xA;" annotatedElement="50f572f2-2be0-42fe-b0ca-3bdc40441747"/>
            <interfaceRealization xmi:id="046a3b05-96ac-4b6c-ae46-4b911200ff40" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="50f572f2-2be0-42fe-b0ca-3bdc40441747" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="9ee9a475-1d55-4472-a9d1-ecfe44c01eab" name="JTree" clientDependency="ee385e80-c5da-4594-903a-60435f006f4c e3718f3a-06c6-45c7-93bf-7a29ebbc933a">
            <ownedComment xmi:id="98a80301-7e15-4466-b6a2-00f330be65a6" body="&lt;a name=&quot;jtree_description&quot;>&#xA;A control that displays a set of hierarchical data as an outline.&#xA;You can find task-oriented documentation and examples of using trees in&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html&quot;>How to Use Trees&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&lt;p>&#xA;A specific node in a tree can be identified either by a&#xA;&lt;code>TreePath&lt;/code> (an object&#xA;that encapsulates a node and all of its ancestors), or by its&#xA;display row, where each row in the display area displays one node.&#xA;An &lt;i>expanded&lt;/i> node is a non-leaf node (as identified by&#xA;&lt;code>TreeModel.isLeaf(node)&lt;/code> returning false) that will displays&#xA;its children when all its ancestors are &lt;i>expanded&lt;/i>.&#xA;A &lt;i>collapsed&lt;/i>&#xA;node is one which hides them. A &lt;i>hidden&lt;/i> node is one which is&#xA;under a collapsed ancestor. All of a &lt;i>viewable&lt;/i> nodes parents&#xA;are expanded, but may or may not be displayed. A &lt;i>displayed&lt;/i> node&#xA;is both viewable and in the display area, where it can be seen.&#xA;&lt;p>&#xA;The following &lt;code>JTree&lt;/code> methods use &quot;visible&quot; to mean &quot;displayed&quot;:&#xA;&lt;ul>&#xA;&lt;li>&lt;code>isRootVisible()&lt;/code>&#xA;&lt;li>&lt;code>setRootVisible()&lt;/code>&#xA;&lt;li>&lt;code>scrollPathToVisible()&lt;/code>&#xA;&lt;li>&lt;code>scrollRowToVisible()&lt;/code>&#xA;&lt;li>&lt;code>getVisibleRowCount()&lt;/code>&#xA;&lt;li>&lt;code>setVisibleRowCount()&lt;/code>&#xA;&lt;/ul>&#xA;&lt;p>&#xA;The next group of &lt;code>JTree&lt;/code> methods use &quot;visible&quot; to mean&#xA;&quot;viewable&quot; (under an expanded parent):&#xA;&lt;ul>&#xA;&lt;li>&lt;code>isVisible()&lt;/code>&#xA;&lt;li>&lt;code>makeVisible()&lt;/code>&#xA;&lt;/ul>&#xA;&lt;p>&#xA;If you are interested in knowing when the selection changes implement&#xA;the &lt;code>TreeSelectionListener&lt;/code> interface and add the instance&#xA;using the method &lt;code>addTreeSelectionListener&lt;/code>.&#xA;&lt;code>valueChanged&lt;/code> will be invoked when the&#xA;selection changes, that is if the user clicks twice on the same&#xA;node &lt;code>valueChanged&lt;/code> will only be invoked once.&#xA;&lt;p>&#xA;If you are interested in detecting either double-click events or when&#xA;a user clicks on a node, regardless of whether or not it was selected,&#xA;we recommend you do the following:&#xA;&lt;pre>&#xA;final JTree tree = ...;&#xA;&#xA;MouseListener ml = new MouseAdapter() {&#xA;public void &lt;b>mousePressed&lt;/b>(MouseEvent e) {&#xA;int selRow = tree.getRowForLocation(e.getX(), e.getY());&#xA;TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());&#xA;if(selRow != -1) {&#xA;if(e.getClickCount() == 1) {&#xA;mySingleClick(selRow, selPath);&#xA;}&#xA;else if(e.getClickCount() == 2) {&#xA;myDoubleClick(selRow, selPath);&#xA;}&#xA;}&#xA;}&#xA;};&#xA;tree.addMouseListener(ml);&#xA;&lt;/pre>&#xA;NOTE: This example obtains both the path and row, but you only need to&#xA;get the one you're interested in.&#xA;&lt;p>&#xA;To use &lt;code>JTree&lt;/code> to display compound nodes&#xA;(for example, nodes containing both&#xA;a graphic icon and text), subclass {@link TreeCellRenderer} and use&#xA;{@link #setCellRenderer} to tell the tree to use it. To edit such nodes,&#xA;subclass {@link TreeCellEditor} and use {@link #setCellEditor}.&#xA;&lt;p>&#xA;Like all &lt;code>JComponent&lt;/code> classes, you can use {@link InputMap} and&#xA;{@link ActionMap}&#xA;to associate an {@link Action} object with a {@link KeyStroke}&#xA;and execute the action under specified conditions.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A component that displays a set of hierarchical data as an outline.&#xA;&#xA;@version 1.176, 07/13/04&#xA;@author Rob Davis&#xA;@author Ray Ryan&#xA;@author Scott Violet&#xA;" annotatedElement="9ee9a475-1d55-4472-a9d1-ecfe44c01eab"/>
            <generalization xmi:id="40d125c1-c3ca-49a3-99be-57a9ee086840" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="ee385e80-c5da-4594-903a-60435f006f4c" name="" supplier="a1ad2c61-c036-48cb-85f4-7681cc6ba8fc" client="9ee9a475-1d55-4472-a9d1-ecfe44c01eab" contract="a1ad2c61-c036-48cb-85f4-7681cc6ba8fc"/>
            <interfaceRealization xmi:id="e3718f3a-06c6-45c7-93bf-7a29ebbc933a" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="9ee9a475-1d55-4472-a9d1-ecfe44c01eab" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="660524d9-ef38-4411-9dcd-d06c80596ca0" name="EmptySelectionModel" visibility="protected">
              <ownedComment xmi:id="89f28b5f-b4e3-410d-91a8-278a7122f4b0" body="&lt;code>EmptySelectionModel&lt;/code> is a &lt;code>TreeSelectionModel&lt;/code>&#xA;that does not allow anything to be selected.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="660524d9-ef38-4411-9dcd-d06c80596ca0"/>
              <generalization xmi:id="95c52794-5fa2-44b4-adbc-57c991f84a3a" isSubstitutable="true" general="0c6e3d85-d73a-4737-8a7b-c099ddba0375"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="f6e99525-8504-415f-838e-b470d2e52568" name="TreeSelectionRedirector" visibility="protected" clientDependency="33495c98-b9e2-4916-971b-80700bbfec62 fb4a4fdf-549c-4386-8f0d-77bff0de6e5d">
              <ownedComment xmi:id="631dd0b4-fd94-4100-bc8d-fb65d8a69f57" body="Handles creating a new &lt;code>TreeSelectionEvent&lt;/code> with the&#xA;&lt;code>JTree&lt;/code> as the&#xA;source and passing it off to all the listeners.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="f6e99525-8504-415f-838e-b470d2e52568"/>
              <interfaceRealization xmi:id="fb4a4fdf-549c-4386-8f0d-77bff0de6e5d" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f6e99525-8504-415f-838e-b470d2e52568" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="33495c98-b9e2-4916-971b-80700bbfec62" name="" supplier="173abbe6-9303-4b54-abf5-2c00ce8666cf" client="f6e99525-8504-415f-838e-b470d2e52568" contract="173abbe6-9303-4b54-abf5-2c00ce8666cf"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="61a49430-74b3-4e9d-9975-24a8c744ca5c" name="TreeModelHandler" visibility="protected" clientDependency="f5d75bd9-2e02-4d70-bb67-b222cad44c5f">
              <ownedComment xmi:id="eeb3b6f8-3616-456b-b553-f2fdb77f8c5c" body="Listens to the model and updates the &lt;code>expandedState&lt;/code>&#xA;accordingly when nodes are removed, or changed.&#xA;" annotatedElement="61a49430-74b3-4e9d-9975-24a8c744ca5c"/>
              <interfaceRealization xmi:id="f5d75bd9-2e02-4d70-bb67-b222cad44c5f" name="" supplier="926679b4-597b-4f14-95c3-4956e7352241" client="61a49430-74b3-4e9d-9975-24a8c744ca5c" contract="926679b4-597b-4f14-95c3-4956e7352241"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="f6feda0c-225c-4937-b4b5-c545049c8835" name="DynamicUtilTreeNode">
              <ownedComment xmi:id="a6459e95-bd66-4167-a302-6e34739199cd" body="&lt;code>DynamicUtilTreeNode&lt;/code> can wrap&#xA;vectors/hashtables/arrays/strings and&#xA;create the appropriate children tree nodes as necessary. It is&#xA;dynamic in that it will only create the children as necessary.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="f6feda0c-225c-4937-b4b5-c545049c8835"/>
              <generalization xmi:id="93a76530-67e6-4f51-be1b-4125f9fddc72" isSubstitutable="true" general="6dc229cb-94f7-487a-91eb-a329de143f38"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="5fb655b2-86c0-40d1-b687-2459de8e98b6" name="AccessibleJTree" visibility="protected" clientDependency="2ef110e2-6f39-4cca-adc8-bc45cac1354a 444f5742-1b27-4ca9-98c5-d43db5569c67 836b2332-beca-4cda-92c2-9f4315be054a 492a9076-fbcd-413f-80a4-92255d251c62">
              <ownedComment xmi:id="aeac0719-e858-49f9-ae1c-338aea3fff6f" body="This class implements accessibility support for the&#xA;&lt;code>JTree&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to tree user-interface elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="5fb655b2-86c0-40d1-b687-2459de8e98b6"/>
              <generalization xmi:id="91d9ceb5-27a0-4909-ba84-f73f31d7026a" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
              <interfaceRealization xmi:id="836b2332-beca-4cda-92c2-9f4315be054a" name="" supplier="0dbef058-3ccc-4038-b98f-eea279be3f13" client="5fb655b2-86c0-40d1-b687-2459de8e98b6" contract="0dbef058-3ccc-4038-b98f-eea279be3f13"/>
              <interfaceRealization xmi:id="444f5742-1b27-4ca9-98c5-d43db5569c67" name="" supplier="173abbe6-9303-4b54-abf5-2c00ce8666cf" client="5fb655b2-86c0-40d1-b687-2459de8e98b6" contract="173abbe6-9303-4b54-abf5-2c00ce8666cf"/>
              <interfaceRealization xmi:id="2ef110e2-6f39-4cca-adc8-bc45cac1354a" name="" supplier="926679b4-597b-4f14-95c3-4956e7352241" client="5fb655b2-86c0-40d1-b687-2459de8e98b6" contract="926679b4-597b-4f14-95c3-4956e7352241"/>
              <interfaceRealization xmi:id="492a9076-fbcd-413f-80a4-92255d251c62" name="" supplier="ab6aa2df-5b08-47af-bc93-b63a9ca8b150" client="5fb655b2-86c0-40d1-b687-2459de8e98b6" contract="ab6aa2df-5b08-47af-bc93-b63a9ca8b150"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6ee3b3d7-5040-4b67-b0f7-d5f9a857e4f2" name="AccessibleJTreeNode" visibility="protected" clientDependency="7f48b6cd-5b64-4c32-9e22-31e05f07ce1e 565f6994-1825-49e2-9c57-db249d50fb88 57396fac-7501-441d-a403-95eba87ddad7 8f4a86d2-89de-44d9-8619-c747f419dafe">
                <ownedComment xmi:id="4d80c5cc-3473-4e4d-9d91-a6948e052cfc" body="This class implements accessibility support for the&#xA;&lt;code>JTree&lt;/code> child.  It provides an implementation of the&#xA;Java Accessibility API appropriate to tree nodes.&#xA;" annotatedElement="6ee3b3d7-5040-4b67-b0f7-d5f9a857e4f2"/>
                <generalization xmi:id="480576c5-1ae2-41dd-b159-8a11e8cb2766" isSubstitutable="true" general="5e5fecb3-251d-4b0e-b142-9f3aac1d4c57"/>
                <interfaceRealization xmi:id="7f48b6cd-5b64-4c32-9e22-31e05f07ce1e" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="6ee3b3d7-5040-4b67-b0f7-d5f9a857e4f2" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
                <interfaceRealization xmi:id="565f6994-1825-49e2-9c57-db249d50fb88" name="" supplier="a13045dc-df1a-4751-8aff-9b7e320e05bf" client="6ee3b3d7-5040-4b67-b0f7-d5f9a857e4f2" contract="a13045dc-df1a-4751-8aff-9b7e320e05bf"/>
                <interfaceRealization xmi:id="57396fac-7501-441d-a403-95eba87ddad7" name="" supplier="0dbef058-3ccc-4038-b98f-eea279be3f13" client="6ee3b3d7-5040-4b67-b0f7-d5f9a857e4f2" contract="0dbef058-3ccc-4038-b98f-eea279be3f13"/>
                <interfaceRealization xmi:id="8f4a86d2-89de-44d9-8619-c747f419dafe" name="" supplier="1f04210f-dd56-4dbb-861c-7a19813caf4c" client="6ee3b3d7-5040-4b67-b0f7-d5f9a857e4f2" contract="1f04210f-dd56-4dbb-861c-7a19813caf4c"/>
              </nestedClassifier>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4304acba-c3b1-45b0-9d24-eeccd52adfad" name="SortingFocusTraversalPolicy">
            <ownedComment xmi:id="55c88559-a29c-488a-b759-755f54c4ae21" body="A FocusTraversalPolicy that determines traversal order by sorting the&#xA;Components of a focus traversal cycle based on a given Comparator. Portions&#xA;of the Component hierarchy that are not visible and displayable will not be&#xA;included.&#xA;&lt;p>&#xA;By default, SortingFocusTraversalPolicy implicitly transfers focus down-&#xA;cycle. That is, during normal focus traversal, the Component&#xA;traversed after a focus cycle root will be the focus-cycle-root's default&#xA;Component to focus. This behavior can be disabled using the&#xA;&lt;code>setImplicitDownCycleTraversal&lt;/code> method.&#xA;&lt;p>&#xA;By default, methods of this class with return a Component only if it is&#xA;visible, displayable, enabled, and focusable. Subclasses can modify this&#xA;behavior by overriding the &lt;code>accept&lt;/code> method.&#xA;&lt;p>&#xA;This policy takes into account &lt;a&#xA;href=&quot;doc-files/FocusSpec.html#FocusTraversalPolicyProviders&quot;>focus traversal&#xA;policy providers&lt;/a>.  When searching for first/last/next/previous Component,&#xA;if a focus traversal policy provider is encountered, its focus traversal&#xA;policy is used to perform the search operation.&#xA;&#xA;@author David Mendenhall&#xA;@version 1.7, 05/05/04&#xA;&#xA;@see java.util.Comparator&#xA;@since 1.4&#xA;" annotatedElement="4304acba-c3b1-45b0-9d24-eeccd52adfad"/>
            <generalization xmi:id="c8c12f78-cc58-404c-9b30-e2b5e0f49e0f" isSubstitutable="true" general="75d531a9-fa7d-407e-a4e1-11b2cfc751c0"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e7615c81-79aa-423b-a8eb-223a3915b730" name="JComboBox" clientDependency="190c266f-8877-44fd-aaa8-fb8210f7ab05 e5e49de4-6519-41d2-a6cc-6397a9440522 13d9fa80-9900-448e-b650-c0f7844cc0e7 935cd79a-bfd6-4e3e-b34d-3bf3343a2dc6">
            <ownedComment xmi:id="525c6f51-ba53-4032-95b6-1886f68aa9b3" body="A component that combines a button or editable field and a drop-down list.&#xA;The user can select a value from the drop-down list, which appears at the&#xA;user's request. If you make the combo box editable, then the combo box&#xA;includes an editable field into which the user can type a value.&#xA;&#xA;&lt;p>&#xA;For the keyboard keys used by this component in the standard Look and&#xA;Feel (L&amp;F) renditions, see the&#xA;&lt;a href=&quot;doc-files/Key-Index.html#JComboBox&quot;>&lt;code>JComboBox&lt;/code> key assignments&lt;/a>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;&lt;p>&#xA;See &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/combobox.html&quot;>How to Use Combo Boxes&lt;/a>&#xA;in &lt;a href=&quot;http://java.sun.com/Series/Tutorial/index.html&quot;>&lt;em>The Java Tutorial&lt;/em>&lt;/a>&#xA;for further information.&#xA;&lt;p>&#xA;@see ComboBoxModel&#xA;@see DefaultComboBoxModel&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A combination of a text field and a drop-down list.&#xA;&#xA;@version 1.126 05/05/04&#xA;@author Arnaud Weber&#xA;@author Mark Davidson&#xA;" annotatedElement="e7615c81-79aa-423b-a8eb-223a3915b730"/>
            <generalization xmi:id="2d1ef783-33d4-472f-8d7e-4d909ff50fe0" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="e5e49de4-6519-41d2-a6cc-6397a9440522" name="" supplier="db09b331-737d-46b0-b88c-ec77f93dd925" client="e7615c81-79aa-423b-a8eb-223a3915b730" contract="db09b331-737d-46b0-b88c-ec77f93dd925"/>
            <interfaceRealization xmi:id="13d9fa80-9900-448e-b650-c0f7844cc0e7" name="" supplier="bcdeadf8-6999-41e4-bdd9-4404260fdf22" client="e7615c81-79aa-423b-a8eb-223a3915b730" contract="bcdeadf8-6999-41e4-bdd9-4404260fdf22"/>
            <interfaceRealization xmi:id="935cd79a-bfd6-4e3e-b34d-3bf3343a2dc6" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="e7615c81-79aa-423b-a8eb-223a3915b730" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
            <interfaceRealization xmi:id="190c266f-8877-44fd-aaa8-fb8210f7ab05" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="e7615c81-79aa-423b-a8eb-223a3915b730" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Interface" xmi:id="4a006521-db0a-495f-a224-da23f1c4721a" name="KeySelectionManager" isAbstract="true">
              <ownedComment xmi:id="0499fdb8-a780-4fc8-9fe4-5b960b97e2c9" body="The interface that defines a &lt;code>KeySelectionManager&lt;/code>.&#xA;To qualify as a &lt;code>KeySelectionManager&lt;/code>,&#xA;the class needs to implement the method&#xA;that identifies the list index given a character and the&#xA;combo box data model.&#xA;" annotatedElement="4a006521-db0a-495f-a224-da23f1c4721a"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="4f2682b3-4a87-4435-8738-91092e611c39" name="DefaultKeySelectionManager" visibility="package" clientDependency="7cbd1b1a-ce3b-4c11-bc68-77d8773f8a4e 584dd6fd-f349-42e6-af9c-95619c893e39">
              <interfaceRealization xmi:id="7cbd1b1a-ce3b-4c11-bc68-77d8773f8a4e" name="" supplier="4a006521-db0a-495f-a224-da23f1c4721a" client="4f2682b3-4a87-4435-8738-91092e611c39" contract="4a006521-db0a-495f-a224-da23f1c4721a"/>
              <interfaceRealization xmi:id="584dd6fd-f349-42e6-af9c-95619c893e39" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4f2682b3-4a87-4435-8738-91092e611c39" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a9cc78a0-e49e-4535-bc3e-ab657a815154" name="AccessibleJComboBox" visibility="protected" clientDependency="f36e275f-0f0b-4ae1-92c8-9715d33d7504 14fc03ae-352d-4e16-b892-0afb89fbab08">
              <ownedComment xmi:id="850832fc-c3f6-4e7f-a9ff-6c8cf266c979" body="This class implements accessibility support for the&#xA;&lt;code>JComboBox&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to Combo Box user-interface elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="a9cc78a0-e49e-4535-bc3e-ab657a815154"/>
              <generalization xmi:id="c9ac1f63-dde8-4ea8-ba51-8951cfc077eb" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
              <interfaceRealization xmi:id="14fc03ae-352d-4e16-b892-0afb89fbab08" name="" supplier="1f04210f-dd56-4dbb-861c-7a19813caf4c" client="a9cc78a0-e49e-4535-bc3e-ab657a815154" contract="1f04210f-dd56-4dbb-861c-7a19813caf4c"/>
              <interfaceRealization xmi:id="f36e275f-0f0b-4ae1-92c8-9715d33d7504" name="" supplier="0dbef058-3ccc-4038-b98f-eea279be3f13" client="a9cc78a0-e49e-4535-bc3e-ab657a815154" contract="0dbef058-3ccc-4038-b98f-eea279be3f13"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="81a4b702-edb5-444f-9b79-1e61b955d86d" name="AccessibleEditor" visibility="private" clientDependency="2053e786-387f-4d85-b411-38ac41c27bc5">
                <interfaceRealization xmi:id="2053e786-387f-4d85-b411-38ac41c27bc5" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="81a4b702-edb5-444f-9b79-1e61b955d86d" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6d9ca473-0ddc-4e7b-8f2e-53f53cdcd529" name="EditorAccessibleContext" visibility="private">
                <generalization xmi:id="bcbed702-a4af-4566-9ab2-35e285d64a10" isSubstitutable="true" general="5e5fecb3-251d-4b0e-b142-9f3aac1d4c57"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="62d7f4e1-bd16-45b6-bcdb-b7b3f5e10189" name="AccessibleJComboBoxPopupMenuListener" visibility="private" clientDependency="ab1efaed-98d0-46c4-bf26-91eee0efba9a">
                <interfaceRealization xmi:id="ab1efaed-98d0-46c4-bf26-91eee0efba9a" name="" supplier="1a6761f2-765c-474c-8299-4d40d2a1e6f7" client="62d7f4e1-bd16-45b6-bcdb-b7b3f5e10189" contract="1a6761f2-765c-474c-8299-4d40d2a1e6f7"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="364b0658-31d4-435b-a5b0-6fe5697091a9" name="AccessibleJComboBoxListSelectionListener" visibility="private" clientDependency="076e8000-4274-474b-9db8-720958d8e443">
                <interfaceRealization xmi:id="076e8000-4274-474b-9db8-720958d8e443" name="" supplier="077ca4fe-3afb-4e22-bed0-5cc47445acf4" client="364b0658-31d4-435b-a5b0-6fe5697091a9" contract="077ca4fe-3afb-4e22-bed0-5cc47445acf4"/>
              </nestedClassifier>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="dad7a0ab-39c4-4333-85d9-671ed4077c5a" name="DelegatingDefaultFocusManager" visibility="package" isLeaf="true">
            <ownedComment xmi:id="cd951f33-aecd-491b-a393-b987d31cf969" body="Provides a javax.swing.DefaultFocusManager view onto an arbitrary&#xA;java.awt.KeyboardFocusManager. We subclass DefaultFocusManager instead of&#xA;FocusManager because it seems more backward-compatible. It is likely that&#xA;some pre-1.4 code assumes that the object returned by&#xA;FocusManager.getCurrentManager is an instance of DefaultFocusManager unless&#xA;set explicitly.&#xA;" annotatedElement="dad7a0ab-39c4-4333-85d9-671ed4077c5a"/>
            <generalization xmi:id="bacbbd0c-8cab-49b8-9df1-7559d5bfbbee" isSubstitutable="true" general="6815381d-29eb-408a-98ef-95a852eb2846"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="e6ed5159-dfed-45c8-a076-44689a431f3d" name="SwingConstants" isAbstract="true">
            <ownedComment xmi:id="a19133c0-359c-4a91-9e87-c6a2521f11e0" body="A collection of constants generally used for positioning and orienting&#xA;components on the screen.&#xA;&#xA;@version 1.16 12/19/03&#xA;@author Jeff Dinkins&#xA;@author Ralph Kar (orientation support)&#xA;" annotatedElement="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="50115530-a65c-4c53-bc2d-7c5dcd977f7c" name="JScrollPane" clientDependency="7a1bf8ad-8684-44fb-bf56-a58b831a9128 2e67a45a-5daf-4dd6-8380-59a4840ca437">
            <ownedComment xmi:id="f6f4ed69-f407-4a8b-b3a3-034e8b0337bd" body="Provides a scrollable view of a lightweight component.&#xA;A &lt;code>JScrollPane&lt;/code> manages a viewport, optional&#xA;vertical and horizontal scroll bars, and optional row and&#xA;column heading viewports.&#xA;You can find task-oriented documentation of &lt;code>JScrollPane&lt;/code> in&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/scrollpane.html&quot;>How to Use Scroll Panes&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.  Note that&#xA;&lt;code>JScrollPane&lt;/code> does not support heavyweight components.&#xA;&lt;p>&#xA;&lt;TABLE ALIGN=&quot;RIGHT&quot; BORDER=&quot;0&quot; SUMMARY=&quot;layout&quot;>&#xA;&lt;TR>&#xA;&lt;TD ALIGN=&quot;CENTER&quot;>&#xA;&lt;P ALIGN=&quot;CENTER&quot;>&lt;IMG SRC=&quot;doc-files/JScrollPane-1.gif&quot;&#xA;alt=&quot;The following text describes this image.&quot;&#xA;WIDTH=&quot;256&quot; HEIGHT=&quot;248&quot; ALIGN=&quot;BOTTOM&quot; BORDER=&quot;0&quot;>&#xA;&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;/TABLE>&#xA;The &lt;code>JViewport&lt;/code> provides a window,&#xA;or &quot;viewport&quot; onto a data&#xA;source -- for example, a text file. That data source is the&#xA;&quot;scrollable client&quot; (aka data model) displayed by the&#xA;&lt;code>JViewport&lt;/code> view.&#xA;A &lt;code>JScrollPane&lt;/code> basically consists of &lt;code>JScrollBar&lt;/code>s,&#xA;a &lt;code>JViewport&lt;/code>, and the wiring between them,&#xA;as shown in the diagram at right.&#xA;&lt;p>&#xA;In addition to the scroll bars and viewport,&#xA;a &lt;code>JScrollPane&lt;/code> can have a&#xA;column header and a row header. Each of these is a&#xA;&lt;code>JViewport&lt;/code> object that&#xA;you specify with &lt;code>setRowHeaderView&lt;/code>,&#xA;and &lt;code>setColumnHeaderView&lt;/code>.&#xA;The column header viewport automatically scrolls left and right, tracking&#xA;the left-right scrolling of the main viewport.&#xA;(It never scrolls vertically, however.)&#xA;The row header acts in a similar fashion.&#xA;&lt;p>&#xA;By default, the corners are empty.&#xA;You can put a component into a corner using&#xA;&lt;code>setCorner&lt;/code>,&#xA;in case you there is some function or decoration you&#xA;would like to add to the scroll pane. The size of corner components is&#xA;entirely determined by the size of the headers and scroll bars that&#xA;surround them.&#xA;&lt;p>&#xA;To add a border around the main viewport,&#xA;you can use &lt;code>setViewportBorder&lt;/code>.&#xA;(Of course, you can also add a border around the whole scroll pane using&#xA;&lt;code>setBorder&lt;/code>.)&#xA;&lt;p>&#xA;A common operation to want to do is to set the background color that will&#xA;be used if the main viewport view is smaller than the viewport, or is&#xA;not opaque. This can be accomplished by setting the background color&#xA;of the viewport, via &lt;code>scrollPane.getViewport().setBackground()&lt;/code>.&#xA;The reason for setting the color of the viewport and not the scrollpane&#xA;is that by default &lt;code>JViewport&lt;/code> is opaque&#xA;which, among other things, means it will completely fill&#xA;in its background using its background color.  Therefore when&#xA;&lt;code>JScrollPane&lt;/code> draws its background the viewport will&#xA;usually draw over it.&#xA;&lt;p>&#xA;By default &lt;code>JScrollPane&lt;/code> uses &lt;code>ScrollPaneLayout&lt;/code>&#xA;to handle the layout of its child Components. &lt;code>ScrollPaneLayout&lt;/code>&#xA;determines the size to make the viewport view in one of two ways:&#xA;&lt;ol>&#xA;&lt;li>If the view implements &lt;code>Scrollable&lt;/code>&#xA;a combination of &lt;code>getPreferredScrollableViewportSize&lt;/code>,&#xA;&lt;code>getScrollableTracksViewportWidth&lt;/code> and&#xA;&lt;code>getScrollableTracksViewportHeight&lt;/code>is used, otherwise&#xA;&lt;li>&lt;code>getPreferredSize&lt;/code> is used.&#xA;&lt;/ol>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see JScrollBar&#xA;@see JViewport&#xA;@see ScrollPaneLayout&#xA;@see Scrollable&#xA;@see Component#getPreferredSize&#xA;@see #setViewportView&#xA;@see #setRowHeaderView&#xA;@see #setColumnHeaderView&#xA;@see #setCorner&#xA;@see #setViewportBorder&#xA;&#xA;@beaninfo&#xA;attribute: isContainer true&#xA;attribute: containerDelegate getViewport&#xA;description: A specialized container that manages a viewport, optional scrollbars and headers&#xA;&#xA;@version 1.100 @(#)JScrollPane.java&#x9;1.100&#xA;@author Hans Muller&#xA;" annotatedElement="50115530-a65c-4c53-bc2d-7c5dcd977f7c"/>
            <generalization xmi:id="002f6be8-98f2-425b-84b6-9cadd9bec63b" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="7a1bf8ad-8684-44fb-bf56-a58b831a9128" name="" supplier="077d0b24-8305-4eeb-a301-15642735b20b" client="50115530-a65c-4c53-bc2d-7c5dcd977f7c" contract="077d0b24-8305-4eeb-a301-15642735b20b"/>
            <interfaceRealization xmi:id="2e67a45a-5daf-4dd6-8380-59a4840ca437" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="50115530-a65c-4c53-bc2d-7c5dcd977f7c" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="2e24cbc5-b0b3-42f0-a7b5-dec472d53f00" name="ScrollBar" visibility="protected" clientDependency="438ac573-9cd7-4bf8-8448-b9603a09733e">
              <ownedComment xmi:id="7f9b7b75-b929-4705-be7f-27841e2e3e39" body="By default &lt;code>JScrollPane&lt;/code> creates scrollbars&#xA;that are instances&#xA;of this class.  &lt;code>Scrollbar&lt;/code> overrides the&#xA;&lt;code>getUnitIncrement&lt;/code> and &lt;code>getBlockIncrement&lt;/code>&#xA;methods so that, if the viewport's view is a &lt;code>Scrollable&lt;/code>,&#xA;the view is asked to compute these values. Unless&#xA;the unit/block increment have been explicitly set.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see Scrollable&#xA;@see JScrollPane#createVerticalScrollBar&#xA;@see JScrollPane#createHorizontalScrollBar&#xA;" annotatedElement="2e24cbc5-b0b3-42f0-a7b5-dec472d53f00"/>
              <generalization xmi:id="486beaa5-f3a8-47c8-a738-5d249a1f7fd5" isSubstitutable="true" general="d8bf3c90-af6b-43b6-ad48-43b8e3c37f15"/>
              <interfaceRealization xmi:id="438ac573-9cd7-4bf8-8448-b9603a09733e" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="2e24cbc5-b0b3-42f0-a7b5-dec472d53f00" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="faa744ac-2bda-4e8e-9a95-9db1d5aa4dd0" name="AccessibleJScrollPane" visibility="protected" clientDependency="6dd440b0-ca9e-42de-a05f-267ec721e049 2f8efdb7-2f77-4ecd-ae62-1731351b5395">
              <ownedComment xmi:id="d6983d90-f145-4684-90f3-9c35e85650fa" body="This class implements accessibility support for the&#xA;&lt;code>JScrollPane&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to scroll pane user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="faa744ac-2bda-4e8e-9a95-9db1d5aa4dd0"/>
              <generalization xmi:id="4d166c33-d722-421e-821f-f63107a30c7d" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
              <interfaceRealization xmi:id="6dd440b0-ca9e-42de-a05f-267ec721e049" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="faa744ac-2bda-4e8e-9a95-9db1d5aa4dd0" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
              <interfaceRealization xmi:id="2f8efdb7-2f77-4ecd-ae62-1731351b5395" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="faa744ac-2bda-4e8e-9a95-9db1d5aa4dd0" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="93752018-3f83-4bf5-a5e1-68ef17f415a3" name="Box" clientDependency="6e96a53b-e9e7-450d-bb68-5f2086a00e98">
            <ownedComment xmi:id="27fb26b9-fd2d-4380-9541-c420cae17f48" body="A lightweight container&#xA;that uses a BoxLayout object as its layout manager.&#xA;Box provides several class methods&#xA;that are useful for containers using BoxLayout --&#xA;even non-Box containers.&#xA;&#xA;&lt;p>&#xA;The &lt;code>Box&lt;/code> class can create several kinds&#xA;of invisible components&#xA;that affect layout:&#xA;glue, struts, and rigid areas.&#xA;If all the components your &lt;code>Box&lt;/code> contains&#xA;have a fixed size,&#xA;you might want to use a glue component&#xA;(returned by &lt;code>createGlue&lt;/code>)&#xA;to control the components' positions.&#xA;If you need a fixed amount of space between two components,&#xA;try using a strut&#xA;(&lt;code>createHorizontalStrut&lt;/code> or &lt;code>createVerticalStrut&lt;/code>).&#xA;If you need an invisible component&#xA;that always takes up the same amount of space,&#xA;get it by invoking &lt;code>createRigidArea&lt;/code>.&#xA;&lt;p>&#xA;If you are implementing a &lt;code>BoxLayout&lt;/code> you&#xA;can find further information and examples in&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/layout/box.html&quot;>How to Use BoxLayout&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see BoxLayout&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.43 12/19/03&#xA;" annotatedElement="93752018-3f83-4bf5-a5e1-68ef17f415a3"/>
            <generalization xmi:id="a91bda29-80b0-4f40-afc6-df53845fd9d3" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="6e96a53b-e9e7-450d-bb68-5f2086a00e98" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="93752018-3f83-4bf5-a5e1-68ef17f415a3" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="8dc149db-4bde-4733-8318-a1bb2de7d4ff" name="Filler" clientDependency="1988b8d5-2a15-43de-bcaa-5d218847f742">
              <ownedComment xmi:id="5360e1c9-65bc-462d-ae32-9a2379fb7104" body="An implementation of a lightweight component that participates in&#xA;layout but has no view.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="8dc149db-4bde-4733-8318-a1bb2de7d4ff"/>
              <generalization xmi:id="7efc226a-2bbf-4770-9050-82b2b589ce5b" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
              <interfaceRealization xmi:id="1988b8d5-2a15-43de-bcaa-5d218847f742" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="8dc149db-4bde-4733-8318-a1bb2de7d4ff" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6f156b60-8750-46f6-8397-56e0281afcb2" name="AccessibleBoxFiller" visibility="protected">
                <ownedComment xmi:id="550e4089-c363-4707-a232-8802fa089863" body="This class implements accessibility support for the&#xA;&lt;code>Box.Filler&lt;/code> class.&#xA;" annotatedElement="6f156b60-8750-46f6-8397-56e0281afcb2"/>
                <generalization xmi:id="78c829a3-1c50-48bf-a37f-57a4fb906e81" isSubstitutable="true" general="e8a07816-0ac5-4ca1-990d-2e0e3f63e181"/>
              </nestedClassifier>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="59e98b5d-d383-4681-a7db-51e04c90f984" name="AccessibleBox" visibility="protected">
              <ownedComment xmi:id="4317e831-0c09-4f70-85a6-31e474d69aea" body="This class implements accessibility support for the&#xA;&lt;code>Box&lt;/code> class.&#xA;" annotatedElement="59e98b5d-d383-4681-a7db-51e04c90f984"/>
              <generalization xmi:id="c2c165ed-8c60-43fc-a128-cff92d99478f" isSubstitutable="true" general="b3e98866-f74c-49b9-bf05-d16c3c4114d5"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0c2caf13-98bc-4937-b949-800fd142c2ed" name="LayoutFocusTraversalPolicy" clientDependency="43ae7fe0-79ae-4afc-9089-faa1a3b6b9c7">
            <ownedComment xmi:id="ba853dbc-14e7-4ea5-9f20-587b7d25b1d8" body="A SortingFocusTraversalPolicy which sorts Components based on their size,&#xA;position, and orientation. Based on their size and position, Components are&#xA;roughly categorized into rows and columns. For a Container with horizontal&#xA;orientation, columns run left-to-right or right-to-left, and rows run top-&#xA;to-bottom. For a Container with vertical orientation, columns run top-to-&#xA;bottom and rows run left-to-right or right-to-left. See&#xA;&lt;code>ComponentOrientation&lt;/code> for more information. All columns in a&#xA;row are fully traversed before proceeding to the next row.&#xA;&#xA;@version 1.10, 12/19/03&#xA;@author David Mendenhall&#xA;&#xA;@see java.awt.ComponentOrientation&#xA;@since 1.4&#xA;" annotatedElement="0c2caf13-98bc-4937-b949-800fd142c2ed"/>
            <generalization xmi:id="cec0d01a-6c9a-4dff-8e51-bc3a2b5f5f6d" isSubstitutable="true" general="4304acba-c3b1-45b0-9d24-eeccd52adfad"/>
            <interfaceRealization xmi:id="43ae7fe0-79ae-4afc-9089-faa1a3b6b9c7" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0c2caf13-98bc-4937-b949-800fd142c2ed" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="fa4789b2-bc6f-42b7-8977-499bba865345" name="SpinnerNumberModel" clientDependency="35e7c899-bea6-49a0-a8ab-607fd512fb6f">
            <ownedComment xmi:id="35a16e4f-f2e7-4e91-85b7-64cb487d4330" body="A &lt;code>SpinnerModel&lt;/code> for sequences of numbers.&#xA;The upper and lower bounds of the sequence are defined&#xA;by properties called &lt;code>minimum&lt;/code> and&#xA;&lt;code>maximum&lt;/code>. The size of the increase or decrease&#xA;computed by the &lt;code>nextValue&lt;/code> and&#xA;&lt;code>previousValue&lt;/code> methods is defined by a property called&#xA;&lt;code>stepSize&lt;/code>.  The &lt;code>minimum&lt;/code> and&#xA;&lt;code>maximum&lt;/code> properties can be &lt;code>null&lt;/code>&#xA;to indicate that the sequence has no lower or upper limit.&#xA;All of the properties in this class are defined in terms of two&#xA;generic types: &lt;code>Number&lt;/code> and&#xA;&lt;code>Comparable&lt;/code>, so that all Java numeric types&#xA;may be accommodated.  Internally, there's only support for&#xA;values whose type is one of the primitive &lt;code>Number&lt;/code> types:&#xA;&lt;code>Double&lt;/code>, &lt;code>Float&lt;/code>, &lt;code>Long&lt;/code>,&#xA;&lt;code>Integer&lt;/code>, &lt;code>Short&lt;/code>, or &lt;code>Byte&lt;/code>.&#xA;&lt;p>&#xA;To create a &lt;code>SpinnerNumberModel&lt;/code> for the integer&#xA;range zero to one hundred, with&#xA;fifty as the initial value, one could write:&#xA;&lt;pre>&#xA;Integer value = new Integer(50);&#xA;Integer min = new Integer(0);&#xA;Integer max = new Integer(100);&#xA;Integer step = new Integer(1);&#xA;SpinnerNumberModel model = new SpinnerNumberModel(value, min, max, step);&#xA;int fifty = model.getNumber().intValue();&#xA;&lt;/pre>&#xA;&lt;p>&#xA;Spinners for integers and doubles are common, so special constructors&#xA;for these cases are provided.  For example to create the model in&#xA;the previous example, one could also write:&#xA;&lt;pre>&#xA;SpinnerNumberModel model = new SpinnerNumberModel(50, 0, 100, 1);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;This model inherits a &lt;code>ChangeListener&lt;/code>.&#xA;The &lt;code>ChangeListeners&lt;/code> are notified&#xA;whenever the model's &lt;code>value&lt;/code>, &lt;code>stepSize&lt;/code>,&#xA;&lt;code>minimum&lt;/code>, or &lt;code>maximum&lt;/code> properties changes.&#xA;&#xA;@see JSpinner&#xA;@see SpinnerModel&#xA;@see AbstractSpinnerModel&#xA;@see SpinnerListModel&#xA;@see SpinnerDateModel&#xA;&#xA;@version 1.12 05/12/04&#xA;@author Hans Muller&#xA;@since 1.4&#xA;" annotatedElement="fa4789b2-bc6f-42b7-8977-499bba865345"/>
            <generalization xmi:id="6e7ad9f9-9d22-4630-ac3a-78e377a57b79" isSubstitutable="true" general="de634767-22fb-4447-ac15-feccd80a8a26"/>
            <interfaceRealization xmi:id="35e7c899-bea6-49a0-a8ab-607fd512fb6f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="fa4789b2-bc6f-42b7-8977-499bba865345" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ae41674a-b919-4e25-a825-e1b4eb685d2e" name="JDialog" clientDependency="2e44462a-9a51-4da7-87ab-a1c6f2ccad2f 5f072f80-565e-43fc-a031-32ab93fc570f 0cc754eb-8c74-4c88-b56e-5e402d8109e7">
            <ownedComment xmi:id="ffa07f2e-7036-4892-964b-63646343d241" body="The main class for creating a dialog window. You can use this class&#xA;to create a custom dialog, or invoke the many class methods&#xA;in {@link JOptionPane} to create a variety of standard dialogs.&#xA;For information about creating dialogs, see&#xA;&lt;em>The Java Tutorial&lt;/em> section&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/dialog.html&quot;>How&#xA;to Make Dialogs&lt;/a>.&#xA;&#xA;&lt;p>&#xA;&#xA;The &lt;code>JDialog&lt;/code> component contains a &lt;code>JRootPane&lt;/code>&#xA;as its only child.&#xA;The &lt;code>contentPane&lt;/code> should be the parent of any children of the&#xA;&lt;code>JDialog&lt;/code>.&#xA;As a conveniance &lt;code>add&lt;/code> and its variants, &lt;code>remove&lt;/code> and&#xA;&lt;code>setLayout&lt;/code> have been overridden to forward to the&#xA;&lt;code>contentPane&lt;/code> as necessary. This means you can write:&#xA;&lt;pre>&#xA;dialog.add(child);&#xA;&lt;/pre>&#xA;And the child will be added to the contentPane.&#xA;The &lt;code>contentPane&lt;/code> is always non-&lt;code>null&lt;/code>.&#xA;Attempting to set it to &lt;code>null&lt;/code> generates an exception.&#xA;The default &lt;code>contentPane&lt;/code> has a &lt;code>BorderLayout&lt;/code>&#xA;manager set on it.&#xA;Refer to {@link javax.swing.RootPaneContainer}&#xA;for details on adding, removing and setting the &lt;code>LayoutManager&lt;/code>&#xA;of a &lt;code>JDialog&lt;/code>.&#xA;&lt;p>&#xA;Please see the &lt;code>JRootPane&lt;/code> documentation for a complete&#xA;description of the &lt;code>contentPane&lt;/code>, &lt;code>glassPane&lt;/code>,&#xA;and &lt;code>layeredPane&lt;/code> components.&#xA;&lt;p>&#xA;In a multi-screen environment, you can create a &lt;code>JDialog&lt;/code>&#xA;on a different screen device than its owner.  See {@link java.awt.Frame} for&#xA;more information.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see JOptionPane&#xA;@see JRootPane&#xA;@see javax.swing.RootPaneContainer&#xA;&#xA;@beaninfo&#xA;attribute: isContainer true&#xA;attribute: containerDelegate getContentPane&#xA;description: A toplevel window for creating dialog boxes.&#xA;&#xA;@version 1.80 12/19/03&#xA;@author David Kloba&#xA;@author James Gosling&#xA;@author Scott Violet&#xA;" annotatedElement="ae41674a-b919-4e25-a825-e1b4eb685d2e"/>
            <generalization xmi:id="df51037c-365a-4c4e-9892-3ef81507e6a4" isSubstitutable="true" general="71118c4b-1846-422b-86d3-bca9c1c356c5"/>
            <interfaceRealization xmi:id="2e44462a-9a51-4da7-87ab-a1c6f2ccad2f" name="" supplier="be64f521-3657-4ad1-9008-a1349d557347" client="ae41674a-b919-4e25-a825-e1b4eb685d2e" contract="be64f521-3657-4ad1-9008-a1349d557347"/>
            <interfaceRealization xmi:id="5f072f80-565e-43fc-a031-32ab93fc570f" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="ae41674a-b919-4e25-a825-e1b4eb685d2e" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <interfaceRealization xmi:id="0cc754eb-8c74-4c88-b56e-5e402d8109e7" name="" supplier="d9dda4f0-9e1c-4afc-a288-475863ddcf1d" client="ae41674a-b919-4e25-a825-e1b4eb685d2e" contract="d9dda4f0-9e1c-4afc-a288-475863ddcf1d"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="f10df392-52a9-41a5-bedb-13bbb0698bfb" name="AccessibleJDialog" visibility="protected">
              <ownedComment xmi:id="e6c1592c-b888-48f1-b791-3e5e8dbb499f" body="This class implements accessibility support for the&#xA;&lt;code>JDialog&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to dialog user-interface&#xA;elements.&#xA;" annotatedElement="f10df392-52a9-41a5-bedb-13bbb0698bfb"/>
              <generalization xmi:id="c31d8526-dd2a-4237-82c7-f66f79862c00" isSubstitutable="true" general="712b03c5-a30e-4548-a571-ce294584564f"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="07efb30b-f3bf-4a82-8804-829b13b9bf19" name="UIDefaults">
            <ownedComment xmi:id="f8524e74-bc18-4ec9-bf52-4884fa57494a" body="A table of defaults for Swing components.  Applications can set/get&#xA;default values via the &lt;code>UIManager&lt;/code>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see UIManager&#xA;@version 1.58 05/05/04&#xA;@author Hans Muller&#xA;" annotatedElement="07efb30b-f3bf-4a82-8804-829b13b9bf19"/>
            <generalization xmi:id="33d7d76c-bc21-4b73-8f22-778a164c3ad8" isSubstitutable="true" general="53c0e7ae-f262-41d7-bd5e-42f186f703f3"/>
            <nestedClassifier xmi:type="uml:Interface" xmi:id="e025314b-92f1-4a6b-9920-077d66f31010" name="LazyValue" isAbstract="true">
              <ownedComment xmi:id="6c9532a9-c328-4527-ac87-f534be71e7f9" body="This class enables one to store an entry in the defaults&#xA;table that isn't constructed until the first time it's&#xA;looked up with one of the &lt;code>getXXX(key)&lt;/code> methods.&#xA;Lazy values are useful for defaults that are expensive&#xA;to construct or are seldom retrieved.  The first time&#xA;a &lt;code>LazyValue&lt;/code> is retrieved its &quot;real value&quot; is computed&#xA;by calling &lt;code>LazyValue.createValue()&lt;/code> and the real&#xA;value is used to replace the &lt;code>LazyValue&lt;/code> in the&#xA;&lt;code>UIDefaults&lt;/code>&#xA;table.  Subsequent lookups for the same key return&#xA;the real value.  Here's an example of a &lt;code>LazyValue&lt;/code>&#xA;that constructs a &lt;code>Border&lt;/code>:&#xA;&lt;pre>&#xA;Object borderLazyValue = new UIDefaults.LazyValue() {&#xA;public Object createValue(UIDefaults table) {&#xA;return new BorderFactory.createLoweredBevelBorder();&#xA;}&#xA;};&#xA;&#xA;uiDefaultsTable.put(&quot;MyBorder&quot;, borderLazyValue);&#xA;&lt;/pre>&#xA;&#xA;@see UIDefaults#get&#xA;" annotatedElement="e025314b-92f1-4a6b-9920-077d66f31010"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Interface" xmi:id="18e3140f-3158-4da9-8be8-5641a2ce9e20" name="ActiveValue" isAbstract="true">
              <ownedComment xmi:id="94b302e4-340b-4ad0-929e-6714f4f7e6ef" body="This class enables one to store an entry in the defaults&#xA;table that's constructed each time it's looked up with one of&#xA;the &lt;code>getXXX(key)&lt;/code> methods. Here's an example of&#xA;an &lt;code>ActiveValue&lt;/code> that constructs a&#xA;&lt;code>DefaultListCellRenderer&lt;/code>:&#xA;&lt;pre>&#xA;Object cellRendererActiveValue = new UIDefaults.ActiveValue() {&#xA;public Object createValue(UIDefaults table) {&#xA;return new DefaultListCellRenderer();&#xA;}&#xA;};&#xA;&#xA;uiDefaultsTable.put(&quot;MyRenderer&quot;, cellRendererActiveValue);&#xA;&lt;/pre>&#xA;&#xA;@see UIDefaults#get&#xA;" annotatedElement="18e3140f-3158-4da9-8be8-5641a2ce9e20"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="2710707a-6cf4-4236-835f-7ceaee8240bf" name="ProxyLazyValue" clientDependency="2d97d7df-f598-4e7f-b185-91fcb749bde7">
              <ownedComment xmi:id="3ac32976-22c5-40ef-b854-3d7935ebb1ae" body="This class provides an implementation of &lt;code>LazyValue&lt;/code>&#xA;which can be&#xA;used to delay loading of the Class for the instance to be created.&#xA;It also avoids creation of an anonymous inner class for the&#xA;&lt;code>LazyValue&lt;/code>&#xA;subclass.  Both of these improve performance at the time that a&#xA;a Look and Feel is loaded, at the cost of a slight performance&#xA;reduction the first time &lt;code>createValue&lt;/code> is called&#xA;(since Reflection APIs are used).&#xA;" annotatedElement="2710707a-6cf4-4236-835f-7ceaee8240bf"/>
              <interfaceRealization xmi:id="2d97d7df-f598-4e7f-b185-91fcb749bde7" name="" supplier="e025314b-92f1-4a6b-9920-077d66f31010" client="2710707a-6cf4-4236-835f-7ceaee8240bf" contract="e025314b-92f1-4a6b-9920-077d66f31010"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="461d805f-e251-41da-a613-82b94de5164a" name="LazyInputMap" clientDependency="e9d485b8-a69f-4232-b5ff-ad0389789863">
              <ownedComment xmi:id="16c431bc-e49e-4558-adbb-b0852f208bcc" body="&lt;code>LazyInputMap&lt;/code> will create a &lt;code>InputMap&lt;/code>&#xA;in its &lt;code>createValue&lt;/code>&#xA;method. The bindings are passed in in the constructor.&#xA;The bindings are an array with&#xA;the even number entries being string &lt;code>KeyStrokes&lt;/code>&#xA;(eg &quot;alt SPACE&quot;) and&#xA;the odd number entries being the value to use in the&#xA;&lt;code>InputMap&lt;/code> (and the key in the &lt;code>ActionMap&lt;/code>).&#xA;" annotatedElement="461d805f-e251-41da-a613-82b94de5164a"/>
              <interfaceRealization xmi:id="e9d485b8-a69f-4232-b5ff-ad0389789863" name="" supplier="e025314b-92f1-4a6b-9920-077d66f31010" client="461d805f-e251-41da-a613-82b94de5164a" contract="e025314b-92f1-4a6b-9920-077d66f31010"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="30da9540-ab62-4dcc-9e33-fb4c1c7029ca" name="JWindow" clientDependency="34d24f82-961e-44b1-b0f4-aa8348f84d18 52f0d56f-ee32-4f5b-bc7b-d8ba195143f3">
            <ownedComment xmi:id="16aff65b-7a10-495a-a76a-56458127cf1f" body="A &lt;code>JWindow&lt;/code> is a container that can be displayed anywhere on the&#xA;user's desktop. It does not have the title bar, window-management buttons,&#xA;or other trimmings associated with a &lt;code>JFrame&lt;/code>, but it is still a&#xA;&quot;first-class citizen&quot; of the user's desktop, and can exist anywhere&#xA;on it.&#xA;&lt;p>&#xA;The &lt;code>JWindow&lt;/code> component contains a &lt;code>JRootPane&lt;/code>&#xA;as its only child.  The &lt;code>contentPane&lt;/code> should be the parent&#xA;of any children of the &lt;code>JWindow&lt;/code>.&#xA;As a conveniance &lt;code>add&lt;/code> and its variants, &lt;code>remove&lt;/code> and&#xA;&lt;code>setLayout&lt;/code> have been overridden to forward to the&#xA;&lt;code>contentPane&lt;/code> as necessary. This means you can write:&#xA;&lt;pre>&#xA;window.add(child);&#xA;&lt;/pre>&#xA;And the child will be added to the contentPane.&#xA;The &lt;code>contentPane&lt;/code> will always be non-&lt;code>null&lt;/code>.&#xA;Attempting to set it to &lt;code>null&lt;/code> will cause the &lt;code>JWindow&lt;/code>&#xA;to throw an exception. The default &lt;code>contentPane&lt;/code> will have a&#xA;&lt;code>BorderLayout&lt;/code> manager set on it.&#xA;Refer to {@link javax.swing.RootPaneContainer}&#xA;for details on adding, removing and setting the &lt;code>LayoutManager&lt;/code>&#xA;of a &lt;code>JWindow&lt;/code>.&#xA;&lt;p>&#xA;Please see the {@link JRootPane} documentation for a complete description of&#xA;the &lt;code>contentPane&lt;/code>, &lt;code>glassPane&lt;/code>, and&#xA;&lt;code>layeredPane&lt;/code> components.&#xA;&lt;p>&#xA;In a multi-screen environment, you can create a &lt;code>JWindow&lt;/code>&#xA;on a different screen device.  See {@link java.awt.Window} for more&#xA;information.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see JRootPane&#xA;&#xA;@beaninfo&#xA;attribute: isContainer true&#xA;attribute: containerDelegate getContentPane&#xA;description: A toplevel window which has no system border or controls.&#xA;&#xA;@version 1.60 12/19/03&#xA;@author David Kloba&#xA;" annotatedElement="30da9540-ab62-4dcc-9e33-fb4c1c7029ca"/>
            <generalization xmi:id="91f6ceb7-ae5e-42c9-a4e9-b50762e0433d" isSubstitutable="true" general="faf9dec5-0a30-4718-8e3b-b6424fcd0d20"/>
            <interfaceRealization xmi:id="52f0d56f-ee32-4f5b-bc7b-d8ba195143f3" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="30da9540-ab62-4dcc-9e33-fb4c1c7029ca" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <interfaceRealization xmi:id="34d24f82-961e-44b1-b0f4-aa8348f84d18" name="" supplier="d9dda4f0-9e1c-4afc-a288-475863ddcf1d" client="30da9540-ab62-4dcc-9e33-fb4c1c7029ca" contract="d9dda4f0-9e1c-4afc-a288-475863ddcf1d"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="83f0cce3-e35d-4dfe-a7b9-40dd79f7eb9e" name="AccessibleJWindow" visibility="protected">
              <ownedComment xmi:id="7708bd1a-1dc0-437f-aef8-112a2772ffd9" body="This class implements accessibility support for the&#xA;&lt;code>JWindow&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to window user-interface&#xA;elements.&#xA;" annotatedElement="83f0cce3-e35d-4dfe-a7b9-40dd79f7eb9e"/>
              <generalization xmi:id="51f1c9fd-bd12-4734-9b2c-cf47fded6a82" isSubstitutable="true" general="d832de57-0f38-42c5-a24f-61a67b23d7e5"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3d9f466c-b273-4a8c-9bf0-2186a13a48d7" name="SpinnerListModel" clientDependency="5832f564-6f1b-436d-bf45-4c0f739b6da0">
            <ownedComment xmi:id="478b0f50-d90d-4ad7-956c-ba9c1bae7e89" body="A simple implementation of &lt;code>SpinnerModel&lt;/code> whose&#xA;values are defined by an array or a &lt;code>List&lt;/code>.&#xA;For example to create a model defined by&#xA;an array of the names of the days of the week:&#xA;&lt;pre>&#xA;String[] days = new DateFormatSymbols().getWeekdays();&#xA;SpinnerModel model = new SpinnerListModel(Arrays.asList(days).subList(1, 8));&#xA;&lt;/pre>&#xA;This class only stores a reference to the array or &lt;code>List&lt;/code>&#xA;so if an element of the underlying sequence changes, it's up&#xA;to the application to notify the &lt;code>ChangeListeners&lt;/code> by calling&#xA;&lt;code>fireStateChanged&lt;/code>.&#xA;&lt;p>&#xA;This model inherits a &lt;code>ChangeListener&lt;/code>.&#xA;The &lt;code>ChangeListener&lt;/code>s are notified whenever the&#xA;model's &lt;code>value&lt;/code> or &lt;code>list&lt;/code> properties changes.&#xA;&#xA;@see JSpinner&#xA;@see SpinnerModel&#xA;@see AbstractSpinnerModel&#xA;@see SpinnerNumberModel&#xA;@see SpinnerDateModel&#xA;&#xA;@version 1.11 05/05/04&#xA;@author Hans Muller&#xA;@since 1.4&#xA;" annotatedElement="3d9f466c-b273-4a8c-9bf0-2186a13a48d7"/>
            <generalization xmi:id="99ed18ad-4bd3-41df-aa2a-b83632bfcd96" isSubstitutable="true" general="de634767-22fb-4447-ac15-feccd80a8a26"/>
            <interfaceRealization xmi:id="5832f564-6f1b-436d-bf45-4c0f739b6da0" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="3d9f466c-b273-4a8c-9bf0-2186a13a48d7" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="eca4cdc4-660c-4a77-9fa2-d075a523ab35" name="JToolBar" clientDependency="6dabb56f-34b8-465e-aab8-b1082437cc7d 43297a47-b492-43a0-9f0b-51da2bb246d7">
            <ownedComment xmi:id="d1c0f9b7-35a3-4a53-947f-6fff6f3eedeb" body="&lt;code>JToolBar&lt;/code> provides a component that is useful for&#xA;displaying commonly used &lt;code>Action&lt;/code>s or controls.&#xA;For examples and information on using tool bars see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/toolbar.html&quot;>How to Use Tool Bars&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&#xA;&lt;p>&#xA;With most look and feels,&#xA;the user can drag out a tool bar into a separate window&#xA;(unless the &lt;code>floatable&lt;/code> property is set to &lt;code>false&lt;/code>).&#xA;For drag-out to work correctly, it is recommended that you add&#xA;&lt;code>JToolBar&lt;/code> instances to one of the four &quot;sides&quot; of a&#xA;container whose layout manager is a &lt;code>BorderLayout&lt;/code>,&#xA;and do not add children to any of the other four &quot;sides&quot;.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer true&#xA;description: A component which displays commonly used controls or Actions.&#xA;&#xA;@version 1.108 02/26/04&#xA;@author Georges Saab&#xA;@author Jeff Shapiro&#xA;@see Action&#xA;" annotatedElement="eca4cdc4-660c-4a77-9fa2-d075a523ab35"/>
            <generalization xmi:id="881a145b-efd1-4e6d-a99f-60f3e03ed62b" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="6dabb56f-34b8-465e-aab8-b1082437cc7d" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="eca4cdc4-660c-4a77-9fa2-d075a523ab35" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
            <interfaceRealization xmi:id="43297a47-b492-43a0-9f0b-51da2bb246d7" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="eca4cdc4-660c-4a77-9fa2-d075a523ab35" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="b9835fdf-2418-4099-a750-eea7ac54414c" name="Separator">
              <ownedComment xmi:id="cc48c56e-25e1-4ae4-a82e-1115b63314de" body="A toolbar-specific separator. An object with dimension but&#xA;no contents used to divide buttons on a tool bar into groups.&#xA;" annotatedElement="b9835fdf-2418-4099-a750-eea7ac54414c"/>
              <generalization xmi:id="bef4f4fe-ced8-470d-87eb-a040316761d0" isSubstitutable="true" general="d44327c5-7f44-4870-87e1-b0c1494ccee6"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="f5b7bf5a-bceb-480a-8cde-9c5b0a68a3d3" name="DefaultToolBarLayout" visibility="private" clientDependency="00fde698-a698-4a94-9be8-2190df7ba0a1 77777bbf-a2af-4aa1-ba7e-493bbf2b09e9 dbf0a179-5f3f-40b5-be6f-2c35f2334a50 1ff2ac2d-d767-449a-88d9-764d042d69ac">
              <interfaceRealization xmi:id="77777bbf-a2af-4aa1-ba7e-493bbf2b09e9" name="" supplier="a42fe497-3d64-40e3-8aae-e48bec8b7d93" client="f5b7bf5a-bceb-480a-8cde-9c5b0a68a3d3" contract="a42fe497-3d64-40e3-8aae-e48bec8b7d93"/>
              <interfaceRealization xmi:id="1ff2ac2d-d767-449a-88d9-764d042d69ac" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f5b7bf5a-bceb-480a-8cde-9c5b0a68a3d3" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="00fde698-a698-4a94-9be8-2190df7ba0a1" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="f5b7bf5a-bceb-480a-8cde-9c5b0a68a3d3" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              <interfaceRealization xmi:id="dbf0a179-5f3f-40b5-be6f-2c35f2334a50" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="f5b7bf5a-bceb-480a-8cde-9c5b0a68a3d3" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="133de7d7-150e-4a51-8928-d3a8281ab68a" name="AccessibleJToolBar" visibility="protected">
              <ownedComment xmi:id="f6fb3060-2579-4409-ab8c-d938ce108159" body="This class implements accessibility support for the&#xA;&lt;code>JToolBar&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to toolbar user-interface elements.&#xA;" annotatedElement="133de7d7-150e-4a51-8928-d3a8281ab68a"/>
              <generalization xmi:id="9faf6111-4293-44fa-a129-dd22ff0b804e" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0df7a8eb-2b43-458c-bfee-2c84a196b79d" name="JToggleButton" clientDependency="c90429f5-c800-474f-bb8d-5ccf266f88ad">
            <ownedComment xmi:id="1fd20855-c7e5-4a44-afd1-cfe247b18b58" body="An implementation of a two-state button.&#xA;The &lt;code>JRadioButton&lt;/code> and &lt;code>JCheckBox&lt;/code> classes&#xA;are subclasses of this class.&#xA;For information on using them see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/button.html&quot;>How to Use Buttons, Check Boxes, and Radio Buttons&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: An implementation of a two-state button.&#xA;&#xA;@see JRadioButton&#xA;@see JCheckBox&#xA;@version 1.59 12/19/03&#xA;@author Jeff Dinkins&#xA;" annotatedElement="0df7a8eb-2b43-458c-bfee-2c84a196b79d"/>
            <generalization xmi:id="ca79faf4-1837-4656-94f5-00f811035ee7" isSubstitutable="true" general="5e46952d-1199-4624-8b80-51b76d0ae441"/>
            <interfaceRealization xmi:id="c90429f5-c800-474f-bb8d-5ccf266f88ad" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="0df7a8eb-2b43-458c-bfee-2c84a196b79d" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="5584affb-a273-4de8-9e52-c2a92a89a234" name="ToggleButtonModel">
              <ownedComment xmi:id="939c60f2-abe1-44cd-8cf7-962ea8e2b9b3" body="The ToggleButton model&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="5584affb-a273-4de8-9e52-c2a92a89a234"/>
              <generalization xmi:id="fb3ce0a9-fc23-4a97-a311-427cb270d7a6" isSubstitutable="true" general="12940c73-f99b-49af-983a-57a4135cb8fb"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="da7ae63b-1d41-416b-b2ba-26253fd43a56" name="AccessibleJToggleButton" visibility="protected" clientDependency="a01dbdcf-e653-405d-a70c-8eda368acc3c">
              <ownedComment xmi:id="a75ec251-3563-4b14-8a47-8be732dc7388" body="This class implements accessibility support for the&#xA;&lt;code>JToggleButton&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to toggle button user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="da7ae63b-1d41-416b-b2ba-26253fd43a56"/>
              <generalization xmi:id="3be0ba17-eea3-4b9d-a0d6-e4a4a2db46c5" isSubstitutable="true" general="fc324df8-f45f-40cb-bb56-c8b492559e6c"/>
              <interfaceRealization xmi:id="a01dbdcf-e653-405d-a70c-8eda368acc3c" name="" supplier="1dd642cc-ad4c-43b8-91c1-a201cb5d8292" client="da7ae63b-1d41-416b-b2ba-26253fd43a56" contract="1dd642cc-ad4c-43b8-91c1-a201cb5d8292"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b66a573b-6db5-46ce-b320-426c81bdfc7b" name="LegacyLayoutFocusTraversalPolicy" visibility="package" isLeaf="true">
            <generalization xmi:id="e6116302-7679-4d85-b13c-e04bb6deeaf8" isSubstitutable="true" general="0c2caf13-98bc-4937-b949-800fd142c2ed"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="a1ad2c61-c036-48cb-85f4-7681cc6ba8fc" name="Scrollable" isAbstract="true">
            <ownedComment xmi:id="31a8c3d7-f422-4586-b4c8-b727fdf47a0e" body="An interface that provides information to a scrolling container&#xA;like JScrollPane.  A complex component that's likely to be used&#xA;as a viewing a JScrollPane viewport (or other scrolling container)&#xA;should implement this interface.&#xA;&#xA;@see JViewport&#xA;@see JScrollPane&#xA;@see JScrollBar&#xA;@version 1.12 12/19/03&#xA;@author Hans Muller&#xA;" annotatedElement="a1ad2c61-c036-48cb-85f4-7681cc6ba8fc"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="126c48e0-ca46-48a6-ad97-51b2fc127d4a" name="JProgressBar" clientDependency="db65ef49-e401-40c9-8236-6c1dd34b5762 877a3947-35a6-4a94-8884-84ac0340950b">
            <ownedComment xmi:id="8084d76a-ba16-4c32-8951-2e2c19008fa4" body="A component that, by default, displays an integer value within a bounded&#xA;interval. A progress bar typically communicates the progress of some&#xA;work by displaying its percentage of completion and possibly a textual&#xA;display of this percentage.&#xA;&#xA;&lt;p>&#xA;&#xA;To indicate that a task of unknown length is executing,&#xA;you can put a progress bar into indeterminate mode.&#xA;While the bar is in indeterminate mode,&#xA;it animates constantly to show that work is occurring.&#xA;As soon as you can determine the task's length and amount of progress,&#xA;you should update the progress bar's value&#xA;and switch it back to determinate mode.&#xA;&#xA;&lt;p>&#xA;&#xA;Here is an example of creating a progress bar,&#xA;where &lt;code>task&lt;/code> is an object&#xA;that returns information about the progress of some work:&#xA;&#xA;&lt;pre>&#xA;progressBar = new JProgressBar(0, task.getLengthOfTask());&#xA;progressBar.setValue(0);&#xA;progressBar.setStringPainted(true);&#xA;&lt;/pre>&#xA;&#xA;Here is an example of updating the value of the progress bar:&#xA;&#xA;&lt;pre>&#xA;progressBar.setValue(task.getCurrent());&#xA;&lt;/pre>&#xA;&#xA;Here is an example of putting a progress bar into&#xA;indeterminate mode,&#xA;and then switching back to determinate mode&#xA;once the length of the task is known:&#xA;&#xA;&lt;pre>&#xA;progressBar = new JProgressBar();&#xA;&lt;em>...//when the task of (initially) unknown length begins:&lt;/em>&#xA;progressBar.setIndeterminate(true);&#xA;&lt;em>...//do some work; get length of task...&lt;/em>&#xA;progressBar.setMaximum(newLength);&#xA;progressBar.setValue(newValue);&#xA;progressBar.setIndeterminate(false);&#xA;&lt;/pre>&#xA;&#xA;&lt;p>&#xA;&#xA;For complete examples and further documentation see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/progress.html&quot; target=&quot;_top&quot;>How to Monitor Progress&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see javax.swing.plaf.basic.BasicProgressBarUI&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A component that displays an integer value.&#xA;&#xA;@version 1.93 12/19/03&#xA;@author Michael C. Albers&#xA;@author Kathy Walrath&#xA;" annotatedElement="126c48e0-ca46-48a6-ad97-51b2fc127d4a"/>
            <generalization xmi:id="15db7ef4-8268-4fca-b198-cdf7eac5ce3f" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="db65ef49-e401-40c9-8236-6c1dd34b5762" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="126c48e0-ca46-48a6-ad97-51b2fc127d4a" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
            <interfaceRealization xmi:id="877a3947-35a6-4a94-8884-84ac0340950b" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="126c48e0-ca46-48a6-ad97-51b2fc127d4a" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="7bccce0e-f562-4050-be67-b0f14ef178ee" name="ModelListener" visibility="private" clientDependency="464d0d90-99b6-4974-ae61-7bb609c967e4 d4d03e45-b130-4063-9f76-c5dc3cd98d51">
              <interfaceRealization xmi:id="464d0d90-99b6-4974-ae61-7bb609c967e4" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="7bccce0e-f562-4050-be67-b0f14ef178ee" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
              <interfaceRealization xmi:id="d4d03e45-b130-4063-9f76-c5dc3cd98d51" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="7bccce0e-f562-4050-be67-b0f14ef178ee" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="4740b828-4d0f-4f0d-8e3b-30df14939e83" name="AccessibleJProgressBar" visibility="protected" clientDependency="0ee0a5c7-7220-4b30-a31f-c2347329754f">
              <ownedComment xmi:id="905297ff-adac-4941-a207-24912701befb" body="This class implements accessibility support for the&#xA;&lt;code>JProgressBar&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to progress bar user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="4740b828-4d0f-4f0d-8e3b-30df14939e83"/>
              <generalization xmi:id="a6835d12-ff15-4966-8b0c-11ab2663759c" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
              <interfaceRealization xmi:id="0ee0a5c7-7220-4b30-a31f-c2347329754f" name="" supplier="48ff1225-61c7-495b-a398-c2903fb1210d" client="4740b828-4d0f-4f0d-8e3b-30df14939e83" contract="48ff1225-61c7-495b-a398-c2903fb1210d"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="84b6182e-a7e5-450c-afb2-bb2bf1febad1" name="SpringLayout" clientDependency="55c34a24-d0eb-4a23-a679-525cfff238dd">
            <ownedComment xmi:id="3aee883c-e53e-4488-9e82-f561d9696c6e" body="A &lt;code>SpringLayout&lt;/code> lays out the children of its associated container&#xA;according to a set of constraints.&#xA;See &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/layout/spring.html&quot;>How to Use SpringLayout&lt;/a>&#xA;in &lt;em>The Java Tutorial&lt;/em> for examples of using&#xA;&lt;code>SpringLayout&lt;/code>.&#xA;&#xA;&lt;p>&#xA;Each constraint,&#xA;represented by a &lt;code>Spring&lt;/code> object,&#xA;controls the vertical or horizontal distance&#xA;between two component edges.&#xA;The edges can belong to&#xA;any child of the container,&#xA;or to the container itself.&#xA;For example,&#xA;the allowable width of a component&#xA;can be expressed using a constraint&#xA;that controls the distance between the west (left) and east (right)&#xA;edges of the component.&#xA;The allowable &lt;em>y&lt;/em> coordinates for a component&#xA;can be expressed by constraining the distance between&#xA;the north (top) edge of the component&#xA;and the north edge of its container.&#xA;&#xA;&lt;P>&#xA;Every child of a &lt;code>SpringLayout&lt;/code>-controlled container,&#xA;as well as the container itself,&#xA;has exactly one set of constraints&#xA;associated with it.&#xA;These constraints are represented by&#xA;a &lt;code>SpringLayout.Constraints&lt;/code> object.&#xA;By default,&#xA;&lt;code>SpringLayout&lt;/code> creates constraints&#xA;that make their associated component&#xA;have the minimum, preferred, and maximum sizes&#xA;returned by the component's&#xA;{@link java.awt.Component#getMinimumSize},&#xA;{@link java.awt.Component#getPreferredSize}, and&#xA;{@link java.awt.Component#getMaximumSize}&#xA;methods. The &lt;em>x&lt;/em> and &lt;em>y&lt;/em> positions are initially not&#xA;constrained, so that until you constrain them the &lt;code>Component&lt;/code>&#xA;will be positioned at 0,0 relative to the &lt;code>Insets&lt;/code> of the&#xA;parent &lt;code>Container&lt;/code>.&#xA;&#xA;&lt;p>&#xA;You can change&#xA;a component's constraints in several ways.&#xA;You can&#xA;use one of the&#xA;{@link #putConstraint putConstraint}&#xA;methods&#xA;to establish a spring&#xA;linking the edges of two components within the same container.&#xA;Or you can get the appropriate &lt;code>SpringLayout.Constraints&lt;/code>&#xA;object using&#xA;{@link #getConstraints getConstraints}&#xA;and then modify one or more of its springs.&#xA;Or you can get the spring for a particular edge of a component&#xA;using {@link #getConstraint getConstraint},&#xA;and modify it.&#xA;You can also associate&#xA;your own &lt;code>SpringLayout.Constraints&lt;/code> object&#xA;with a component by specifying the constraints object&#xA;when you add the component to its container&#xA;(using&#xA;{@link Container#add(Component, Object)}).&#xA;&#xA;&lt;p>&#xA;The &lt;code>Spring&lt;/code> object representing each constraint&#xA;has a minimum, preferred, maximum, and current value.&#xA;The current value of the spring&#xA;is somewhere between the minimum and maximum values,&#xA;according to the formula given in the&#xA;{@link Spring#sum} method description.&#xA;When the minimum, preferred, and maximum values are the same,&#xA;the current value is always equal to them;&#xA;this inflexible spring is called a &lt;em>strut&lt;/em>.&#xA;You can create struts using the factory method&#xA;{@link Spring#constant(int)}.&#xA;The &lt;code>Spring&lt;/code> class also provides factory methods&#xA;for creating other kinds of springs,&#xA;including springs that depend on other springs.&#xA;&#xA;&lt;p>&#xA;In a &lt;code>SpringLayout&lt;/code>, the position of each edge is dependent on&#xA;the position of just one other edge. If a constraint is subsequently added&#xA;to create a new binding for an edge, the previous binding is discarded&#xA;and the edge remains dependent on a single edge.&#xA;Springs should only be attached&#xA;between edges of the container and its immediate children; the behavior&#xA;of the &lt;code>SpringLayout&lt;/code> when presented with constraints linking&#xA;the edges of components from different containers (either internal or&#xA;external) is undefined.&#xA;&#xA;&lt;h3>&#xA;SpringLayout vs. Other Layout Managers&#xA;&lt;/h3>&#xA;&#xA;&lt;blockquote>&#xA;&lt;hr>&#xA;&lt;strong>Note:&lt;/strong>&#xA;Unlike many layout managers,&#xA;&lt;code>SpringLayout&lt;/code> doesn't automatically set the location of&#xA;the components it manages.&#xA;If you hand-code a GUI that uses &lt;code>SpringLayout&lt;/code>,&#xA;remember to initialize component locations by constraining the west/east&#xA;and north/south locations.&#xA;&lt;p>&#xA;Depending on the constraints you use,&#xA;you may also need to set the size of the container explicitly.&#xA;&lt;hr>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;Despite the simplicity of &lt;code>SpringLayout&lt;/code>,&#xA;it can emulate the behavior of most other layout managers.&#xA;For some features,&#xA;such as the line breaking provided by &lt;code>FlowLayout&lt;/code>,&#xA;you'll need to&#xA;create a special-purpose subclass of the &lt;code>Spring&lt;/code> class.&#xA;&#xA;&lt;p>&#xA;&lt;code>SpringLayout&lt;/code> also provides a way to solve&#xA;many of the difficult layout&#xA;problems that cannot be solved by nesting combinations&#xA;of &lt;code>Box&lt;/code>es. That said, &lt;code>SpringLayout&lt;/code> honors the&#xA;&lt;code>LayoutManager2&lt;/code> contract correctly and so can be nested with&#xA;other layout managers -- a technique that can be preferable to&#xA;creating the constraints implied by the other layout managers.&#xA;&lt;p>&#xA;The asymptotic complexity of the layout operation of a &lt;code>SpringLayout&lt;/code>&#xA;is linear in the number of constraints (and/or components).&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see Spring&#xA;@see SpringLayout.Constraints&#xA;&#xA;@version  1.19 12/19/03&#xA;@author &#x9;Philip Milne&#xA;@author &#x9;Joe Winchester&#xA;@since       1.4&#xA;" annotatedElement="84b6182e-a7e5-450c-afb2-bb2bf1febad1"/>
            <interfaceRealization xmi:id="55c34a24-d0eb-4a23-a679-525cfff238dd" name="" supplier="a42fe497-3d64-40e3-8aae-e48bec8b7d93" client="84b6182e-a7e5-450c-afb2-bb2bf1febad1" contract="a42fe497-3d64-40e3-8aae-e48bec8b7d93"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="a9db9785-d010-4067-a616-b26f330b06f5" name="Constraints">
              <ownedComment xmi:id="27332609-2aeb-41e2-8566-d9a54f919742" body="A &lt;code>Constraints&lt;/code> object holds the&#xA;constraints that govern the way a component's size and position&#xA;change in a container controlled by a &lt;code>SpringLayout&lt;/code>.&#xA;A &lt;code>Constraints&lt;/code> object is&#xA;like a &lt;code>Rectangle&lt;/code>, in that it&#xA;has &lt;code>x&lt;/code>, &lt;code>y&lt;/code>,&#xA;&lt;code>width&lt;/code>, and &lt;code>height&lt;/code> properties.&#xA;In the &lt;code>Constraints&lt;/code> object, however,&#xA;these properties have&#xA;&lt;code>Spring&lt;/code> values instead of integers.&#xA;In addition,&#xA;a &lt;code>Constraints&lt;/code> object&#xA;can be manipulated as four edges&#xA;-- north, south, east, and west --&#xA;using the &lt;code>constraint&lt;/code> property.&#xA;&#xA;&lt;p>&#xA;The following formulas are always true&#xA;for a &lt;code>Constraints&lt;/code> object:&#xA;&#xA;&lt;pre>&#xA;west = x&#xA;north = y&#xA;east = x + width&#xA;south = y + height&lt;/pre>&#xA;&#xA;&lt;b>Note&lt;/b>: In this document,&#xA;operators represent methods&#xA;in the &lt;code>Spring&lt;/code> class.&#xA;For example, &quot;a + b&quot; is equal to&#xA;&lt;code>Spring.sum(a, b)&lt;/code>,&#xA;and &quot;a - b&quot; is equal to&#xA;&lt;code>Spring.sum(a, Spring.minus(b))&lt;/code>.&#xA;See the&#xA;{@link Spring Spring&lt;/code> API documentation&lt;code>}&#xA;for further details&#xA;of spring arithmetic.&#xA;&#xA;&lt;p>&#xA;&#xA;Because a &lt;code>Constraints&lt;/code> object's properties --&#xA;representing its edges, size, and location -- can all be set&#xA;independently and yet are interrelated,&#xA;the object can become &lt;em>over-constrained&lt;/em>.&#xA;For example,&#xA;if both the &lt;code>x&lt;/code> and &lt;code>width&lt;/code>&#xA;properties are set&#xA;and then the east edge is set,&#xA;the object is over-constrained horizontally.&#xA;When this happens, one of the values&#xA;(in this case, the &lt;code>x&lt;/code> property)&#xA;automatically changes so&#xA;that the formulas still hold.&#xA;&#xA;&lt;p>&#xA;The following table shows which value changes&#xA;when a &lt;code>Constraints&lt;/code> object&#xA;is over-constrained horizontally.&#xA;&#xA;&lt;p>&#xA;&#xA;&lt;table border=1 summary=&quot;Shows which value changes when a Constraints object is over-constrained horizontally&quot;>&#xA;&lt;tr>&#xA;&lt;th valign=top>Value Being Set&lt;br>(method used)&lt;/th>&#xA;&lt;th valign=top>Result When Over-Constrained Horizontally&lt;br>&#xA;(&lt;code>x&lt;/code>, &lt;code>width&lt;/code>, and the east edge are all non-&lt;code>null&lt;/code>)&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>x&lt;/code> or the west edge &lt;br>(&lt;code>setX&lt;/code> or &lt;code>setConstraint&lt;/code>)&lt;/td>&#xA;&lt;td>&lt;code>width&lt;/code> value is automatically set to &lt;code>east - x&lt;/code>.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>width&lt;/code>&lt;br>(&lt;code>setWidth&lt;/code>)&lt;/td>&#xA;&lt;td>east edge's value is automatically set to &lt;code>x + width&lt;/code>.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>east edge&lt;br>(&lt;code>setConstraint&lt;/code>)&lt;/td>&#xA;&lt;td>&lt;code>x&lt;/code> value is automatically set to &lt;code>east - width&lt;/code>.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&#xA;&lt;p>&#xA;The rules for the vertical properties are similar:&#xA;&lt;p>&#xA;&#xA;&lt;table border=1 summary=&quot;Shows which value changes when a Constraints object is over-constrained vertically&quot;>&#xA;&lt;tr>&#xA;&lt;th valign=top>Value Being Set&lt;br>(method used)&lt;/th>&#xA;&lt;th valign=top>Result When Over-Constrained Vertically&lt;br>(&lt;code>y&lt;/code>, &lt;code>height&lt;/code>, and the south edge are all non-&lt;code>null&lt;/code>)&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>y&lt;/code> or the north edge&lt;br>(&lt;code>setY&lt;/code> or &lt;code>setConstraint&lt;/code>)&lt;/td>&#xA;&lt;td>&lt;code>height&lt;/code> value is automatically set to &lt;code>south - y&lt;/code>.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>height&lt;/code>&lt;br>(&lt;code>setHeight&lt;/code>)&lt;/td>&#xA;&lt;td>south edge's value is automatically set to &lt;code>y + height&lt;/code>.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>south edge&lt;br>(&lt;code>setConstraint&lt;/code>)&lt;/td>&#xA;&lt;td>&lt;code>y&lt;/code> value is automatically set to &lt;code>south - height&lt;/code>.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&#xA;" annotatedElement="a9db9785-d010-4067-a616-b26f330b06f5"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="615ba793-ba29-4fed-9c6c-406063ed8a40" name="SpringProxy" visibility="private">
              <generalization xmi:id="fd776354-6610-4440-9be2-91bfe52cab92" isSubstitutable="true" general="e9955e3b-d75a-4378-bf2c-be63e4f5387d"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="85cecf0a-5bba-4426-97a1-08bb0efcd269" name="PopupFactory">
            <ownedComment xmi:id="e4674dff-2aad-4519-825f-1818a4c7f510" body="&lt;code>PopupFactory&lt;/code>, as the name implies, is used to obtain&#xA;instances of &lt;code>Popup&lt;/code>s. &lt;code>Popup&lt;/code>s are used to&#xA;display a &lt;code>Component&lt;/code> above all other &lt;code>Component&lt;/code>s&#xA;in a particular containment hierarchy. The general contract is that&#xA;once you have obtained a &lt;code>Popup&lt;/code> from a&#xA;&lt;code>PopupFactory&lt;/code>, you must invoke &lt;code>hide&lt;/code> on the&#xA;&lt;code>Popup&lt;/code>. The typical usage is:&#xA;&lt;pre>&#xA;PopupFactory factory = PopupFactory.getSharedInstance();&#xA;Popup popup = factory.getPopup(owner, contents, x, y);&#xA;popup.show();&#xA;...&#xA;popup.hide();&#xA;&lt;/pre>&#xA;&#xA;@see Popup&#xA;&#xA;@version 1.24 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="85cecf0a-5bba-4426-97a1-08bb0efcd269"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="4064d79e-3737-41c6-9508-705115840f93" name="HeavyWeightPopup" visibility="private">
              <ownedComment xmi:id="c7e10246-1fb7-4fa0-9b04-f86ec4449549" body="Popup implementation that uses a Window as the popup.&#xA;" annotatedElement="4064d79e-3737-41c6-9508-705115840f93"/>
              <generalization xmi:id="c502bc15-81c7-4e1f-92a3-60209ff7aeb1" isSubstitutable="true" general="995cfabc-c381-4f1a-9b4a-0e362042ced3"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="9ca79552-cd13-47e3-844d-3e27a66c322a" name="ContainerPopup" visibility="private">
              <ownedComment xmi:id="3a29446b-8d26-42a6-a28d-304d3a905a14" body="ContainerPopup consolidates the common code used in the light/medium&#xA;weight implementations of &lt;code>Popup&lt;/code>.&#xA;" annotatedElement="9ca79552-cd13-47e3-844d-3e27a66c322a"/>
              <generalization xmi:id="1e07f957-00c4-4200-a029-fcc13228d7f1" isSubstitutable="true" general="995cfabc-c381-4f1a-9b4a-0e362042ced3"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="dc100b01-83ea-49ff-8ee8-08a4b3dba5f3" name="HeadlessPopup" visibility="private">
              <ownedComment xmi:id="cb0e9557-527e-4150-b814-b0ffb4366788" body="Popup implementation that is used in headless environment.&#xA;" annotatedElement="dc100b01-83ea-49ff-8ee8-08a4b3dba5f3"/>
              <generalization xmi:id="a9741fe4-2e83-4e05-893b-79637c007f51" isSubstitutable="true" general="9ca79552-cd13-47e3-844d-3e27a66c322a"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="60f9fb76-6b76-45d5-bc19-66684c5931c4" name="LightWeightPopup" visibility="private">
              <ownedComment xmi:id="45e250db-4338-4e3f-9277-f6eaf196a15f" body="Popup implementation that uses a JPanel as the popup.&#xA;" annotatedElement="60f9fb76-6b76-45d5-bc19-66684c5931c4"/>
              <generalization xmi:id="205d7a5a-b72d-4b44-b042-28f41be4fe6d" isSubstitutable="true" general="9ca79552-cd13-47e3-844d-3e27a66c322a"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="f9f91725-6590-4476-90a3-c115e4de5451" name="MediumWeightPopup" visibility="private">
              <ownedComment xmi:id="8ab419c1-123d-4614-ac23-abf8729209e8" body="Popup implementation that uses a Panel as the popup.&#xA;" annotatedElement="f9f91725-6590-4476-90a3-c115e4de5451"/>
              <generalization xmi:id="cea80053-82d8-4692-885a-c23e7a2afec1" isSubstitutable="true" general="9ca79552-cd13-47e3-844d-3e27a66c322a"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e131dd1e-a31f-46b3-b17a-dbea36a4bcee" name="JSpinner" clientDependency="30c450bf-b77c-4d97-8db8-05a378bd1ecf">
            <ownedComment xmi:id="94d22fd2-9025-46ad-927f-285906102577" body="A single line input field that lets the user select a&#xA;number or an object value from an ordered sequence. Spinners typically&#xA;provide a pair of tiny arrow buttons for stepping through the elements&#xA;of the sequence. The keyboard up/down arrow keys also cycle through the&#xA;elements. The user may also be allowed to type a (legal) value directly&#xA;into the spinner. Although combo boxes provide similar functionality,&#xA;spinners are sometimes preferred because they don't require a drop down list&#xA;that can obscure important data.&#xA;&lt;p>&#xA;A &lt;code>JSpinner&lt;/code>'s sequence value is defined by its&#xA;&lt;code>SpinnerModel&lt;/code>.&#xA;The &lt;code>model&lt;/code> can be specified as a constructor argument and&#xA;changed with the &lt;code>model&lt;/code> property.  &lt;code>SpinnerModel&lt;/code>&#xA;classes for some common types are provided: &lt;code>SpinnerListModel&lt;/code>,&#xA;&lt;code>SpinnerNumberModel&lt;/code>, and &lt;code>SpinnerDateModel&lt;/code>.&#xA;&lt;p>&#xA;A &lt;code>JSpinner&lt;/code> has a single child component that's&#xA;responsible for displaying&#xA;and potentially changing the current element or &lt;i>value&lt;/i> of&#xA;the model, which is called the &lt;code>editor&lt;/code>.  The editor is created&#xA;by the &lt;code>JSpinner&lt;/code>'s constructor and can be changed with the&#xA;&lt;code>editor&lt;/code> property.  The &lt;code>JSpinner&lt;/code>'s editor stays&#xA;in sync with the model by listening for &lt;code>ChangeEvent&lt;/code>s. If the&#xA;user has changed the value displayed by the &lt;code>editor&lt;/code> it is&#xA;possible for the &lt;code>model&lt;/code>'s value to differ from that of&#xA;the &lt;code>editor&lt;/code>. To make sure the &lt;code>model&lt;/code> has the same&#xA;value as the editor use the &lt;code>commitEdit&lt;/code> method, eg:&#xA;&lt;pre>&#xA;try {&#xA;spinner.commitEdit();&#xA;}&#xA;catch (ParseException pe) {{&#xA;Edited value is invalid, spinner.getValue() will return&#xA;the last valid value, you could revert the spinner to show that:&#xA;JComponent editor = spinner.getEditor()&#xA;if (editor instanceof DefaultEditor) {&#xA;((DefaultEditor)editor).getTextField().setValue(spinner.getValue();&#xA;}&#xA;reset the value to some known value:&#xA;spinner.setValue(fallbackValue);&#xA;or treat the last valid value as the current, in which&#xA;case you don't need to do anything.&#xA;}&#xA;return spinner.getValue();&#xA;&lt;/pre>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A single line input field that lets the user select a&#xA;number or an object value from an ordered set.&#xA;&#xA;@see SpinnerModel&#xA;@see AbstractSpinnerModel&#xA;@see SpinnerListModel&#xA;@see SpinnerNumberModel&#xA;@see SpinnerDateModel&#xA;@see JFormattedTextField&#xA;&#xA;@version 1.38 05/12/04&#xA;@author Hans Muller&#xA;@author Lynn Monsanto (accessibility)&#xA;@since 1.4&#xA;" annotatedElement="e131dd1e-a31f-46b3-b17a-dbea36a4bcee"/>
            <generalization xmi:id="9a6a24ba-ba93-4a56-9447-e70dcbc9560b" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="30c450bf-b77c-4d97-8db8-05a378bd1ecf" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="e131dd1e-a31f-46b3-b17a-dbea36a4bcee" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="4d26519f-5502-45d5-9812-db2c31510406" name="ModelListener" visibility="private" clientDependency="8e24ab7a-ab91-45f2-849c-75785a29443e 1bb03b7a-18c0-4ea3-a9c5-facd0341fa36">
              <ownedComment xmi:id="805f55a4-22e2-486e-83c7-650552074d0f" body="We pass &lt;code>Change&lt;/code> events along to the listeners with the&#xA;the slider (instead of the model itself) as the event source.&#xA;" annotatedElement="4d26519f-5502-45d5-9812-db2c31510406"/>
              <interfaceRealization xmi:id="8e24ab7a-ab91-45f2-849c-75785a29443e" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="4d26519f-5502-45d5-9812-db2c31510406" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
              <interfaceRealization xmi:id="1bb03b7a-18c0-4ea3-a9c5-facd0341fa36" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4d26519f-5502-45d5-9812-db2c31510406" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="94af1e71-6895-4046-bc87-bcd79ac29fda" name="DefaultEditor" clientDependency="e43a7e2d-360b-44b4-b867-a90b1b351d95 1c0f9eb1-889d-4b9f-885c-23e846f381ee c53ea59f-7bab-4431-973d-5ff3cb46ab32">
              <ownedComment xmi:id="ad8385e2-19e9-4ace-b768-2872d6392a44" body="A simple base class for more specialized editors&#xA;that displays a read-only view of the model's current&#xA;value with a &lt;code>JFormattedTextField&lt;code>.  Subclasses&#xA;can configure the &lt;code>JFormattedTextField&lt;code> to create&#xA;an editor that's appropriate for the type of model they&#xA;support and they may want to override&#xA;the &lt;code>stateChanged&lt;/code> and &lt;code>propertyChanged&lt;/code>&#xA;methods, which keep the model and the text field in sync.&#xA;&lt;p>&#xA;This class defines a &lt;code>dismiss&lt;/code> method that removes the&#xA;editors &lt;code>ChangeListener&lt;/code> from the &lt;code>JSpinner&lt;/code>&#xA;that it's part of.   The &lt;code>setEditor&lt;/code> method knows about&#xA;&lt;code>DefaultEditor.dismiss&lt;/code>, so if the developer&#xA;replaces an editor that's derived from &lt;code>JSpinner.DefaultEditor&lt;/code>&#xA;its &lt;code>ChangeListener&lt;/code> connection back to the&#xA;&lt;code>JSpinner&lt;/code> will be removed.  However after that,&#xA;it's up to the developer to manage their editor listeners.&#xA;Similarly, if a subclass overrides &lt;code>createEditor&lt;/code>,&#xA;it's up to the subclasser to deal with their editor&#xA;subsequently being replaced (with &lt;code>setEditor&lt;/code>).&#xA;We expect that in most cases, and in editor installed&#xA;with &lt;code>setEditor&lt;/code> or created by a &lt;code>createEditor&lt;/code>&#xA;override, will not be replaced anyway.&#xA;&lt;p>&#xA;This class is the &lt;code>LayoutManager&lt;code> for it's single&#xA;&lt;code>JFormattedTextField&lt;/code> child.   By default the&#xA;child is just centered with the parents insets.&#xA;" annotatedElement="94af1e71-6895-4046-bc87-bcd79ac29fda"/>
              <generalization xmi:id="b9a983f5-7e7d-4463-ab58-654bd7caf99c" isSubstitutable="true" general="18cb35a3-9f9e-4251-ba29-48407f975f19"/>
              <interfaceRealization xmi:id="e43a7e2d-360b-44b4-b867-a90b1b351d95" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="94af1e71-6895-4046-bc87-bcd79ac29fda" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
              <interfaceRealization xmi:id="1c0f9eb1-889d-4b9f-885c-23e846f381ee" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="94af1e71-6895-4046-bc87-bcd79ac29fda" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              <interfaceRealization xmi:id="c53ea59f-7bab-4431-973d-5ff3cb46ab32" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="94af1e71-6895-4046-bc87-bcd79ac29fda" contract="c3507179-c29c-40a9-8869-092757900e53"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="bf5d8840-2279-4b18-a32a-47c6bae30e66" name="DateEditorFormatter" visibility="private">
              <ownedComment xmi:id="f9d4eeeb-b534-49f4-ad56-ba3505b026c5" body="This subclass of javax.swing.DateFormatter maps the minimum/maximum&#xA;properties to te start/end properties of a SpinnerDateModel.&#xA;" annotatedElement="bf5d8840-2279-4b18-a32a-47c6bae30e66"/>
              <generalization xmi:id="f6e0688b-422e-4e79-b9b6-51626b636abe" isSubstitutable="true" general="41880b03-9d0b-427d-8989-efd10e1e295a"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="96d5bf42-e85e-416f-8cba-e70f9d0d8c89" name="DateEditor">
              <ownedComment xmi:id="f51abf46-cb07-469a-9419-c364d6734310" body="An editor for a &lt;code>JSpinner&lt;/code> whose model is a&#xA;&lt;code>SpinnerDateModel&lt;/code>.  The value of the editor is&#xA;displayed with a &lt;code>JFormattedTextField&lt;/code> whose format&#xA;is defined by a &lt;code>DateFormatter&lt;/code> instance whose&#xA;&lt;code>minimum&lt;/code> and &lt;code>maximum&lt;/code> properties&#xA;are mapped to the &lt;code>SpinnerDateModel&lt;/code>.&#xA;" annotatedElement="96d5bf42-e85e-416f-8cba-e70f9d0d8c89"/>
              <generalization xmi:id="cf8f19e0-9c72-4062-becf-7e67c4a57159" isSubstitutable="true" general="94af1e71-6895-4046-bc87-bcd79ac29fda"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="862958da-25e1-4cd1-8610-6e60d7ee2a52" name="NumberEditorFormatter" visibility="private">
              <ownedComment xmi:id="c9ef43d6-6cbb-4fc0-9c1f-cafc15a8dfa4" body="This subclass of javax.swing.NumberFormatter maps the minimum/maximum&#xA;properties to a SpinnerNumberModel and initializes the valueClass&#xA;of the NumberFormatter to match the type of the initial models value.&#xA;" annotatedElement="862958da-25e1-4cd1-8610-6e60d7ee2a52"/>
              <generalization xmi:id="873fd7e9-5d4b-40ed-8c1c-529f8a9b5681" isSubstitutable="true" general="29680b8c-6cbf-4327-89c3-399a8050d607"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="9727c9c6-0a58-4a48-9bdd-57051eb407e5" name="NumberEditor">
              <ownedComment xmi:id="6999e37c-02b3-4124-b646-e54731d87b18" body="An editor for a &lt;code>JSpinner&lt;/code> whose model is a&#xA;&lt;code>SpinnerNumberModel&lt;/code>.  The value of the editor is&#xA;displayed with a &lt;code>JFormattedTextField&lt;/code> whose format&#xA;is defined by a &lt;code>NumberFormatter&lt;/code> instance whose&#xA;&lt;code>minimum&lt;/code> and &lt;code>maximum&lt;/code> properties&#xA;are mapped to the &lt;code>SpinnerNumberModel&lt;/code>.&#xA;" annotatedElement="9727c9c6-0a58-4a48-9bdd-57051eb407e5"/>
              <generalization xmi:id="47acd31b-8c33-4d79-97cf-e755d4ec83f3" isSubstitutable="true" general="94af1e71-6895-4046-bc87-bcd79ac29fda"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="708c27dd-bef3-4c8c-aad3-522698cdccd9" name="ListEditor">
              <ownedComment xmi:id="6728580c-c634-4617-8625-45aecb2e2846" body="An editor for a &lt;code>JSpinner&lt;/code> whose model is a&#xA;&lt;code>SpinnerListModel&lt;/code>.&#xA;" annotatedElement="708c27dd-bef3-4c8c-aad3-522698cdccd9"/>
              <generalization xmi:id="ba6079ba-25dc-43da-bcea-2d270c9302ec" isSubstitutable="true" general="94af1e71-6895-4046-bc87-bcd79ac29fda"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="e7e10d5f-ff7e-495c-9396-86a32a61c8ab" name="ListFormatter" visibility="private">
                <ownedComment xmi:id="63e417fd-5e5e-4055-a137-592545bb590c" body="ListFormatter provides completion while text is being input&#xA;into the JFormattedTextField. Completion is only done if the&#xA;user is inserting text at the end of the document. Completion&#xA;is done by way of the SpinnerListModel method findNextMatch.&#xA;" annotatedElement="e7e10d5f-ff7e-495c-9396-86a32a61c8ab"/>
                <generalization xmi:id="97859729-ca19-43ac-b564-5aaf45cc644b" isSubstitutable="true" general="eab6c93c-ab8c-436f-b98f-fc1a232f0ca5"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="4685df0e-5e23-403b-9c45-fe07873a9e09" name="Filter" visibility="private">
                  <generalization xmi:id="41ea421f-c88a-4338-b1e7-f1db269db943" isSubstitutable="true" general="67c81813-bb1a-4cec-b3e2-099e14a823af"/>
                </nestedClassifier>
              </nestedClassifier>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="738d4076-88fb-4a48-997c-9cddd60bf217" name="DisabledAction" visibility="private" clientDependency="331731d0-d7c5-4554-a8fb-f261f71d3ac5">
              <ownedComment xmi:id="97c03207-40b2-4349-a313-fce69e92b377" body="An Action implementation that is always disabled.&#xA;" annotatedElement="738d4076-88fb-4a48-997c-9cddd60bf217"/>
              <interfaceRealization xmi:id="331731d0-d7c5-4554-a8fb-f261f71d3ac5" name="" supplier="463f6495-d475-4ff3-9983-0e53f95e8741" client="738d4076-88fb-4a48-997c-9cddd60bf217" contract="463f6495-d475-4ff3-9983-0e53f95e8741"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ab8a23f0-d2cb-47e1-948c-d9b986fe1e11" name="AccessibleJSpinner" visibility="protected" clientDependency="ffc24ee7-5165-45bf-a7df-50f0079d5682 0f75850b-3b1d-486d-a53b-3efcecfd1e8f 7c7de56b-2b2a-42f2-871d-fc0575bd1459 c27bbade-b184-4a26-94fc-c68eefab6700 d4c05003-ad98-4ed3-acfd-d129f00e5285">
              <ownedComment xmi:id="660e2ab8-da49-4d8a-82dd-830853c32dbe" body="&lt;code>AccessibleJSpinner&lt;/code> implements accessibility&#xA;support for the &lt;code>JSpinner&lt;/code> class.&#xA;@since 1.5&#xA;" annotatedElement="ab8a23f0-d2cb-47e1-948c-d9b986fe1e11"/>
              <generalization xmi:id="d90377fb-8615-42ea-bb3b-18525d1a0b1b" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
              <interfaceRealization xmi:id="d4c05003-ad98-4ed3-acfd-d129f00e5285" name="" supplier="48ff1225-61c7-495b-a398-c2903fb1210d" client="ab8a23f0-d2cb-47e1-948c-d9b986fe1e11" contract="48ff1225-61c7-495b-a398-c2903fb1210d"/>
              <interfaceRealization xmi:id="ffc24ee7-5165-45bf-a7df-50f0079d5682" name="" supplier="1f04210f-dd56-4dbb-861c-7a19813caf4c" client="ab8a23f0-d2cb-47e1-948c-d9b986fe1e11" contract="1f04210f-dd56-4dbb-861c-7a19813caf4c"/>
              <interfaceRealization xmi:id="c27bbade-b184-4a26-94fc-c68eefab6700" name="" supplier="a6772e39-fecf-4aaa-b8ba-55f63854a725" client="ab8a23f0-d2cb-47e1-948c-d9b986fe1e11" contract="a6772e39-fecf-4aaa-b8ba-55f63854a725"/>
              <interfaceRealization xmi:id="0f75850b-3b1d-486d-a53b-3efcecfd1e8f" name="" supplier="7034cc41-9451-4071-87c2-4464e57a3c99" client="ab8a23f0-d2cb-47e1-948c-d9b986fe1e11" contract="7034cc41-9451-4071-87c2-4464e57a3c99"/>
              <interfaceRealization xmi:id="7c7de56b-2b2a-42f2-871d-fc0575bd1459" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="ab8a23f0-d2cb-47e1-948c-d9b986fe1e11" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="c7489762-edd1-447d-b912-8ed599802800" name="DefaultBoundedRangeModel" clientDependency="560e6343-becf-4e93-95a1-32b1002d490d c8c6942a-ea75-4ec5-bcef-e22a35764b70">
            <ownedComment xmi:id="c9514568-096f-445f-9c95-d17da9ab1cdb" body="A generic implementation of BoundedRangeModel.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.46 05/05/04&#xA;@author David Kloba&#xA;@author Hans Muller&#xA;@see BoundedRangeModel&#xA;" annotatedElement="c7489762-edd1-447d-b912-8ed599802800"/>
            <interfaceRealization xmi:id="560e6343-becf-4e93-95a1-32b1002d490d" name="" supplier="1d296297-48b4-43e4-a988-0ace4e4c3e98" client="c7489762-edd1-447d-b912-8ed599802800" contract="1d296297-48b4-43e4-a988-0ace4e4c3e98"/>
            <interfaceRealization xmi:id="c8c6942a-ea75-4ec5-bcef-e22a35764b70" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="c7489762-edd1-447d-b912-8ed599802800" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8cf5bc32-a3b1-4981-bc71-7af4f2144124" name="AbstractListModel" clientDependency="b180f6dc-7d15-4b94-b84e-282cb6670152 af891c4b-8628-4334-b02c-08af7035fe8d" isAbstract="true">
            <ownedComment xmi:id="eb72be57-0e70-415a-9fbb-e29d9152a641" body="The abstract definition for the data model that provides&#xA;a &lt;code>List&lt;/code> with its contents.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.34 05/05/04&#xA;@author Hans Muller&#xA;" annotatedElement="8cf5bc32-a3b1-4981-bc71-7af4f2144124"/>
            <interfaceRealization xmi:id="b180f6dc-7d15-4b94-b84e-282cb6670152" name="" supplier="51e5a92e-9f51-44ce-9b72-74f997d3869e" client="8cf5bc32-a3b1-4981-bc71-7af4f2144124" contract="51e5a92e-9f51-44ce-9b72-74f997d3869e"/>
            <interfaceRealization xmi:id="af891c4b-8628-4334-b02c-08af7035fe8d" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="8cf5bc32-a3b1-4981-bc71-7af4f2144124" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="de6cdb33-0a16-47b4-939d-325aedf18238" name="MenuElement" isAbstract="true">
            <ownedComment xmi:id="397e1c6d-fa0b-41f8-b6d9-8fed6f091e84" body="Any component that can be placed into a menu should implement this interface.&#xA;This interface is used by &lt;code>MenuSelectionManager&lt;/code>&#xA;to handle selection and navigation in menu hierarchies.&#xA;&#xA;@version 1.12 12/19/03&#xA;@author Arnaud Weber&#xA;" annotatedElement="de6cdb33-0a16-47b4-939d-325aedf18238"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="4965fd56-a840-4a63-97f0-23d1515027f9" name="DefaultListSelectionModel" clientDependency="d324891f-2eea-43c9-a87e-64e4e71acf5d 60cde9e0-e5c3-4a8f-9f4c-fd01e849110c 5b2140fa-bd1d-4358-a681-78607ae76a24">
            <ownedComment xmi:id="5a03076d-581c-4bec-8ad9-76cc0e867281" body="Default data model for list selections.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.75 05/05/04&#xA;@author Philip Milne&#xA;@author Hans Muller&#xA;@see ListSelectionModel&#xA;" annotatedElement="4965fd56-a840-4a63-97f0-23d1515027f9"/>
            <interfaceRealization xmi:id="60cde9e0-e5c3-4a8f-9f4c-fd01e849110c" name="" supplier="f46ea5b6-72bb-4a1a-ad05-bff3c7926dda" client="4965fd56-a840-4a63-97f0-23d1515027f9" contract="f46ea5b6-72bb-4a1a-ad05-bff3c7926dda"/>
            <interfaceRealization xmi:id="d324891f-2eea-43c9-a87e-64e4e71acf5d" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="4965fd56-a840-4a63-97f0-23d1515027f9" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="5b2140fa-bd1d-4358-a681-78607ae76a24" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4965fd56-a840-4a63-97f0-23d1515027f9" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8e8c4dce-a8af-4c79-a53a-a03ec269364c" name="JTabbedPane" clientDependency="af24f2c4-6049-4be4-8fa8-2a1a9b0fef63 c7a57b3b-51f0-477f-b0a7-705d44b1d9a3 c94b197e-be0e-4eb8-9094-221c6441156a">
            <ownedComment xmi:id="55c61b31-b297-485c-9be0-b345e5f07e98" body="A component that lets the user switch between a group of components by&#xA;clicking on a tab with a given title and/or icon.&#xA;For examples and information on using tabbed panes see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/tabbedpane.html&quot;>How to Use Tabbed Panes&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&lt;p>&#xA;Tabs/components are added to a &lt;code>TabbedPane&lt;/code> object by using the&#xA;&lt;code>addTab&lt;/code> and &lt;code>insertTab&lt;/code> methods.&#xA;A tab is represented by an index corresponding&#xA;to the position it was added in, where the first tab has an index equal to 0&#xA;and the last tab has an index equal to the tab count minus 1.&#xA;&lt;p>&#xA;The &lt;code>TabbedPane&lt;/code> uses a &lt;code>SingleSelectionModel&lt;/code>&#xA;to represent the set&#xA;of tab indices and the currently selected index.  If the tab count&#xA;is greater than 0, then there will always be a selected index, which&#xA;by default will be initialized to the first tab.  If the tab count is&#xA;0, then the selected index will be -1.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer true&#xA;description: A component which provides a tab folder metaphor for&#xA;displaying one component from a set of components.&#xA;&#xA;@version 1.140 04/02/04&#xA;@author Dave Moore&#xA;@author Philip Milne&#xA;@author Amy Fowler&#xA;&#xA;@see SingleSelectionModel&#xA;" annotatedElement="8e8c4dce-a8af-4c79-a53a-a03ec269364c"/>
            <generalization xmi:id="4d9dda5b-552e-4318-b6ca-b30bd75a23fb" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="af24f2c4-6049-4be4-8fa8-2a1a9b0fef63" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="8e8c4dce-a8af-4c79-a53a-a03ec269364c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="c7a57b3b-51f0-477f-b0a7-705d44b1d9a3" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="8e8c4dce-a8af-4c79-a53a-a03ec269364c" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <interfaceRealization xmi:id="c94b197e-be0e-4eb8-9094-221c6441156a" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="8e8c4dce-a8af-4c79-a53a-a03ec269364c" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="3abbd919-f6dc-46ba-8e45-17709fb0fbba" name="ModelListener" visibility="protected" clientDependency="af506612-fec6-4cc1-975f-12c4dd9a17e2 2084cce4-c262-473a-a225-94bd22563d72">
              <ownedComment xmi:id="2a226598-b1ed-43e0-aef8-1fb66b554939" body="We pass &lt;code>ModelChanged&lt;/code> events along to the listeners with&#xA;the tabbedpane (instead of the model itself) as the event source.&#xA;" annotatedElement="3abbd919-f6dc-46ba-8e45-17709fb0fbba"/>
              <interfaceRealization xmi:id="af506612-fec6-4cc1-975f-12c4dd9a17e2" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="3abbd919-f6dc-46ba-8e45-17709fb0fbba" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
              <interfaceRealization xmi:id="2084cce4-c262-473a-a225-94bd22563d72" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="3abbd919-f6dc-46ba-8e45-17709fb0fbba" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="99b0d3e3-e629-4951-afb2-de993b508a78" name="AccessibleJTabbedPane" visibility="protected" clientDependency="124b594e-e72d-4eb5-a87f-f80baf6dd50b 6cdd0829-777b-4be7-a6d6-d0314aad10ea">
              <ownedComment xmi:id="8f4e31a3-c52d-43ec-b55e-ba0f0685f3a7" body="This class implements accessibility support for the&#xA;&lt;code>JTabbedPane&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to tabbed pane user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="99b0d3e3-e629-4951-afb2-de993b508a78"/>
              <generalization xmi:id="36a09751-ee47-44cf-aafc-ad9486d19853" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
              <interfaceRealization xmi:id="6cdd0829-777b-4be7-a6d6-d0314aad10ea" name="" supplier="0dbef058-3ccc-4038-b98f-eea279be3f13" client="99b0d3e3-e629-4951-afb2-de993b508a78" contract="0dbef058-3ccc-4038-b98f-eea279be3f13"/>
              <interfaceRealization xmi:id="124b594e-e72d-4eb5-a87f-f80baf6dd50b" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="99b0d3e3-e629-4951-afb2-de993b508a78" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ba51673a-5483-4dfa-b8db-ca11955db542" name="Page" visibility="private" clientDependency="97555cc6-0ec4-4657-a3ba-32f5540d7036 b978c21b-1a32-481c-a112-63a05b9adb88 29a7bf5f-3c9e-4d98-a2b3-2a4d9d3f3738">
              <generalization xmi:id="ceb3361e-3ee9-4517-82b7-f068705bd49f" isSubstitutable="true" general="5e5fecb3-251d-4b0e-b142-9f3aac1d4c57"/>
              <interfaceRealization xmi:id="97555cc6-0ec4-4657-a3ba-32f5540d7036" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ba51673a-5483-4dfa-b8db-ca11955db542" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="b978c21b-1a32-481c-a112-63a05b9adb88" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="ba51673a-5483-4dfa-b8db-ca11955db542" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
              <interfaceRealization xmi:id="29a7bf5f-3c9e-4d98-a2b3-2a4d9d3f3738" name="" supplier="a13045dc-df1a-4751-8aff-9b7e320e05bf" client="ba51673a-5483-4dfa-b8db-ca11955db542" contract="a13045dc-df1a-4751-8aff-9b7e320e05bf"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7395a363-c301-4fcc-be22-4857a6879498" name="BorderFactory">
            <ownedComment xmi:id="05cfffb6-43bb-4085-85bf-fff934328ce1" body="Factory class for vending standard &lt;code>Border&lt;/code> objects.  Wherever&#xA;possible, this factory will hand out references to shared&#xA;&lt;code>Border&lt;/code> instances.&#xA;For further information and examples see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/border.html&quot;>How&#xA;to Use Borders&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&#xA;@version 1.30 12/19/03&#xA;@author David Kloba&#xA;" annotatedElement="7395a363-c301-4fcc-be22-4857a6879498"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="75d531a9-fa7d-407e-a4e1-11b2cfc751c0" name="InternalFrameFocusTraversalPolicy" isAbstract="true">
            <ownedComment xmi:id="de78d320-8461-4562-acb1-8da042c0473d" body="A FocusTraversalPolicy which can optionally provide an algorithm for&#xA;determining a JInternalFrame's initial Component. The initial Component is&#xA;the first to receive focus when the JInternalFrame is first selected. By&#xA;default, this is the same as the JInternalFrame's default Component to&#xA;focus.&#xA;&#xA;@author David Mendenhall&#xA;@version 1.4, 12/19/03&#xA;&#xA;@since 1.4&#xA;" annotatedElement="75d531a9-fa7d-407e-a4e1-11b2cfc751c0"/>
            <generalization xmi:id="ffd9716e-52bc-45f3-93dd-5453638f3056" isSubstitutable="true" general="df62e602-f506-498f-9270-a657feeffa38"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="86c89baf-20cc-4c7b-b1a3-adca313b8e2c" name="BoxLayout" clientDependency="37b97c29-e14b-4a56-b620-cc103ad359cd a9edccfc-534f-4800-b391-8248dba1b6c8">
            <ownedComment xmi:id="cbc80c67-12c1-402d-8c13-4afaa904da36" body="A layout manager that allows multiple components to be laid out either&#xA;vertically or horizontally. The components will not wrap so, for&#xA;example, a vertical arrangement of components will stay vertically&#xA;arranged when the frame is resized.&#xA;&lt;TABLE ALIGN=&quot;RIGHT&quot; BORDER=&quot;0&quot; SUMMARY=&quot;layout&quot;>&#xA;&lt;TR>&#xA;&lt;TD ALIGN=&quot;CENTER&quot;>&#xA;&lt;P ALIGN=&quot;CENTER&quot;>&lt;IMG SRC=&quot;doc-files/BoxLayout-1.gif&quot;&#xA;alt=&quot;The following text describes this graphic.&quot;&#xA;WIDTH=&quot;191&quot; HEIGHT=&quot;201&quot; ALIGN=&quot;BOTTOM&quot; BORDER=&quot;0&quot;>&#xA;&lt;/TD>&#xA;&lt;/TR>&#xA;&lt;/TABLE>&#xA;&lt;p>&#xA;Nesting multiple panels with different combinations of horizontal and&#xA;vertical gives an effect similar to GridBagLayout, without the&#xA;complexity. The diagram shows two panels arranged horizontally, each&#xA;of which contains 3 components arranged vertically.&#xA;&#xA;&lt;p> The BoxLayout manager is constructed with an axis parameter that&#xA;specifies the type of layout that will be done. There are four choices:&#xA;&#xA;&lt;blockquote>&lt;b>&lt;tt>X_AXIS&lt;/tt>&lt;/b> - Components are laid out horizontally&#xA;from left to right.&lt;/blockquote>&#xA;&#xA;&lt;blockquote>&lt;b>&lt;tt>Y_AXIS&lt;/tt>&lt;/b> - Components are laid out vertically&#xA;from top to bottom.&lt;/blockquote>&#xA;&#xA;&lt;blockquote>&lt;b>&lt;tt>LINE_AXIS&lt;/tt>&lt;/b> - Components are laid out the way&#xA;words are laid out in a line, based on the container's&#xA;&lt;tt>ComponentOrientation&lt;/tt> property. If the container's&#xA;&lt;tt>ComponentOrientation&lt;/tt> is horizontal then components are laid out&#xA;horizontally, otherwise they are laid out vertically.  For horizontal&#xA;orientations, if the container's &lt;tt>ComponentOrientation&lt;/tt> is left to&#xA;right then components are laid out left to right, otherwise they are laid&#xA;out right to left. For vertical orientations components are always laid out&#xA;from top to bottom.&lt;/blockquote>&#xA;&#xA;&lt;blockquote>&lt;b>&lt;tt>PAGE_AXIS&lt;/tt>&lt;/b> - Components are laid out the way&#xA;text lines are laid out on a page, based on the container's&#xA;&lt;tt>ComponentOrientation&lt;/tt> property. If the container's&#xA;&lt;tt>ComponentOrientation&lt;/tt> is horizontal then components are laid out&#xA;vertically, otherwise they are laid out horizontally.  For horizontal&#xA;orientations, if the container's &lt;tt>ComponentOrientation&lt;/tt> is left to&#xA;right then components are laid out left to right, otherwise they are laid&#xA;out right to left.&amp;nbsp; For vertical orientations components are always&#xA;laid out from top to bottom.&lt;/blockquote>&#xA;&lt;p>&#xA;For all directions, components are arranged in the same order as they were&#xA;added to the container.&#xA;&lt;p>&#xA;BoxLayout attempts to arrange components&#xA;at their preferred widths (for horizontal layout)&#xA;or heights (for vertical layout).&#xA;For a horizontal layout,&#xA;if not all the components are the same height,&#xA;BoxLayout attempts to make all the components&#xA;as high as the highest component.&#xA;If that's not possible for a particular component,&#xA;then BoxLayout aligns that component vertically,&#xA;according to the component's Y alignment.&#xA;By default, a component has a Y alignment of 0.5,&#xA;which means that the vertical center of the component&#xA;should have the same Y coordinate as&#xA;the vertical centers of other components with 0.5 Y alignment.&#xA;&lt;p>&#xA;Similarly, for a vertical layout,&#xA;BoxLayout attempts to make all components in the column&#xA;as wide as the widest component.&#xA;If that fails, it aligns them horizontally&#xA;according to their X alignments.  For &lt;code>PAGE_AXIS&lt;/code> layout,&#xA;horizontal alignment is done based on the leading edge of the component.&#xA;In other words, an X alignment value of 0.0 means the left edge of a&#xA;component if the container's &lt;code>ComponentOrientation&lt;/code> is left to&#xA;right and it means the right edge of the component otherwise.&#xA;&lt;p>&#xA;Instead of using BoxLayout directly, many programs use the Box class.&#xA;The Box class is a lightweight container that uses a BoxLayout.&#xA;It also provides handy methods to help you use BoxLayout well.&#xA;Adding components to multiple nested boxes is a powerful way to get&#xA;the arrangement you want.&#xA;&lt;p>&#xA;For further information and examples see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/layout/box.html&quot;>How to Use BoxLayout&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see Box&#xA;@see java.awt.ComponentOrientation&#xA;@see JComponent#getAlignmentX&#xA;@see JComponent#getAlignmentY&#xA;&#xA;@author   Timothy Prinzing&#xA;@version 1.34 12/19/03&#xA;" annotatedElement="86c89baf-20cc-4c7b-b1a3-adca313b8e2c"/>
            <interfaceRealization xmi:id="a9edccfc-534f-4800-b391-8248dba1b6c8" name="" supplier="a42fe497-3d64-40e3-8aae-e48bec8b7d93" client="86c89baf-20cc-4c7b-b1a3-adca313b8e2c" contract="a42fe497-3d64-40e3-8aae-e48bec8b7d93"/>
            <interfaceRealization xmi:id="37b97c29-e14b-4a56-b620-cc103ad359cd" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="86c89baf-20cc-4c7b-b1a3-adca313b8e2c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="58e244b2-68ce-4b67-985c-7bd227c23f2e" name="tree">
            <packagedElement xmi:type="uml:Interface" xmi:id="5648a5eb-01a3-4224-a4a2-9852eb89c4e3" name="RowMapper" isAbstract="true">
              <ownedComment xmi:id="0fc271a0-6402-4e9d-85ff-2aab792a42a0" body="Defines the requirements for an object that translates paths in&#xA;the tree into display rows.&#xA;&#xA;@version 1.13 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="5648a5eb-01a3-4224-a4a2-9852eb89c4e3"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2f71ae23-90f1-4645-a189-c85fb1493ff9" name="DefaultTreeCellEditor" clientDependency="4eed6e5a-3be5-402e-861f-8ccb21f03a40 69de2da2-70de-4756-911c-ebe1a9313bef 6f5fbfd1-4cb0-4d50-8eea-4099d69e32e2">
              <ownedComment xmi:id="306049e2-b753-4ca4-9793-7044ef8c9452" body="A &lt;code>TreeCellEditor&lt;/code>. You need to supply an&#xA;instance of &lt;code>DefaultTreeCellRenderer&lt;/code>&#xA;so that the icons can be obtained. You can optionally supply&#xA;a &lt;code>TreeCellEditor&lt;/code> that will be layed out according&#xA;to the icon in the &lt;code>DefaultTreeCellRenderer&lt;/code>.&#xA;If you do not supply a &lt;code>TreeCellEditor&lt;/code>,&#xA;a &lt;code>TextField&lt;/code> will be used. Editing is started&#xA;on a triple mouse click, or after a click, pause, click and&#xA;a delay of 1200 miliseconds.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see javax.swing.JTree&#xA;&#xA;@version 1.30 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="2f71ae23-90f1-4645-a189-c85fb1493ff9"/>
              <interfaceRealization xmi:id="4eed6e5a-3be5-402e-861f-8ccb21f03a40" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="2f71ae23-90f1-4645-a189-c85fb1493ff9" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
              <interfaceRealization xmi:id="6f5fbfd1-4cb0-4d50-8eea-4099d69e32e2" name="" supplier="bfb39e02-d098-4a7c-9d43-99b38ee28dcd" client="2f71ae23-90f1-4645-a189-c85fb1493ff9" contract="bfb39e02-d098-4a7c-9d43-99b38ee28dcd"/>
              <interfaceRealization xmi:id="69de2da2-70de-4756-911c-ebe1a9313bef" name="" supplier="173abbe6-9303-4b54-abf5-2c00ce8666cf" client="2f71ae23-90f1-4645-a189-c85fb1493ff9" contract="173abbe6-9303-4b54-abf5-2c00ce8666cf"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="bb53cf02-7a1e-4e87-b797-b52394a129a1" name="DefaultTextField">
                <ownedComment xmi:id="c70a1bb9-6e63-4058-9515-c60f9b34b670" body="&lt;code>TextField&lt;/code> used when no editor is supplied.&#xA;This textfield locks into the border it is constructed with.&#xA;It also prefers its parents font over its font. And if the&#xA;renderer is not &lt;code>null&lt;/code> and no font&#xA;has been specified the preferred height is that of the renderer.&#xA;" annotatedElement="bb53cf02-7a1e-4e87-b797-b52394a129a1"/>
                <generalization xmi:id="4eb6395d-89e9-4217-b056-f26c66860143" isSubstitutable="true" general="e8b3dc5a-f346-4fc4-b077-bbe69ee386a3"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8998439d-4356-409b-8b79-f8d79be8fb8c" name="EditorContainer">
                <ownedComment xmi:id="3a42573c-0f3d-43db-8024-0c4175679d10" body="Container responsible for placing the &lt;code>editingComponent&lt;/code>.&#xA;" annotatedElement="8998439d-4356-409b-8b79-f8d79be8fb8c"/>
                <generalization xmi:id="07fd22cd-59a0-4209-9da0-5d10de8b9b0f" isSubstitutable="true" general="a4edac23-263c-4616-857d-4de97445e12a"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c06d8d6f-57cb-4599-9003-62af276febf3" name="TreePath" clientDependency="17716bcc-9758-407b-a4d3-1d063c11ed68">
              <ownedComment xmi:id="ddda69fa-b408-46c4-a94b-88482cd06026" body="Represents a path to a node. A TreePath is an array of Objects that are&#xA;vended from a TreeModel. The elements of the array are ordered such&#xA;that the root is always the first element (index 0) of the array.&#xA;TreePath is Serializable, but if any&#xA;components of the path are not serializable, it will not be written&#xA;out.&#xA;&lt;p>&#xA;For further information and examples of using tree paths,&#xA;see &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html&quot;>How to Use Trees&lt;/a>&#xA;in &lt;em>The Java Tutorial.&lt;/em>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.29 12/19/03&#xA;@author Scott Violet&#xA;@author Philip Milne&#xA;" annotatedElement="c06d8d6f-57cb-4599-9003-62af276febf3"/>
              <generalization xmi:id="5d8f5ed9-1b41-42c1-80a8-5c8ced6f0d17" isSubstitutable="true" general="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
              <interfaceRealization xmi:id="17716bcc-9758-407b-a4d3-1d063c11ed68" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="c06d8d6f-57cb-4599-9003-62af276febf3" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="22b5ba82-845a-46ca-a580-dca7a4ca155a" name="DefaultTreeModel" clientDependency="e2c23956-6ef6-4293-8bbe-601014f5e58f fd66f969-8b6b-4bf6-8d93-42ac40b0809a">
              <ownedComment xmi:id="517299b4-9823-4b09-a94e-29d54b523d7e" body="A simple tree data model that uses TreeNodes.&#xA;For further information and examples that use DefaultTreeModel,&#xA;see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html&quot;>How to Use Trees&lt;/a>&#xA;in &lt;em>The Java Tutorial.&lt;/em>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.55 05/05/04&#xA;@author Rob Davis&#xA;@author Ray Ryan&#xA;@author Scott Violet&#xA;" annotatedElement="22b5ba82-845a-46ca-a580-dca7a4ca155a"/>
              <interfaceRealization xmi:id="fd66f969-8b6b-4bf6-8d93-42ac40b0809a" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="22b5ba82-845a-46ca-a580-dca7a4ca155a" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="e2c23956-6ef6-4293-8bbe-601014f5e58f" name="" supplier="6451bdd9-495d-4217-915b-649002c8b688" client="22b5ba82-845a-46ca-a580-dca7a4ca155a" contract="6451bdd9-495d-4217-915b-649002c8b688"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="dfc0ec96-648b-4512-a492-50e4f61c84a3" name="Enumeration&lt;TreePath>">
              <templateBinding xmi:id="561d8380-d8b4-4628-a151-2f6b5316100c" signature="521c8bf5-b0b1-4a86-820c-0614950913b8">
                <parameterSubstitution xmi:id="cf4ba952-8a96-48ad-b532-801ee8145132" formal="0dc15cf5-0f68-454b-a4d7-227d89f2d0c5" actual="c06d8d6f-57cb-4599-9003-62af276febf3"/>
              </templateBinding>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0c6e3d85-d73a-4737-8a7b-c099ddba0375" name="DefaultTreeSelectionModel" clientDependency="3b480da5-30f1-4199-9b2e-34fe137afbeb ad363349-652b-4050-b94b-c5e9ac5d6477 018396c2-2fd5-4593-a16a-1c3b6dd6a4f0">
              <ownedComment xmi:id="b7d69de6-eae7-4809-a8c1-e6ccc006a07e" body="Default implementation of TreeSelectionModel.  Listeners are notified&#xA;whenever&#xA;the paths in the selection change, not the rows. In order&#xA;to be able to track row changes you may wish to become a listener&#xA;for expansion events on the tree and test for changes from there.&#xA;&lt;p>resetRowSelection is called from any of the methods that update&#xA;the selected paths. If you subclass any of these methods to&#xA;filter what is allowed to be selected, be sure and message&#xA;&lt;code>resetRowSelection&lt;/code> if you do not message super.&#xA;&#xA;&lt;p>&#xA;&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see javax.swing.JTree&#xA;&#xA;@version 1.50 05/05/04&#xA;@author Scott Violet&#xA;" annotatedElement="0c6e3d85-d73a-4737-8a7b-c099ddba0375"/>
              <generalization xmi:id="11848421-c63c-4448-b86b-739c16b7a765" isSubstitutable="true" general="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
              <interfaceRealization xmi:id="3b480da5-30f1-4199-9b2e-34fe137afbeb" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="0c6e3d85-d73a-4737-8a7b-c099ddba0375" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <interfaceRealization xmi:id="ad363349-652b-4050-b94b-c5e9ac5d6477" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0c6e3d85-d73a-4737-8a7b-c099ddba0375" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="018396c2-2fd5-4593-a16a-1c3b6dd6a4f0" name="" supplier="6f419d26-7af1-4bd7-bc5f-06190ec53726" client="0c6e3d85-d73a-4737-8a7b-c099ddba0375" contract="6f419d26-7af1-4bd7-bc5f-06190ec53726"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="7535ec2d-2a01-4713-b1a9-0d9bdba7f5cb" name="TreeCellRenderer" isAbstract="true">
              <ownedComment xmi:id="17a4d09d-148a-46b2-b3d6-2d8c780203a9" body="Defines the requirements for an object that displays a tree node.&#xA;See &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html&quot;>How to Use Trees&lt;/a>&#xA;in &lt;em>The Java Tutorial&lt;/em>&#xA;for an example of implementing a tree cell renderer&#xA;that displays custom icons.&#xA;&#xA;@version 1.20 12/19/03&#xA;@author Rob Davis&#xA;@author Ray Ryan&#xA;@author Scott Violet&#xA;" annotatedElement="7535ec2d-2a01-4713-b1a9-0d9bdba7f5cb"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="6f419d26-7af1-4bd7-bc5f-06190ec53726" name="TreeSelectionModel" isAbstract="true">
              <ownedComment xmi:id="ad121919-219f-40bb-8316-059f9715b77a" body="This interface represents the current state of the selection for&#xA;the tree component.&#xA;For information and examples of using tree selection models,&#xA;see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html&quot;>How to Use Trees&lt;/a>&#xA;in &lt;em>The Java Tutorial.&lt;/em>&#xA;&#xA;&lt;p>&#xA;The state of the tree selection is characterized by&#xA;a set of TreePaths, and optionally a set of integers. The mapping&#xA;from TreePath to integer is done by way of an instance of RowMapper.&#xA;It is not necessary for a TreeSelectionModel to have a RowMapper to&#xA;correctly operate, but without a RowMapper &lt;code>getSelectionRows&lt;/code>&#xA;will return null.&#xA;&#xA;&lt;p>&#xA;&#xA;A TreeSelectionModel can be configured to allow only one&#xA;path (&lt;code>SINGLE_TREE_SELECTION&lt;/code>) a number of&#xA;continguous paths (&lt;code>CONTIGUOUS_TREE_SELECTION&lt;/code>) or a number of&#xA;discontiguous paths (&lt;code>DISCONTIGUOUS_TREE_SELECTION&lt;/code>).&#xA;A &lt;code>RowMapper&lt;/code> is used to determine if TreePaths are&#xA;contiguous.&#xA;In the absence of a RowMapper &lt;code>CONTIGUOUS_TREE_SELECTION&lt;/code> and&#xA;&lt;code>DISCONTIGUOUS_TREE_SELECTION&lt;/code> behave the same, that is they&#xA;allow any number of paths to be contained in the TreeSelectionModel.&#xA;&#xA;&lt;p>&#xA;&#xA;For a selection model of &lt;code>CONTIGUOUS_TREE_SELECTION&lt;/code> any&#xA;time the paths are changed (&lt;code>setSelectionPath&lt;/code>,&#xA;&lt;code>addSelectionPath&lt;/code> ...) the TreePaths are again checked to&#xA;make they are contiguous. A check of the TreePaths can also be forced&#xA;by invoking &lt;code>resetRowSelection&lt;/code>. How a set of discontiguous&#xA;TreePaths is mapped to a contiguous set is left to implementors of&#xA;this interface to enforce a particular policy.&#xA;&#xA;&lt;p>&#xA;&#xA;Implementations should combine duplicate TreePaths that are&#xA;added to the selection. For example, the following code&#xA;&lt;pre>&#xA;TreePath[] paths = new TreePath[] { treePath, treePath };&#xA;treeSelectionModel.setSelectionPaths(paths);&#xA;&lt;/pre>&#xA;should result in only one path being selected:&#xA;&lt;code>treePath&lt;/code>, and&#xA;not two copies of &lt;code>treePath&lt;/code>.&#xA;&#xA;&lt;p>&#xA;&#xA;The lead TreePath is the last path that was added (or set). The lead&#xA;row is then the row that corresponds to the TreePath as determined&#xA;from the RowMapper.&#xA;&#xA;@version 1.24 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="6f419d26-7af1-4bd7-bc5f-06190ec53726"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a521d335-44ab-4708-b33e-f8540fe3c9d0" name="VariableHeightLayoutCache">
              <ownedComment xmi:id="45568284-5cbe-4613-9dff-74a1005bb256" body="NOTE: This will become more open in a future release.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.21 05/05/04&#xA;@author Rob Davis&#xA;@author Ray Ryan&#xA;@author Scott Violet&#xA;" annotatedElement="a521d335-44ab-4708-b33e-f8540fe3c9d0"/>
              <generalization xmi:id="4c747d21-2ff0-4eb7-bb7b-274a7eb4bc49" isSubstitutable="true" general="2c2891e9-cd7b-4b7b-bd72-3dce9650028c"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="d504043d-c515-442f-83bf-1f600f93408d" name="TreeStateNode" visibility="private">
                <ownedComment xmi:id="7c1e8abf-f12e-434e-bf1b-e92e74c07be9" body="TreeStateNode is used to keep track of each of&#xA;the nodes that have been expanded. This will also cache the preferred&#xA;size of the value it represents.&#xA;" annotatedElement="d504043d-c515-442f-83bf-1f600f93408d"/>
                <generalization xmi:id="1eb9a6d2-0e2e-4bb6-b785-49179492de6c" isSubstitutable="true" general="6dc229cb-94f7-487a-91eb-a329de143f38"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6eafa041-a6ed-4537-a423-ea016ba171d6" name="VisibleTreeStateNodeEnumeration" visibility="private" clientDependency="a79852a7-ef79-4f10-a5ad-38af84bd54a3">
                <ownedComment xmi:id="cbb5ed66-01f5-44da-a686-9e7e9bcd9a13" body="An enumerator to iterate through visible nodes.&#xA;" annotatedElement="6eafa041-a6ed-4537-a423-ea016ba171d6"/>
                <interfaceRealization xmi:id="a79852a7-ef79-4f10-a5ad-38af84bd54a3" name="" supplier="dfc0ec96-648b-4512-a492-50e4f61c84a3" client="6eafa041-a6ed-4537-a423-ea016ba171d6" contract="dfc0ec96-648b-4512-a492-50e4f61c84a3"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a49a177f-1677-45d3-8ee6-632ecfb5aa1f" name="ExpandVetoException">
              <ownedComment xmi:id="605df846-43a0-4cbb-b70e-5dc233b97952" body="Exception used to stop and expand/collapse from happening.&#xA;See &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/events/treewillexpandlistener.html&quot;>How to Write a Tree-Will-Expand Listener&lt;/a>&#xA;in &lt;em>The Java Tutorial&lt;/em>&#xA;for further information and examples.&#xA;&#xA;@version 1.10 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="a49a177f-1677-45d3-8ee6-632ecfb5aa1f"/>
              <generalization xmi:id="ea41c6f8-b68d-4134-8451-a37b860bf094" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="bfb39e02-d098-4a7c-9d43-99b38ee28dcd" name="TreeCellEditor" isAbstract="true">
              <ownedComment xmi:id="95af1efb-32fe-4652-9db1-ef814925aa7b" body="Adds to CellEditor the extensions necessary to configure an editor&#xA;in a tree.&#xA;&#xA;@see javax.swing.JTree&#xA;&#xA;@version 1.14 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="bfb39e02-d098-4a7c-9d43-99b38ee28dcd"/>
              <generalization xmi:id="cc500405-b573-4986-b960-4ab65e83b157" isSubstitutable="true" general="8cf3a8f2-ac94-4aea-8cf2-9fc323d23b85"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="38df53a2-da14-4e90-a77a-78a648546eca" name="PathPlaceHolder" visibility="package">
              <ownedComment xmi:id="f674a25d-dff9-4a33-af42-bb188df4b0c5" body="Holds a path and whether or not it is new.&#xA;" annotatedElement="38df53a2-da14-4e90-a77a-78a648546eca"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="491a6387-f262-443c-8af1-a5cce3554fa2" name="TreeNode" isAbstract="true">
              <ownedComment xmi:id="447d5255-d996-4d8c-857b-b9bdc9525a66" body="Defines the requirements for an object that can be used as a&#xA;tree node in a JTree.&#xA;&#xA;&lt;p>&#xA;&#xA;For further information and examples of using tree nodes,&#xA;see &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html&quot;>How to Use Tree Nodes&lt;/a>&#xA;in &lt;em>The Java Tutorial.&lt;/em>&#xA;&#xA;@version 1.23 07/13/04&#xA;@author Rob Davis&#xA;@author Scott Violet&#xA;" annotatedElement="491a6387-f262-443c-8af1-a5cce3554fa2"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="478ef400-83bd-4219-84f6-1c289af97c55" name="DefaultTreeCellRenderer" clientDependency="a8e66271-c7ee-408e-b211-b8e22d547ece">
              <ownedComment xmi:id="3896f7ab-2bfe-4550-b46d-720d933faec1" body="Displays an entry in a tree.&#xA;&lt;code>DefaultTreeCellRenderer&lt;/code> is not opaque and&#xA;unless you subclass paint you should not change this.&#xA;See &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html&quot;>How to Use Trees&lt;/a>&#xA;in &lt;em>The Java Tutorial&lt;/em>&#xA;for examples of customizing node display using this class.&#xA;&lt;p>&#xA;&#xA;&lt;strong>&lt;a name=&quot;override&quot;>Implementation Note:&lt;/a>&lt;/strong>&#xA;This class overrides&#xA;&lt;code>invalidate&lt;/code>,&#xA;&lt;code>validate&lt;/code>,&#xA;&lt;code>revalidate&lt;/code>,&#xA;&lt;code>repaint&lt;/code>,&#xA;and&#xA;&lt;code>firePropertyChange&lt;/code>&#xA;solely to improve performance.&#xA;If not overridden, these frequently called methods would execute code paths&#xA;that are unnecessary for the default tree cell renderer.&#xA;If you write your own renderer,&#xA;take care to weigh the benefits and&#xA;drawbacks of overriding these methods.&#xA;&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.51 01/23/04&#xA;@author Rob Davis&#xA;@author Ray Ryan&#xA;@author Scott Violet&#xA;" annotatedElement="478ef400-83bd-4219-84f6-1c289af97c55"/>
              <generalization xmi:id="e879ed00-c707-4679-9b68-f14c0be6206a" isSubstitutable="true" general="c9ab6369-faf9-4d4f-8a58-fa6a4a41feb0"/>
              <interfaceRealization xmi:id="a8e66271-c7ee-408e-b211-b8e22d547ece" name="" supplier="7535ec2d-2a01-4713-b1a9-0d9bdba7f5cb" client="478ef400-83bd-4219-84f6-1c289af97c55" contract="7535ec2d-2a01-4713-b1a9-0d9bdba7f5cb"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6dc229cb-94f7-487a-91eb-a329de143f38" name="DefaultMutableTreeNode" clientDependency="10ca8b3d-afe0-4f6f-927b-ecdefe2d84d6 6fb6894e-170d-418f-b8bb-6bad59d9f318 62285ad8-0ccd-4e41-a5c3-017352383b66">
              <ownedComment xmi:id="e7ffbd6e-0be9-4870-9e7c-2b03ea01ff87" body="A &lt;code>DefaultMutableTreeNode&lt;/code> is a general-purpose node in a tree data&#xA;structure.&#xA;For examples of using default mutable tree nodes, see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html&quot;>How to Use Trees&lt;/a>&#xA;in &lt;em>The Java Tutorial.&lt;/em>&#xA;&#xA;&lt;p>&#xA;&#xA;A tree node may have at most one parent and 0 or more children.&#xA;&lt;code>DefaultMutableTreeNode&lt;/code> provides operations for examining and modifying a&#xA;node's parent and children and also operations for examining the tree that&#xA;the node is a part of.  A node's tree is the set of all nodes that can be&#xA;reached by starting at the node and following all the possible links to&#xA;parents and children.  A node with no parent is the root of its tree; a&#xA;node with no children is a leaf.  A tree may consist of many subtrees,&#xA;each node acting as the root for its own subtree.&#xA;&lt;p>&#xA;This class provides enumerations for efficiently traversing a tree or&#xA;subtree in various orders or for following the path between two nodes.&#xA;A &lt;code>DefaultMutableTreeNode&lt;/code> may also hold a reference to a user object, the&#xA;use of which is left to the user.  Asking a &lt;code>DefaultMutableTreeNode&lt;/code> for its&#xA;string representation with &lt;code>toString()&lt;/code> returns the string&#xA;representation of its user object.&#xA;&lt;p>&#xA;&lt;b>This is not a thread safe class.&lt;/b>If you intend to use&#xA;a DefaultMutableTreeNode (or a tree of TreeNodes) in more than one thread, you&#xA;need to do your own synchronizing. A good convention to adopt is&#xA;synchronizing on the root node of a tree.&#xA;&lt;p>&#xA;While DefaultMutableTreeNode implements the MutableTreeNode interface and&#xA;will allow you to add in any implementation of MutableTreeNode not all&#xA;of the methods in DefaultMutableTreeNode will be applicable to all&#xA;MutableTreeNodes implementations. Especially with some of the enumerations&#xA;that are provided, using some of these methods assumes the&#xA;DefaultMutableTreeNode contains only DefaultMutableNode instances. All&#xA;of the TreeNode/MutableTreeNode methods will behave as defined no&#xA;matter what implementations are added.&#xA;&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see MutableTreeNode&#xA;&#xA;@version 1.23 07/13/04&#xA;@author Rob Davis&#xA;" annotatedElement="6dc229cb-94f7-487a-91eb-a329de143f38"/>
              <generalization xmi:id="88ec44de-12ec-4fdd-8d8e-90c7ace2186f" isSubstitutable="true" general="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
              <interfaceRealization xmi:id="6fb6894e-170d-418f-b8bb-6bad59d9f318" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="6dc229cb-94f7-487a-91eb-a329de143f38" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <interfaceRealization xmi:id="10ca8b3d-afe0-4f6f-927b-ecdefe2d84d6" name="" supplier="c54aab92-4cdc-4986-9ff5-2c5b64b00d95" client="6dc229cb-94f7-487a-91eb-a329de143f38" contract="c54aab92-4cdc-4986-9ff5-2c5b64b00d95"/>
              <interfaceRealization xmi:id="62285ad8-0ccd-4e41-a5c3-017352383b66" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="6dc229cb-94f7-487a-91eb-a329de143f38" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="b77c4357-8674-4a48-8296-2f1c1984ff5d" name="PreorderEnumeration" visibility="package" clientDependency="48cc98ee-acf7-44c4-9093-b251da2e334f" isLeaf="true">
                <interfaceRealization xmi:id="48cc98ee-acf7-44c4-9093-b251da2e334f" name="" supplier="b5ada7f2-b121-4b3f-a8ca-a8ade029a2f0" client="b77c4357-8674-4a48-8296-2f1c1984ff5d" contract="b5ada7f2-b121-4b3f-a8ca-a8ade029a2f0"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="7c439b62-39b5-424e-833d-f4d393c9ccef" name="PostorderEnumeration" visibility="package" clientDependency="624e8863-2928-42c2-8500-9618a8436866" isLeaf="true">
                <interfaceRealization xmi:id="624e8863-2928-42c2-8500-9618a8436866" name="" supplier="b5ada7f2-b121-4b3f-a8ca-a8ade029a2f0" client="7c439b62-39b5-424e-833d-f4d393c9ccef" contract="b5ada7f2-b121-4b3f-a8ca-a8ade029a2f0"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="abaa11fe-4455-4035-91df-0ba1fc988571" name="BreadthFirstEnumeration" visibility="package" clientDependency="7eb317d5-6215-435f-8012-e24e87ac1b16" isLeaf="true">
                <interfaceRealization xmi:id="7eb317d5-6215-435f-8012-e24e87ac1b16" name="" supplier="b5ada7f2-b121-4b3f-a8ca-a8ade029a2f0" client="abaa11fe-4455-4035-91df-0ba1fc988571" contract="b5ada7f2-b121-4b3f-a8ca-a8ade029a2f0"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e419ff13-8de5-42d8-8f92-5693cdf63a16" name="Queue" visibility="package" isLeaf="true">
                  <nestedClassifier xmi:type="uml:Class" xmi:id="4b3d88cf-ee76-4c89-9bcf-484d97fbfeae" name="QNode" visibility="package" isLeaf="true"/>
                </nestedClassifier>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="102d0e4e-4ce8-4b05-8d17-c6cf853ed4d4" name="PathBetweenNodesEnumeration" visibility="package" clientDependency="7c6febf7-cc84-4af8-9752-350aea32b1f1" isLeaf="true">
                <interfaceRealization xmi:id="7c6febf7-cc84-4af8-9752-350aea32b1f1" name="" supplier="b5ada7f2-b121-4b3f-a8ca-a8ade029a2f0" client="102d0e4e-4ce8-4b05-8d17-c6cf853ed4d4" contract="b5ada7f2-b121-4b3f-a8ca-a8ade029a2f0"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2c2891e9-cd7b-4b7b-bd72-3dce9650028c" name="AbstractLayoutCache" clientDependency="f584a868-4558-44ea-9f72-35de0741b811" isAbstract="true">
              <ownedComment xmi:id="2c0336bc-4bb4-4dbd-83ff-1a6584224822" body="&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.17 05/05/04&#xA;@author Scott Violet&#xA;" annotatedElement="2c2891e9-cd7b-4b7b-bd72-3dce9650028c"/>
              <interfaceRealization xmi:id="f584a868-4558-44ea-9f72-35de0741b811" name="" supplier="5648a5eb-01a3-4224-a4a2-9852eb89c4e3" client="2c2891e9-cd7b-4b7b-bd72-3dce9650028c" contract="5648a5eb-01a3-4224-a4a2-9852eb89c4e3"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8d410720-ba18-4c13-b4f0-56905f5fbae5" name="NodeDimensions" isAbstract="true">
                <ownedComment xmi:id="49ca17f9-6431-4fc4-a25c-c0e322a5c19e" body="Used by &lt;code>AbstractLayoutCache&lt;/code> to determine the size&#xA;and x origin of a particular node.&#xA;" annotatedElement="8d410720-ba18-4c13-b4f0-56905f5fbae5"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="6451bdd9-495d-4217-915b-649002c8b688" name="TreeModel" isAbstract="true">
              <ownedComment xmi:id="61b781af-47da-4264-a35e-0477e5c3e28a" body="The interface that defines a suitable data model for a &lt;code>JTree&lt;/code>.&#xA;For further information on tree models,&#xA;including an example of a custom implementation,&#xA;see &lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html&quot;>How to Use Trees&lt;/a>&#xA;in &lt;em>The Java Tutorial.&lt;/em>&#xA;&lt;p>&#xA;&lt;code>JTree&lt;/code> and its related classes make extensive use of&#xA;&lt;code>TreePath&lt;/code>s for indentifying nodes in the &lt;code>TreeModel&lt;/code>.&#xA;If a &lt;code>TreeModel&lt;/code> returns the same object, as compared by&#xA;&lt;code>equals&lt;/code>, at two different indices under the same parent&#xA;than the resulting &lt;code>TreePath&lt;/code> objects will be considered equal&#xA;as well. Some implementations may assume that if two&#xA;&lt;code>TreePath&lt;/code>s are equal, they identify the same node. If this&#xA;condition is not met, painting problems and other oddities may result.&#xA;In other words, if &lt;code>getChild&lt;/code> for a given parent returns&#xA;the same Object (as determined by &lt;code>equals&lt;/code>) problems may&#xA;result, and it is recommended you avoid doing this.&#xA;&#xA;@see TreePath&#xA;&#xA;@version 1.23 12/19/03&#xA;@author Rob Davis&#xA;@author Ray Ryan&#xA;" annotatedElement="6451bdd9-495d-4217-915b-649002c8b688"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2fae587a-de5e-4f93-bc6e-fe424f1d7280" name="FixedHeightLayoutCache">
              <ownedComment xmi:id="74a4164c-4cff-4992-9a47-5ba3880d517f" body="NOTE: This will become more open in a future release.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.24 05/05/04&#xA;@author Scott Violet&#xA;" annotatedElement="2fae587a-de5e-4f93-bc6e-fe424f1d7280"/>
              <generalization xmi:id="cb2a0e5e-0f02-4d3a-98a6-e3ad4f98c803" isSubstitutable="true" general="2c2891e9-cd7b-4b7b-bd72-3dce9650028c"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8f8e39e8-2296-4a32-b7d9-9fc2519b818b" name="FHTreeStateNode" visibility="private">
                <ownedComment xmi:id="1a911586-0a45-47cc-9690-f4353c94c582" body="FHTreeStateNode is used to track what has been expanded.&#xA;FHTreeStateNode differs from VariableHeightTreeState.TreeStateNode&#xA;in that it is highly model intensive. That is almost all queries to a&#xA;FHTreeStateNode result in the TreeModel being queried. And it&#xA;obviously does not support variable sized row heights.&#xA;" annotatedElement="8f8e39e8-2296-4a32-b7d9-9fc2519b818b"/>
                <generalization xmi:id="9b6180b5-03f8-40ea-9550-eace7bc76b51" isSubstitutable="true" general="6dc229cb-94f7-487a-91eb-a329de143f38"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8956752e-7d69-4b59-bc4f-d42ef52b9707" name="SearchInfo" visibility="private">
                <ownedComment xmi:id="f19c9c37-4f01-4e64-bbae-3ff9e5ff3b49" body="Used as a placeholder when getting the path in FHTreeStateNodes.&#xA;" annotatedElement="8956752e-7d69-4b59-bc4f-d42ef52b9707"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="77e92a21-501c-4030-8f25-912001e24aab" name="VisibleFHTreeStateNodeEnumeration" visibility="private" clientDependency="c9a941b9-f3c1-4860-8825-422d62240814">
                <ownedComment xmi:id="12909bae-66a7-4a91-8242-39e0575c0e82" body="An enumerator to iterate through visible nodes.&#xA;" annotatedElement="77e92a21-501c-4030-8f25-912001e24aab"/>
                <interfaceRealization xmi:id="c9a941b9-f3c1-4860-8825-422d62240814" name="" supplier="dfc0ec96-648b-4512-a492-50e4f61c84a3" client="77e92a21-501c-4030-8f25-912001e24aab" contract="dfc0ec96-648b-4512-a492-50e4f61c84a3"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="c54aab92-4cdc-4986-9ff5-2c5b64b00d95" name="MutableTreeNode" isAbstract="true">
              <ownedComment xmi:id="092b8bca-f59b-49c0-9de3-bfaa3327d1f5" body="Defines the requirements for a tree node object that can change --&#xA;by adding or removing child nodes, or by changing the contents&#xA;of a user object stored in the node.&#xA;&#xA;@see DefaultMutableTreeNode&#xA;@see javax.swing.JTree&#xA;&#xA;@version 1.11 12/19/03&#xA;@author Rob Davis&#xA;@author Scott Violet&#xA;" annotatedElement="c54aab92-4cdc-4986-9ff5-2c5b64b00d95"/>
              <generalization xmi:id="fb0333cd-5271-4688-92e4-f082808dcbf6" isSubstitutable="true" general="491a6387-f262-443c-8af1-a5cce3554fa2"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="b5ada7f2-b121-4b3f-a8ca-a8ade029a2f0" name="Enumeration&lt;TreeNode>">
              <templateBinding xmi:id="32e1b598-1997-4875-8dac-1951ffc8d54f" signature="521c8bf5-b0b1-4a86-820c-0614950913b8">
                <parameterSubstitution xmi:id="6451481d-347b-4881-9f60-fc9a12cb69a6" formal="0dc15cf5-0f68-454b-a4d7-227d89f2d0c5" actual="491a6387-f262-443c-8af1-a5cce3554fa2"/>
              </templateBinding>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="0d718309-416c-4b8f-8fab-55f4952e5d1f" name="DebugGraphicsFilter" visibility="package">
            <ownedComment xmi:id="c9d37a25-7646-4c78-8bc3-c67f349f12d4" body="Color filter for DebugGraphics, used for images only.&#xA;&#xA;@version 1.11 12/19/03&#xA;@author Dave Karlton&#xA;" annotatedElement="0d718309-416c-4b8f-8fab-55f4952e5d1f"/>
            <generalization xmi:id="b55fb38e-3f4b-4dc5-8fae-8cc4cd9e4e17" isSubstitutable="true" general="b54e2b90-aa85-42d7-8719-27d07a7e8e3c"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="890d1c02-f889-4eae-b1d6-2f325ecf9797" name="ActionMap" clientDependency="4c045e1c-fd0f-4a27-8970-3a000fd7a3e7">
            <ownedComment xmi:id="89e66ea0-5e73-41a1-a133-5f246e6bf6ee" body="&lt;code>ActionMap&lt;/code> provides mappings from&#xA;&lt;code>Object&lt;/code>s&#xA;(called &lt;em>keys&lt;/em> or &lt;em>&lt;code>Action&lt;/code> names&lt;/em>)&#xA;to &lt;code>Action&lt;/code>s.&#xA;An &lt;code>ActionMap&lt;/code> is usually used with an &lt;code>InputMap&lt;/code>&#xA;to locate a particular action&#xA;when a key is pressed. As with &lt;code>InputMap&lt;/code>,&#xA;an &lt;code>ActionMap&lt;/code> can have a parent&#xA;that is searched for keys not defined in the &lt;code>ActionMap&lt;/code>.&#xA;&lt;p>As with &lt;code>InputMap&lt;/code> if you create a cycle, eg:&#xA;&lt;pre>&#xA;ActionMap am = new ActionMap();&#xA;ActionMap bm = new ActionMap():&#xA;am.setParent(bm);&#xA;bm.setParent(am);&#xA;&lt;/pre>&#xA;some of the methods will cause a StackOverflowError to be thrown.&#xA;&#xA;@see InputMap&#xA;&#xA;@version 1.14 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="890d1c02-f889-4eae-b1d6-2f325ecf9797"/>
            <interfaceRealization xmi:id="4c045e1c-fd0f-4a27-8970-3a000fd7a3e7" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="890d1c02-f889-4eae-b1d6-2f325ecf9797" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="56079c23-87ef-4dab-9d4a-5a45870515b9" name="InputMap" clientDependency="be671de8-31f3-4304-a590-8ca76462292b">
            <ownedComment xmi:id="dcebbc94-511d-4a4f-bae1-201b7e9e23ab" body="&lt;code>InputMap&lt;/code> provides a binding between an input event&#xA;(currently only &lt;code>KeyStroke&lt;/code>s are used)&#xA;and an &lt;code>Object&lt;/code>. &lt;code>InputMap&lt;/code>s&#xA;are usually used with an &lt;code>ActionMap&lt;/code>,&#xA;to determine an &lt;code>Action&lt;/code> to perform&#xA;when a key is pressed.&#xA;An &lt;code>InputMap&lt;/code> can have a parent&#xA;that is searched for bindings not defined in the &lt;code>InputMap&lt;/code>.&#xA;&lt;p>As with &lt;code>ActionMap&lt;/code> if you create a cycle, eg:&#xA;&lt;pre>&#xA;InputMap am = new InputMap();&#xA;InputMap bm = new InputMap():&#xA;am.setParent(bm);&#xA;bm.setParent(am);&#xA;&lt;/pre>&#xA;some of the methods will cause a StackOverflowError to be thrown.&#xA;&#xA;@version 1.14 12/19/03&#xA;@author Scott Violet&#xA;@since 1.3&#xA;" annotatedElement="56079c23-87ef-4dab-9d4a-5a45870515b9"/>
            <interfaceRealization xmi:id="be671de8-31f3-4304-a590-8ca76462292b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="56079c23-87ef-4dab-9d4a-5a45870515b9" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="87137d47-066d-41dd-b389-ebfd93a60861" name="UnsupportedLookAndFeelException">
            <ownedComment xmi:id="732cef69-423b-48e4-af48-210a0633b82a" body="An exception that indicates the requested look &amp; feel&#xA;management classes are not present on the user's system.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author unattributed&#xA;@version 1.17 12/19/03&#xA;" annotatedElement="87137d47-066d-41dd-b389-ebfd93a60861"/>
            <generalization xmi:id="1d018451-1b7b-4a25-aa5c-ae0e3ba26ee2" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3938de20-8884-4b7d-90b5-bd2334194378" name="SpinnerDateModel" clientDependency="9f7528f4-f2fa-4a6c-9db5-bac320f23f02">
            <ownedComment xmi:id="9fa11d62-bf78-417d-8b22-2a48ca5871b9" body="A &lt;code>SpinnerModel&lt;/code> for sequences of &lt;code>Date&lt;/code>s.&#xA;The upper and lower bounds of the sequence are defined by properties called&#xA;&lt;code>start&lt;/code> and &lt;code>end&lt;/code> and the size&#xA;of the increase or decrease computed by the &lt;code>nextValue&lt;/code>&#xA;and &lt;code>previousValue&lt;/code> methods is defined by a property&#xA;called &lt;code>calendarField&lt;/code>.  The &lt;code>start&lt;/code>&#xA;and &lt;code>end&lt;/code> properties can be &lt;code>null&lt;/code> to&#xA;indicate that the sequence has no lower or upper limit.&#xA;&lt;p>&#xA;The value of the &lt;code>calendarField&lt;/code> property must be one of the&#xA;&lt;code>java.util.Calendar&lt;/code> constants that specify a field&#xA;within a &lt;code>Calendar&lt;/code>.  The &lt;code>getNextValue&lt;/code>&#xA;and &lt;code>getPreviousValue&lt;/code>&#xA;methods change the date forward or backwards by this amount.&#xA;For example, if &lt;code>calendarField&lt;/code> is &lt;code>Calendar.DAY_OF_WEEK&lt;/code>,&#xA;then &lt;code>nextValue&lt;/code> produces a &lt;code>Date&lt;/code> that's 24&#xA;hours after the current &lt;code>value&lt;/code>, and &lt;code>previousValue&lt;/code>&#xA;produces a &lt;code>Date&lt;/code> that's 24 hours earlier.&#xA;&lt;p>&#xA;The legal values for &lt;code>calendarField&lt;/code> are:&#xA;&lt;ul>&#xA;&lt;li>&lt;code>Calendar.ERA&lt;/code>&#xA;&lt;li>&lt;code>Calendar.YEAR&lt;/code>&#xA;&lt;li>&lt;code>Calendar.MONTH&lt;/code>&#xA;&lt;li>&lt;code>Calendar.WEEK_OF_YEAR&lt;/code>&#xA;&lt;li>&lt;code>Calendar.WEEK_OF_MONTH&lt;/code>&#xA;&lt;li>&lt;code>Calendar.DAY_OF_MONTH&lt;/code>&#xA;&lt;li>&lt;code>Calendar.DAY_OF_YEAR&lt;/code>&#xA;&lt;li>&lt;code>Calendar.DAY_OF_WEEK&lt;/code>&#xA;&lt;li>&lt;code>Calendar.DAY_OF_WEEK_IN_MONTH&lt;/code>&#xA;&lt;li>&lt;code>Calendar.AM_PM&lt;/code>&#xA;&lt;li>&lt;code>Calendar.HOUR&lt;/code>&#xA;&lt;li>&lt;code>Calendar.HOUR_OF_DAY&lt;/code>&#xA;&lt;li>&lt;code>Calendar.MINUTE&lt;/code>&#xA;&lt;li>&lt;code>Calendar.SECOND&lt;/code>&#xA;&lt;li>&lt;code>Calendar.MILLISECOND&lt;/code>&#xA;&lt;/ul>&#xA;However some UIs may set the calendarField before commiting the edit&#xA;to spin the field under the cursor. If you only want one field to&#xA;spin you can subclass and ignore the setCalendarField calls.&#xA;&lt;p>&#xA;This model inherits a &lt;code>ChangeListener&lt;/code>.  The&#xA;&lt;code>ChangeListeners&lt;/code> are notified whenever the models&#xA;&lt;code>value&lt;/code>, &lt;code>calendarField&lt;/code>,&#xA;&lt;code>start&lt;/code>, or &lt;code>end&lt;/code> properties changes.&#xA;&#xA;@see JSpinner&#xA;@see SpinnerModel&#xA;@see AbstractSpinnerModel&#xA;@see SpinnerListModel&#xA;@see SpinnerNumberModel&#xA;@see Calendar#add&#xA;&#xA;@version 1.11 05/12/04&#xA;@author Hans Muller&#xA;@since 1.4&#xA;" annotatedElement="3938de20-8884-4b7d-90b5-bd2334194378"/>
            <generalization xmi:id="d2a3a732-d41f-456b-b094-fc0acf8eea80" isSubstitutable="true" general="de634767-22fb-4447-ac15-feccd80a8a26"/>
            <interfaceRealization xmi:id="9f7528f4-f2fa-4a6c-9db5-bac320f23f02" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="3938de20-8884-4b7d-90b5-bd2334194378" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="995cfabc-c381-4f1a-9b4a-0e362042ced3" name="Popup">
            <ownedComment xmi:id="c14210b1-6ea5-4641-98b1-579d32dfc3fb" body="Popups are used to display a &lt;code>Component&lt;/code> to the user, typically&#xA;on top of all the other &lt;code>Component&lt;/code>s in a particular containment&#xA;hierarchy. &lt;code>Popup&lt;/code>s have a very small life cycle. Once you&#xA;have obtained a &lt;code>Popup&lt;/code>, and hidden it (invoked the&#xA;&lt;code>hide&lt;/code> method), you should no longer&#xA;invoke any methods on it. This allows the &lt;code>PopupFactory&lt;/code> to cache&#xA;&lt;code>Popup&lt;/code>s for later use.&#xA;&lt;p>&#xA;The general contract is that if you need to change the size of the&#xA;&lt;code>Component&lt;/code>, or location of the &lt;code>Popup&lt;/code>, you should&#xA;obtain a new &lt;code>Popup&lt;/code>.&#xA;&lt;p>&#xA;&lt;code>Popup&lt;/code> does not descend from &lt;code>Component&lt;/code>, rather&#xA;implementations of &lt;code>Popup&lt;/code> are responsible for creating&#xA;and maintaining their own &lt;code>Component&lt;/code>s to render the&#xA;requested &lt;code>Component&lt;/code> to the user.&#xA;&lt;p>&#xA;You typically do not explicitly create an instance of &lt;code>Popup&lt;/code>,&#xA;instead obtain one from a &lt;code>PopupFactory&lt;/code>.&#xA;&#xA;@see PopupFactory&#xA;&#xA;@version 1.17 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="995cfabc-c381-4f1a-9b4a-0e362042ced3"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="94f3d5da-0fcc-43fc-b7be-e3fe24da3df6" name="HeavyWeightWindow" visibility="package">
              <ownedComment xmi:id="feaa74ef-d34e-446a-ba1b-f7ab851108fb" body="Component used to house window.&#xA;" annotatedElement="94f3d5da-0fcc-43fc-b7be-e3fe24da3df6"/>
              <generalization xmi:id="716bf548-2ec5-4927-90ec-9c242007c5be" isSubstitutable="true" general="30da9540-ab62-4dcc-9e33-fb4c1c7029ca"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="e7d40f1d-1935-431e-a0de-df23737353a6" name="DefaultFrame" visibility="package">
              <ownedComment xmi:id="f757eba8-a746-48f1-abec-f67412aa8c97" body="Used if no valid Window ancestor of the supplied owner is found.&#xA;&lt;p>&#xA;PopupFactory uses this as a way to know when the Popup shouldn't&#xA;be cached based on the Window.&#xA;" annotatedElement="e7d40f1d-1935-431e-a0de-df23737353a6"/>
              <generalization xmi:id="e914bc22-51b0-493f-8cd1-00bc83f0f0c5" isSubstitutable="true" general="6f2ca193-05d8-41df-b71a-a59fa5cf0c37"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="9891cee7-a32e-47c4-90bd-23415c032643" name="ButtonModel" isAbstract="true">
            <ownedComment xmi:id="0bfce1d3-6257-4e64-ae34-14f655901f4f" body="State Model for buttons.&#xA;This model is used for check boxes and radio buttons, which are&#xA;special kinds of buttons, as well as for normal buttons.&#xA;For check boxes and radio buttons, pressing the mouse selects&#xA;the button. For normal buttons, pressing the mouse &quot;arms&quot; the&#xA;button. Releasing the mouse over the button then initiates a&#xA;&lt;i>button&lt;/i> press, firing its action event. Releasing the&#xA;mouse elsewhere disarms the button.&#xA;&lt;p>&#xA;In use, a UI will invoke {@link #setSelected} when a mouse&#xA;click occurs over a check box or radio button. It will invoke&#xA;{@link #setArmed} when the mouse is pressed over a regular&#xA;button and invoke {@link #setPressed} when the mouse is released.&#xA;If the mouse travels outside the button in the meantime,&#xA;&lt;code>setArmed(false)&lt;/code> will tell the button not to fire&#xA;when it sees &lt;code>setPressed&lt;/code>. (If the mouse travels&#xA;back in, the button will be rearmed.)&#xA;&lt;blockquote>&#xA;&lt;b>Note: &lt;/b>&lt;br>&#xA;A button is triggered when it is both &quot;armed&quot; and &quot;pressed&quot;.&#xA;&lt;/blockquote>&#xA;&#xA;@version 1.26 12/19/03&#xA;@author Jeff Dinkins&#xA;" annotatedElement="9891cee7-a32e-47c4-90bd-23415c032643"/>
            <generalization xmi:id="ed94cace-bb2f-4690-9c4f-c5c6adeb095e" isSubstitutable="true" general="db09b331-737d-46b0-b88c-ec77f93dd925"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="bdf10d32-7b36-49fa-b93d-8154a83439fe" name="text">
            <packagedElement xmi:type="uml:Class" xmi:id="734d9f6e-4a5e-437c-b0cb-9d2460957bd4" name="TextAction" isAbstract="true">
              <ownedComment xmi:id="8f7a2efc-0b2d-40d5-b505-cb80511ffbb2" body="An Action implementation useful for key bindings that are&#xA;shared across a number of different text components.  Because&#xA;the action is shared, it must have a way of getting it's&#xA;target to act upon.  This class provides support to try and&#xA;find a text component to operate on.  The preferred way of&#xA;getting the component to act upon is through the ActionEvent&#xA;that is received.  If the Object returned by getSource can&#xA;be narrowed to a text component, it will be used.  If the&#xA;action event is null or can't be narrowed, the last focused&#xA;text component is tried.  This is determined by being&#xA;used in conjunction with a JTextController which&#xA;arranges to share that information with a TextAction.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.29 12/19/03&#xA;" annotatedElement="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              <generalization xmi:id="1d9333c5-0d27-41f6-8440-6c3a0a3509e6" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="394a3db5-0547-4240-8bbe-f70947c38f42" name="TableView" isAbstract="true">
              <ownedComment xmi:id="594c8151-9bfd-4119-9791-c7076ba06a1e" body="&lt;p>&#xA;Implements View interface for a table, that is composed of an&#xA;element structure where the child elements of the element&#xA;this view is responsible for represent rows and the child&#xA;elements of the row elements are cells.  The cell elements can&#xA;have an arbitrary element structure under them, which will&#xA;be built with the ViewFactory returned by the getViewFactory&#xA;method.&#xA;&lt;pre>&#xA;&#xA;&amp;nbsp;  TABLE&#xA;&amp;nbsp;    ROW&#xA;&amp;nbsp;      CELL&#xA;&amp;nbsp;      CELL&#xA;&amp;nbsp;    ROW&#xA;&amp;nbsp;      CELL&#xA;&amp;nbsp;      CELL&#xA;&#xA;&lt;/pre>&#xA;&lt;p>&#xA;This is implemented as a hierarchy of boxes, the table itself&#xA;is a vertical box, the rows are horizontal boxes, and the cells&#xA;are vertical boxes.  The cells are allowed to span multiple&#xA;columns and rows.  By default, the table can be thought of as&#xA;being formed over a grid (i.e. somewhat like one would find in&#xA;gridbag layout), where table cells can request to span more&#xA;than one grid cell.  The default horizontal span of table cells&#xA;will be based upon this grid, but can be changed by reimplementing&#xA;the requested span of the cell (i.e. table cells can have independant&#xA;spans if desired).&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.33 05/18/04&#xA;@see     View&#xA;" annotatedElement="394a3db5-0547-4240-8bbe-f70947c38f42"/>
              <generalization xmi:id="8b5ce145-dafe-48d3-bf57-06fa9bec742f" isSubstitutable="true" general="21bc7467-2f3d-4452-af93-a254d26bf84f"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="4aa5f630-77ea-491f-a5d7-bcf7973169c7" name="TableRow">
                <ownedComment xmi:id="7217d941-ebf1-4644-a992-7a9e6fabb73c" body="View of a row in a row-centric table.&#xA;" annotatedElement="4aa5f630-77ea-491f-a5d7-bcf7973169c7"/>
                <generalization xmi:id="1647fe01-3af6-46a0-bb1e-a4ddfa835ce1" isSubstitutable="true" general="21bc7467-2f3d-4452-af93-a254d26bf84f"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="b56835b1-3f6c-445e-9b6d-df581bb40fa3" name="TableCell" clientDependency="5359b2de-63ba-4c05-9f9b-8799df23faa2">
                <ownedComment xmi:id="a723596b-ecff-463a-8c93-4e58d6c3af96" body="@deprecated  A table cell can now be any View implementation.&#xA;" annotatedElement="b56835b1-3f6c-445e-9b6d-df581bb40fa3"/>
                <generalization xmi:id="7a0d80b8-3c85-45f8-b411-332dc07071a5" isSubstitutable="true" general="21bc7467-2f3d-4452-af93-a254d26bf84f"/>
                <interfaceRealization xmi:id="5359b2de-63ba-4c05-9f9b-8799df23faa2" name="" supplier="85b88d0f-a287-4353-826c-9091b2a8d70f" client="b56835b1-3f6c-445e-9b6d-df581bb40fa3" contract="85b88d0f-a287-4353-826c-9091b2a8d70f"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Interface" xmi:id="85b88d0f-a287-4353-826c-9091b2a8d70f" name="GridCell" visibility="package" isAbstract="true">
                <ownedComment xmi:id="96e81402-8f39-4a86-a527-d358d96ec79d" body="&lt;em>&#xA;THIS IS NO LONGER USED, AND WILL BE REMOVED IN THE&#xA;NEXT RELEASE.  THE JCK SIGNATURE TEST THINKS THIS INTERFACE&#xA;SHOULD EXIST&#xA;&lt;/em>&#xA;" annotatedElement="85b88d0f-a287-4353-826c-9091b2a8d70f"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="4ae81bf0-a009-4407-9563-2b15ca9ed43f" name="html">
              <packagedElement xmi:type="uml:Class" xmi:id="af14aa58-0c5d-4bcc-850b-c4bb873f25b9" name="InlineView">
                <ownedComment xmi:id="5a6f5490-53cf-423a-982e-472f2e786ac0" body="Displays the &lt;dfn>inline element&lt;/dfn> styles&#xA;based upon css attributes.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.25 03/05/04&#xA;" annotatedElement="af14aa58-0c5d-4bcc-850b-c4bb873f25b9"/>
                <generalization xmi:id="f06318a1-bf5a-4434-aaae-4d72172343cc" isSubstitutable="true" general="e9f02124-8b18-4407-9a18-f31a273a80c3"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="63becb3e-f3df-460e-9add-fcedd0e12bde" name="CSS" clientDependency="17717f6e-7128-4730-81aa-c74d0d19f0f7">
                <ownedComment xmi:id="9568da9b-608b-4ee9-b36c-cabe537321da" body="Defines a set of&#xA;&lt;a href=&quot;http://www.w3.org/TR/REC-CSS1&quot;>CSS attributes&lt;/a>&#xA;as a typesafe enumeration.  The HTML View implementations use&#xA;CSS attributes to determine how they will render. This also defines&#xA;methods to map between CSS/HTML/StyleConstants. Any shorthand&#xA;properties, such as font, are mapped to the intrinsic properties.&#xA;&lt;p>The following describes the CSS properties that are suppored by the&#xA;rendering engine:&#xA;&lt;ul>&lt;li>font-family&#xA;&lt;li>font-style&#xA;&lt;li>font-size (supports relative units)&#xA;&lt;li>font-weight&#xA;&lt;li>font&#xA;&lt;li>color&#xA;&lt;li>background-color (with the exception of transparent)&#xA;&lt;li>background-image&#xA;&lt;li>background-repeat&#xA;&lt;li>background-position&#xA;&lt;li>background&#xA;&lt;li>background-repeat&#xA;&lt;li>text-decoration (with the exception of blink and overline)&#xA;&lt;li>vertical-align (only sup and super)&#xA;&lt;li>text-align (justify is treated as center)&#xA;&lt;li>margin-top&#xA;&lt;li>margin-right&#xA;&lt;li>margin-bottom&#xA;&lt;li>margin-left&#xA;&lt;li>margin&#xA;&lt;li>padding-top&#xA;&lt;li>padding-right&#xA;&lt;li>padding-bottom&#xA;&lt;li>padding-left&#xA;&lt;li>border-style (only supports inset, outset and none)&#xA;&lt;li>list-style-type&#xA;&lt;li>list-style-position&#xA;&lt;/ul>&#xA;The following are modeled, but currently not rendered.&#xA;&lt;ul>&lt;li>font-variant&#xA;&lt;li>background-attachment (background always treated as scroll)&#xA;&lt;li>word-spacing&#xA;&lt;li>letter-spacing&#xA;&lt;li>text-indent&#xA;&lt;li>text-transform&#xA;&lt;li>line-height&#xA;&lt;li>border-top-width (this is used to indicate if a border should be used)&#xA;&lt;li>border-right-width&#xA;&lt;li>border-bottom-width&#xA;&lt;li>border-left-width&#xA;&lt;li>border-width&#xA;&lt;li>border-top&#xA;&lt;li>border-right&#xA;&lt;li>border-bottom&#xA;&lt;li>border-left&#xA;&lt;li>border&#xA;&lt;li>width&#xA;&lt;li>height&#xA;&lt;li>float&#xA;&lt;li>clear&#xA;&lt;li>display&#xA;&lt;li>white-space&#xA;&lt;li>list-style&#xA;&lt;/ul>&#xA;&lt;p>&lt;b>Note: for the time being we do not fully support relative units,&#xA;unless noted, so that&#xA;p { margin-top: 10% } will be treated as if no margin-top was specified.&#xA;&#xA;@author  Timothy Prinzing&#xA;@author  Scott Violet&#xA;@version 1.54 07/24/04&#xA;@see StyleSheet&#xA;" annotatedElement="63becb3e-f3df-460e-9add-fcedd0e12bde"/>
                <interfaceRealization xmi:id="17717f6e-7128-4730-81aa-c74d0d19f0f7" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="63becb3e-f3df-460e-9add-fcedd0e12bde" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="2734050d-87df-4614-b693-740e8c589108" name="Attribute" isLeaf="true">
                  <ownedComment xmi:id="633f48fa-69db-4f86-80af-33db25fc552a" body="Definitions to be used as a key on AttributeSet's&#xA;that might hold CSS attributes.  Since this is a&#xA;closed set (i.e. defined exactly by the specification),&#xA;it is final and cannot be extended.&#xA;" annotatedElement="2734050d-87df-4614-b693-740e8c589108"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="051316c1-a063-49fd-a3da-36a4f1726c88" name="Value" visibility="package" isLeaf="true"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="2373d4ed-70c9-47ad-af32-4e9ef26369a6" name="CssValue" visibility="package" clientDependency="89b1c2b3-01c3-40f6-a4a7-fccd2cf7d24c">
                  <ownedComment xmi:id="80a86b93-148c-42d2-924f-3e96a1e6c953" body="Base class to CSS values in the attribute sets.  This&#xA;is intended to act as a convertor to/from other attribute&#xA;formats.&#xA;&lt;p>&#xA;The CSS parser uses the parseCssValue method to convert&#xA;a string to whatever format is appropriate a given key&#xA;(i.e. these convertors are stored in a map using the&#xA;CSS.Attribute as a key and the CssValue as the value).&#xA;&lt;p>&#xA;The HTML to CSS conversion process first converts the&#xA;HTML.Attribute to a CSS.Attribute, and then calls&#xA;the parseHtmlValue method on the value of the HTML&#xA;attribute to produce the corresponding CSS value.&#xA;&lt;p>&#xA;The StyleConstants to CSS conversion process first&#xA;converts the StyleConstants attribute to a&#xA;CSS.Attribute, and then calls the fromStyleConstants&#xA;method to convert the StyleConstants value to a&#xA;CSS value.&#xA;&lt;p>&#xA;The CSS to StyleConstants conversion process first&#xA;converts the StyleConstants attribute to a&#xA;CSS.Attribute, and then calls the toStyleConstants&#xA;method to convert the CSS value to a StyleConstants&#xA;value.&#xA;" annotatedElement="2373d4ed-70c9-47ad-af32-4e9ef26369a6"/>
                  <interfaceRealization xmi:id="89b1c2b3-01c3-40f6-a4a7-fccd2cf7d24c" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="2373d4ed-70c9-47ad-af32-4e9ef26369a6" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6e5a4bc7-f232-4da3-bf17-e93ab82bd1b0" name="StringValue" visibility="package">
                  <ownedComment xmi:id="6361e274-c96f-4eb9-ba74-e2f038d39f54" body="By default CSS attributes are represented as simple&#xA;strings.  They also have no conversion to/from&#xA;StyleConstants by default. This class represents the&#xA;value as a string (via the superclass), but&#xA;provides StyleConstants conversion support for the&#xA;CSS attributes that are held as strings.&#xA;" annotatedElement="6e5a4bc7-f232-4da3-bf17-e93ab82bd1b0"/>
                  <generalization xmi:id="8871cf05-5167-450f-997a-eb66a0f29cfc" isSubstitutable="true" general="2373d4ed-70c9-47ad-af32-4e9ef26369a6"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="664f4d49-3ab4-461d-a80f-0e7ff3b9bf39" name="FontSize" visibility="package">
                  <ownedComment xmi:id="58d3ebe3-d84d-4a4d-95ea-82c99577f2de" body="Represents a value for the CSS.FONT_SIZE attribute.&#xA;The binary format of the value can be one of several&#xA;types.  If the type is Float,&#xA;the value is specified in terms of point or&#xA;percentage, depending upon the ending of the&#xA;associated string.&#xA;If the type is Integer, the value is specified&#xA;in terms of a size index.&#xA;" annotatedElement="664f4d49-3ab4-461d-a80f-0e7ff3b9bf39"/>
                  <generalization xmi:id="9a863793-ea0c-43da-832f-302ca90a5d6c" isSubstitutable="true" general="2373d4ed-70c9-47ad-af32-4e9ef26369a6"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="cce91a57-74d3-486d-bb4d-62df3b532aea" name="FontFamily" visibility="package">
                  <generalization xmi:id="047ab7d4-b207-4328-a4ce-024c0229dff0" isSubstitutable="true" general="2373d4ed-70c9-47ad-af32-4e9ef26369a6"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="603d7ac3-1280-447e-8fc3-77d8b57b3255" name="FontWeight" visibility="package">
                  <generalization xmi:id="faf0b764-ac71-4089-a535-dde0015bcbad" isSubstitutable="true" general="2373d4ed-70c9-47ad-af32-4e9ef26369a6"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="26b2f7f3-423f-4f84-be45-5235b6db8504" name="ColorValue" visibility="package">
                  <generalization xmi:id="2f543379-cea8-41e4-be69-2fca0534292f" isSubstitutable="true" general="2373d4ed-70c9-47ad-af32-4e9ef26369a6"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a61a9b20-3860-4fe9-aecd-29e057d170fa" name="BorderStyle" visibility="package">
                  <generalization xmi:id="3702b8f9-af38-4c7c-8143-8da25878e2bc" isSubstitutable="true" general="2373d4ed-70c9-47ad-af32-4e9ef26369a6"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="7b720a49-eeda-4b14-8966-992fa3c9f257" name="LengthValue" visibility="package">
                  <generalization xmi:id="11ceb271-5020-4270-8745-f18d95b12450" isSubstitutable="true" general="2373d4ed-70c9-47ad-af32-4e9ef26369a6"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="dbc0264e-2158-4ae3-9610-c631f1762ed0" name="BorderWidthValue" visibility="package">
                  <ownedComment xmi:id="a65f916d-5c6e-4192-9d03-89840cd479df" body="BorderWidthValue is used to model BORDER_XXX_WIDTH and adds support&#xA;for the thin/medium/thick values.&#xA;" annotatedElement="dbc0264e-2158-4ae3-9610-c631f1762ed0"/>
                  <generalization xmi:id="5e8fb6de-3284-4e76-9488-086c53845c6f" isSubstitutable="true" general="7b720a49-eeda-4b14-8966-992fa3c9f257"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e6e4f824-125f-4ab2-a082-380631ca06c4" name="CssValueMapper" visibility="package">
                  <ownedComment xmi:id="66217c84-80fd-441b-a404-0ea9afdd51c5" body="Handles uniquing of CSS values, like lists, and background image&#xA;repeating.&#xA;" annotatedElement="e6e4f824-125f-4ab2-a082-380631ca06c4"/>
                  <generalization xmi:id="0fd0b240-fcab-47b1-9767-ce074b17c3cb" isSubstitutable="true" general="2373d4ed-70c9-47ad-af32-4e9ef26369a6"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5ee72c53-bd0b-446b-8936-4aa1c2e16818" name="BackgroundPosition" visibility="package">
                  <ownedComment xmi:id="ae513aa4-81d2-4338-b00d-a287e37dc7f8" body="Used for background images, to represent the position.&#xA;" annotatedElement="5ee72c53-bd0b-446b-8936-4aa1c2e16818"/>
                  <generalization xmi:id="2bc46e55-5ab4-497e-95ef-3230e468f7b4" isSubstitutable="true" general="2373d4ed-70c9-47ad-af32-4e9ef26369a6"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="3d861dd6-8820-448b-a963-1b4744ca2bb4" name="BackgroundImage" visibility="package">
                  <ownedComment xmi:id="e329cf87-72c1-490e-9043-672e0096c98d" body="Used for BackgroundImages.&#xA;" annotatedElement="3d861dd6-8820-448b-a963-1b4744ca2bb4"/>
                  <generalization xmi:id="0e181e44-f988-496c-94fb-f2e48d71bbdb" isSubstitutable="true" general="2373d4ed-70c9-47ad-af32-4e9ef26369a6"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="4137378f-652b-4cf6-ab92-04d373524636" name="LengthUnit" visibility="package" clientDependency="e26d3922-44a0-41bd-bc5c-ef113f43b0ab">
                  <ownedComment xmi:id="2826d912-636c-49ad-83d9-c224a1fe6e2e" body="Parses a length value, this is used internally, and never added&#xA;to an AttributeSet or returned to the developer.&#xA;" annotatedElement="4137378f-652b-4cf6-ab92-04d373524636"/>
                  <interfaceRealization xmi:id="e26d3922-44a0-41bd-bc5c-ef113f43b0ab" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4137378f-652b-4cf6-ab92-04d373524636" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="bd0578c9-b390-48b6-b361-eb1ec4b6a60e" name="ShorthandFontParser" visibility="package">
                  <ownedComment xmi:id="533bff31-c97a-4772-b241-0eeba0b2b430" body="Class used to parse font property. The font property is shorthand&#xA;for the other font properties. This expands the properties, placing&#xA;them in the attributeset.&#xA;" annotatedElement="bd0578c9-b390-48b6-b361-eb1ec4b6a60e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a8e27fdb-1c29-4605-93aa-857401714ab1" name="ShorthandBackgroundParser" visibility="package">
                  <ownedComment xmi:id="a4981c3a-5711-431a-a157-ab20c58851c2" body="Parses the background property into its intrinsic values.&#xA;" annotatedElement="a8e27fdb-1c29-4605-93aa-857401714ab1"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6b9fbf13-b56e-4899-8795-93163ff2c042" name="ShorthandMarginParser" visibility="package">
                  <ownedComment xmi:id="b097fdad-2492-4cae-8674-5ce8dc40105a" body="Used to parser margin and padding.&#xA;" annotatedElement="6b9fbf13-b56e-4899-8795-93163ff2c042"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Interface" xmi:id="a820975e-7602-43b0-9133-5e35c5d19a49" name="LayoutIterator" visibility="package" isAbstract="true">
                  <ownedComment xmi:id="0c43d22f-0764-4748-8677-4e83a2d9f816" body="An iterator to express the requirements to use when computing&#xA;layout.&#xA;" annotatedElement="a820975e-7602-43b0-9133-5e35c5d19a49"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="a895d751-1d7d-4087-ad1c-161bc8551d3e" name="ImageView">
                <ownedComment xmi:id="34863e27-20df-4def-954a-ff44dad0d17c" body="View of an Image, intended to support the HTML &lt;IMG> tag.&#xA;Supports scaling via the HEIGHT and WIDTH attributes of the tag.&#xA;If the image is unable to be loaded any text specified via the&#xA;&lt;code>ALT&lt;/code> attribute will be rendered.&#xA;&lt;p>&#xA;While this class has been part of swing for a while now, it is public&#xA;as of 1.4.&#xA;&#xA;@author  Scott Violet&#xA;@version 1.56 12/19/03&#xA;@see IconView&#xA;@since 1.4&#xA;" annotatedElement="a895d751-1d7d-4087-ad1c-161bc8551d3e"/>
                <generalization xmi:id="e94ea7d5-3252-4a6b-8bbe-174fe47c7493" isSubstitutable="true" general="a12ab75d-4ae8-40c5-ac6c-848d1ef3f725"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c03acb48-76f3-4071-bede-13a15702f980" name="ImageHandler" visibility="private" clientDependency="47084d00-f7c6-41b6-9a01-70bf39bc6294">
                  <ownedComment xmi:id="7b9bed71-cce6-494d-b109-0474ffbae54b" body="ImageHandler implements the ImageObserver to correctly update the&#xA;display as new parts of the image become available.&#xA;" annotatedElement="c03acb48-76f3-4071-bede-13a15702f980"/>
                  <interfaceRealization xmi:id="47084d00-f7c6-41b6-9a01-70bf39bc6294" name="" supplier="72ede030-0691-4953-be91-11a6a0047536" client="c03acb48-76f3-4071-bede-13a15702f980" contract="72ede030-0691-4953-be91-11a6a0047536"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="72443772-a9b9-4954-8acc-1bdb61acbad3" name="ImageLabelView" visibility="private">
                  <ownedComment xmi:id="d482d227-c9a8-419a-907c-55bacfe9e5b0" body="ImageLabelView is used if the image can't be loaded, and&#xA;the attribute specified an alt attribute. It overriden a handle of&#xA;methods as the text is hardcoded and does not come from the document.&#xA;" annotatedElement="72443772-a9b9-4954-8acc-1bdb61acbad3"/>
                  <generalization xmi:id="dfea90e9-0872-4e1d-af51-62d055d56901" isSubstitutable="true" general="af14aa58-0c5d-4bcc-850b-c4bb873f25b9"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="1ec00b2e-b1ad-48db-9244-a8af722afe16" name="LineView" visibility="package">
                <ownedComment xmi:id="5289ef50-601d-4901-b686-50aa504cffbc" body="A view implementation to display an unwrapped&#xA;preformatted line.&lt;p>&#xA;This subclasses ParagraphView, but this really only contains one&#xA;Row of text.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.18 12/19/03&#xA;" annotatedElement="1ec00b2e-b1ad-48db-9244-a8af722afe16"/>
                <generalization xmi:id="31f37168-7970-43a2-884f-21400872d0d8" isSubstitutable="true" general="295ab0a9-65a8-42ed-ab3d-38a921fd9a25"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6d62f578-bd8b-4484-931f-bf015f074a85" name="EditableView" visibility="package">
                <ownedComment xmi:id="fede77bf-f6ea-4516-9f4a-a8857eb20494" body="EditableView sets the view it contains to be visible only when the&#xA;JTextComponent the view is contained in is editable. The min/pref/max&#xA;size is 0 when not visible.&#xA;&#xA;@author  Scott Violet&#xA;@version 1.11, 12/19/03&#xA;" annotatedElement="6d62f578-bd8b-4484-931f-bf015f074a85"/>
                <generalization xmi:id="79ae4b5e-c929-483e-95b4-6f34be03e434" isSubstitutable="true" general="8d3894dd-b70c-4585-9126-8c42e5ec577a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="8af281b0-e505-4b3e-8097-7ba29b6a6ff1" name="IsindexView" visibility="package" clientDependency="ff292bb8-4e4c-4f0f-bc2f-9679846b8cad">
                <ownedComment xmi:id="f0a0ad35-c89c-48b0-8b78-3c37a80b78ef" body="A view that supports the &lt;ISINDEX&lt; tag.  This is implemented&#xA;as a JPanel that contains&#xA;&#xA;@author Sunita Mani&#xA;@version 1.11, 12/19/03&#xA;" annotatedElement="8af281b0-e505-4b3e-8097-7ba29b6a6ff1"/>
                <generalization xmi:id="2efeee43-9423-46e8-ac93-018f80dd8b2f" isSubstitutable="true" general="8d3894dd-b70c-4585-9126-8c42e5ec577a"/>
                <interfaceRealization xmi:id="ff292bb8-4e4c-4f0f-bc2f-9679846b8cad" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="8af281b0-e505-4b3e-8097-7ba29b6a6ff1" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="ead99b74-2831-41e1-a791-48ea1307b27f" name="FrameView" visibility="package" clientDependency="27a03f0c-3068-4062-8744-dbcfef6dcfa1">
                <ownedComment xmi:id="7bc39d30-3e08-4bd3-bcce-cf8bdf361e8f" body="Implements a FrameView, intended to support the HTML&#xA;&lt;FRAME> tag.  Supports the frameborder, scrolling,&#xA;marginwidth and marginheight attributes.&#xA;&#xA;@author    Sunita Mani&#xA;@version   1.28, 12/19/03&#xA;" annotatedElement="ead99b74-2831-41e1-a791-48ea1307b27f"/>
                <generalization xmi:id="631477d3-8bfa-40d8-a501-47066f8a4508" isSubstitutable="true" general="8d3894dd-b70c-4585-9126-8c42e5ec577a"/>
                <interfaceRealization xmi:id="27a03f0c-3068-4062-8744-dbcfef6dcfa1" name="" supplier="6bc8edc9-4c17-4ffe-962b-c690c7e16505" client="ead99b74-2831-41e1-a791-48ea1307b27f" contract="6bc8edc9-4c17-4ffe-962b-c690c7e16505"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="69e25529-b2e6-4bbe-80f5-47baed67b879" name="FrameEditorPane" visibility="private">
                  <ownedComment xmi:id="dceeb111-23d5-4b3d-84b6-cc9dfd49bb63" body="Editor pane rendering frame of HTML document&#xA;It uses the same editor kits classes as outermost JEditorPane&#xA;" annotatedElement="69e25529-b2e6-4bbe-80f5-47baed67b879"/>
                  <generalization xmi:id="c3f61458-bc79-4b2b-9de8-a67e23e3a3f3" isSubstitutable="true" general="10cb57cb-a0cb-4b2a-9e6c-eb1010d6d335"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="78cf53c3-70f0-4515-963a-a9df4a0d5190" name="HTMLEditorKit" clientDependency="cb095f48-7143-4dda-a920-7f5c112d5fdf">
                <ownedComment xmi:id="71b5c077-db96-4797-bca6-0a2cd26f2b5b" body="The Swing JEditorPane text component supports different kinds&#xA;of content via a plug-in mechanism called an EditorKit.  Because&#xA;HTML is a very popular format of content, some support is provided&#xA;by default.  The default support is provided by this class, which&#xA;supports HTML version 3.2 (with some extensions), and is migrating&#xA;toward version 4.0.&#xA;The &lt;applet> tag is not supported, but some support is provided&#xA;for the &lt;object> tag.&#xA;&lt;p>&#xA;There are several goals of the HTML EditorKit provided, that have&#xA;an effect upon the way that HTML is modeled.  These&#xA;have influenced its design in a substantial way.&#xA;&lt;dl>&#xA;&lt;p>&#xA;&lt;dt>&#xA;Support editing&#xA;&lt;dd>&#xA;It might seem fairly obvious that a plug-in for JEditorPane&#xA;should provide editing support, but that fact has several&#xA;design considerations.  There are a substantial number of HTML&#xA;documents that don't properly conform to an HTML specification.&#xA;These must be normalized somewhat into a correct form if one&#xA;is to edit them.  Additionally, users don't like to be presented&#xA;with an excessive amount of structure editing, so using traditional&#xA;text editing gestures is preferred over using the HTML structure&#xA;exactly as defined in the HTML document.&#xA;&lt;p>&#xA;The modeling of HTML is provided by the class &lt;code>HTMLDocument&lt;/code>.&#xA;Its documention describes the details of how the HTML is modeled.&#xA;The editing support leverages heavily off of the text package.&#xA;&lt;p>&#xA;&lt;dt>&#xA;Extendable/Scalable&#xA;&lt;dd>&#xA;To maximize the usefulness of this kit, a great deal of effort&#xA;has gone into making it extendable.  These are some of the&#xA;features.&#xA;&lt;ol>&#xA;&lt;li>&#xA;The parser is replacable.  The default parser is the Hot Java&#xA;parser which is DTD based.  A different DTD can be used, or an&#xA;entirely different parser can be used.  To change the parser,&#xA;reimplement the getParser method.  The default parser is&#xA;dynamically loaded when first asked for, so the class files&#xA;will never be loaded if an alternative parser is used.  The&#xA;default parser is in a separate package called parser below&#xA;this package.&#xA;&lt;li>&#xA;The parser drives the ParserCallback, which is provided by&#xA;HTMLDocument.  To change the callback, subclass HTMLDocument&#xA;and reimplement the createDefaultDocument method to return&#xA;document that produces a different reader.  The reader controls&#xA;how the document is structured.  Although the Document provides&#xA;HTML support by default, there is nothing preventing support of&#xA;non-HTML tags that result in alternative element structures.&#xA;&lt;li>&#xA;The default view of the models are provided as a hierarchy of&#xA;View implementations, so one can easily customize how a particular&#xA;element is displayed or add capabilities for new kinds of elements&#xA;by providing new View implementations.  The default set of views&#xA;are provided by the &lt;code>HTMLFactory&lt;/code> class.  This can&#xA;be easily changed by subclassing or replacing the HTMLFactory&#xA;and reimplementing the getViewFactory method to return the alternative&#xA;factory.&#xA;&lt;li>&#xA;The View implementations work primarily off of CSS attributes,&#xA;which are kept in the views.  This makes it possible to have&#xA;multiple views mapped over the same model that appear substantially&#xA;different.  This can be especially useful for printing.  For&#xA;most HTML attributes, the HTML attributes are converted to CSS&#xA;attributes for display.  This helps make the View implementations&#xA;more general purpose&#xA;&lt;/ol>&#xA;&lt;p>&#xA;&lt;dt>&#xA;Asynchronous Loading&#xA;&lt;dd>&#xA;Larger documents involve a lot of parsing and take some time&#xA;to load.  By default, this kit produces documents that will be&#xA;loaded asynchronously if loaded using &lt;code>JEditorPane.setPage&lt;/code>.&#xA;This is controlled by a property on the document.  The method&#xA;&lt;a href=&quot;#createDefaultDocument&quot;>createDefaultDocument&lt;/a> can&#xA;be overriden to change this.  The batching of work is done&#xA;by the &lt;code>HTMLDocument.HTMLReader&lt;/code> class.  The actual&#xA;work is done by the &lt;code>DefaultStyledDocument&lt;/code> and&#xA;&lt;code>AbstractDocument&lt;/code> classes in the text package.&#xA;&lt;p>&#xA;&lt;dt>&#xA;Customization from current LAF&#xA;&lt;dd>&#xA;HTML provides a well known set of features without exactly&#xA;specifying the display characteristics.  Swing has a theme&#xA;mechanism for its look-and-feel implementations.  It is desirable&#xA;for the look-and-feel to feed display characteristics into the&#xA;HTML views.  An user with poor vision for example would want&#xA;high contrast and larger than typical fonts.&#xA;&lt;p>&#xA;The support for this is provided by the &lt;code>StyleSheet&lt;/code>&#xA;class.  The presentation of the HTML can be heavily influenced&#xA;by the setting of the StyleSheet property on the EditorKit.&#xA;&lt;p>&#xA;&lt;dt>&#xA;Not lossy&#xA;&lt;dd>&#xA;An EditorKit has the ability to be read and save documents.&#xA;It is generally the most pleasing to users if there is no loss&#xA;of data between the two operation.  The policy of the HTMLEditorKit&#xA;will be to store things not recognized or not necessarily visible&#xA;so they can be subsequently written out.  The model of the HTML document&#xA;should therefore contain all information discovered while reading the&#xA;document.  This is constrained in some ways by the need to support&#xA;editing (i.e. incorrect documents sometimes must be normalized).&#xA;The guiding principle is that information shouldn't be lost, but&#xA;some might be synthesized to produce a more correct model or it might&#xA;be rearranged.&#xA;&lt;/dl>&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.131 05/18/04&#xA;" annotatedElement="78cf53c3-70f0-4515-963a-a9df4a0d5190"/>
                <generalization xmi:id="652477f6-9a62-42f6-ac46-6efbe710f73d" isSubstitutable="true" general="adcb1769-ab8f-46e7-bb6a-b279d64dd48c"/>
                <interfaceRealization xmi:id="cb095f48-7143-4dda-a920-7f5c112d5fdf" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="78cf53c3-70f0-4515-963a-a9df4a0d5190" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="4bc1993e-ba9d-4863-8fc7-afdf25b6d67a" name="LinkController" clientDependency="8e5881ca-c77c-4da1-b110-a4908b156395 d1df825d-3996-4520-ba56-85df943db88f">
                  <ownedComment xmi:id="2937197b-cb7d-44a5-b927-25a0ebe5a1c1" body="Class to watch the associated component and fire&#xA;hyperlink events on it when appropriate.&#xA;" annotatedElement="4bc1993e-ba9d-4863-8fc7-afdf25b6d67a"/>
                  <generalization xmi:id="4a11b1d8-3c84-4fcd-a0d8-f0ca64ea817f" isSubstitutable="true" general="0db79cd4-0757-4282-b2c3-730fa54c5c55"/>
                  <interfaceRealization xmi:id="8e5881ca-c77c-4da1-b110-a4908b156395" name="" supplier="8747391f-bebd-47e3-888b-8e509ac223c9" client="4bc1993e-ba9d-4863-8fc7-afdf25b6d67a" contract="8747391f-bebd-47e3-888b-8e509ac223c9"/>
                  <interfaceRealization xmi:id="d1df825d-3996-4520-ba56-85df943db88f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4bc1993e-ba9d-4863-8fc7-afdf25b6d67a" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="d9784bb5-c785-4ff1-a683-122e3ff1e5ba" name="Parser" isAbstract="true">
                  <ownedComment xmi:id="71142cbe-471c-4691-aca6-2e871ca4d502" body="Interface to be supported by the parser.  This enables&#xA;providing a different parser while reusing some of the&#xA;implementation provided by this editor kit.&#xA;" annotatedElement="d9784bb5-c785-4ff1-a683-122e3ff1e5ba"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5b108ddc-edd1-4061-ad1f-78cf02598288" name="ParserCallback">
                  <ownedComment xmi:id="fe06f36a-c7e7-4418-a5d0-4adf2a913ad1" body="The result of parsing drives these callback methods.&#xA;The open and close actions should be balanced.  The&#xA;&lt;code>flush&lt;/code> method will be the last method&#xA;called, to give the receiver a chance to flush any&#xA;pending data into the document.&#xA;&lt;p>Refer to DocumentParser, the default parser used, for further&#xA;information on the contents of the AttributeSets, the positions, and&#xA;other info.&#xA;&#xA;@see javax.swing.text.html.parser.DocumentParser&#xA;" annotatedElement="5b108ddc-edd1-4061-ad1f-78cf02598288"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="faf6ea46-bfcc-4e83-b4e0-b18e3f6e4c1e" name="HTMLFactory" clientDependency="c94096e6-46e8-4fcc-b1d6-30e7525755d7">
                  <ownedComment xmi:id="c7287e25-3499-438b-8140-50445c1fb807" body="A factory to build views for HTML.  The following&#xA;table describes what this factory will build by&#xA;default.&#xA;&#xA;&lt;table summary=&quot;Describes the tag and view created by this factory by default&quot;>&#xA;&lt;tr>&#xA;&lt;th align=left>Tag&lt;th align=left>View created&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.CONTENT&lt;td>InlineView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.IMPLIED&lt;td>javax.swing.text.html.ParagraphView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.P&lt;td>javax.swing.text.html.ParagraphView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.H1&lt;td>javax.swing.text.html.ParagraphView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.H2&lt;td>javax.swing.text.html.ParagraphView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.H3&lt;td>javax.swing.text.html.ParagraphView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.H4&lt;td>javax.swing.text.html.ParagraphView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.H5&lt;td>javax.swing.text.html.ParagraphView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.H6&lt;td>javax.swing.text.html.ParagraphView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.DT&lt;td>javax.swing.text.html.ParagraphView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.MENU&lt;td>ListView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.DIR&lt;td>ListView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.UL&lt;td>ListView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.OL&lt;td>ListView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.LI&lt;td>BlockView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.DL&lt;td>BlockView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.DD&lt;td>BlockView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.BODY&lt;td>BlockView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.HTML&lt;td>BlockView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.CENTER&lt;td>BlockView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.DIV&lt;td>BlockView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.BLOCKQUOTE&lt;td>BlockView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.PRE&lt;td>BlockView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.BLOCKQUOTE&lt;td>BlockView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.PRE&lt;td>BlockView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.IMG&lt;td>ImageView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.HR&lt;td>HRuleView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.BR&lt;td>BRView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.TABLE&lt;td>javax.swing.text.html.TableView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.INPUT&lt;td>FormView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.SELECT&lt;td>FormView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.TEXTAREA&lt;td>FormView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.OBJECT&lt;td>ObjectView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.FRAMESET&lt;td>FrameSetView&#xA;&lt;/tr>&lt;tr>&#xA;&lt;td>HTML.Tag.FRAME&lt;td>FrameView&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;" annotatedElement="faf6ea46-bfcc-4e83-b4e0-b18e3f6e4c1e"/>
                  <interfaceRealization xmi:id="c94096e6-46e8-4fcc-b1d6-30e7525755d7" name="" supplier="e3a1d3f4-af71-4ce0-962d-e7b0b2295c0d" client="faf6ea46-bfcc-4e83-b4e0-b18e3f6e4c1e" contract="e3a1d3f4-af71-4ce0-962d-e7b0b2295c0d"/>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="9e292860-151d-4104-8fe2-52c531cd2953" name="BodyBlockView" visibility="package" clientDependency="6c310d6f-f7b6-4a52-8388-1ccdb7861558">
                    <generalization xmi:id="f77bf96c-b48c-4e03-8266-bb770641e10f" isSubstitutable="true" general="ad789f9c-2537-4654-b6cc-40b99e09b9d7"/>
                    <interfaceRealization xmi:id="6c310d6f-f7b6-4a52-8388-1ccdb7861558" name="" supplier="476f85cb-73d6-493e-8dda-f7ed06712460" client="9e292860-151d-4104-8fe2-52c531cd2953" contract="476f85cb-73d6-493e-8dda-f7ed06712460"/>
                  </nestedClassifier>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="44587c5b-d1a8-45b8-a572-30c890cdde99" name="HTMLTextAction" isAbstract="true">
                  <ownedComment xmi:id="383a1199-0616-4958-9d3b-7d0a6b942fae" body="An abstract Action providing some convenience methods that may&#xA;be useful in inserting HTML into an existing document.&#xA;&lt;p>NOTE: None of the convenience methods obtain a lock on the&#xA;document. If you have another thread modifying the text these&#xA;methods may have inconsistent behavior, or return the wrong thing.&#xA;" annotatedElement="44587c5b-d1a8-45b8-a572-30c890cdde99"/>
                  <generalization xmi:id="03123d42-750b-424a-9378-0d2df8b3cac4" isSubstitutable="true" general="6d5b1c6d-7b0a-4924-83e8-e41c0da9e864"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="0dd85276-2630-406d-ba12-ca9a46640e06" name="InsertHTMLTextAction">
                  <ownedComment xmi:id="8455f699-1e34-46f5-b837-fa2385b919d1" body="InsertHTMLTextAction can be used to insert an arbitrary string of HTML&#xA;into an existing HTML document. At least two HTML.Tags need to be&#xA;supplied. The first Tag, parentTag, identifies the parent in&#xA;the document to add the elements to. The second tag, addTag,&#xA;identifies the first tag that should be added to the document as&#xA;seen in the HTML string. One important thing to remember, is that&#xA;the parser is going to generate all the appropriate tags, even if&#xA;they aren't in the HTML string passed in.&lt;p>&#xA;For example, lets say you wanted to create an action to insert&#xA;a table into the body. The parentTag would be HTML.Tag.BODY,&#xA;addTag would be HTML.Tag.TABLE, and the string could be something&#xA;like &lt;table>&lt;tr>&lt;td>&lt;/td>&lt;/tr>&lt;/table>.&#xA;&lt;p>There is also an option to supply an alternate parentTag and&#xA;addTag. These will be checked for if there is no parentTag at&#xA;offset.&#xA;" annotatedElement="0dd85276-2630-406d-ba12-ca9a46640e06"/>
                  <generalization xmi:id="2f2b9d41-128d-4b26-8d40-fb29e772790d" isSubstitutable="true" general="44587c5b-d1a8-45b8-a572-30c890cdde99"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="28696340-da9c-4a3d-9e84-1528334e3af6" name="InsertHRAction" visibility="package">
                  <ownedComment xmi:id="62869ada-e37d-4489-98d9-6d51a36d2d49" body="InsertHRAction is special, at actionPerformed time it will determine&#xA;the parent HTML.Tag based on the paragraph element at the selection&#xA;start.&#xA;" annotatedElement="28696340-da9c-4a3d-9e84-1528334e3af6"/>
                  <generalization xmi:id="a1e095e8-75fa-4c94-ba25-0a0c38cf7a48" isSubstitutable="true" general="0dd85276-2630-406d-ba12-ca9a46640e06"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c3fcbe50-49f3-4fb3-aec1-870cffda7350" name="NavigateLinkAction" visibility="package" clientDependency="39af3d9b-ed3a-4ea4-b44a-28bbb5fd51df">
                  <generalization xmi:id="f15ff951-21f4-48d4-87c1-9a27eefe3f63" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
                  <interfaceRealization xmi:id="39af3d9b-ed3a-4ea4-b44a-28bbb5fd51df" name="" supplier="7f3dfbae-e88f-4d3a-854b-189e70ccdda1" client="c3fcbe50-49f3-4fb3-aec1-870cffda7350" contract="7f3dfbae-e88f-4d3a-854b-189e70ccdda1"/>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="e0af530e-bce7-4fa6-a50d-6aeda2224942" name="FocusHighlightPainter" visibility="package">
                    <ownedComment xmi:id="1665247c-f9c2-40df-aff1-df716f28c3c1" body="A highlight painter that draws a one-pixel border around&#xA;the highlighted area.&#xA;" annotatedElement="e0af530e-bce7-4fa6-a50d-6aeda2224942"/>
                    <generalization xmi:id="f89a6b20-d7b4-4070-9c41-e909c5ff23f5" isSubstitutable="true" general="9bc077c3-421c-4275-bcbc-655243b87f87"/>
                  </nestedClassifier>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1d1f5bb7-9760-41d1-8328-8ca396ed80ec" name="ActivateLinkAction" visibility="package">
                  <generalization xmi:id="8a8e6cb6-4c19-4d75-bdc6-338c4294eaa1" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4ffca5b9-8538-474e-b79c-238cc5ef1219" name="StyleSheet">
                <ownedComment xmi:id="4c5fe030-eb26-494d-889d-eaac8eec468e" body="Support for defining the visual characteristics of&#xA;HTML views being rendered.  The StyleSheet is used to&#xA;translate the HTML model into visual characteristics.&#xA;This enables views to be customized by a look-and-feel,&#xA;multiple views over the same model can be rendered&#xA;differently, etc.  This can be thought of as a CSS&#xA;rule repository.  The key for CSS attributes is an&#xA;object of type CSS.Attribute.  The type of the value&#xA;is up to the StyleSheet implementation, but the&#xA;&lt;code>toString&lt;/code> method is required&#xA;to return a string representation of CSS value.&#xA;&lt;p>&#xA;The primary entry point for HTML View implementations&#xA;to get their attributes is the&#xA;&lt;a href=&quot;#getViewAttributes&quot;>getViewAttributes&lt;/a>&#xA;method.  This should be implemented to establish the&#xA;desired policy used to associate attributes with the view.&#xA;Each HTMLEditorKit (i.e. and therefore each associated&#xA;JEditorPane) can have its own StyleSheet, but by default one&#xA;sheet will be shared by all of the HTMLEditorKit instances.&#xA;HTMLDocument instance can also have a StyleSheet, which&#xA;holds the document-specific CSS specifications.&#xA;&lt;p>&#xA;In order for Views to store less state and therefore be&#xA;more lightweight, the StyleSheet can act as a factory for&#xA;painters that handle some of the rendering tasks.  This allows&#xA;implementations to determine what they want to cache&#xA;and have the sharing potentially at the level that a&#xA;selector is common to multiple views.  Since the StyleSheet&#xA;may be used by views over multiple documents and typically&#xA;the HTML attributes don't effect the selector being used,&#xA;the potential for sharing is significant.&#xA;&lt;p>&#xA;The rules are stored as named styles, and other information&#xA;is stored to translate the context of an element to a&#xA;rule quickly.  The following code fragment will display&#xA;the named styles, and therefore the CSS rules contained.&#xA;&lt;code>&lt;pre>&#xA;&amp;nbsp;&#xA;&amp;nbsp; import java.util.*;&#xA;&amp;nbsp; import javax.swing.text.*;&#xA;&amp;nbsp; import javax.swing.text.html.*;&#xA;&amp;nbsp;&#xA;&amp;nbsp; public class ShowStyles {&#xA;&amp;nbsp;&#xA;&amp;nbsp;     public static void main(String[] args) {&#xA;&amp;nbsp; &#x9;HTMLEditorKit kit = new HTMLEditorKit();&#xA;&amp;nbsp; &#x9;HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();&#xA;&amp;nbsp; &#x9;StyleSheet styles = doc.getStyleSheet();&#xA;&amp;nbsp;&#xA;&amp;nbsp; &#x9;Enumeration rules = styles.getStyleNames();&#xA;&amp;nbsp; &#x9;while (rules.hasMoreElements()) {&#xA;&amp;nbsp; &#x9;    String name = (String) rules.nextElement();&#xA;&amp;nbsp; &#x9;    Style rule = styles.getStyle(name);&#xA;&amp;nbsp; &#x9;    System.out.println(rule.toString());&#xA;&amp;nbsp; &#x9;}&#xA;&amp;nbsp; &#x9;System.exit(0);&#xA;&amp;nbsp;     }&#xA;&amp;nbsp; }&#xA;&amp;nbsp;&#xA;&lt;/pre>&lt;/code>&#xA;&lt;p>&#xA;The semantics for when a CSS style should overide visual attributes&#xA;defined by an element are not well defined. For example, the html&#xA;&lt;code>&lt;body bgcolor=red>&lt;/code> makes the body have a red&#xA;background. But if the html file also contains the CSS rule&#xA;&lt;code>body { background: blue }&lt;/code> it becomes less clear as to&#xA;what color the background of the body should be. The current&#xA;implemention gives visual attributes defined in the element the&#xA;highest precedence, that is they are always checked before any styles.&#xA;Therefore, in the previous example the background would have a&#xA;red color as the body element defines the background color to be red.&#xA;&lt;p>&#xA;As already mentioned this supports CSS. We don't support the full CSS&#xA;spec. Refer to the javadoc of the CSS class to see what properties&#xA;we support. The two major CSS parsing related&#xA;concepts we do not currently&#xA;support are pseudo selectors, such as &lt;code>A:link { color: red }&lt;/code>,&#xA;and the &lt;code>important&lt;/code> modifier.&#xA;&lt;p>&#xA;&lt;font color=&quot;red&quot;>Note: This implementation is currently&#xA;incomplete.  It can be replaced with alternative implementations&#xA;that are complete.  Future versions of this class will provide&#xA;better CSS support.&lt;/font>&#xA;&#xA;@author  Timothy Prinzing&#xA;@author  Sunita Mani&#xA;@author  Sara Swanson&#xA;@author  Jill Nakata&#xA;@version 1.84 07/23/04&#xA;" annotatedElement="4ffca5b9-8538-474e-b79c-238cc5ef1219"/>
                <generalization xmi:id="65fe66fc-1b48-43cc-9b98-445b501cafb2" isSubstitutable="true" general="f1400625-1356-4283-a6af-16f6f216692c"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="95e5091e-1644-4f30-a8c4-7c801ae673fc" name="LargeConversionSet" visibility="package">
                  <ownedComment xmi:id="6baef009-0d33-4027-93e6-c784d6565dc7" body="Large set of attributes that does conversion of requests&#xA;for attributes of type StyleConstants.&#xA;" annotatedElement="95e5091e-1644-4f30-a8c4-7c801ae673fc"/>
                  <generalization xmi:id="8fb0c665-f4bc-402c-b8ed-92c9c2cd8b98" isSubstitutable="true" general="57df980b-ec0c-46d3-ac19-39c7d0bbfed7"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ffc76fab-1b8a-4f87-90de-ad89d0914037" name="SmallConversionSet" visibility="package">
                  <ownedComment xmi:id="2be802b2-6453-4e39-b00b-32bf53054f99" body="Small set of attributes that does conversion of requests&#xA;for attributes of type StyleConstants.&#xA;" annotatedElement="ffc76fab-1b8a-4f87-90de-ad89d0914037"/>
                  <generalization xmi:id="61de23c2-793d-4b3a-825d-5b52058dd91f" isSubstitutable="true" general="253dc961-4400-4214-86f9-b2f2ffa96f63"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="789fe0a9-3708-488e-860a-f3a9d2d54360" name="SearchBuffer" visibility="private">
                  <ownedComment xmi:id="c9150cb6-e25d-4bcb-863d-f69e0d0c2bd1" body="A temporary class used to hold a Vector, a StringBuffer and a&#xA;Hashtable. This is used to avoid allocing a lot of garbage when&#xA;searching for rules. Use the static method obtainSearchBuffer and&#xA;releaseSearchBuffer to get a SearchBuffer, and release it when&#xA;done.&#xA;" annotatedElement="789fe0a9-3708-488e-860a-f3a9d2d54360"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="4c6df714-33c1-4df9-b881-aa273dc9aa82" name="BoxPainter" clientDependency="be9510c3-34e3-411f-bb6b-72685facbb19">
                  <ownedComment xmi:id="6bffa0b5-02fa-4ec6-809c-dc69182c899f" body="Class to carry out some of the duties of&#xA;CSS formatting.  Implementations of this&#xA;class enable views to present the CSS formatting&#xA;while not knowing anything about how the CSS values&#xA;are being cached.&#xA;&lt;p>&#xA;As a delegate of Views, this object is responsible for&#xA;the insets of a View and making sure the background&#xA;is maintained according to the CSS attributes.&#xA;" annotatedElement="4c6df714-33c1-4df9-b881-aa273dc9aa82"/>
                  <interfaceRealization xmi:id="be9510c3-34e3-411f-bb6b-72685facbb19" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4c6df714-33c1-4df9-b881-aa273dc9aa82" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="9dfd77e5-9332-4ea2-8b13-e26922b239ce" name="ListPainter" clientDependency="d0ff71f8-4275-4031-80d9-4fc6ce4a33de">
                  <ownedComment xmi:id="9e22f6aa-9406-4ab9-b821-ebe88f15656a" body="Class to carry out some of the duties of CSS list&#xA;formatting.  Implementations of this&#xA;class enable views to present the CSS formatting&#xA;while not knowing anything about how the CSS values&#xA;are being cached.&#xA;" annotatedElement="9dfd77e5-9332-4ea2-8b13-e26922b239ce"/>
                  <interfaceRealization xmi:id="d0ff71f8-4275-4031-80d9-4fc6ce4a33de" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="9dfd77e5-9332-4ea2-8b13-e26922b239ce" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="fb839173-074b-4c0f-9d57-7e7f65fbbea6" name="BackgroundImagePainter" visibility="package" clientDependency="ba8460f5-b288-4da4-848e-ae1becfeecbd">
                  <ownedComment xmi:id="a53438b6-e12d-4c44-b782-05f1f0a73376" body="Paints the background image.&#xA;" annotatedElement="fb839173-074b-4c0f-9d57-7e7f65fbbea6"/>
                  <interfaceRealization xmi:id="ba8460f5-b288-4da4-848e-ae1becfeecbd" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="fb839173-074b-4c0f-9d57-7e7f65fbbea6" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="b6804c66-4acd-4173-8ae2-3f79935c65b5" name="ViewAttributeSet" visibility="package">
                  <ownedComment xmi:id="4ddbc60a-daed-4f96-aa00-15b014132c52" body="A subclass of MuxingAttributeSet that translates between&#xA;CSS and HTML and StyleConstants. The AttributeSets used are&#xA;the CSS rules that match the Views Elements.&#xA;" annotatedElement="b6804c66-4acd-4173-8ae2-3f79935c65b5"/>
                  <generalization xmi:id="aa0e79a3-9963-4e6b-9422-aced7de937ca" isSubstitutable="true" general="aae0753f-f196-417c-9843-7eecf1b4d946"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="41dcdba0-e17f-4c2a-ac32-a00c4257479d" name="ResolvedStyle" visibility="package" clientDependency="0367f92b-97a8-4ac9-ad5b-15f47db97a55 b3ce0a54-e129-47a0-a74d-0b5e93eaa8c2">
                  <ownedComment xmi:id="9636dddf-de41-4c07-a5b3-0510d3332f1d" body="A subclass of MuxingAttributeSet that implements Style. Currently&#xA;the MutableAttributeSet methods are unimplemented, that is they&#xA;do nothing.&#xA;" annotatedElement="41dcdba0-e17f-4c2a-ac32-a00c4257479d"/>
                  <generalization xmi:id="12368874-0d15-4cf6-a244-f5093ad2d1b9" isSubstitutable="true" general="aae0753f-f196-417c-9843-7eecf1b4d946"/>
                  <interfaceRealization xmi:id="0367f92b-97a8-4ac9-ad5b-15f47db97a55" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="41dcdba0-e17f-4c2a-ac32-a00c4257479d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                  <interfaceRealization xmi:id="b3ce0a54-e129-47a0-a74d-0b5e93eaa8c2" name="" supplier="092e0576-dee7-4b99-882e-13d468759154" client="41dcdba0-e17f-4c2a-ac32-a00c4257479d" contract="092e0576-dee7-4b99-882e-13d468759154"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="94c91b11-f554-4583-98ae-898e249dd9cb" name="SelectorMapping" visibility="package" clientDependency="d0df30cb-9757-454f-af95-36a6920f8ae7">
                  <ownedComment xmi:id="dee04ffd-f17f-4052-af7b-db0714df0d90" body="SelectorMapping contains a specifitiy, as an integer, and an associated&#xA;Style. It can also reference children &lt;code>SelectorMapping&lt;/code>s,&#xA;so that it behaves like a tree.&#xA;&lt;p>&#xA;This is not thread safe, it is assumed the caller will take the&#xA;necessary precations if this is to be used in a threaded environment.&#xA;" annotatedElement="94c91b11-f554-4583-98ae-898e249dd9cb"/>
                  <interfaceRealization xmi:id="d0df30cb-9757-454f-af95-36a6920f8ae7" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="94c91b11-f554-4583-98ae-898e249dd9cb" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ab997466-de09-4b0b-8793-22f056814329" name="CssParser" visibility="package" clientDependency="1d7ff057-0afe-4778-8f41-0ca5d8d25ac4">
                  <ownedComment xmi:id="28d6dfb0-40e5-4722-846f-d4c6c5f20e07" body="Default parser for CSS specifications that get loaded into&#xA;the StyleSheet.&lt;p>&#xA;This class is NOT thread safe, do not ask it to parse while it is&#xA;in the middle of parsing.&#xA;" annotatedElement="ab997466-de09-4b0b-8793-22f056814329"/>
                  <interfaceRealization xmi:id="1d7ff057-0afe-4778-8f41-0ca5d8d25ac4" name="" supplier="9e5235f7-d6bd-4f06-bfcb-75ecb881afb6" client="ab997466-de09-4b0b-8793-22f056814329" contract="9e5235f7-d6bd-4f06-bfcb-75ecb881afb6"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4f76665d-6c33-4aee-891d-16f9683493aa" name="MinimalHTMLWriter">
                <ownedComment xmi:id="438ef4dc-7311-410d-a265-ba77bafcaff1" body="MinimalHTMLWriter is a fallback writer used by the&#xA;HTMLEditorKit to write out HTML for a document that&#xA;is a not produced by the EditorKit.&#xA;&#xA;The format for the document is:&#xA;&lt;pre>&#xA;&lt;html>&#xA;&lt;head>&#xA;&lt;style>&#xA;&lt;!-- list of named styles&#xA;p.normal {&#xA;font-family: SansSerif;&#xA;margin-height: 0;&#xA;font-size: 14&#xA;}&#xA;-->&#xA;&lt;/style>&#xA;&lt;/head>&#xA;&lt;body>&#xA;&lt;p style=normal>&#xA;&lt;b>Bold, italic, and underline attributes&#xA;of the run are emitted as HTML tags.&#xA;The remaining attributes are emitted as&#xA;part of the style attribute of a &lt;span> tag.&#xA;The syntax is similar to inline styles.&lt;/b>&#xA;&lt;/p>&#xA;&lt;/body>&#xA;&lt;/html>&#xA;&lt;/pre>&#xA;&#xA;@author Sunita Mani&#xA;@version 1.14, 12/19/03&#xA;" annotatedElement="4f76665d-6c33-4aee-891d-16f9683493aa"/>
                <generalization xmi:id="53cf1024-2407-4584-9b71-3c56357d8816" isSubstitutable="true" general="12dfd28e-d6c9-4052-aa8f-53f4838bd201"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="789b6a97-ee80-4a50-85c0-4aae6fcd5976" name="OptionComboBoxModel" visibility="package" clientDependency="3fcc14a0-58ab-41e0-8dcb-53dd4cdbe602">
                <ownedComment xmi:id="444ffa5f-cf37-4bb3-9afa-01c856101883" body="OptionComboBoxModel extends the capabilities of the DefaultComboBoxModel,&#xA;to store the Option that is initially marked as selected.&#xA;This is stored, in order to enable an accurate reset of the&#xA;ComboBox that represents the SELECT form element when the&#xA;user requests a clear/reset.  Given that a combobox only allow&#xA;for one item to be selected, the last OPTION that has the&#xA;attribute set wins.&#xA;&#xA;@author Sunita Mani&#xA;@version 1.8 12/19/03&#xA;" annotatedElement="789b6a97-ee80-4a50-85c0-4aae6fcd5976"/>
                <generalization xmi:id="f34c4596-c0f3-404e-b420-5f4704e48c3a" isSubstitutable="true" general="8bfc2cad-08f1-4d29-8fe0-bc919f7e8ed9"/>
                <interfaceRealization xmi:id="3fcc14a0-58ab-41e0-8dcb-53dd4cdbe602" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="789b6a97-ee80-4a50-85c0-4aae6fcd5976" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="aae0753f-f196-417c-9843-7eecf1b4d946" name="MuxingAttributeSet" visibility="package" clientDependency="95d04870-0fef-4715-b3f3-380a4f13e84d dde041dd-e93d-4c7f-b3f4-ced71ce2ccc3">
                <ownedComment xmi:id="dd0dd121-4814-40d0-bff8-31831230bb2a" body="An implementation of &lt;code>AttributeSet&lt;/code> that can multiplex&#xA;across a set of &lt;code>AttributeSet&lt;/code>s.&#xA;&#xA;@version 1.4 12/19/03&#xA;" annotatedElement="aae0753f-f196-417c-9843-7eecf1b4d946"/>
                <interfaceRealization xmi:id="95d04870-0fef-4715-b3f3-380a4f13e84d" name="" supplier="dff5659c-62af-4166-9a96-573a58fd7f7e" client="aae0753f-f196-417c-9843-7eecf1b4d946" contract="dff5659c-62af-4166-9a96-573a58fd7f7e"/>
                <interfaceRealization xmi:id="dde041dd-e93d-4c7f-b3f4-ced71ce2ccc3" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="aae0753f-f196-417c-9843-7eecf1b4d946" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="b659d589-c02a-429d-b87d-694bdca175ae" name="MuxingAttributeNameEnumeration" visibility="private" clientDependency="ad70ef76-e55c-4c28-98a2-d1d3f0971791">
                  <ownedComment xmi:id="25e2924d-6049-4925-aca8-d8bcbe66f7a5" body="An Enumeration of the Attribute names in a MuxingAttributeSet.&#xA;This may return the same name more than once.&#xA;" annotatedElement="b659d589-c02a-429d-b87d-694bdca175ae"/>
                  <interfaceRealization xmi:id="ad70ef76-e55c-4c28-98a2-d1d3f0971791" name="" supplier="9e9adaa7-1ac1-4cd9-89db-7b98e385abf9" client="b659d589-c02a-429d-b87d-694bdca175ae" contract="9e9adaa7-1ac1-4cd9-89db-7b98e385abf9"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="df0e5570-2a55-433e-a273-6d72ac56a4ea" name="Option">
                <ownedComment xmi:id="31cee080-2815-45f6-8272-b7fea1cc31f9" body="Value for the ListModel used to represent&#xA;&lt;option> elements.  This is the object&#xA;installed as items of the DefaultComboBoxModel&#xA;used to represent the &lt;select> element.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.10 12/19/03&#xA;" annotatedElement="df0e5570-2a55-433e-a273-6d72ac56a4ea"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="e6d16009-5d7b-4d0b-b9fa-afe21868515c" name="AccessibleHTML" visibility="package" clientDependency="1150e93c-bec4-4570-8986-f07a2d2f0a24">
                <interfaceRealization xmi:id="1150e93c-bec4-4570-8986-f07a2d2f0a24" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="e6d16009-5d7b-4d0b-b9fa-afe21868515c" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="f1ebe6a1-52a7-453a-8d5c-005b01afebbb" name="RootHTMLAccessibleContext" visibility="private">
                  <generalization xmi:id="1ed9587d-ef38-47da-b1ff-588c469dfffc" isSubstitutable="true" general="ca0cd01c-e59c-47bf-9259-077ad16b07c5"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ca0cd01c-e59c-47bf-9259-077ad16b07c5" name="HTMLAccessibleContext" visibility="protected" clientDependency="0de9b6a6-596b-4e12-afa0-237f88a39ed8 6f9f053b-0813-442e-8dbf-c1d0c28aadfc" isAbstract="true">
                  <generalization xmi:id="486524aa-12c9-438e-917c-40760427ef9f" isSubstitutable="true" general="5e5fecb3-251d-4b0e-b142-9f3aac1d4c57"/>
                  <interfaceRealization xmi:id="0de9b6a6-596b-4e12-afa0-237f88a39ed8" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="ca0cd01c-e59c-47bf-9259-077ad16b07c5" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
                  <interfaceRealization xmi:id="6f9f053b-0813-442e-8dbf-c1d0c28aadfc" name="" supplier="a13045dc-df1a-4751-8aff-9b7e320e05bf" client="ca0cd01c-e59c-47bf-9259-077ad16b07c5" contract="a13045dc-df1a-4751-8aff-9b7e320e05bf"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="abb39ca9-5645-4c00-8c96-131eeab435e5" name="TextElementInfo" visibility="package" clientDependency="e6729756-fbc3-4c34-98dc-304c20a9b715">
                  <generalization xmi:id="6c327a50-56cf-4c18-a5b5-04afcbdf27bd" isSubstitutable="true" general="02bad119-7eea-4d36-afdf-8a6e765452bc"/>
                  <interfaceRealization xmi:id="e6729756-fbc3-4c34-98dc-304c20a9b715" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="abb39ca9-5645-4c00-8c96-131eeab435e5" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="3385782f-40bc-4836-9bb7-c473705f6bfb" name="TextAccessibleContext" clientDependency="7ddff205-71bb-4f07-9eac-970c38987f13">
                    <generalization xmi:id="cffdde5d-3856-4c18-9ced-28c92e65f54b" isSubstitutable="true" general="ca0cd01c-e59c-47bf-9259-077ad16b07c5"/>
                    <interfaceRealization xmi:id="7ddff205-71bb-4f07-9eac-970c38987f13" name="" supplier="a6772e39-fecf-4aaa-b8ba-55f63854a725" client="3385782f-40bc-4836-9bb7-c473705f6bfb" contract="a6772e39-fecf-4aaa-b8ba-55f63854a725"/>
                    <nestedClassifier xmi:type="uml:Class" xmi:id="69cdad44-613b-4277-989f-a2ec318ebe32" name="IndexedSegment" visibility="private">
                      <ownedComment xmi:id="d9d6b0ac-84a0-4a07-b437-36b79c812b5d" body="IndexedSegment extends Segment adding the offset into the&#xA;the model the &lt;code>Segment&lt;/code> was asked for.&#xA;" annotatedElement="69cdad44-613b-4277-989f-a2ec318ebe32"/>
                      <generalization xmi:id="52ffd879-604f-4e08-ba50-f6cab412f18e" isSubstitutable="true" general="478d78bb-16f5-4c49-b06d-f85bef80ef4f"/>
                    </nestedClassifier>
                  </nestedClassifier>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6685143d-4487-488f-bdae-a1bb2511f601" name="IconElementInfo" visibility="private" clientDependency="a32192b9-30bd-4f44-88d7-3ff50913d4d8">
                  <generalization xmi:id="efac5570-bd53-4952-925f-fb5f6812631e" isSubstitutable="true" general="02bad119-7eea-4d36-afdf-8a6e765452bc"/>
                  <interfaceRealization xmi:id="a32192b9-30bd-4f44-88d7-3ff50913d4d8" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="6685143d-4487-488f-bdae-a1bb2511f601" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="1e5d3f64-25f4-4f2c-b8e1-c8a5a114a705" name="IconAccessibleContext" visibility="protected" clientDependency="22e6fd47-4483-4b27-974f-8eccbd5da7eb">
                    <generalization xmi:id="303bff61-2954-4599-a67c-886bbf497422" isSubstitutable="true" general="ca0cd01c-e59c-47bf-9259-077ad16b07c5"/>
                    <interfaceRealization xmi:id="22e6fd47-4483-4b27-974f-8eccbd5da7eb" name="" supplier="a9536d5d-ffe4-4cf1-a708-ec23229b0f6d" client="1e5d3f64-25f4-4f2c-b8e1-c8a5a114a705" contract="a9536d5d-ffe4-4cf1-a708-ec23229b0f6d"/>
                  </nestedClassifier>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6861130f-454c-4561-80a7-ae7b421112c1" name="TableElementInfo" visibility="private" clientDependency="2ed04712-d604-4c52-a795-cc44c0f5364d">
                  <ownedComment xmi:id="0426b4cc-36a8-4666-a902-30826285d3ea" body="TableElementInfo encapsulates information about a HTML.Tag.TABLE.&#xA;To make access fast it crates a grid containing the children to&#xA;allow for access by row, column. TableElementInfo will contain&#xA;TableRowElementInfos, which will contain TableCellElementInfos.&#xA;Any time one of the rows or columns becomes invalid the table is&#xA;invalidated.  This is because any time one of the child attributes&#xA;changes the size of the grid may have changed.&#xA;" annotatedElement="6861130f-454c-4561-80a7-ae7b421112c1"/>
                  <generalization xmi:id="d9d92247-b790-4187-9b9a-b2524e6f3716" isSubstitutable="true" general="02bad119-7eea-4d36-afdf-8a6e765452bc"/>
                  <interfaceRealization xmi:id="2ed04712-d604-4c52-a795-cc44c0f5364d" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="6861130f-454c-4561-80a7-ae7b421112c1" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="f4529e94-f528-449d-900a-f2973ac86096" name="TableAccessibleContext" clientDependency="05d31afb-e872-4c87-bd53-f6675563e1c8">
                    <generalization xmi:id="470b974e-76ac-46dc-9dc1-b146b96dddcc" isSubstitutable="true" general="ca0cd01c-e59c-47bf-9259-077ad16b07c5"/>
                    <interfaceRealization xmi:id="05d31afb-e872-4c87-bd53-f6675563e1c8" name="" supplier="15c29f0c-7e33-493e-b7e6-3488fb280927" client="f4529e94-f528-449d-900a-f2973ac86096" contract="15c29f0c-7e33-493e-b7e6-3488fb280927"/>
                    <nestedClassifier xmi:type="uml:Class" xmi:id="f1186141-6b64-496a-87ce-5a405bf377d6" name="AccessibleHeadersTable" visibility="protected" clientDependency="9013a971-28e8-42f3-ba8f-6db350e5c789">
                      <interfaceRealization xmi:id="9013a971-28e8-42f3-ba8f-6db350e5c789" name="" supplier="15c29f0c-7e33-493e-b7e6-3488fb280927" client="f1186141-6b64-496a-87ce-5a405bf377d6" contract="15c29f0c-7e33-493e-b7e6-3488fb280927"/>
                    </nestedClassifier>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="528c0994-d876-4523-b473-99dadf0df376" name="TableRowElementInfo" visibility="private">
                    <generalization xmi:id="ede3fdb3-e386-42b5-adfd-c45f2a1d7cfe" isSubstitutable="true" general="02bad119-7eea-4d36-afdf-8a6e765452bc"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="ad762456-b0a2-4a1e-93bf-5edf965946bb" name="TableCellElementInfo" visibility="private">
                    <ownedComment xmi:id="b9553d59-3710-4373-9597-ebc76a2e38d0" body="TableCellElementInfo is used to represents the cells of&#xA;the table.&#xA;" annotatedElement="ad762456-b0a2-4a1e-93bf-5edf965946bb"/>
                    <generalization xmi:id="6bba893f-2867-452a-bad6-c2892dad2928" isSubstitutable="true" general="02bad119-7eea-4d36-afdf-8a6e765452bc"/>
                  </nestedClassifier>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="02bad119-7eea-4d36-afdf-8a6e765452bc" name="ElementInfo" visibility="private">
                  <ownedComment xmi:id="ee962ffe-363e-4a18-bc8d-4d474010913c" body="ElementInfo provides a slim down view of an Element.  Each ElementInfo&#xA;can have any number of child ElementInfos that are not necessarily&#xA;direct children of the Element. As the Document changes various&#xA;ElementInfos become invalidated. Before accessing a particular portion&#xA;of an ElementInfo you should make sure it is valid by invoking&#xA;&lt;code>validateIfNecessary&lt;/code>, this will return true if&#xA;successful, on the other hand a false return value indicates the&#xA;ElementInfo is not valid and can never become valid again (usually&#xA;the result of the Element the ElementInfo encapsulates being removed).&#xA;" annotatedElement="02bad119-7eea-4d36-afdf-8a6e765452bc"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="32a8c275-3dd0-4abc-bbc9-7bd496fefa6e" name="DocumentHandler" visibility="private" clientDependency="fc313c7b-b164-48be-a980-1d3d5aca0a8c">
                  <ownedComment xmi:id="d204bc55-5b8d-4716-a826-447304164c30" body="DocumentListener installed on the current Document.  Will invoke&#xA;&lt;code>update&lt;/code> on the &lt;code>RootInfo&lt;/code> in response to&#xA;any event.&#xA;" annotatedElement="32a8c275-3dd0-4abc-bbc9-7bd496fefa6e"/>
                  <interfaceRealization xmi:id="fc313c7b-b164-48be-a980-1d3d5aca0a8c" name="" supplier="8473483d-b350-428d-828b-a5a719abea43" client="32a8c275-3dd0-4abc-bbc9-7bd496fefa6e" contract="8473483d-b350-428d-828b-a5a719abea43"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5e8e6b73-cb5a-4cdc-8852-4f21dcbfc1a1" name="PropertyChangeHandler" visibility="private" clientDependency="bf689244-57dd-4f3f-b966-adf8511dee53">
                  <interfaceRealization xmi:id="bf689244-57dd-4f3f-b966-adf8511dee53" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="5e8e6b73-cb5a-4cdc-8852-4f21dcbfc1a1" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="03e3807d-dccb-49c7-b504-2f94114836f1" name="TableView" visibility="package" clientDependency="70825892-b950-425a-8d3e-ace0aa830eee">
                <ownedComment xmi:id="a86ff623-c68e-4f44-9044-e180cf5f9210" body="HTML table view.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.38 12/19/03&#xA;@see     View&#xA;" annotatedElement="03e3807d-dccb-49c7-b504-2f94114836f1"/>
                <generalization xmi:id="6ece6e98-5f58-4960-bc47-11e69b7e8985" isSubstitutable="true" general="21bc7467-2f3d-4452-af93-a254d26bf84f"/>
                <interfaceRealization xmi:id="70825892-b950-425a-8d3e-ace0aa830eee" name="" supplier="e3a1d3f4-af71-4ce0-962d-e7b0b2295c0d" client="03e3807d-dccb-49c7-b504-2f94114836f1" contract="e3a1d3f4-af71-4ce0-962d-e7b0b2295c0d"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1dec8fd1-832a-419f-8dd0-bc17b8d3ebb3" name="ColumnIterator" visibility="package" clientDependency="165d0bc3-5983-4180-a5a8-76761299671a">
                  <interfaceRealization xmi:id="165d0bc3-5983-4180-a5a8-76761299671a" name="" supplier="a820975e-7602-43b0-9133-5e35c5d19a49" client="1dec8fd1-832a-419f-8dd0-bc17b8d3ebb3" contract="a820975e-7602-43b0-9133-5e35c5d19a49"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e8609cab-c73d-4dda-9729-1433d3e16120" name="RowIterator" visibility="package" clientDependency="c6c38394-5e50-47eb-800a-c3ded3d6c696">
                  <interfaceRealization xmi:id="c6c38394-5e50-47eb-800a-c3ded3d6c696" name="" supplier="a820975e-7602-43b0-9133-5e35c5d19a49" client="e8609cab-c73d-4dda-9729-1433d3e16120" contract="a820975e-7602-43b0-9133-5e35c5d19a49"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="81177ff7-6a31-47ca-b875-893acceab7e6" name="RowView">
                  <ownedComment xmi:id="8a307968-7fd5-40ad-af70-96542b8f2804" body="View of a row in a row-centric table.&#xA;" annotatedElement="81177ff7-6a31-47ca-b875-893acceab7e6"/>
                  <generalization xmi:id="9a8369b9-9777-46b4-a94c-295132239cd1" isSubstitutable="true" general="21bc7467-2f3d-4452-af93-a254d26bf84f"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="7d98912f-6765-4390-a440-823d56866299" name="CellView" visibility="package">
                  <ownedComment xmi:id="537cd905-1fa7-4900-af9c-0feca958d3af" body="Default view of an html table cell.  This needs to be moved&#xA;somewhere else.&#xA;" annotatedElement="7d98912f-6765-4390-a440-823d56866299"/>
                  <generalization xmi:id="879cab7b-00fc-4c2c-83bf-2b3f17788c9b" isSubstitutable="true" general="ad789f9c-2537-4654-b6cc-40b99e09b9d7"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="612d144c-7379-4483-a946-dd3d15c37bbc" name="TextAreaDocument" visibility="package">
                <ownedComment xmi:id="46c12978-03fb-4c07-9e2a-fd7c1788f4d5" body="TextAreaDocument extends the capabilities of the PlainDocument&#xA;to store the data that is initially set in the Document.&#xA;This is stored in order to enable an accurate reset of the&#xA;state when a reset is requested.&#xA;&#xA;@author Sunita Mani&#xA;@version 1.8 12/19/03&#xA;" annotatedElement="612d144c-7379-4483-a946-dd3d15c37bbc"/>
                <generalization xmi:id="1d96f9c6-224b-43ca-a671-36ed46d1fecd" isSubstitutable="true" general="ab94a18a-7487-453a-bd09-70b35b1cc01d"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="295ab0a9-65a8-42ed-ab3d-38a921fd9a25" name="ParagraphView">
                <ownedComment xmi:id="e9e3093f-0e78-433e-8b99-cf0e60d4b057" body="Displays the a paragraph, and uses css attributes for its&#xA;configuration.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.28 12/19/03&#xA;" annotatedElement="295ab0a9-65a8-42ed-ab3d-38a921fd9a25"/>
                <generalization xmi:id="a7f90b5b-22c3-4ba6-ba80-3f1dca3c7e92" isSubstitutable="true" general="f136ff6a-f89d-4e2c-8284-640d0aa408eb"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="26fa7bc9-000d-4130-a8a3-4da6afa9e461" name="HTMLWriter">
                <ownedComment xmi:id="3eadf9e4-8a82-4319-af2f-40a0074e6248" body="This is a writer for HTMLDocuments.&#xA;&#xA;@author  Sunita Mani&#xA;@version 1.26, 02/02/00&#xA;" annotatedElement="26fa7bc9-000d-4130-a8a3-4da6afa9e461"/>
                <generalization xmi:id="9816b203-9f3e-4fa2-8da5-ef965fa78874" isSubstitutable="true" general="12dfd28e-d6c9-4052-aa8f-53f4838bd201"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="2d1bc375-3efd-4b24-838f-617126e18807" name="ResourceLoader" visibility="package" clientDependency="b4d709c8-00f8-4e07-ac75-98abf982f0f2">
                <ownedComment xmi:id="11103878-0a40-49c9-8c01-41215b0c5e7e" body="Simple class to load resources using the 1.2&#xA;security model.  Since the html support is loaded&#xA;lazily, it's resources are potentially fetched with&#xA;applet code in the call stack.  By providing this&#xA;functionality in a class that is only built on 1.2,&#xA;reflection can be used from the code that is also&#xA;built on 1.1 to call this functionality (and avoid&#xA;the evils of preprocessing).  This functionality&#xA;is called from HTMLEditorKit.getResourceAsStream.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.7 12/19/03&#xA;" annotatedElement="2d1bc375-3efd-4b24-838f-617126e18807"/>
                <interfaceRealization xmi:id="b4d709c8-00f8-4e07-ac75-98abf982f0f2" name="" supplier="5646b95f-c8d5-4f70-8c2b-9996e66b63ce" client="2d1bc375-3efd-4b24-838f-617126e18807" contract="5646b95f-c8d5-4f70-8c2b-9996e66b63ce"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="d819bf2b-6314-4efc-ae9f-f5da2d841fd7" name="BRView" visibility="package">
                <ownedComment xmi:id="d022565e-b221-43b1-af97-8a043abdbe49" body="Processes the &lt;BR> tag.  In other words, forces a line break.&#xA;&#xA;@author Sunita Mani&#xA;@version 1.11 03/05/04&#xA;" annotatedElement="d819bf2b-6314-4efc-ae9f-f5da2d841fd7"/>
                <generalization xmi:id="11254779-13bc-4e7b-8ae4-2d84599d45f9" isSubstitutable="true" general="af14aa58-0c5d-4bcc-850b-c4bb873f25b9"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="5a0eb0f8-5912-4359-a35b-e42cec7e6bd2" name="ObjectView">
                <ownedComment xmi:id="540c8b38-6454-445b-b00d-d29b01735820" body="Component decorator that implements the view interface&#xA;for &lt;object> elements.&#xA;&lt;p>&#xA;This view will try to load the class specified by the&#xA;&lt;code>classid&lt;/code> attribute.  If possible, the Classloader&#xA;used to load the associated Document is used.&#xA;This would typically be the same as the ClassLoader&#xA;used to load the EditorKit.  If the document's&#xA;ClassLoader is null, &lt;code>Class.forName&lt;/code> is used.&#xA;&lt;p>&#xA;If the class can successfully be loaded, an attempt will&#xA;be made to create an instance of it by calling&#xA;&lt;code>Class.newInstance&lt;/code>.  An attempt will be made&#xA;to narrow the instance to type &lt;code>java.awt.Component&lt;/code>&#xA;to display the object.&#xA;&lt;p>&#xA;This view can also manage a set of parameters with limitations.&#xA;The parameters to the &lt;object> element are expected to&#xA;be present on the associated elements attribute set as simple&#xA;strings.  Each bean property will be queried as a key on&#xA;the AttributeSet, with the expectation that a non-null value&#xA;(of type String) will be present if there was a parameter&#xA;specification for the property.  Reflection is used to&#xA;set the parameter.  Currently, this is limited to a very&#xA;simple single parameter of type String.&#xA;&lt;p>&#xA;A simple example HTML invocation is:&#xA;&lt;pre>&#xA;&lt;object classid=&quot;javax.swing.JLabel&quot;>&#xA;&lt;param name=&quot;text&quot; value=&quot;sample text&quot;>&#xA;&lt;/object>&#xA;&lt;/pre>&#xA;&#xA;@author Timothy Prinzing&#xA;@version 1.13 12/19/03&#xA;" annotatedElement="5a0eb0f8-5912-4359-a35b-e42cec7e6bd2"/>
                <generalization xmi:id="97c4950b-21e2-441f-994e-cd6c097c104d" isSubstitutable="true" general="8d3894dd-b70c-4585-9126-8c42e5ec577a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="99829f5d-82ce-46f4-8186-96212fd10b63" name="FrameSetView" visibility="package">
                <ownedComment xmi:id="75bfc244-2c90-4869-9989-a1f53447976e" body="Implements a FrameSetView, intended to support the HTML&#xA;&lt;FRAMESET> tag.  Supports the ROWS and COLS attributes.&#xA;&#xA;@author  Sunita Mani&#xA;&#xA;Credit also to the hotjava browser engineers that&#xA;worked on making the allocation of space algorithms&#xA;conform to the HTML 4.0 standard and also be netscape&#xA;compatible.&#xA;&#xA;@version 1.20 12/19/03&#xA;" annotatedElement="99829f5d-82ce-46f4-8186-96212fd10b63"/>
                <generalization xmi:id="96a2ef68-fa6d-4010-983f-fd55feafd560" isSubstitutable="true" general="21bc7467-2f3d-4452-af93-a254d26bf84f"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="06ca0120-d3f5-4af3-8009-f1b66b545477" name="CommentView" visibility="package">
                <ownedComment xmi:id="c4effe43-6484-4315-b71f-cb56c1b9f96b" body="CommentView subclasses HiddenTagView to contain a JTextArea showing&#xA;a comment. When the textarea is edited the comment is&#xA;reset. As this inherits from EditableView if the JTextComponent is&#xA;not editable, the textarea will not be visible.&#xA;&#xA;@author  Scott Violet&#xA;@version 1.13, 03/05/04&#xA;" annotatedElement="06ca0120-d3f5-4af3-8009-f1b66b545477"/>
                <generalization xmi:id="0dd95b23-9648-44ec-854a-44bfe97ca213" isSubstitutable="true" general="ce9046f9-5bb4-4a1d-aadc-49a5a8c300f5"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a8cbfd3d-88f5-4988-944b-cad3f0a4d1c7" name="CommentBorder" visibility="package">
                  <generalization xmi:id="d0ee10e2-96fb-4495-9da3-5f8139379261" isSubstitutable="true" general="05de9e87-5ebf-43fd-8c26-85ddcb139ab6"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="7b58956e-d7da-4747-a796-5ae8680ca312" name="HTMLFrameHyperlinkEvent">
                <ownedComment xmi:id="6fda8b28-69b5-4f6e-8f96-5a0a9c7ff138" body="HTMLFrameHyperlinkEvent is used to notify interested&#xA;parties that link was activated in a frame.&#xA;&#xA;@author Sunita Mani&#xA;@version 1.9, 12/19/03&#xA;" annotatedElement="7b58956e-d7da-4747-a796-5ae8680ca312"/>
                <generalization xmi:id="643bc1d3-6b55-4b97-855e-bfd9530e36b2" isSubstitutable="true" general="f36c18a4-5702-45a7-ba3c-7eb273221d4e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="1dcc04f6-8f25-479b-a190-08349a8e1a5f" name="Map" visibility="package">
                <ownedComment xmi:id="d75a68c8-42e8-4401-8955-767cb2079cba" body="Map is used to represent a map element that is part of an HTML document.&#xA;Once a Map has been created, and any number of areas have been added,&#xA;you can test if a point falls inside the map via the contains method.&#xA;&#xA;@author  Scott Violet&#xA;@version 1.8 12/19/03&#xA;" annotatedElement="1dcc04f6-8f25-479b-a190-08349a8e1a5f"/>
                <nestedClassifier xmi:type="uml:Interface" xmi:id="db2272f4-cf40-4ac8-a3f9-3fe496e376a1" name="RegionContainment" visibility="package" isAbstract="true">
                  <ownedComment xmi:id="ab03c1c4-ad35-4a92-80ab-acb7bd55a00b" body="Defines the interface used for to check if a point is inside a&#xA;region.&#xA;" annotatedElement="db2272f4-cf40-4ac8-a3f9-3fe496e376a1"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6e3a41ae-693b-4837-95d9-9e889c974363" name="RectangleRegionContainment" visibility="package" clientDependency="94580cd1-2378-426f-a82c-46022178ddfe">
                  <ownedComment xmi:id="70ef9eaa-32d2-44e8-840e-7150d96f00d6" body="Used to test for containment in a rectangular region.&#xA;" annotatedElement="6e3a41ae-693b-4837-95d9-9e889c974363"/>
                  <interfaceRealization xmi:id="94580cd1-2378-426f-a82c-46022178ddfe" name="" supplier="db2272f4-cf40-4ac8-a3f9-3fe496e376a1" client="6e3a41ae-693b-4837-95d9-9e889c974363" contract="db2272f4-cf40-4ac8-a3f9-3fe496e376a1"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="3061305e-fe9b-4235-baa1-092e2b07671d" name="PolygonRegionContainment" visibility="package" clientDependency="a9423168-5a33-49dd-ba46-c113533bdf31">
                  <ownedComment xmi:id="72592c2a-00ce-47e6-b403-336c684935b0" body="Used to test for containment in a polygon region.&#xA;" annotatedElement="3061305e-fe9b-4235-baa1-092e2b07671d"/>
                  <generalization xmi:id="33c035b7-a9b6-4c35-b1c4-e370a7a071cf" isSubstitutable="true" general="2e6b9a6c-9120-4fad-bb15-b67726bbb96f"/>
                  <interfaceRealization xmi:id="a9423168-5a33-49dd-ba46-c113533bdf31" name="" supplier="db2272f4-cf40-4ac8-a3f9-3fe496e376a1" client="3061305e-fe9b-4235-baa1-092e2b07671d" contract="db2272f4-cf40-4ac8-a3f9-3fe496e376a1"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="f24ac736-4e33-4165-bd3a-b89698686dab" name="CircleRegionContainment" visibility="package" clientDependency="792e2e72-37fc-4118-9ddb-6959d2bb6fda">
                  <ownedComment xmi:id="ce019497-0307-4082-9cb6-a99d2099611e" body="Used to test for containment in a circular region.&#xA;" annotatedElement="f24ac736-4e33-4165-bd3a-b89698686dab"/>
                  <interfaceRealization xmi:id="792e2e72-37fc-4118-9ddb-6959d2bb6fda" name="" supplier="db2272f4-cf40-4ac8-a3f9-3fe496e376a1" client="f24ac736-4e33-4165-bd3a-b89698686dab" contract="db2272f4-cf40-4ac8-a3f9-3fe496e376a1"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="9eaf9cc0-82c9-471c-971c-79cd802d0f62" name="DefaultRegionContainment" visibility="package" clientDependency="a81267db-6604-4c59-b5c8-4372470c20e2">
                  <ownedComment xmi:id="61b585fd-6919-4d3b-aacf-f0afcf1aaf5f" body="An implementation that will return true if the x, y location is&#xA;inside a rectangle defined by origin 0, 0, and width equal to&#xA;width passed in, and height equal to height passed in.&#xA;" annotatedElement="9eaf9cc0-82c9-471c-971c-79cd802d0f62"/>
                  <interfaceRealization xmi:id="a81267db-6604-4c59-b5c8-4372470c20e2" name="" supplier="db2272f4-cf40-4ac8-a3f9-3fe496e376a1" client="9eaf9cc0-82c9-471c-971c-79cd802d0f62" contract="db2272f4-cf40-4ac8-a3f9-3fe496e376a1"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="ce9046f9-5bb4-4a1d-aadc-49a5a8c300f5" name="HiddenTagView" visibility="package" clientDependency="47497c1e-db5d-49f8-94aa-69553219d072">
                <ownedComment xmi:id="93dea146-f1ac-4ea0-8082-79d2b56e0aed" body="HiddenTagView subclasses EditableView to contain a JTextField showing&#xA;the element name. When the textfield is edited the element name is&#xA;reset. As this inherits from EditableView if the JTextComponent is&#xA;not editable, the textfield will not be visible.&#xA;&#xA;@author  Scott Violet&#xA;@version 1.15, 12/19/03&#xA;" annotatedElement="ce9046f9-5bb4-4a1d-aadc-49a5a8c300f5"/>
                <generalization xmi:id="36e1b983-453c-45dc-b025-6f44d1ec865b" isSubstitutable="true" general="6d62f578-bd8b-4484-931f-bf015f074a85"/>
                <interfaceRealization xmi:id="47497c1e-db5d-49f8-94aa-69553219d072" name="" supplier="8473483d-b350-428d-828b-a5a719abea43" client="ce9046f9-5bb4-4a1d-aadc-49a5a8c300f5" contract="8473483d-b350-428d-828b-a5a719abea43"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="85451a1f-d2a4-41f0-9443-33f46bec11d1" name="StartTagBorder" visibility="package" clientDependency="3746dfc8-9463-406f-9332-3909e09a11e6 0c4c7314-5c78-4bca-b5dc-4101782e1166">
                  <interfaceRealization xmi:id="3746dfc8-9463-406f-9332-3909e09a11e6" name="" supplier="5cae9314-8ddc-4110-8183-02749e337ef8" client="85451a1f-d2a4-41f0-9443-33f46bec11d1" contract="5cae9314-8ddc-4110-8183-02749e337ef8"/>
                  <interfaceRealization xmi:id="0c4c7314-5c78-4bca-b5dc-4101782e1166" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="85451a1f-d2a4-41f0-9443-33f46bec11d1" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6fd973b0-2ead-4276-ab5a-7245e68c175c" name="EndTagBorder" visibility="package" clientDependency="b4f6379c-c384-4e83-9114-374c42d05b45 95c9f02c-5736-444b-9e7c-247c8ff55f75">
                  <interfaceRealization xmi:id="b4f6379c-c384-4e83-9114-374c42d05b45" name="" supplier="5cae9314-8ddc-4110-8183-02749e337ef8" client="6fd973b0-2ead-4276-ab5a-7245e68c175c" contract="5cae9314-8ddc-4110-8183-02749e337ef8"/>
                  <interfaceRealization xmi:id="95c9f02c-5736-444b-9e7c-247c8ff55f75" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="6fd973b0-2ead-4276-ab5a-7245e68c175c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="ad789f9c-2537-4654-b6cc-40b99e09b9d7" name="BlockView">
                <ownedComment xmi:id="4cf453b6-9282-416d-bfda-6c52f017b528" body="A view implementation to display a block (as a box)&#xA;with CSS specifications.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.36 03/05/04&#xA;" annotatedElement="ad789f9c-2537-4654-b6cc-40b99e09b9d7"/>
                <generalization xmi:id="eb90afea-5b39-4a06-a566-67c78f22009f" isSubstitutable="true" general="21bc7467-2f3d-4452-af93-a254d26bf84f"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="12f111c0-ccbd-4693-be9c-78d876c75f48" name="FormView" clientDependency="16803e6a-c171-4cd3-9cc1-e2268087d294">
                <ownedComment xmi:id="6edb2287-8a3c-4ccb-82fc-05c3af2eb31a" body="Component decorator that implements the view interface&#xA;for form elements, &lt;input>, &lt;textarea>,&#xA;and &lt;select>.  The model for the component is stored&#xA;as an attribute of the the element (using StyleConstants.ModelAttribute),&#xA;and is used to build the component of the view.  The type&#xA;of the model is assumed to of the type that would be set by&#xA;&lt;code>HTMLDocument.HTMLReader.FormAction&lt;/code>.  If there are&#xA;multiple views mapped over the document, they will share the&#xA;embedded component models.&#xA;&lt;p>&#xA;The following table shows what components get built&#xA;by this view.&#xA;&lt;table summary=&quot;shows what components get built by this view&quot;>&#xA;&lt;tr>&#xA;&lt;th>Element Type&lt;/th>&#xA;&lt;th>Component built&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>input, type button&lt;/td>&#xA;&lt;td>JButton&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>input, type checkbox&lt;/td>&#xA;&lt;td>JCheckBox&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>input, type image&lt;/td>&#xA;&lt;td>JButton&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>input, type password&lt;/td>&#xA;&lt;td>JPasswordField&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>input, type radio&lt;/td>&#xA;&lt;td>JRadioButton&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>input, type reset&lt;/td>&#xA;&lt;td>JButton&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>input, type submit&lt;/td>&#xA;&lt;td>JButton&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>input, type text&lt;/td>&#xA;&lt;td>JTextField&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>select, size > 1 or multiple attribute defined&lt;/td>&#xA;&lt;td>JList in a JScrollPane&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>select, size unspecified or 1&lt;/td>&#xA;&lt;td>JComboBox&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>textarea&lt;/td>&#xA;&lt;td>JTextArea in a JScrollPane&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>input, type file&lt;/td>&#xA;&lt;td>JTextField&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&#xA;@author Timothy Prinzing&#xA;@author Sunita Mani&#xA;@version 1.26 05/18/04&#xA;" annotatedElement="12f111c0-ccbd-4693-be9c-78d876c75f48"/>
                <generalization xmi:id="e7016ddd-e50d-45e2-a845-a7eed778a986" isSubstitutable="true" general="8d3894dd-b70c-4585-9126-8c42e5ec577a"/>
                <interfaceRealization xmi:id="16803e6a-c171-4cd3-9cc1-e2268087d294" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="12f111c0-ccbd-4693-be9c-78d876c75f48" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="324c783f-3ba3-4671-8522-a5fa0e8cd8cf" name="SubmitThread" visibility="package">
                  <ownedComment xmi:id="db3e4e1a-9ad8-45af-adb2-497c7105a82b" body="The SubmitThread is responsible for submitting the form.&#xA;It performs a POST or GET based on the value of method&#xA;attribute associated with  HTML.Tag.FORM.  In addition to&#xA;submitting, it is also responsible for display the&#xA;results of the form submission.&#xA;" annotatedElement="324c783f-3ba3-4671-8522-a5fa0e8cd8cf"/>
                  <generalization xmi:id="5d1abb33-46f3-4b87-bd00-95b4576c21bd" isSubstitutable="true" general="c9830202-c9c4-48c6-a18c-376520128934"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ae6bdb8c-1fc7-4b98-a3bf-ffe463b178e9" name="MouseEventListener" visibility="protected">
                  <ownedComment xmi:id="2ae16eb2-f52a-4225-ae6b-357c8cc9f53b" body="MouseEventListener class to handle form submissions when&#xA;an input with type equal to image is clicked on.&#xA;A MouseListener is necessary since along with the image&#xA;data the coordinates associated with the mouse click&#xA;need to be submitted.&#xA;" annotatedElement="ae6bdb8c-1fc7-4b98-a3bf-ffe463b178e9"/>
                  <generalization xmi:id="f873753e-627b-48ef-9842-b5b79dac56b0" isSubstitutable="true" general="0db79cd4-0757-4282-b2c3-730fa54c5c55"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="38ceb6cd-f642-4fb0-855b-03ea70091d2a" name="BrowseFileAction" visibility="private" clientDependency="19c70842-0b9c-41d2-93cd-90fdc07a168c">
                  <ownedComment xmi:id="dba7a954-9936-444c-9d2f-abd96550abd4" body="BrowseFileAction is used for input type == file. When the user&#xA;clicks the button a JFileChooser is brought up allowing the user&#xA;to select a file in the file system. The resulting path to the selected&#xA;file is set in the text field (actually an instance of Document).&#xA;" annotatedElement="38ceb6cd-f642-4fb0-855b-03ea70091d2a"/>
                  <interfaceRealization xmi:id="19c70842-0b9c-41d2-93cd-90fdc07a168c" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="38ceb6cd-f642-4fb0-855b-03ea70091d2a" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="a8b43659-2958-463a-a73a-9c810c11ff1d" name="HRuleView" visibility="package">
                <ownedComment xmi:id="53fe32ee-6aaf-4a05-ad73-fd0d873c2e7e" body="A view implementation to display an html horizontal&#xA;rule.&#xA;&#xA;@author  Timothy Prinzing&#xA;@author  Sara Swanson&#xA;@version 1.32 12/19/03&#xA;" annotatedElement="a8b43659-2958-463a-a73a-9c810c11ff1d"/>
                <generalization xmi:id="cd8d6cea-b024-4a04-863c-d41b93cafc83" isSubstitutable="true" general="a12ab75d-4ae8-40c5-ac6c-848d1ef3f725"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="8348086f-8537-400e-a2f1-1545e592d03e" name="OptionListModel" visibility="package" clientDependency="825fe6ab-ff1b-4c78-8597-43a8f720be00 b9772214-e7a4-4351-8208-bbbc80642373">
                <ownedComment xmi:id="eb692670-fea7-4237-a2d2-252a462e270c" body="This class extends DefaultListModel, and also implements&#xA;the ListSelectionModel interface, allowing for it to store state&#xA;relevant to a SELECT form element which is implemented as a List.&#xA;If SELECT has a size attribute whose value is greater than 1,&#xA;or if allows multiple selection then a JList is used to&#xA;represent it and the OptionListModel is used as its model.&#xA;It also stores the initial state of the JList, to ensure an&#xA;accurate reset, if the user requests a reset of the form.&#xA;&#xA;@author Sunita Mani&#xA;@version 1.11 12/19/03&#xA;" annotatedElement="8348086f-8537-400e-a2f1-1545e592d03e"/>
                <generalization xmi:id="394e49ee-5a4b-4197-b072-996b65d5c404" isSubstitutable="true" general="af1edea1-9f7f-4b82-b767-d6003697802a"/>
                <interfaceRealization xmi:id="825fe6ab-ff1b-4c78-8597-43a8f720be00" name="" supplier="f46ea5b6-72bb-4a1a-ad05-bff3c7926dda" client="8348086f-8537-400e-a2f1-1545e592d03e" contract="f46ea5b6-72bb-4a1a-ad05-bff3c7926dda"/>
                <interfaceRealization xmi:id="b9772214-e7a4-4351-8208-bbbc80642373" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="8348086f-8537-400e-a2f1-1545e592d03e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4859ee11-093f-480d-9533-09ef151390e9" name="HTML">
                <ownedComment xmi:id="5a6ef1a2-1ec0-4030-8a03-d21305056a04" body="Constants used in the &lt;code>HTMLDocument&lt;/code>.  These&#xA;are basically tag and attribute definitions.&#xA;&#xA;@author  Timothy Prinzing&#xA;@author  Sunita Mani&#xA;&#xA;@version 1.41 12/19/03&#xA;" annotatedElement="4859ee11-093f-480d-9533-09ef151390e9"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5eaadaef-001d-4ffa-a53b-dcd8db7f88f5" name="Tag">
                  <ownedComment xmi:id="86285d84-d0f0-4502-8100-0f949fe6ea94" body="Typesafe enumeration for an HTML tag.  Although the&#xA;set of HTML tags is a closed set, we have left the&#xA;set open so that people can add their own tag types&#xA;to their custom parser and still communicate to the&#xA;reader.&#xA;" annotatedElement="5eaadaef-001d-4ffa-a53b-dcd8db7f88f5"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ff8ee294-39cd-4d5a-a92e-e511efab3ac7" name="UnknownTag" clientDependency="e739c434-f6dc-4496-b951-40fecb94cd86">
                  <generalization xmi:id="4af27684-a418-4c4b-89e4-635afd70c81b" isSubstitutable="true" general="5eaadaef-001d-4ffa-a53b-dcd8db7f88f5"/>
                  <interfaceRealization xmi:id="e739c434-f6dc-4496-b951-40fecb94cd86" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ff8ee294-39cd-4d5a-a92e-e511efab3ac7" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="72170c0b-ade2-4fc3-a13c-5788bf0e2b67" name="Attribute" isLeaf="true">
                  <ownedComment xmi:id="347cc863-1ba1-4fa8-b4d7-bc37641413ed" body="Typesafe enumeration representing an HTML&#xA;attribute.&#xA;" annotatedElement="72170c0b-ade2-4fc3-a13c-5788bf0e2b67"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="16f77695-2a09-4c30-ae96-a9818bf11e4d" name="HTMLDocument">
                <ownedComment xmi:id="f45559e0-fa8f-4f88-857c-598c6232d8ad" body="A document that models HTML.  The purpose of this model&#xA;is to support both browsing and editing.  As a result,&#xA;the structure described by an HTML document is not&#xA;exactly replicated by default.  The element structure that&#xA;is modeled by default, is built by the class&#xA;&lt;code>HTMLDocument.HTMLReader&lt;/code>, which implements&#xA;the &lt;code>HTMLEditorKit.ParserCallback&lt;/code> protocol&#xA;that the parser expects.  To change the structure one&#xA;can subclass &lt;code>HTMLReader&lt;/code>, and reimplement the method&#xA;{@link #getReader(int)} to return the new reader&#xA;implementation.  The documentation for &lt;code>HTMLReader&lt;/code>&#xA;should be consulted for the details of&#xA;the default structure created.  The intent is that&#xA;the document be non-lossy (although reproducing the&#xA;HTML format may result in a different format).&#xA;&lt;p>&#xA;The document models only HTML, and makes no attempt to&#xA;store view attributes in it.  The elements are identified&#xA;by the &lt;code>StyleContext.NameAttribute&lt;/code> attribute,&#xA;which should always have a value of type &lt;code>HTML.Tag&lt;/code>&#xA;that identifies the kind of element.  Some of the elements&#xA;(such as comments) are synthesized.  The &lt;code>HTMLFactory&lt;/code>&#xA;uses this attribute to determine what kind of view to build.&#xA;&lt;p>&#xA;This document supports incremental loading.  The&#xA;&lt;code>TokenThreshold&lt;/code> property controls how&#xA;much of the parse is buffered before trying to update&#xA;the element structure of the document.  This property&#xA;is set by the &lt;code>EditorKit&lt;/code> so that subclasses can disable&#xA;it.&#xA;&lt;p>&#xA;The &lt;code>Base&lt;/code> property determines the URL&#xA;against which relative URLs are resolved.&#xA;By default, this will be the&#xA;&lt;code>Document.StreamDescriptionProperty&lt;/code> if&#xA;the value of the property is a URL.  If a &lt;BASE>&#xA;tag is encountered, the base will become the URL specified&#xA;by that tag.  Because the base URL is a property, it&#xA;can of course be set directly.&#xA;&lt;p>&#xA;The default content storage mechanism for this document&#xA;is a gap buffer (&lt;code>GapContent&lt;/code>).&#xA;Alternatives can be supplied by using the constructor&#xA;that takes a &lt;code>Content&lt;/code> implementation.&#xA;&#xA;@author  Timothy Prinzing&#xA;@author  Scott Violet&#xA;@author  Sunita Mani&#xA;@version 1.167 05/05/04&#xA;" annotatedElement="16f77695-2a09-4c30-ae96-a9818bf11e4d"/>
                <generalization xmi:id="44faac9c-59a3-4d29-bb80-4361f318c600" isSubstitutable="true" general="de2dc809-78c4-4fee-9a14-26108eab795d"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e4acbc50-44ea-412b-9f11-bf294e138920" name="Iterator" isAbstract="true">
                  <ownedComment xmi:id="745d03bb-5262-438c-b99f-ec34832ad24c" body="An iterator to iterate over a particular type of&#xA;tag.  The iterator is not thread safe.  If reliable&#xA;access to the document is not already ensured by&#xA;the context under which the iterator is being used,&#xA;its use should be performed under the protection of&#xA;Document.render.&#xA;" annotatedElement="e4acbc50-44ea-412b-9f11-bf294e138920"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="dfa0ca71-d4e8-4486-8847-216ddcb97493" name="LeafIterator" visibility="package">
                  <ownedComment xmi:id="4ac38b80-e21d-4748-a2a6-114d3e901899" body="An iterator to iterate over a particular type of tag.&#xA;" annotatedElement="dfa0ca71-d4e8-4486-8847-216ddcb97493"/>
                  <generalization xmi:id="a5c3d6c6-4d85-46bd-a78e-c7572f78a207" isSubstitutable="true" general="e4acbc50-44ea-412b-9f11-bf294e138920"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e8a9fa59-2d68-45bd-a8c2-9df4a40709fa" name="HTMLReader">
                  <ownedComment xmi:id="9ffe25d6-f941-4828-8e6e-416cc68e6f0e" body="An HTML reader to load an HTML document with an HTML&#xA;element structure.  This is a set of callbacks from&#xA;the parser, implemented to create a set of elements&#xA;tagged with attributes.  The parse builds up tokens&#xA;(ElementSpec) that describe the element subtree desired,&#xA;and burst it into the document under the protection of&#xA;a write lock using the insert method on the document&#xA;outer class.&#xA;&lt;p>&#xA;The reader can be configured by registering actions&#xA;(of type &lt;code>HTMLDocument.HTMLReader.TagAction&lt;/code>)&#xA;that describe how to handle the action.  The idea behind&#xA;the actions provided is that the most natural text editing&#xA;operations can be provided if the element structure boils&#xA;down to paragraphs with runs of some kind of style&#xA;in them.  Some things are more naturally specified&#xA;structurally, so arbitrary structure should be allowed&#xA;above the paragraphs, but will need to be edited with structural&#xA;actions.  The implication of this is that some of the&#xA;HTML elements specified in the stream being parsed will&#xA;be collapsed into attributes, and in some cases paragraphs&#xA;will be synthesized.  When HTML elements have been&#xA;converted to attributes, the attribute key will be of&#xA;type HTML.Tag, and the value will be of type AttributeSet&#xA;so that no information is lost.  This enables many of the&#xA;existing actions to work so that the user can type input,&#xA;hit the return key, backspace, delete, etc and have a&#xA;reasonable result.  Selections can be created, and attributes&#xA;applied or removed, etc.  With this in mind, the work done&#xA;by the reader can be categorized into the following kinds&#xA;of tasks:&#xA;&lt;dl>&#xA;&lt;dt>Block&#xA;&lt;dd>Build the structure like it's specified in the stream.&#xA;This produces elements that contain other elements.&#xA;&lt;dt>Paragraph&#xA;&lt;dd>Like block except that it's expected that the element&#xA;will be used with a paragraph view so a paragraph element&#xA;won't need to be synthesized.&#xA;&lt;dt>Character&#xA;&lt;dd>Contribute the element as an attribute that will start&#xA;and stop at arbitrary text locations.  This will ultimately&#xA;be mixed into a run of text, with all of the currently&#xA;flattened HTML character elements.&#xA;&lt;dt>Special&#xA;&lt;dd>Produce an embedded graphical element.&#xA;&lt;dt>Form&#xA;&lt;dd>Produce an element that is like the embedded graphical&#xA;element, except that it also has a component model associated&#xA;with it.&#xA;&lt;dt>Hidden&#xA;&lt;dd>Create an element that is hidden from view when the&#xA;document is being viewed read-only, and visible when the&#xA;document is being edited.  This is useful to keep the&#xA;model from losing information, and used to store things&#xA;like comments and unrecognized tags.&#xA;&#xA;&lt;/dl>&#xA;&lt;p>&#xA;Currently, &lt;APPLET>, &lt;PARAM>, &lt;MAP>, &lt;AREA>, &lt;LINK>,&#xA;&lt;SCRIPT> and &lt;STYLE> are unsupported.&#xA;&#xA;&lt;p>&#xA;The assignment of the actions described is shown in the&#xA;following table for the tags defined in &lt;code>HTML.Tag&lt;/code>.&lt;P>&#xA;&lt;table border=1 summary=&quot;HTML tags and assigned actions&quot;>&#xA;&lt;tr>&lt;th>Tag&lt;/th>&lt;th>Action&lt;/th>&lt;/tr>&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.A&lt;/code>         &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.ADDRESS&lt;/code>   &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.APPLET&lt;/code>    &lt;td>HiddenAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.AREA&lt;/code>      &lt;td>AreaAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.B&lt;/code>         &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.BASE&lt;/code>      &lt;td>BaseAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.BASEFONT&lt;/code>  &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.BIG&lt;/code>       &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.BLOCKQUOTE&lt;/code>&lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.BODY&lt;/code>      &lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.BR&lt;/code>        &lt;td>SpecialAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.CAPTION&lt;/code>   &lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.CENTER&lt;/code>    &lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.CITE&lt;/code>      &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.CODE&lt;/code>      &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.DD&lt;/code>        &lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.DFN&lt;/code>       &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.DIR&lt;/code>       &lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.DIV&lt;/code>       &lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.DL&lt;/code>        &lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.DT&lt;/code>        &lt;td>ParagraphAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.EM&lt;/code>        &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.FONT&lt;/code>      &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.FORM&lt;/code>      &lt;td>As of 1.4 a BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.FRAME&lt;/code>     &lt;td>SpecialAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.FRAMESET&lt;/code>  &lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.H1&lt;/code>        &lt;td>ParagraphAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.H2&lt;/code>        &lt;td>ParagraphAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.H3&lt;/code>        &lt;td>ParagraphAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.H4&lt;/code>        &lt;td>ParagraphAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.H5&lt;/code>        &lt;td>ParagraphAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.H6&lt;/code>        &lt;td>ParagraphAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.HEAD&lt;/code>      &lt;td>HeadAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.HR&lt;/code>        &lt;td>SpecialAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.HTML&lt;/code>      &lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.I&lt;/code>         &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.IMG&lt;/code>       &lt;td>SpecialAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.INPUT&lt;/code>     &lt;td>FormAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.ISINDEX&lt;/code>   &lt;td>IsndexAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.KBD&lt;/code>       &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.LI&lt;/code>        &lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.LINK&lt;/code>      &lt;td>LinkAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.MAP&lt;/code>       &lt;td>MapAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.MENU&lt;/code>      &lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.META&lt;/code>      &lt;td>MetaAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.NOFRAMES&lt;/code>  &lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.OBJECT&lt;/code>    &lt;td>SpecialAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.OL&lt;/code>        &lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.OPTION&lt;/code>    &lt;td>FormAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.P&lt;/code>         &lt;td>ParagraphAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.PARAM&lt;/code>     &lt;td>HiddenAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.PRE&lt;/code>       &lt;td>PreAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.SAMP&lt;/code>      &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.SCRIPT&lt;/code>    &lt;td>HiddenAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.SELECT&lt;/code>    &lt;td>FormAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.SMALL&lt;/code>     &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.STRIKE&lt;/code>    &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.S&lt;/code>         &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.STRONG&lt;/code>    &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.STYLE&lt;/code>     &lt;td>StyleAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.SUB&lt;/code>       &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.SUP&lt;/code>       &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.TABLE&lt;/code>     &lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.TD&lt;/code>        &lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.TEXTAREA&lt;/code>  &lt;td>FormAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.TH&lt;/code>        &lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.TITLE&lt;/code>     &lt;td>TitleAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.TR&lt;/code>        &lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.TT&lt;/code>        &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.U&lt;/code>         &lt;td>CharacterAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.UL&lt;/code>        &lt;td>BlockAction&#xA;&lt;tr>&lt;td>&lt;code>HTML.Tag.VAR&lt;/code>       &lt;td>CharacterAction&#xA;&lt;/table>&#xA;&lt;p>&#xA;Once &lt;/html> is encountered, the Actions are no longer notified.&#xA;" annotatedElement="e8a9fa59-2d68-45bd-a8c2-9df4a40709fa"/>
                  <generalization xmi:id="8def851c-c6cd-4851-a8c0-ac15643c308c" isSubstitutable="true" general="5b108ddc-edd1-4061-ad1f-78cf02598288"/>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="399139a3-0d90-4f2e-8d6b-bb8bc98e99d8" name="TagAction">
                    <ownedComment xmi:id="0873bace-964d-4d82-ae57-0ecbc31a780d" body="An action to be performed in response&#xA;to parsing a tag.  This allows customization&#xA;of how each tag is handled and avoids a large&#xA;switch statement.&#xA;" annotatedElement="399139a3-0d90-4f2e-8d6b-bb8bc98e99d8"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="b64e5b68-daaf-4991-b895-e5f07b14562c" name="BlockAction">
                    <generalization xmi:id="49f60c90-1b05-432a-a717-33f557939f2b" isSubstitutable="true" general="399139a3-0d90-4f2e-8d6b-bb8bc98e99d8"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="c07d468c-c57a-465a-b8f5-c0447bfe39a8" name="FormTagAction" visibility="private">
                    <ownedComment xmi:id="e2d031cb-f230-41ac-b95d-a9fc441866c5" body="Action used for the actual element form tag. This is named such&#xA;as there was already a public class named FormAction.&#xA;" annotatedElement="c07d468c-c57a-465a-b8f5-c0447bfe39a8"/>
                    <generalization xmi:id="b2256c3c-749a-4e63-b4f7-52c0685f1a36" isSubstitutable="true" general="b64e5b68-daaf-4991-b895-e5f07b14562c"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="9826bae7-9acc-46df-bdf4-8636f30fb266" name="ParagraphAction">
                    <generalization xmi:id="3eac59e5-78d8-4223-a612-864bd94a1d4d" isSubstitutable="true" general="b64e5b68-daaf-4991-b895-e5f07b14562c"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="1615b69a-db2f-4a0b-a629-407d5c644ee1" name="SpecialAction">
                    <generalization xmi:id="95faf31e-27b9-4c67-9acf-34318188de6b" isSubstitutable="true" general="399139a3-0d90-4f2e-8d6b-bb8bc98e99d8"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="a1233f5a-731a-4b0c-aa10-300b66fb56e5" name="IsindexAction">
                    <generalization xmi:id="6d2b36e6-6708-4e04-986c-0ce4ab3f4406" isSubstitutable="true" general="399139a3-0d90-4f2e-8d6b-bb8bc98e99d8"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="ea102036-f4d5-4de5-9d3b-d388ce173b7f" name="HiddenAction">
                    <generalization xmi:id="938d4523-535b-412e-bd6b-54f5ffe53a37" isSubstitutable="true" general="399139a3-0d90-4f2e-8d6b-bb8bc98e99d8"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="2e5d89aa-1122-4f44-94a2-a26122a6d51b" name="MetaAction" visibility="package">
                    <ownedComment xmi:id="30f70a01-f220-48bc-a39f-d39857382636" body="Subclass of HiddenAction to set the content type for style sheets,&#xA;and to set the name of the default style sheet.&#xA;" annotatedElement="2e5d89aa-1122-4f44-94a2-a26122a6d51b"/>
                    <generalization xmi:id="6f88973c-a4ea-45dd-bc11-43c550aa81cd" isSubstitutable="true" general="ea102036-f4d5-4de5-9d3b-d388ce173b7f"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="46c23e2a-af77-4a10-88cf-8c4dfd8def5b" name="HeadAction" visibility="package">
                    <ownedComment xmi:id="ac7c8bf3-a432-442a-a14d-e774a70dbe27" body="End if overridden to create the necessary stylesheets that&#xA;are referenced via the link tag. It is done in this manner&#xA;as the meta tag can be used to specify an alternate style sheet,&#xA;and is not guaranteed to come before the link tags.&#xA;" annotatedElement="46c23e2a-af77-4a10-88cf-8c4dfd8def5b"/>
                    <generalization xmi:id="6664d53a-23c8-402c-874e-2a673ba45e31" isSubstitutable="true" general="b64e5b68-daaf-4991-b895-e5f07b14562c"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="95e2b677-ee83-4df9-92e6-f91e4b851eaa" name="LinkAction" visibility="package">
                    <ownedComment xmi:id="d1aceeb4-d67a-4cb9-b8cc-cbda0e7ef8a2" body="A subclass to add the AttributeSet to styles if the&#xA;attributes contains an attribute for 'rel' with value&#xA;'stylesheet' or 'alternate stylesheet'.&#xA;" annotatedElement="95e2b677-ee83-4df9-92e6-f91e4b851eaa"/>
                    <generalization xmi:id="cda70ba7-df78-4a31-a55a-4771e78da9b7" isSubstitutable="true" general="ea102036-f4d5-4de5-9d3b-d388ce173b7f"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="3396203a-5816-4dae-8d64-24014ac64552" name="MapAction" visibility="package">
                    <generalization xmi:id="2d710df1-20b0-4181-8b2b-3d21ae4ffe31" isSubstitutable="true" general="399139a3-0d90-4f2e-8d6b-bb8bc98e99d8"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="a3903ea8-d5e8-4834-badb-0ecaa9ab6d7a" name="AreaAction" visibility="package">
                    <generalization xmi:id="a77c1b6b-afad-427f-8021-6427e3e08fdc" isSubstitutable="true" general="399139a3-0d90-4f2e-8d6b-bb8bc98e99d8"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="2bcdd209-2690-4951-abc4-7caf91c60114" name="StyleAction" visibility="package">
                    <generalization xmi:id="eaf58abc-756d-4e9d-ab4a-105dde091abc" isSubstitutable="true" general="399139a3-0d90-4f2e-8d6b-bb8bc98e99d8"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="b32b00e0-eb09-4f7e-a921-340cdc0b1a03" name="PreAction">
                    <generalization xmi:id="2fa81919-ea13-4855-a81c-db946f7c4abf" isSubstitutable="true" general="b64e5b68-daaf-4991-b895-e5f07b14562c"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="c21af06e-2d59-42db-825c-fddf963c931f" name="CharacterAction">
                    <generalization xmi:id="426bba88-b2a9-4366-970d-536e8928df78" isSubstitutable="true" general="399139a3-0d90-4f2e-8d6b-bb8bc98e99d8"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="93713a27-3cc2-4901-9d08-2526138eff72" name="ConvertAction" visibility="package">
                    <ownedComment xmi:id="ecff38ed-0172-4fe3-89b9-8ea384d5d7bf" body="Provides conversion of HTML tag/attribute&#xA;mappings that have a corresponding StyleConstants&#xA;and CSS mapping.  The conversion is to CSS attributes.&#xA;" annotatedElement="93713a27-3cc2-4901-9d08-2526138eff72"/>
                    <generalization xmi:id="9cf9dc3c-a071-4fbd-9e2b-2e75569bdbbb" isSubstitutable="true" general="399139a3-0d90-4f2e-8d6b-bb8bc98e99d8"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="f88d8fbd-ddee-49be-93eb-e5cb92f958c3" name="AnchorAction" visibility="package">
                    <generalization xmi:id="af141e37-5128-4277-ab50-8529a6949c72" isSubstitutable="true" general="c21af06e-2d59-42db-825c-fddf963c931f"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="4e13314f-8f22-4b34-9453-2c8ffae62ffe" name="TitleAction" visibility="package">
                    <generalization xmi:id="304d38d7-f8d7-475e-b120-6d5eef9bd73f" isSubstitutable="true" general="ea102036-f4d5-4de5-9d3b-d388ce173b7f"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="75a1e350-850b-4ddf-81b6-5d8aec74ece4" name="BaseAction" visibility="package">
                    <generalization xmi:id="8c406f1d-f3d8-46f7-b18a-21bcf54d6a3a" isSubstitutable="true" general="399139a3-0d90-4f2e-8d6b-bb8bc98e99d8"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="35a3d0ce-21ba-4ff5-afa7-4652c80db4ea" name="ObjectAction" visibility="package">
                    <generalization xmi:id="134786cc-81a6-4e8b-b2c8-0fb9fe2f265c" isSubstitutable="true" general="1615b69a-db2f-4a0b-a629-407d5c644ee1"/>
                  </nestedClassifier>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="e12ea642-a2fd-4bd4-b140-ef94696f130d" name="FormAction">
                    <ownedComment xmi:id="3e3c9ad9-2c8b-4894-9ef5-55be32e53c09" body="Action to support forms by building all of the elements&#xA;used to represent form controls.  This will process&#xA;the &lt;INPUT>, &lt;TEXTAREA>, &lt;SELECT>,&#xA;and &lt;OPTION> tags.  The element created by&#xA;this action is expected to have the attribute&#xA;&lt;code>StyleConstants.ModelAttribute&lt;/code> set to&#xA;the model that holds the state for the form control.&#xA;This enables multiple views, and allows document to&#xA;be iterated over picking up the data of the form.&#xA;The following are the model assignments for the&#xA;various type of form elements.&#xA;&lt;table summary=&quot;model assignments for the various types of form elements&quot;>&#xA;&lt;tr>&#xA;&lt;th>Element Type&#xA;&lt;th>Model Type&#xA;&lt;tr>&#xA;&lt;td>input, type button&#xA;&lt;td>{@link DefaultButtonModel}&#xA;&lt;tr>&#xA;&lt;td>input, type checkbox&#xA;&lt;td>{@link javax.swing.JToggleButton.ToggleButtonModel}&#xA;&lt;tr>&#xA;&lt;td>input, type image&#xA;&lt;td>{@link DefaultButtonModel}&#xA;&lt;tr>&#xA;&lt;td>input, type password&#xA;&lt;td>{@link PlainDocument}&#xA;&lt;tr>&#xA;&lt;td>input, type radio&#xA;&lt;td>{@link javax.swing.JToggleButton.ToggleButtonModel}&#xA;&lt;tr>&#xA;&lt;td>input, type reset&#xA;&lt;td>{@link DefaultButtonModel}&#xA;&lt;tr>&#xA;&lt;td>input, type submit&#xA;&lt;td>{@link DefaultButtonModel}&#xA;&lt;tr>&#xA;&lt;td>input, type text or type is null.&#xA;&lt;td>{@link PlainDocument}&#xA;&lt;tr>&#xA;&lt;td>select&#xA;&lt;td>{@link DefaultComboBoxModel} or an {@link DefaultListModel}, with an item type of Option&#xA;&lt;tr>&#xA;&lt;td>textarea&#xA;&lt;td>{@link PlainDocument}&#xA;&lt;/table>&#xA;&#xA;" annotatedElement="e12ea642-a2fd-4bd4-b140-ef94696f130d"/>
                    <generalization xmi:id="0eade028-10f0-421f-9b66-4580ab32017d" isSubstitutable="true" general="1615b69a-db2f-4a0b-a629-407d5c644ee1"/>
                  </nestedClassifier>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="fffef281-fd10-4c6e-abf1-e311f3e0b9d0" name="TaggedAttributeSet" visibility="package">
                  <ownedComment xmi:id="653fdad6-1632-4c55-b71b-9f4c408e30b5" body="Used by StyleSheet to determine when to avoid removing HTML.Tags&#xA;matching StyleConstants.&#xA;" annotatedElement="fffef281-fd10-4c6e-abf1-e311f3e0b9d0"/>
                  <generalization xmi:id="2ddda8ca-f41e-4cae-8143-b53dab84074f" isSubstitutable="true" general="57df980b-ec0c-46d3-ac19-39c7d0bbfed7"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e4d86e4f-0266-47bd-aa28-77c0bb9495b4" name="RunElement">
                  <ownedComment xmi:id="90517126-52b1-4808-9406-624cd0feb5b3" body="An element that represents a chunk of text that has&#xA;a set of HTML character level attributes assigned to&#xA;it.&#xA;" annotatedElement="e4d86e4f-0266-47bd-aa28-77c0bb9495b4"/>
                  <generalization xmi:id="032f57f1-0a92-45ab-bd1c-65592497caaf" isSubstitutable="true" general="2e1af822-cf29-40f9-9100-e56c5130f540"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="cb223576-2fbb-4046-953d-ec1641aaade4" name="BlockElement">
                  <ownedComment xmi:id="84e3058d-6fe1-4ad2-94c3-0446f9d4844f" body="An element that represents a structural &lt;em>block&lt;/em> of&#xA;HTML.&#xA;" annotatedElement="cb223576-2fbb-4046-953d-ec1641aaade4"/>
                  <generalization xmi:id="614cb37c-e4a1-41b2-a709-d7ba6e8eef70" isSubstitutable="true" general="ec19227e-e149-4e07-b09d-8bb50d3628ad"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="9af8e86e-8e07-471e-8bf5-643d1f4d2ea7" name="FixedLengthDocument" visibility="private">
                  <ownedComment xmi:id="5e574246-65f7-4bc4-ab52-466233012c76" body="Document that allows you to set the maximum length of the text.&#xA;" annotatedElement="9af8e86e-8e07-471e-8bf5-643d1f4d2ea7"/>
                  <generalization xmi:id="73568ee3-07ea-4c78-93ce-fb1678896960" isSubstitutable="true" general="ab94a18a-7487-453a-bd09-70b35b1cc01d"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="7f6b0d78-fac2-447c-a032-e86bbce34729" name="FormSubmitEvent">
                <ownedComment xmi:id="c839c514-6a31-4753-af47-c12e741db13c" body="FormSubmitEvent is used to notify interested&#xA;parties that a form was submited.&#xA;&#xA;@version 1.3 12/19/03&#xA;@since 1.5&#xA;@author    Denis Sharypov&#xA;" annotatedElement="7f6b0d78-fac2-447c-a032-e86bbce34729"/>
                <generalization xmi:id="a326b5e4-34e6-4cd1-946c-b4ea31682fe1" isSubstitutable="true" general="7b58956e-d7da-4747-a796-5ae8680ca312"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="be07986c-16cd-4bb1-921a-36c8811eab7d" name="MethodType">
                  <ownedComment xmi:id="b6b8d3b5-e0f5-4a3f-90cc-36d87156ffab" body="Represents an HTML form method type.&#xA;&lt;UL>&#xA;&lt;LI>&lt;code>GET&lt;/code> corresponds to the GET form method&lt;/LI>&#xA;&lt;LI>&lt;code>POST&lt;/code> corresponds to the POST from method&lt;/LI>&#xA;&lt;/UL>&#xA;" annotatedElement="be07986c-16cd-4bb1-921a-36c8811eab7d"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="285ade3c-f718-45b2-9e06-c9da2b5ef11f" name="CSSParser" visibility="package">
                <ownedComment xmi:id="af6f500e-d5ea-45b5-8b6c-dc41b729da72" body="A CSS parser. This works by way of a delegate that implements the&#xA;CSSParserCallback interface. The delegate is notified of the following&#xA;events:&#xA;&lt;ul>&#xA;&lt;li>Import statement: &lt;code>handleImport&lt;/code>&#xA;&lt;li>Selectors &lt;code>handleSelector&lt;/code>. This is invoked for each&#xA;string. For example if the Reader contained p, bar , a {}, the delegate&#xA;would be notified 4 times, for 'p,' 'bar' ',' and 'a'.&#xA;&lt;li>When a rule starts, &lt;code>startRule&lt;/code>&#xA;&lt;li>Properties in the rule via the &lt;code>handleProperty&lt;/code>. This&#xA;is invoked one per property/value key, eg font size: foo;, would&#xA;cause the delegate to be notified once with a value of 'font size'.&#xA;&lt;li>Values in the rule via the &lt;code>handleValue&lt;/code>, this is notified&#xA;for the total value.&#xA;&lt;li>When a rule ends, &lt;code>endRule&lt;/code>&#xA;&lt;/ul>&#xA;This will parse much more than CSS 1, and loosely implements the&#xA;recommendation for &lt;i>Forward-compatible parsing&lt;/i> in section&#xA;7.1 of the CSS spec found at:&#xA;&lt;a href=http://www.w3.org/TR/REC-CSS1>http://www.w3.org/TR/REC-CSS1&lt;/a>.&#xA;If an error results in parsing, a RuntimeException will be thrown.&#xA;&lt;p>&#xA;This will preserve case. If the callback wishes to treat certain poritions&#xA;case insensitively (such as selectors), it should use toLowerCase, or&#xA;something similar.&#xA;&#xA;@author Scott Violet&#xA;@version 1.8 12/19/03&#xA;" annotatedElement="285ade3c-f718-45b2-9e06-c9da2b5ef11f"/>
                <nestedClassifier xmi:type="uml:Interface" xmi:id="9e5235f7-d6bd-4f06-bfcb-75ecb881afb6" name="CSSParserCallback" visibility="package" isAbstract="true"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="0d0fed30-762f-4a19-8adc-e2de8bbd3c28" name="NoFramesView" visibility="package">
                <ownedComment xmi:id="ad4a604c-70c2-4f35-8d5f-4771caac0e29" body="This is the view associated with the html tag NOFRAMES.&#xA;This view has been written to ignore the contents of the&#xA;NOFRAMES tag.  The contents of the tag will only be visible&#xA;when the JTextComponent the view is contained in is editable.&#xA;&#xA;@author  Sunita Mani&#xA;@version 1.9 12/19/03&#xA;" annotatedElement="0d0fed30-762f-4a19-8adc-e2de8bbd3c28"/>
                <generalization xmi:id="8f4c9c58-3c8e-44aa-8496-131d8ff3ba91" isSubstitutable="true" general="ad789f9c-2537-4654-b6cc-40b99e09b9d7"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="59e8989c-295e-49a8-9851-a01d1b4b3d8d" name="ListView">
                <ownedComment xmi:id="21ba8d21-0a18-46f9-b0b7-031e75049476" body="A view implementation to display an html list&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.28 12/19/03&#xA;" annotatedElement="59e8989c-295e-49a8-9851-a01d1b4b3d8d"/>
                <generalization xmi:id="64007c89-7032-4e76-a42a-2cb1a60b1d8c" isSubstitutable="true" general="ad789f9c-2537-4654-b6cc-40b99e09b9d7"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Package" xmi:id="946e4c7e-059f-4e83-ad1a-f6145748cc03" name="parser">
                <packagedElement xmi:type="uml:Class" xmi:id="790b0125-07ec-4a20-aaba-735721e18b40" name="DTD" clientDependency="9643db06-29c0-4219-bcfb-63ee5ebb82d1">
                  <ownedComment xmi:id="feabd936-743c-429e-af6c-ec93807bad7e" body="The representation of an SGML DTD.  DTD describes a document&#xA;syntax and is used in parsing of HTML documents.  It contains&#xA;a list of elements and their attributes as well as a list of&#xA;entities defined in the DTD.&#xA;&#xA;@see Element&#xA;@see AttributeList&#xA;@see ContentModel&#xA;@see Parser&#xA;@author Arthur van Hoff&#xA;@version 1.20 05/05/04&#xA;" annotatedElement="790b0125-07ec-4a20-aaba-735721e18b40"/>
                  <interfaceRealization xmi:id="9643db06-29c0-4219-bcfb-63ee5ebb82d1" name="" supplier="3deb1b95-f49b-4a83-bb8b-5866c6ecd2ad" client="790b0125-07ec-4a20-aaba-735721e18b40" contract="3deb1b95-f49b-4a83-bb8b-5866c6ecd2ad"/>
                </packagedElement>
                <packagedElement xmi:type="uml:Class" xmi:id="93167b50-cc3c-415e-8199-1c521a24fd4c" name="DocumentParser">
                  <ownedComment xmi:id="07b287ea-29c1-4b36-8596-622db2a3822b" body="A Parser for HTML Documents (actually, you can specify a DTD, but&#xA;you should really only use this class with the html dtd in swing).&#xA;Reads an InputStream of HTML and&#xA;invokes the appropriate methods in the ParserCallback class. This&#xA;is the default parser used by HTMLEditorKit to parse HTML url's.&#xA;&lt;p>This will message the callback for all valid tags, as well as&#xA;tags that are implied but not explicitly specified. For example, the&#xA;html string (&lt;p>blah) only has a p tag defined. The callback&#xA;will see the following methods:&#xA;&lt;ol>&lt;li>&lt;i>handleStartTag(html, ...)&lt;/i>&lt;/li>&#xA;&lt;li>&lt;i>handleStartTag(head, ...)&lt;/i>&lt;/li>&#xA;&lt;li>&lt;i>handleEndTag(head)&lt;/i>&lt;/li>&#xA;&lt;li>&lt;i>handleStartTag(body, ...)&lt;/i>&lt;/li>&#xA;&lt;li>handleStartTag(p, ...)&lt;/i>&lt;/li>&#xA;&lt;li>handleText(...)&lt;/li>&#xA;&lt;li>&lt;i>handleEndTag(p)&lt;/i>&lt;/li>&#xA;&lt;li>&lt;i>handleEndTag(body)&lt;/i>&lt;/li>&#xA;&lt;li>&lt;i>handleEndTag(html)&lt;/i>&lt;/li>&#xA;&lt;/ol>&#xA;The items in &lt;i>italic&lt;/i> are implied, that is, although they were not&#xA;explicitly specified, to be correct html they should have been present&#xA;(head isn't necessary, but it is still generated). For tags that&#xA;are implied, the AttributeSet argument will have a value of&#xA;&lt;code>Boolean.TRUE&lt;/code> for the key&#xA;&lt;code>HTMLEditorKit.ParserCallback.IMPLIED&lt;/code>.&#xA;&lt;p>HTML.Attributes defines a type safe enumeration of html attributes.&#xA;If an attribute key of a tag is defined in HTML.Attribute, the&#xA;HTML.Attribute will be used as the key, otherwise a String will be used.&#xA;For example &lt;p foo=bar class=neat> has two attributes. foo is&#xA;not defined in HTML.Attribute, where as class is, therefore the&#xA;AttributeSet will have two values in it, HTML.Attribute.CLASS with&#xA;a String value of 'neat' and the String key 'foo' with a String value of&#xA;'bar'.&#xA;&lt;p>The position argument will indicate the start of the tag, comment&#xA;or text. Similiar to arrays, the first character in the stream has a&#xA;position of 0. For tags that are&#xA;implied the position will indicate&#xA;the location of the next encountered tag. In the first example,&#xA;the implied start body and html tags will have the same position as the&#xA;p tag, and the implied end p, html and body tags will all have the same&#xA;position.&#xA;&lt;p>As html skips whitespace the position for text will be the position&#xA;of the first valid character, eg in the string '\n\n\nblah'&#xA;the text 'blah' will have a position of 3, the newlines are skipped.&#xA;&lt;p>&#xA;For attributes that do not have a value, eg in the html&#xA;string &lt;code>&lt;foo blah>&lt;/code> the attribute &lt;code>blah&lt;/code>&#xA;does not have a value, there are two possible values that will be&#xA;placed in the AttributeSet's value:&#xA;&lt;ul>&#xA;&lt;li>If the DTD does not contain an definition for the element, or the&#xA;definition does not have an explicit value then the value in the&#xA;AttributeSet will be &lt;code>HTML.NULL_ATTRIBUTE_VALUE&lt;/code>.&#xA;&lt;li>If the DTD contains an explicit value, as in:&#xA;&lt;code>&lt;!ATTLIST OPTION selected (selected) #IMPLIED>&lt;/code>&#xA;this value from the dtd (in this case selected) will be used.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;Once the stream has been parsed, the callback is notified of the most&#xA;likely end of line string. The end of line string will be one of&#xA;\n, \r or \r\n, which ever is encountered the most in parsing the&#xA;stream.&#xA;&#xA;@version &#x9;1.28 12/19/03&#xA;@author      Sunita Mani&#xA;" annotatedElement="93167b50-cc3c-415e-8199-1c521a24fd4c"/>
                  <generalization xmi:id="61f69d64-4e4b-4b0a-b84b-c2dcc9b38d56" isSubstitutable="true" general="51a9ff32-0b26-4362-bc3b-38ebb266a442"/>
                </packagedElement>
                <packagedElement xmi:type="uml:Interface" xmi:id="3deb1b95-f49b-4a83-bb8b-5866c6ecd2ad" name="DTDConstants" isAbstract="true">
                  <ownedComment xmi:id="29609a2f-7356-418e-b493-7ae377fa3e1a" body="SGML constants used in a DTD. The names of the&#xA;constants correspond the the equivalent SGML constructs&#xA;as described in &quot;The SGML Handbook&quot; by  Charles F. Goldfarb.&#xA;&#xA;@see DTD&#xA;@see Element&#xA;@version 1.10, 12/19/03&#xA;@author Arthur van Hoff&#xA;" annotatedElement="3deb1b95-f49b-4a83-bb8b-5866c6ecd2ad"/>
                </packagedElement>
                <packagedElement xmi:type="uml:Class" xmi:id="461dce41-99ab-4c5f-a8ab-d6e159f63c6d" name="Entity" clientDependency="0f373bf8-5bd8-4dae-9181-5385ee31eea4" isLeaf="true">
                  <ownedComment xmi:id="7b9bc01e-e181-4332-a088-c5a19a20a492" body="An entity is described in a DTD using the ENTITY construct.&#xA;It defines the type and value of the the entity.&#xA;&#xA;@see DTD&#xA;@version 1.10, 12/19/03&#xA;@author Arthur van Hoff&#xA;" annotatedElement="461dce41-99ab-4c5f-a8ab-d6e159f63c6d"/>
                  <interfaceRealization xmi:id="0f373bf8-5bd8-4dae-9181-5385ee31eea4" name="" supplier="3deb1b95-f49b-4a83-bb8b-5866c6ecd2ad" client="461dce41-99ab-4c5f-a8ab-d6e159f63c6d" contract="3deb1b95-f49b-4a83-bb8b-5866c6ecd2ad"/>
                </packagedElement>
                <packagedElement xmi:type="uml:Class" xmi:id="d097318a-4521-4571-8ac3-627c208f04f2" name="Element" clientDependency="6f28e72b-10fb-46f9-9d2e-981e1dacf1c4 6c4b06f9-1f84-478d-ada8-2627c895229b" isLeaf="true">
                  <ownedComment xmi:id="183c018a-b9de-4980-ab8a-4772ad9b3375" body="An element as described in a DTD using the ELEMENT construct.&#xA;This is essentiall the description of a tag. It describes the&#xA;type, content model, attributes, attribute types etc. It is used&#xA;to correctly parse a document by the Parser.&#xA;&#xA;@see DTD&#xA;@see AttributeList&#xA;@version 1.9, 12/19/03&#xA;@author Arthur van Hoff&#xA;" annotatedElement="d097318a-4521-4571-8ac3-627c208f04f2"/>
                  <interfaceRealization xmi:id="6f28e72b-10fb-46f9-9d2e-981e1dacf1c4" name="" supplier="3deb1b95-f49b-4a83-bb8b-5866c6ecd2ad" client="d097318a-4521-4571-8ac3-627c208f04f2" contract="3deb1b95-f49b-4a83-bb8b-5866c6ecd2ad"/>
                  <interfaceRealization xmi:id="6c4b06f9-1f84-478d-ada8-2627c895229b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="d097318a-4521-4571-8ac3-627c208f04f2" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </packagedElement>
                <packagedElement xmi:type="uml:Class" xmi:id="7e7c1cdd-2ece-464d-aa03-47ee8d5e4f29" name="ResourceLoader" visibility="package" clientDependency="88c2b2ee-9f78-4308-9e14-c6cae8b2e4ff">
                  <ownedComment xmi:id="7cbf6d73-d680-4ab8-9b60-e6071d4b0968" body="Simple class to load resources using the 1.2&#xA;security model.  Since the html support is loaded&#xA;lazily, it's resources are potentially fetched with&#xA;applet code in the call stack.  By providing this&#xA;functionality in a class that is only built on 1.2,&#xA;reflection can be used from the code that is also&#xA;built on 1.1 to call this functionality (and avoid&#xA;the evils of preprocessing).  This functionality&#xA;is called from ParserDelegator.getResourceAsStream.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.6 12/19/03&#xA;" annotatedElement="7e7c1cdd-2ece-464d-aa03-47ee8d5e4f29"/>
                  <interfaceRealization xmi:id="88c2b2ee-9f78-4308-9e14-c6cae8b2e4ff" name="" supplier="5646b95f-c8d5-4f70-8c2b-9996e66b63ce" client="7e7c1cdd-2ece-464d-aa03-47ee8d5e4f29" contract="5646b95f-c8d5-4f70-8c2b-9996e66b63ce"/>
                </packagedElement>
                <packagedElement xmi:type="uml:Class" xmi:id="dfee531b-214c-40a7-b65e-8cf425e1ea08" name="ContentModel" clientDependency="353044fc-267d-4839-8472-deeff362b351" isLeaf="true">
                  <ownedComment xmi:id="f0f3acee-b6ab-4e58-b5db-502bdf78ef6a" body="A representation of a content model. A content model is&#xA;basically a restricted BNF expression. It is restricted in&#xA;the sense that it must be deterministic. This means that you&#xA;don't have to represent it as a finite state automata.&lt;p>&#xA;See Annex H on page 556 of the SGML handbook for more information.&#xA;&#xA;@author   Arthur van Hoff&#xA;@version  1.11,05/05/04&#xA;&#xA;" annotatedElement="dfee531b-214c-40a7-b65e-8cf425e1ea08"/>
                  <interfaceRealization xmi:id="353044fc-267d-4839-8472-deeff362b351" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="dfee531b-214c-40a7-b65e-8cf425e1ea08" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </packagedElement>
                <packagedElement xmi:type="uml:Class" xmi:id="f5d2bbf5-d7de-47ec-b3ef-5623b9d40f35" name="TagElement">
                  <ownedComment xmi:id="f0472624-e40f-4640-ad54-529676ca4809" body="A generic HTML TagElement class. The methods define how white&#xA;space is interpreted around the tag.&#xA;&#xA;@version &#x9;1.11, 12/19/03&#xA;@author      Sunita Mani&#xA;" annotatedElement="f5d2bbf5-d7de-47ec-b3ef-5623b9d40f35"/>
                </packagedElement>
                <packagedElement xmi:type="uml:Class" xmi:id="06ded28a-3c82-43cb-b024-ea122a2bad47" name="AttributeList" clientDependency="7d5443bd-deb1-46e2-b25c-49a5df8d86b9 21ca95c1-811e-4e8a-9711-dd36ed90ebb2" isLeaf="true">
                  <ownedComment xmi:id="0291963d-1fa5-4a31-b652-f6cbb09747bf" body="This class defines the attributes of an SGML element&#xA;as described in a DTD using the ATTLIST construct.&#xA;An AttributeList can be obtained from the Element&#xA;class using the getAttributes() method.&#xA;&lt;p>&#xA;It is actually an element in a linked list. Use the&#xA;getNext() method repeatedly to enumerate all the attributes&#xA;of an element.&#xA;&#xA;@see&#x9;&#x9;Element&#xA;@author      Arthur Van Hoff&#xA;@version &#x9;1.11 05/05/04&#xA;&#xA;" annotatedElement="06ded28a-3c82-43cb-b024-ea122a2bad47"/>
                  <interfaceRealization xmi:id="21ca95c1-811e-4e8a-9711-dd36ed90ebb2" name="" supplier="3deb1b95-f49b-4a83-bb8b-5866c6ecd2ad" client="06ded28a-3c82-43cb-b024-ea122a2bad47" contract="3deb1b95-f49b-4a83-bb8b-5866c6ecd2ad"/>
                  <interfaceRealization xmi:id="7d5443bd-deb1-46e2-b25c-49a5df8d86b9" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="06ded28a-3c82-43cb-b024-ea122a2bad47" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </packagedElement>
                <packagedElement xmi:type="uml:Class" xmi:id="95ed8f85-671a-4dad-aaef-c5fba6226c84" name="ContentModelState" visibility="package">
                  <ownedComment xmi:id="7bddab04-3791-40b7-93e7-e89ba63d2c36" body="A content model state. This is basically a list of pointers to&#xA;the BNF expression representing the model (the ContentModel).&#xA;Each element in a DTD has a content model which describes the&#xA;elements that may occur inside, and the order in which they can&#xA;occur.&#xA;&lt;p>&#xA;Each time a token is reduced a new state is created.&#xA;&lt;p>&#xA;See Annex H on page 556 of the SGML handbook for more information.&#xA;&#xA;@see Parser&#xA;@see DTD&#xA;@see Element&#xA;@see ContentModel&#xA;@author Arthur van Hoff&#xA;@version &#x9;1.11 12/19/03&#xA;" annotatedElement="95ed8f85-671a-4dad-aaef-c5fba6226c84"/>
                </packagedElement>
                <packagedElement xmi:type="uml:Class" xmi:id="51a9ff32-0b26-4362-bc3b-38ebb266a442" name="Parser" clientDependency="426a0250-efe2-457f-aed3-839991b21bd7">
                  <ownedComment xmi:id="90a7a2d5-85ef-4584-b3ff-9ee818ea1122" body="A simple DTD-driven HTML parser. The parser reads an&#xA;HTML file from an InputStream and calls various methods&#xA;(which should be overridden in a subclass) when tags and&#xA;data are encountered.&#xA;&lt;p>&#xA;Unfortunately there are many badly implemented HTML parsers&#xA;out there, and as a result there are many badly formatted&#xA;HTML files. This parser attempts to parse most HTML files.&#xA;This means that the implementation sometimes deviates from&#xA;the SGML specification in favor of HTML.&#xA;&lt;p>&#xA;The parser treats \r and \r\n as \n. Newlines after starttags&#xA;and before end tags are ignored just as specified in the SGML/HTML&#xA;specification.&#xA;&lt;p>&#xA;The html spec does not specify how spaces are to be coalesced very well.&#xA;Specifically, the following scenarios are not discussed (note that a&#xA;space should be used here, but I am using &amp;nbsp to force the space to&#xA;be displayed):&#xA;&lt;p>&#xA;'&lt;b>blah&amp;nbsp;&lt;i>&amp;nbsp;&lt;strike>&amp;nbsp;foo' which can be treated as:&#xA;'&lt;b>blah&amp;nbsp;&lt;i>&lt;strike>foo'&#xA;&lt;p>as well as:&#xA;'&lt;p>&lt;a href=&quot;xx&quot;>&amp;nbsp;&lt;em>Using&lt;/em>&lt;/a>&lt;/p>'&#xA;which appears to be treated as:&#xA;'&lt;p>&lt;a href=&quot;xx&quot;>&lt;em>Using&lt;/em>&lt;/a>&lt;/p>'&#xA;&lt;p>&#xA;If &lt;code>strict&lt;/code> is false, when a tag that breaks flow,&#xA;(&lt;code>TagElement.breaksFlows&lt;/code>) or trailing whitespace is&#xA;encountered, all whitespace will be ignored until a non whitespace&#xA;character is encountered. This appears to give behavior closer to&#xA;the popular browsers.&#xA;&#xA;@see DTD&#xA;@see TagElement&#xA;@see SimpleAttributeSet&#xA;@version 1.38, 12/19/03&#xA;@author Arthur van Hoff&#xA;@author Sunita Mani&#xA;" annotatedElement="51a9ff32-0b26-4362-bc3b-38ebb266a442"/>
                  <interfaceRealization xmi:id="426a0250-efe2-457f-aed3-839991b21bd7" name="" supplier="3deb1b95-f49b-4a83-bb8b-5866c6ecd2ad" client="51a9ff32-0b26-4362-bc3b-38ebb266a442" contract="3deb1b95-f49b-4a83-bb8b-5866c6ecd2ad"/>
                </packagedElement>
                <packagedElement xmi:type="uml:Class" xmi:id="99a6ba60-9b1e-4781-9c7b-524e11a2c73b" name="TagStack" visibility="package" clientDependency="acc33ffe-8b4c-4a30-bf20-826960926a72" isLeaf="true">
                  <ownedComment xmi:id="cf2fa5c6-d40a-4206-b84d-4bf0fb3fe1fa" body="A stack of tags. Used while parsing an HTML document.&#xA;It, together with the ContentModelStates, defines the&#xA;complete state of the parser while reading a document.&#xA;When a start tag is encountered an element is pushed onto&#xA;the stack, when an end tag is enountered an element is popped&#xA;of the stack.&#xA;&#xA;@see Parser&#xA;@see DTD&#xA;@see ContentModelState&#xA;@version &#x9;1.10, 12/19/03&#xA;@author &#x9;Arthur van Hoff&#xA;" annotatedElement="99a6ba60-9b1e-4781-9c7b-524e11a2c73b"/>
                  <interfaceRealization xmi:id="acc33ffe-8b4c-4a30-bf20-826960926a72" name="" supplier="3deb1b95-f49b-4a83-bb8b-5866c6ecd2ad" client="99a6ba60-9b1e-4781-9c7b-524e11a2c73b" contract="3deb1b95-f49b-4a83-bb8b-5866c6ecd2ad"/>
                </packagedElement>
                <packagedElement xmi:type="uml:Class" xmi:id="5d478f96-5fdf-43e1-8093-5ef9b1f4441f" name="NPrintWriter" visibility="package">
                  <generalization xmi:id="755fa024-f6ea-479c-b103-1d8b8afbd09d" isSubstitutable="true" general="86ccce0b-0d4c-44ae-8a2a-71c7b2c68c3c"/>
                </packagedElement>
                <packagedElement xmi:type="uml:Class" xmi:id="365be233-26a1-40c5-8871-a8fecfeb5108" name="ParserDelegator" clientDependency="2dda8283-c924-41cc-964c-90c28ba0f725">
                  <ownedComment xmi:id="d6cdc14e-846f-44f7-8606-3e871f4b3620" body="Responsible for starting up a new DocumentParser&#xA;each time its parse method is invoked. Stores a&#xA;reference to the dtd.&#xA;&#xA;@author  Sunita Mani&#xA;@version 1.15, 12/19/03&#xA;" annotatedElement="365be233-26a1-40c5-8871-a8fecfeb5108"/>
                  <generalization xmi:id="c1eda244-9847-433b-b972-f16f260e7ac3" isSubstitutable="true" general="d9784bb5-c785-4ff1-a683-122e3ff1e5ba"/>
                  <interfaceRealization xmi:id="2dda8283-c924-41cc-964c-90c28ba0f725" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="365be233-26a1-40c5-8871-a8fecfeb5108" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </packagedElement>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e4d374de-1b71-48fa-8ddc-f848aab5b093" name="StringContent" clientDependency="145c7665-4c16-477a-ae2d-32cf9bbf0c9d 1647142c-fffe-4043-9a2a-9b7fda91680d" isLeaf="true">
              <ownedComment xmi:id="1cad7248-3bc5-431b-b0bb-623b9ac58a72" body="An implementation of the AbstractDocument.Content interface that is&#xA;a brute force implementation that is useful for relatively small&#xA;documents and/or debugging.  It manages the character content&#xA;as a simple character array.  It is also quite inefficient.&#xA;&lt;p>&#xA;It is generally recommended that the gap buffer or piece table&#xA;implementations be used instead.  This buffer does not scale up&#xA;to large sizes.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.44 12/19/03&#xA;" annotatedElement="e4d374de-1b71-48fa-8ddc-f848aab5b093"/>
              <interfaceRealization xmi:id="145c7665-4c16-477a-ae2d-32cf9bbf0c9d" name="" supplier="c7262eed-db71-4380-8f1f-ae9e28a918b5" client="e4d374de-1b71-48fa-8ddc-f848aab5b093" contract="c7262eed-db71-4380-8f1f-ae9e28a918b5"/>
              <interfaceRealization xmi:id="1647142c-fffe-4043-9a2a-9b7fda91680d" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="e4d374de-1b71-48fa-8ddc-f848aab5b093" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="16f8540f-6333-4807-b5bd-551244779204" name="PosRec" visibility="package" isLeaf="true">
                <ownedComment xmi:id="dd006580-c6bc-4425-b9cf-6276f114bc17" body="holds the data for a mark... separately from&#xA;the real mark so that the real mark can be&#xA;collected if there are no more references to&#xA;it.... the update table holds only a reference&#xA;to this grungy thing.&#xA;" annotatedElement="16f8540f-6333-4807-b5bd-551244779204"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="b183f0cb-2201-4e23-9290-77e625e8283b" name="StickyPosition" visibility="package" clientDependency="eeff07c8-9ca1-4283-bdf5-861e73079f60" isLeaf="true">
                <ownedComment xmi:id="39683562-5ca3-442a-82b5-20fde10810d5" body="This really wants to be a weak reference but&#xA;in 1.1 we don't have a 100% pure solution for&#xA;this... so this class trys to hack a solution&#xA;to causing the marks to be collected.&#xA;" annotatedElement="b183f0cb-2201-4e23-9290-77e625e8283b"/>
                <interfaceRealization xmi:id="eeff07c8-9ca1-4283-bdf5-861e73079f60" name="" supplier="68b1870d-5065-4117-948b-c38cdad767c9" client="b183f0cb-2201-4e23-9290-77e625e8283b" contract="68b1870d-5065-4117-948b-c38cdad767c9"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="3c6c7934-3a3e-4ab7-b722-36363d815b34" name="UndoPosRef" visibility="package" isLeaf="true">
                <ownedComment xmi:id="ceeebee1-269c-4c50-b6e0-1ee86002a44a" body="Used to hold a reference to a Position that is being reset as the&#xA;result of removing from the content.&#xA;" annotatedElement="3c6c7934-3a3e-4ab7-b722-36363d815b34"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="53944f11-31b2-42a6-ab8f-6beb0836ed77" name="InsertUndo" visibility="package">
                <ownedComment xmi:id="ed8f39cd-9913-4050-8489-6f702a822644" body="UnoableEdit created for inserts.&#xA;" annotatedElement="53944f11-31b2-42a6-ab8f-6beb0836ed77"/>
                <generalization xmi:id="01f2f1ab-2f9b-4061-933b-8d6902bb56cf" isSubstitutable="true" general="01807a27-262a-407f-9ff1-9f482a3fceb4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="7dac0c72-ed19-450b-ab5b-e62eaf3f51d6" name="RemoveUndo" visibility="package">
                <ownedComment xmi:id="f1c09eba-fdf6-4782-80ac-2766490a04c2" body="UndoableEdit created for removes.&#xA;" annotatedElement="7dac0c72-ed19-450b-ab5b-e62eaf3f51d6"/>
                <generalization xmi:id="c82a7c82-a744-45e9-8f4c-4d28056d11a0" isSubstitutable="true" general="01807a27-262a-407f-9ff1-9f482a3fceb4"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="79427637-7675-4625-912c-8c13efd71ae3" name="Element" isAbstract="true">
              <ownedComment xmi:id="6617ccc2-e392-46cd-95c1-793e874abd34" body="Interface to describe a structural piece of a document.  It&#xA;is intended to capture the spirit of an SGML element.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.23 12/19/03&#xA;" annotatedElement="79427637-7675-4625-912c-8c13efd71ae3"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="42789ab6-4b5b-47ac-a6ad-3f3c06edfe87" name="NavigationFilter">
              <ownedComment xmi:id="5d3a7278-0674-4507-8414-8f19be8ffa67" body="&lt;code>NavigationFilter&lt;/code> can be used to restrict where the cursor can&#xA;be positioned. When the default cursor positioning actions attempt to&#xA;reposition the cursor they will call into the&#xA;&lt;code>NavigationFilter&lt;/code>, assuming&#xA;the &lt;code>JTextComponent&lt;/code> has a non-null&#xA;&lt;code>NavigationFilter&lt;/code> set. In this manner&#xA;the &lt;code>NavigationFilter&lt;/code> can effectively restrict where the&#xA;cursor can be positioned. Similarly &lt;code>DefaultCaret&lt;/code> will call&#xA;into the &lt;code>NavigationFilter&lt;/code> when the user is changing the&#xA;selection to further restrict where the cursor can be positioned.&#xA;&lt;p>&#xA;Subclasses can conditionally call into supers implementation to restrict&#xA;where the cursor can be placed, or call directly into the&#xA;&lt;code>FilterBypass&lt;/code>.&#xA;&#xA;@see javax.swing.text.Caret&#xA;@see javax.swing.text.DefaultCaret&#xA;@see javax.swing.text.View&#xA;&#xA;@version 1.4 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="42789ab6-4b5b-47ac-a6ad-3f3c06edfe87"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="1f4752ae-a5b5-4eb5-89e6-e7bf19af30af" name="FilterBypass" isAbstract="true">
                <ownedComment xmi:id="0710517b-795b-4d82-864b-5065b89892ca" body="Used as a way to circumvent calling back into the caret to&#xA;position the cursor. Caret implementations that wish to support&#xA;a NavigationFilter must provide an implementation that will&#xA;not callback into the NavigationFilter.&#xA;" annotatedElement="1f4752ae-a5b5-4eb5-89e6-e7bf19af30af"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ff3cbbfc-9ddc-468b-be89-f7c80430097b" name="JTextComponent" clientDependency="b385b065-927e-4a0b-9988-2e6e8659f5f6 5010facd-43ed-445f-8022-fe8660147dc0" isAbstract="true">
              <ownedComment xmi:id="6c9afe9e-63b6-4042-82ac-b8d8c8219830" body="&lt;code>JTextComponent&lt;/code> is the base class for swing text&#xA;components.  It tries to be compatible with the&#xA;&lt;code>java.awt.TextComponent&lt;/code> class&#xA;where it can reasonably do so.  Also provided are other services&#xA;for additional flexibility (beyond the pluggable UI and bean&#xA;support).&#xA;You can find information on how to use the functionality&#xA;this class provides in&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/generaltext.html&quot;>General Rules for Using Text Components&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&#xA;&lt;p>&#xA;&lt;dl>&#xA;&lt;dt>&lt;b>&lt;font size=+1>Caret Changes&lt;/font>&lt;/b>&#xA;&lt;dd>&#xA;The caret is a pluggable object in swing text components.&#xA;Notification of changes to the caret position and the selection&#xA;are sent to implementations of the &lt;code>CaretListener&lt;/code>&#xA;interface that have been registered with the text component.&#xA;The UI will install a default caret unless a customized caret&#xA;has been set. &lt;br>&#xA;By default the caret tracks all the document changes&#xA;performed on the Event Dispatching Thread and updates it's position&#xA;accordingly if an insertion occurs before or at the caret position&#xA;or a removal occurs before the caret position. &lt;code>DefaultCaret&lt;/code>&#xA;tries to make itself visible which may lead to scrolling&#xA;of a text component within &lt;code>JScrollPane&lt;/code>. The default caret&#xA;behavior can be changed by the {@link DefaultCaret#setUpdatePolicy} method.&#xA;&lt;br>&#xA;&lt;b>Note&lt;/b>: Non-editable text components also have a caret though&#xA;it may not be painted.&#xA;&#xA;&lt;p>&#xA;&lt;dt>&lt;b>&lt;font size=+1>Commands&lt;/font>&lt;/b>&#xA;&lt;dd>&#xA;Text components provide a number of commands that can be used&#xA;to manipulate the component.  This is essentially the way that&#xA;the component expresses its capabilities.  These are expressed&#xA;in terms of the swing &lt;code>Action&lt;/code> interface,&#xA;using the &lt;code>TextAction&lt;/code> implementation.&#xA;The set of commands supported by the text component can be&#xA;found with the {@link #getActions} method.  These actions&#xA;can be bound to key events, fired from buttons, etc.&#xA;&#xA;&lt;p>&#xA;&lt;dt>&lt;b>&lt;font size=+1>Text Input&lt;/font>&lt;/b>&#xA;&lt;dd>&#xA;The text components support flexible and internationalized text input, using&#xA;keymaps and the input method framework, while maintaining compatibility with&#xA;the AWT listener model.&#xA;&lt;p>&#xA;A {@link javax.swing.text.Keymap} lets an application bind key&#xA;strokes to actions.&#xA;In order to allow keymaps to be shared across multiple text components, they&#xA;can use actions that extend &lt;code>TextAction&lt;/code>.&#xA;&lt;code>TextAction&lt;/code> can determine which &lt;code>JTextComponent&lt;/code>&#xA;most recently has or had focus and therefore is the subject of&#xA;the action (In the case that the &lt;code>ActionEvent&lt;/code>&#xA;sent to the action doesn't contain the target text component as its source).&#xA;&lt;p>&#xA;The &lt;a href=&quot;../../../../guide/imf/spec.html&quot;>input method framework&lt;/a>&#xA;lets text components interact with input methods, separate software&#xA;components that preprocess events to let users enter thousands of&#xA;different characters using keyboards with far fewer keys.&#xA;&lt;code>JTextComponent&lt;/code> is an &lt;em>active client&lt;/em> of&#xA;the framework, so it implements the preferred user interface for interacting&#xA;with input methods. As a consequence, some key events do not reach the text&#xA;component because they are handled by an input method, and some text input&#xA;reaches the text component as committed text within an {@link&#xA;java.awt.event.InputMethodEvent} instead of as a key event.&#xA;The complete text input is the combination of the characters in&#xA;&lt;code>keyTyped&lt;/code> key events and committed text in input method events.&#xA;&lt;p>&#xA;The AWT listener model lets applications attach event listeners to&#xA;components in order to bind events to actions. Swing encourages the&#xA;use of keymaps instead of listeners, but maintains compatibility&#xA;with listeners by giving the listeners a chance to steal an event&#xA;by consuming it.&#xA;&lt;p>&#xA;Keyboard event and input method events are handled in the following stages,&#xA;with each stage capable of consuming the event:&#xA;&#xA;&lt;table border=1 summary=&quot;Stages of keyboard and input method event handling&quot;>&#xA;&lt;tr>&#xA;&lt;th id=&quot;stage&quot;>&lt;p align=&quot;left&quot;>Stage&lt;/p>&lt;/th>&#xA;&lt;th id=&quot;ke&quot;>&lt;p align=&quot;left&quot;>KeyEvent&lt;/p>&lt;/th>&#xA;&lt;th id=&quot;ime&quot;>&lt;p align=&quot;left&quot;>InputMethodEvent&lt;/p>&lt;/th>&lt;/tr>&#xA;&lt;tr>&lt;td headers=&quot;stage&quot;>1.   &lt;/td>&#xA;&lt;td headers=&quot;ke&quot;>input methods &lt;/td>&#xA;&lt;td headers=&quot;ime&quot;>(generated here)&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td headers=&quot;stage&quot;>2.   &lt;/td>&#xA;&lt;td headers=&quot;ke&quot;>focus manager &lt;/td>&#xA;&lt;td headers=&quot;ime&quot;>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;stage&quot;>3.   &lt;/td>&#xA;&lt;td headers=&quot;ke&quot;>registered key listeners&lt;/td>&#xA;&lt;td headers=&quot;ime&quot;>registered input method listeners&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;stage&quot;>4.   &lt;/td>&#xA;&lt;td headers=&quot;ke&quot;>&lt;/td>&#xA;&lt;td headers=&quot;ime&quot;>input method handling in JTextComponent&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td headers=&quot;stage&quot;>5.   &lt;/td>&lt;td headers=&quot;ke ime&quot; colspan=2>keymap handling using the current keymap&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td headers=&quot;stage&quot;>6.   &lt;/td>&lt;td headers=&quot;ke&quot;>keyboard handling in JComponent (e.g. accelerators, component navigation, etc.)&lt;/td>&#xA;&lt;td headers=&quot;ime&quot;>&lt;/td>&lt;/tr>&#xA;&lt;/table>&#xA;&#xA;&lt;p>&#xA;To maintain compatibility with applications that listen to key&#xA;events but are not aware of input method events, the input&#xA;method handling in stage 4 provides a compatibility mode for&#xA;components that do not process input method events. For these&#xA;components, the committed text is converted to keyTyped key events&#xA;and processed in the key event pipeline starting at stage 3&#xA;instead of in the input method event pipeline.&#xA;&lt;p>&#xA;By default the component will create a keymap (named &lt;b>DEFAULT_KEYMAP&lt;/b>)&#xA;that is shared by all JTextComponent instances as the default keymap.&#xA;Typically a look-and-feel implementation will install a different keymap&#xA;that resolves to the default keymap for those bindings not found in the&#xA;different keymap. The minimal bindings include:&#xA;&lt;ul>&#xA;&lt;li>inserting content into the editor for the&#xA;printable keys.&#xA;&lt;li>removing content with the backspace and del&#xA;keys.&#xA;&lt;li>caret movement forward and backward&#xA;&lt;/ul>&#xA;&#xA;&lt;p>&#xA;&lt;dt>&lt;b>&lt;font size=+1>Model/View Split&lt;/font>&lt;/b>&#xA;&lt;dd>&#xA;The text components have a model-view split.  A text component pulls&#xA;together the objects used to represent the model, view, and controller.&#xA;The text document model may be shared by other views which act as observers&#xA;of the model (e.g. a document may be shared by multiple components).&#xA;&#xA;&lt;p align=center>&lt;img src=&quot;doc-files/editor.gif&quot; alt=&quot;Diagram showing interaction between Controller, Document, events, and ViewFactory&quot;&#xA;HEIGHT=358 WIDTH=587>&lt;/p>&#xA;&#xA;&lt;p>&#xA;The model is defined by the {@link Document} interface.&#xA;This is intended to provide a flexible text storage mechanism&#xA;that tracks change during edits and can be extended to more sophisticated&#xA;models.  The model interfaces are meant to capture the capabilities of&#xA;expression given by SGML, a system used to express a wide variety of&#xA;content.&#xA;Each modification to the document causes notification of the&#xA;details of the change to be sent to all observers in the form of a&#xA;{@link DocumentEvent} which allows the views to stay up to date with the model.&#xA;This event is sent to observers that have implemented the&#xA;{@link DocumentListener}&#xA;interface and registered interest with the model being observed.&#xA;&#xA;&lt;p>&#xA;&lt;dt>&lt;b>&lt;font size=+1>Location Information&lt;/font>&lt;/b>&#xA;&lt;dd>&#xA;The capability of determining the location of text in&#xA;the view is provided.  There are two methods, {@link #modelToView}&#xA;and {@link #viewToModel} for determining this information.&#xA;&#xA;&lt;p>&#xA;&lt;dt>&lt;b>&lt;font size=+1>Undo/Redo support&lt;/font>&lt;/b>&#xA;&lt;dd>&#xA;Support for an edit history mechanism is provided to allow&#xA;undo/redo operations.  The text component does not itself&#xA;provide the history buffer by default, but does provide&#xA;the &lt;code>UndoableEdit&lt;/code> records that can be used in conjunction&#xA;with a history buffer to provide the undo/redo support.&#xA;The support is provided by the Document model, which allows&#xA;one to attach UndoableEditListener implementations.&#xA;&#xA;&lt;p>&#xA;&lt;dt>&lt;b>&lt;font size=+1>Thread Safety&lt;/font>&lt;/b>&#xA;&lt;dd>&#xA;The swing text components provide some support of thread&#xA;safe operations.  Because of the high level of configurability&#xA;of the text components, it is possible to circumvent the&#xA;protection provided.  The protection primarily comes from&#xA;the model, so the documentation of &lt;code>AbstractDocument&lt;/code>&#xA;describes the assumptions of the protection provided.&#xA;The methods that are safe to call asynchronously are marked&#xA;with comments.&#xA;&#xA;&lt;p>&#xA;&lt;dt>&lt;b>&lt;font size=+1>Newlines&lt;/font>&lt;/b>&#xA;&lt;dd>&#xA;For a discussion on how newlines are handled, see&#xA;&lt;a href=&quot;DefaultEditorKit.html&quot;>DefaultEditorKit&lt;/a>.&#xA;&lt;/dl>&#xA;&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.212 04/15/04&#xA;@see Document&#xA;@see DocumentEvent&#xA;@see DocumentListener&#xA;@see Caret&#xA;@see CaretEvent&#xA;@see CaretListener&#xA;@see TextUI&#xA;@see View&#xA;@see ViewFactory&#xA;" annotatedElement="ff3cbbfc-9ddc-468b-be89-f7c80430097b"/>
              <generalization xmi:id="78318d79-06af-4306-942d-861ddae2e40b" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
              <interfaceRealization xmi:id="b385b065-927e-4a0b-9988-2e6e8659f5f6" name="" supplier="a1ad2c61-c036-48cb-85f4-7681cc6ba8fc" client="ff3cbbfc-9ddc-468b-be89-f7c80430097b" contract="a1ad2c61-c036-48cb-85f4-7681cc6ba8fc"/>
              <interfaceRealization xmi:id="5010facd-43ed-445f-8022-fe8660147dc0" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="ff3cbbfc-9ddc-468b-be89-f7c80430097b" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0932211c-dea5-43d9-9be1-930c5057d462" name="KeyBinding">
                <ownedComment xmi:id="e1f79f14-beb8-49ba-afe5-3b60a3394870" body="Binding record for creating key bindings.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="0932211c-dea5-43d9-9be1-930c5057d462"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="ac9a36b2-925c-417c-900c-979e705e9cba" name="AccessibleJTextComponent" clientDependency="5cba54d6-95f1-4d61-872d-dbc9656860b9 0bbcc4de-88f0-4bcf-b083-964218e0ce6e 393e733a-46a8-4d6c-8973-9dc9bb5c0827 609c2a56-6b59-4104-a45d-f32de40190e9 a0d8f0bf-65be-4999-9c58-e17e853efd60">
                <ownedComment xmi:id="3af0e58e-9d10-4cda-829d-d0e2b19bb926" body="This class implements accessibility support for the&#xA;&lt;code>JTextComponent&lt;/code> class.  It provides an implementation of&#xA;the Java Accessibility API appropriate to menu user-interface elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="ac9a36b2-925c-417c-900c-979e705e9cba"/>
                <generalization xmi:id="6568d277-48ce-4ba2-acd5-c5c6932c92d0" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
                <interfaceRealization xmi:id="609c2a56-6b59-4104-a45d-f32de40190e9" name="" supplier="a6772e39-fecf-4aaa-b8ba-55f63854a725" client="ac9a36b2-925c-417c-900c-979e705e9cba" contract="a6772e39-fecf-4aaa-b8ba-55f63854a725"/>
                <interfaceRealization xmi:id="393e733a-46a8-4d6c-8973-9dc9bb5c0827" name="" supplier="7f3dfbae-e88f-4d3a-854b-189e70ccdda1" client="ac9a36b2-925c-417c-900c-979e705e9cba" contract="7f3dfbae-e88f-4d3a-854b-189e70ccdda1"/>
                <interfaceRealization xmi:id="0bbcc4de-88f0-4bcf-b083-964218e0ce6e" name="" supplier="8473483d-b350-428d-828b-a5a719abea43" client="ac9a36b2-925c-417c-900c-979e705e9cba" contract="8473483d-b350-428d-828b-a5a719abea43"/>
                <interfaceRealization xmi:id="5cba54d6-95f1-4d61-872d-dbc9656860b9" name="" supplier="1f04210f-dd56-4dbb-861c-7a19813caf4c" client="ac9a36b2-925c-417c-900c-979e705e9cba" contract="1f04210f-dd56-4dbb-861c-7a19813caf4c"/>
                <interfaceRealization xmi:id="a0d8f0bf-65be-4999-9c58-e17e853efd60" name="" supplier="7034cc41-9451-4071-87c2-4464e57a3c99" client="ac9a36b2-925c-417c-900c-979e705e9cba" contract="7034cc41-9451-4071-87c2-4464e57a3c99"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="aeb61050-cd86-4ca8-b554-b498fe13b909" name="IndexedSegment" visibility="private">
                  <ownedComment xmi:id="5192c0fe-7db3-4090-8522-fba3078d1f81" body="IndexedSegment extends Segment adding the offset into the&#xA;the model the &lt;code>Segment&lt;/code> was asked for.&#xA;" annotatedElement="aeb61050-cd86-4ca8-b554-b498fe13b909"/>
                  <generalization xmi:id="a1e283a0-e5e2-4268-8e6d-7801995c2689" isSubstitutable="true" general="478d78bb-16f5-4c49-b06d-f85bef80ef4f"/>
                </nestedClassifier>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6a45ba27-f07f-45ea-953a-68c98a998577" name="DefaultTransferHandler" visibility="package" clientDependency="697f6879-f7c0-4320-b94f-b849f62b36ca">
                <ownedComment xmi:id="5b59d0db-f75c-46da-adf2-5dca0ee22043" body="A Simple TransferHandler that exports the data as a String, and&#xA;imports the data from the String clipboard.  This is only used&#xA;if the UI hasn't supplied one, which would only happen if someone&#xA;hasn't subclassed Basic.&#xA;" annotatedElement="6a45ba27-f07f-45ea-953a-68c98a998577"/>
                <generalization xmi:id="4a881168-54ff-411a-a6c2-a83d02d2c768" isSubstitutable="true" general="74564559-a512-4c82-bfcc-29769618ec6c"/>
                <interfaceRealization xmi:id="697f6879-f7c0-4320-b94f-b849f62b36ca" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="6a45ba27-f07f-45ea-953a-68c98a998577" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="3e74f7b0-ddee-4984-968a-7a879a3048dc" name="DefaultKeymap" visibility="package" clientDependency="2fbc9af3-3f4a-44a3-a045-d92d31854e4a">
                <interfaceRealization xmi:id="2fbc9af3-3f4a-44a3-a045-d92d31854e4a" name="" supplier="f8d2f783-a216-463c-b5a2-5cbb26ddaad1" client="3e74f7b0-ddee-4984-968a-7a879a3048dc" contract="f8d2f783-a216-463c-b5a2-5cbb26ddaad1"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="b044b8c7-8c38-46f8-b90a-c2b045f4fb52" name="KeymapWrapper" visibility="package">
                <ownedComment xmi:id="e6efe5aa-520e-4260-ad09-3998fb1285fb" body="KeymapWrapper wraps a Keymap inside an InputMap. For KeymapWrapper&#xA;to be useful it must be used with a KeymapActionMap.&#xA;KeymapWrapper for the most part, is an InputMap with two parents.&#xA;The first parent visited is ALWAYS the Keymap, with the second&#xA;parent being the parent inherited from InputMap. If&#xA;&lt;code>keymap.getAction&lt;/code> returns null, implying the Keymap&#xA;does not have a binding for the KeyStroke,&#xA;the parent is then visited. If the Keymap has a binding, the&#xA;Action is returned, if not and the KeyStroke represents a&#xA;KeyTyped event and the Keymap has a defaultAction,&#xA;&lt;code>DefaultActionKey&lt;/code> is returned.&#xA;&lt;p>KeymapActionMap is then able to transate the object passed in&#xA;to either message the Keymap, or message its default implementation.&#xA;" annotatedElement="b044b8c7-8c38-46f8-b90a-c2b045f4fb52"/>
                <generalization xmi:id="a889da3c-1938-4350-9200-69f104d67d10" isSubstitutable="true" general="56079c23-87ef-4dab-9d4a-5a45870515b9"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="caa611b3-3f2c-46e3-824a-95e45c0c6305" name="KeymapActionMap" visibility="package">
                <ownedComment xmi:id="7025d10a-63eb-45de-8911-be2ee65c4000" body="Wraps a Keymap inside an ActionMap. This is used with&#xA;a KeymapWrapper. If &lt;code>get&lt;/code> is passed in&#xA;&lt;code>KeymapWrapper.DefaultActionKey&lt;/code>, the default action is&#xA;returned, otherwise if the key is an Action, it is returned.&#xA;" annotatedElement="caa611b3-3f2c-46e3-824a-95e45c0c6305"/>
                <generalization xmi:id="9caab931-5d63-4db9-8656-96e6728a7711" isSubstitutable="true" general="890d1c02-f889-4eae-b1d6-2f325ecf9797"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="1f731398-956d-4387-a1ab-480f695adcef" name="MutableCaretEvent" visibility="package" clientDependency="5bc8d60c-678d-4903-bd88-32477696d293 9fe0ccfd-1f47-4fd3-8d1c-426ee486452a 4d1356a7-f3a4-4737-8541-f862e04bb3f2">
                <ownedComment xmi:id="46d4a9c8-de9f-408a-b77b-0189961b8415" body="Event to use when firing a notification of change to caret&#xA;position.  This is mutable so that the event can be reused&#xA;since caret events can be fairly high in bandwidth.&#xA;" annotatedElement="1f731398-956d-4387-a1ab-480f695adcef"/>
                <generalization xmi:id="2d4c99e1-a4ec-4761-be84-7d39cf317180" isSubstitutable="true" general="0026fc5d-592e-4382-bc52-4ff69c243d98"/>
                <interfaceRealization xmi:id="9fe0ccfd-1f47-4fd3-8d1c-426ee486452a" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="1f731398-956d-4387-a1ab-480f695adcef" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                <interfaceRealization xmi:id="5bc8d60c-678d-4903-bd88-32477696d293" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="1f731398-956d-4387-a1ab-480f695adcef" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                <interfaceRealization xmi:id="4d1356a7-f3a4-4737-8541-f862e04bb3f2" name="" supplier="d2bfccf2-94c5-4882-8d84-613f4ad53195" client="1f731398-956d-4387-a1ab-480f695adcef" contract="d2bfccf2-94c5-4882-8d84-613f4ad53195"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="33733965-d6e3-440d-afce-1311a3580272" name="InputMethodRequestsHandler" visibility="package" clientDependency="e15c552c-7989-4685-9840-af0ebc45bab1 a6318f4d-d8a8-4f11-82b7-583ce0076085">
                <interfaceRealization xmi:id="e15c552c-7989-4685-9840-af0ebc45bab1" name="" supplier="ab1c4186-30ef-4c00-8075-7bc65cd8578f" client="33733965-d6e3-440d-afce-1311a3580272" contract="ab1c4186-30ef-4c00-8075-7bc65cd8578f"/>
                <interfaceRealization xmi:id="a6318f4d-d8a8-4f11-82b7-583ce0076085" name="" supplier="8473483d-b350-428d-828b-a5a719abea43" client="33733965-d6e3-440d-afce-1311a3580272" contract="8473483d-b350-428d-828b-a5a719abea43"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="81758bc4-178d-42dc-8886-50635c517286" name="ComposedTextCaret" visibility="package" clientDependency="3bedb0c1-8b16-434f-b193-721019874a21">
                <generalization xmi:id="a038a052-498a-483e-b9dc-6cd9aeafe3fa" isSubstitutable="true" general="2da9e4c7-f746-4cc1-87f1-26de789a81cc"/>
                <interfaceRealization xmi:id="3bedb0c1-8b16-434f-b193-721019874a21" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="81758bc4-178d-42dc-8886-50635c517286" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="26114abd-cf5e-4868-a829-83237a4144fe" name="DoSetCaretPosition" visibility="private" clientDependency="e0c8d96d-1741-4923-ae6d-e95b34db9a3b">
                <interfaceRealization xmi:id="e0c8d96d-1741-4923-ae6d-e95b34db9a3b" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="26114abd-cf5e-4868-a829-83237a4144fe" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="1a2642e7-6b6d-457d-bd21-34355fd52412" name="StyledDocument" isAbstract="true">
              <ownedComment xmi:id="4862a42e-f19c-420b-849c-6081d17d7353" body="Interface for a generic styled document.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.21 12/19/03&#xA;" annotatedElement="1a2642e7-6b6d-457d-bd21-34355fd52412"/>
              <generalization xmi:id="c0dd5a75-2043-4fba-a0af-a344c858325d" isSubstitutable="true" general="da8fe07d-b07a-4bd5-9a27-88605c655f19"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="dff5659c-62af-4166-9a96-573a58fd7f7e" name="AttributeSet" isAbstract="true">
              <ownedComment xmi:id="b4a02d74-296a-4bab-990d-5062458735ce" body="A collection of unique attributes.  This is a read-only,&#xA;immutable interface.  An attribute is basically a key and&#xA;a value assigned to the key.  The collection may represent&#xA;something like a style run, a logical style, etc.  These&#xA;are generally used to describe features that will contribute&#xA;to some graphical representation such as a font.  The&#xA;set of possible keys is unbounded and can be anything.&#xA;Typically View implementations will respond to attribute&#xA;definitions and render something to represent the attributes.&#xA;&lt;p>&#xA;Attributes can potentially resolve in a hierarchy.  If a&#xA;key doesn't resolve locally, and a resolving parent&#xA;exists, the key will be resolved through the parent.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.40 05/05/04&#xA;@see MutableAttributeSet&#xA;" annotatedElement="dff5659c-62af-4166-9a96-573a58fd7f7e"/>
              <nestedClassifier xmi:type="uml:Interface" xmi:id="64cbe558-33e3-4c08-92b5-8c0b5919313b" name="FontAttribute" isAbstract="true">
                <ownedComment xmi:id="440d05c1-12b5-4e45-822f-f648bc2eec01" body="This interface is the type signature that is expected&#xA;to be present on any attribute key that contributes to&#xA;the determination of what font to use to render some&#xA;text.  This is not considered to be a closed set, the&#xA;definition can change across version of the platform and can&#xA;be amended by additional user added entries that&#xA;correspond to logical settings that are specific to&#xA;some type of content.&#xA;" annotatedElement="64cbe558-33e3-4c08-92b5-8c0b5919313b"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Interface" xmi:id="e3eaeed0-bb69-4822-8ef0-762a03d11e22" name="ColorAttribute" isAbstract="true">
                <ownedComment xmi:id="bd855012-64c7-48a2-af08-be6972708e1e" body="This interface is the type signature that is expected&#xA;to be present on any attribute key that contributes to&#xA;presentation of color.&#xA;" annotatedElement="e3eaeed0-bb69-4822-8ef0-762a03d11e22"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Interface" xmi:id="91c4dc84-9d03-4084-8a67-c0c71b84a485" name="CharacterAttribute" isAbstract="true">
                <ownedComment xmi:id="05f9f0c4-ef2b-4308-a7eb-220b8f04002e" body="This interface is the type signature that is expected&#xA;to be present on any attribute key that contributes to&#xA;character level presentation.  This would be any attribute&#xA;that applies to a so-called &lt;term>run&lt;/term> of&#xA;style.&#xA;" annotatedElement="91c4dc84-9d03-4084-8a67-c0c71b84a485"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Interface" xmi:id="81b2da61-5d6b-46f3-b75a-db8ef305bc2f" name="ParagraphAttribute" isAbstract="true">
                <ownedComment xmi:id="e184913d-fdc9-454d-ab5b-1ef85275f108" body="This interface is the type signature that is expected&#xA;to be present on any attribute key that contributes to&#xA;the paragraph level presentation.&#xA;" annotatedElement="81b2da61-5d6b-46f3-b75a-db8ef305bc2f"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2f1e3752-ef79-44ce-ba8b-5ed5cf03499c" name="SegmentCache" visibility="package">
              <ownedComment xmi:id="f6bb9e4f-73b9-42de-a47e-71f95a20e467" body="SegmentCache caches &lt;code>Segment&lt;/code>s to avoid continually creating&#xA;and destroying of &lt;code>Segment&lt;/code>s. A common use of this class would&#xA;be:&#xA;&lt;pre>&#xA;Segment segment = segmentCache.getSegment();&#xA;do something with segment&#xA;...&#xA;segmentCache.releaseSegment(segment);&#xA;&lt;/pre>&#xA;&#xA;@version 1.5 12/19/03&#xA;" annotatedElement="2f1e3752-ef79-44ce-ba8b-5ed5cf03499c"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8295a94c-7e44-4767-975f-a8f6a480f694" name="CachedSegment" visibility="private">
                <ownedComment xmi:id="00760d67-09ee-44a1-9d43-2194ffcc6c4b" body="CachedSegment is used as a tagging interface to determine if&#xA;a Segment can successfully be shared.&#xA;" annotatedElement="8295a94c-7e44-4767-975f-a8f6a480f694"/>
                <generalization xmi:id="284bcb66-6cbf-46e4-ad6f-b41dc5e8b230" isSubstitutable="true" general="478d78bb-16f5-4c49-b06d-f85bef80ef4f"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2d20301f-6f77-45b9-bc30-e8ebd05781c7" name="Utilities">
              <ownedComment xmi:id="54f15b21-dc87-4084-a7e6-0be26709f580" body="A collection of methods to deal with various text&#xA;related activities.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.47 04/15/04&#xA;" annotatedElement="2d20301f-6f77-45b9-bc30-e8ebd05781c7"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="eed69a87-993a-4c1a-b4b6-bafdf0f4d09a" name="AsyncBoxView">
              <ownedComment xmi:id="78eea40f-c7ae-4b17-9a49-3c8946cd3fbe" body="A box that does layout asynchronously.  This&#xA;is useful to keep the GUI event thread moving by&#xA;not doing any layout on it.  The layout is done&#xA;on a granularity of operations on the child views.&#xA;After each child view is accessed for some part&#xA;of layout (a potentially time consuming operation)&#xA;the remaining tasks can be abandoned or a new higher&#xA;priority task (i.e. to service a synchronous request&#xA;or a visible area) can be taken on.&#xA;&lt;p>&#xA;While the child view is being accessed&#xA;a read lock is aquired on the associated document&#xA;so that the model is stable while being accessed.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.16 12/19/03&#xA;@since   1.3&#xA;" annotatedElement="eed69a87-993a-4c1a-b4b6-bafdf0f4d09a"/>
              <generalization xmi:id="9077dff4-1c60-4fc7-ad99-21b6838ff6ae" isSubstitutable="true" general="a12ab75d-4ae8-40c5-ac6c-848d1ef3f725"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="be883bb2-d80a-4168-8f74-b946f23f6b1b" name="ChildLocator">
                <ownedComment xmi:id="44beb94d-b986-473a-bc0a-9ad13f0ea9d8" body="A class to manage the effective position of the&#xA;child views in a localized area while changes are&#xA;being made around the localized area.  The AsyncBoxView&#xA;may be continuously changing, but the visible area&#xA;needs to remain fairly stable until the layout thread&#xA;decides to publish an update to the parent.&#xA;" annotatedElement="be883bb2-d80a-4168-8f74-b946f23f6b1b"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="7e4254a0-d877-42c6-b2b4-84e45b49d4e9" name="ChildState" clientDependency="b00ce929-5d0e-4e7a-ad03-d2a14cd1a89b">
                <ownedComment xmi:id="d66e32d4-4f01-4171-8efa-7aeeecbb4289" body="A record representing the layout state of a&#xA;child view.  It is runnable as a task on another&#xA;thread.  All access to the child view that is&#xA;based upon a read-lock on the model should synchronize&#xA;on this object (i.e. The layout thread and the GUI&#xA;thread can both have a read lock on the model at the&#xA;same time and are not protected from each other).&#xA;Access to a child view hierarchy is serialized via&#xA;synchronization on the ChildState instance.&#xA;" annotatedElement="7e4254a0-d877-42c6-b2b4-84e45b49d4e9"/>
                <interfaceRealization xmi:id="b00ce929-5d0e-4e7a-ad03-d2a14cd1a89b" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="7e4254a0-d877-42c6-b2b4-84e45b49d4e9" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="2323c9e8-b242-415c-9a7e-f4611942f68b" name="FlushTask" visibility="package" clientDependency="b5175fa7-fc0c-4a3c-97c1-b770f3c58937">
                <ownedComment xmi:id="41ec917a-5d8a-4125-8bbb-7b01730f9f59" body="Task to flush requirement changes upward&#xA;" annotatedElement="2323c9e8-b242-415c-9a7e-f4611942f68b"/>
                <interfaceRealization xmi:id="b5175fa7-fc0c-4a3c-97c1-b770f3c58937" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="2323c9e8-b242-415c-9a7e-f4611942f68b" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e9e6ca26-d3f6-41a5-9e24-33e8630a9d42" name="ChangedCharSetException">
              <ownedComment xmi:id="0d49b329-2c6e-48af-971f-178c2ad0eecc" body="ChangedCharSetException as the name indicates is an exception&#xA;thrown when the charset is changed.&#xA;&#xA;@author Sunita Mani&#xA;1.8, 12/19/03&#xA;" annotatedElement="e9e6ca26-d3f6-41a5-9e24-33e8630a9d42"/>
              <generalization xmi:id="70617f0c-3087-4891-b125-089a1eec1ffe" isSubstitutable="true" general="3f9995c4-ec91-4bfd-833f-ac8ee0f39861"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e096fadb-6400-4988-a842-6c44ff7b7969" name="StateInvariantError" visibility="package">
              <ownedComment xmi:id="b508a68c-156a-4b06-aa36-390052a63936" body="This exception is to report the failure of state invarient&#xA;assertion that was made.  This indicates an internal error&#xA;has occurred.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.17 12/19/03&#xA;" annotatedElement="e096fadb-6400-4988-a842-6c44ff7b7969"/>
              <generalization xmi:id="7fcfa522-1430-400c-be8a-0dcfab3ed2c6" isSubstitutable="true" general="4e4110b0-dae3-4d54-846c-b32f5eb17a30"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ab94a18a-7487-453a-bd09-70b35b1cc01d" name="PlainDocument">
              <ownedComment xmi:id="4fc6e63b-d103-45f2-beeb-a1cd82b4bf4a" body="A plain document that maintains no character attributes.  The&#xA;default element structure for this document is a map of the lines in&#xA;the text.  The Element returned by getDefaultRootElement is&#xA;a map of the lines, and each child element represents a line.&#xA;This model does not maintain any character level attributes,&#xA;but each line can be tagged with an arbitrary set of attributes.&#xA;Line to offset, and offset to line translations can be quickly&#xA;performed using the default root element.  The structure information&#xA;of the DocumentEvent's fired by edits will indicate the line&#xA;structure changes.&#xA;&lt;p>&#xA;The default content storage management is performed by a&#xA;gapped buffer implementation (GapContent).  It supports&#xA;editing reasonably large documents with good efficiency when&#xA;the edits are contiguous or clustered, as is typical.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.43 12/19/03&#xA;@see     Document&#xA;@see     AbstractDocument&#xA;" annotatedElement="ab94a18a-7487-453a-bd09-70b35b1cc01d"/>
              <generalization xmi:id="f7a7e99b-963d-4cac-954b-689602e59f64" isSubstitutable="true" general="3fd6e7dd-7f4e-4cae-a36c-0657262b7ed7"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e74f4ef4-a10c-44a4-8188-c5f865868b57" name="IconView">
              <ownedComment xmi:id="388fa145-4d97-4f34-bc05-18a68a3326b7" body="Icon decorator that implements the view interface.  The&#xA;entire element is used to represent the icon.  This acts&#xA;as a gateway from the display-only View implementations to&#xA;interactive lightweight icons (that is, it allows icons&#xA;to be embedded into the View hierarchy.  The parent of the icon&#xA;is the container that is handed out by the associated view&#xA;factory.&#xA;&#xA;@author Timothy Prinzing&#xA;@version 1.28 12/19/03&#xA;" annotatedElement="e74f4ef4-a10c-44a4-8188-c5f865868b57"/>
              <generalization xmi:id="ed5cbbd7-eedd-4ed3-a3b7-06bbe71b6226" isSubstitutable="true" general="a12ab75d-4ae8-40c5-ac6c-848d1ef3f725"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="3216e397-d46f-4b97-83bc-9d08d4eed789" name="TabExpander" isAbstract="true">
              <ownedComment xmi:id="2456060b-3317-4c6f-a26f-c6731d35fcfc" body="Simple interface to allow for different types of&#xA;implementations of tab expansion.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.15 12/19/03&#xA;" annotatedElement="3216e397-d46f-4b97-83bc-9d08d4eed789"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="883c97a0-31a2-416f-9b66-77161741765a" name="Highlighter" isAbstract="true">
              <ownedComment xmi:id="69ccdcbf-97a8-4698-bf91-fa41c9cb7e9f" body="An interface for an object that allows one to mark up the background&#xA;with colored areas.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.22 12/19/03&#xA;" annotatedElement="883c97a0-31a2-416f-9b66-77161741765a"/>
              <nestedClassifier xmi:type="uml:Interface" xmi:id="8fb8af3b-ed76-4839-bd22-f0294f31b12d" name="HighlightPainter" isAbstract="true">
                <ownedComment xmi:id="ad906d8b-4340-4a87-a5ce-067d52601b20" body="Highlight renderer.&#xA;" annotatedElement="8fb8af3b-ed76-4839-bd22-f0294f31b12d"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Interface" xmi:id="711f6eab-8e73-4655-9705-57dcffdb30d9" name="Highlight" isAbstract="true"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f1301b08-d888-4334-bfb0-78d760cf08b7" name="LayeredHighlighter" clientDependency="9b85f4fd-f030-4469-b280-c0c11688b2fe" isAbstract="true">
              <ownedComment xmi:id="9d2501f5-27ae-4ee7-a361-2816d8f76f31" body="@author  Scott Violet&#xA;@author  Timothy Prinzing&#xA;@version 1.7 12/19/03&#xA;@see     Highlighter&#xA;" annotatedElement="f1301b08-d888-4334-bfb0-78d760cf08b7"/>
              <interfaceRealization xmi:id="9b85f4fd-f030-4469-b280-c0c11688b2fe" name="" supplier="883c97a0-31a2-416f-9b66-77161741765a" client="f1301b08-d888-4334-bfb0-78d760cf08b7" contract="883c97a0-31a2-416f-9b66-77161741765a"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="186c6664-8145-44e4-abb9-bab1d803717f" name="LayerPainter" clientDependency="5f89d27e-23cd-46f4-9fa9-46df615ca1dc" isAbstract="true">
                <ownedComment xmi:id="9de87c85-831b-4f52-b2cf-2ad74d0bbe2c" body="Layered highlight renderer.&#xA;" annotatedElement="186c6664-8145-44e4-abb9-bab1d803717f"/>
                <interfaceRealization xmi:id="5f89d27e-23cd-46f4-9fa9-46df615ca1dc" name="" supplier="8fb8af3b-ed76-4839-bd22-f0294f31b12d" client="186c6664-8145-44e4-abb9-bab1d803717f" contract="8fb8af3b-ed76-4839-bd22-f0294f31b12d"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0b3d0895-4f46-4980-b31b-5ce3c65b5295" name="TabStop" clientDependency="7dd8f9bf-9072-4af8-b13b-13a7202db1ca">
              <ownedComment xmi:id="81295e97-6865-4834-a031-f6c8996f4253" body="This class encapsulates a single tab stop (basically as tab stops&#xA;are thought of by RTF). A tab stop is at a specified distance from the&#xA;left margin, aligns text in a specified way, and has a specified leader.&#xA;TabStops are immutable, and usually contained in TabSets.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.20 12/19/03&#xA;" annotatedElement="0b3d0895-4f46-4980-b31b-5ce3c65b5295"/>
              <interfaceRealization xmi:id="7dd8f9bf-9072-4af8-b13b-13a7202db1ca" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0b3d0895-4f46-4980-b31b-5ce3c65b5295" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="48b422bb-abf9-4577-8c8a-23743ff3ade5" name="DefaultHighlighter">
              <ownedComment xmi:id="1582fa49-7614-4919-b7d4-32894b379aca" body="Implements the Highlighter interfaces.  Implements a simple highlight&#xA;painter that renders in a solid color.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.39 12/19/03&#xA;@see     Highlighter&#xA;" annotatedElement="48b422bb-abf9-4577-8c8a-23743ff3ade5"/>
              <generalization xmi:id="190a54a4-257c-4e61-933b-dc8f6230fdce" isSubstitutable="true" general="f1301b08-d888-4334-bfb0-78d760cf08b7"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="9bc077c3-421c-4275-bcbc-655243b87f87" name="DefaultHighlightPainter">
                <ownedComment xmi:id="9d96c838-833c-4d4c-8ecc-d257c57a23d4" body="Simple highlight painter that fills a highlighted area with&#xA;a solid color.&#xA;" annotatedElement="9bc077c3-421c-4275-bcbc-655243b87f87"/>
                <generalization xmi:id="7d78bf85-f2e7-4751-b96c-964a1441121c" isSubstitutable="true" general="186c6664-8145-44e4-abb9-bab1d803717f"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="052487f8-53af-463f-b0b3-4dbc515a6d7a" name="HighlightInfo" visibility="package" clientDependency="a1d98f91-a1e2-4e28-b299-ccdf2882775d">
                <interfaceRealization xmi:id="a1d98f91-a1e2-4e28-b299-ccdf2882775d" name="" supplier="711f6eab-8e73-4655-9705-57dcffdb30d9" client="052487f8-53af-463f-b0b3-4dbc515a6d7a" contract="711f6eab-8e73-4655-9705-57dcffdb30d9"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="188d0bb1-e002-42db-bd98-624c10d2c7f8" name="LayeredHighlightInfo" visibility="package">
                <ownedComment xmi:id="7a608851-472b-49fc-8e8a-0d2db29a73ac" body="LayeredHighlightPainter is used when a drawsLayeredHighlights is&#xA;true. It maintains a rectangle of the region to paint.&#xA;" annotatedElement="188d0bb1-e002-42db-bd98-624c10d2c7f8"/>
                <generalization xmi:id="f9577230-1b4d-4715-9088-2b79500a7e1f" isSubstitutable="true" general="052487f8-53af-463f-b0b3-4dbc515a6d7a"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="1e4566ac-4944-4ac7-8f54-4ba0b6f02724" name="SafeDamager" visibility="package" clientDependency="9d7b9e76-6722-4a11-b9d4-a9936e9aab6f">
                <ownedComment xmi:id="7cd0c26d-eedf-49ab-8814-7a99c4ce7340" body="This class invokes &lt;code>mapper.damageRange&lt;/code> in&#xA;EventDispatchThread. The only one instance per Highlighter&#xA;is cretaed. When a number of ranges should be damaged&#xA;it collects them into queue and damages&#xA;them in consecutive order in &lt;code>run&lt;/code>&#xA;call.&#xA;" annotatedElement="1e4566ac-4944-4ac7-8f54-4ba0b6f02724"/>
                <interfaceRealization xmi:id="9d7b9e76-6722-4a11-b9d4-a9936e9aab6f" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="1e4566ac-4944-4ac7-8f54-4ba0b6f02724" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="bf513062-f924-4345-9450-06584b1e5af6" name="GapContent" clientDependency="19bc81a4-73d1-41b7-b652-55984d68c5f5 74785bb4-cb27-4ecf-9773-5e9a6b76839d">
              <ownedComment xmi:id="cd49ad3f-4787-469e-85eb-cb1619d4e357" body="An implementation of the AbstractDocument.Content interface&#xA;implemented using a gapped buffer similar to that used by emacs.&#xA;The underlying storage is a array of unicode characters with&#xA;a gap somewhere.  The gap is moved to the location of changes&#xA;to take advantage of common behavior where most changes are&#xA;in the same location.  Changes that occur at a gap boundary are&#xA;generally cheap and moving the gap is generally cheaper than&#xA;moving the array contents directly to accomodate the change.&#xA;&lt;p>&#xA;The positions tracking change are also generally cheap to&#xA;maintain.  The Position implementations (marks) store the array&#xA;index and can easily calculate the sequential position from&#xA;the current gap location.  Changes only require update to the&#xA;the marks between the old and new gap boundaries when the gap&#xA;is moved, so generally updating the marks is pretty cheap.&#xA;The marks are stored sorted so they can be located quickly&#xA;with a binary search.  This increases the cost of adding a&#xA;mark, and decreases the cost of keeping the mark updated.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.21 12/03/01&#xA;" annotatedElement="bf513062-f924-4345-9450-06584b1e5af6"/>
              <generalization xmi:id="63c1fa23-583e-4aa6-b2da-77f438f4bdb9" isSubstitutable="true" general="4cb26dea-0a8c-4e5a-930a-f1759c987b15"/>
              <interfaceRealization xmi:id="74785bb4-cb27-4ecf-9773-5e9a6b76839d" name="" supplier="c7262eed-db71-4380-8f1f-ae9e28a918b5" client="bf513062-f924-4345-9450-06584b1e5af6" contract="c7262eed-db71-4380-8f1f-ae9e28a918b5"/>
              <interfaceRealization xmi:id="19bc81a4-73d1-41b7-b652-55984d68c5f5" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="bf513062-f924-4345-9450-06584b1e5af6" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="c0816f77-50ec-4d67-ba3e-919a6a942e85" name="MarkData" visibility="package" isLeaf="true">
                <ownedComment xmi:id="df99d6bd-b94a-45e0-8e6d-55c3c01fd15d" body="Holds the data for a mark... separately from&#xA;the real mark so that the real mark (Position&#xA;that the caller of createPosition holds) can be&#xA;collected if there are no more references to&#xA;it.  The update table holds only a reference&#xA;to this data.&#xA;" annotatedElement="c0816f77-50ec-4d67-ba3e-919a6a942e85"/>
                <generalization xmi:id="92c9e2a1-9328-47c2-98ca-fe2c3700c056" isSubstitutable="true" general="9fe410d6-a23d-4e51-b67a-70e7810968b4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="7d72ce21-d277-4f8c-ac0d-5f2d6ab0c548" name="StickyPosition" visibility="package" clientDependency="9c9234a4-8a3c-4f9a-ad02-8c4c1f12bf56" isLeaf="true">
                <interfaceRealization xmi:id="9c9234a4-8a3c-4f9a-ad02-8c4c1f12bf56" name="" supplier="68b1870d-5065-4117-948b-c38cdad767c9" client="7d72ce21-d277-4f8c-ac0d-5f2d6ab0c548" contract="68b1870d-5065-4117-948b-c38cdad767c9"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="eecbfa10-1053-47fd-8c98-dcfe84f9e9cc" name="MarkVector" visibility="package">
                <generalization xmi:id="84ab9d5f-dac0-4d22-ae48-778fab24d56c" isSubstitutable="true" general="4cb26dea-0a8c-4e5a-930a-f1759c987b15"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="ae17b153-93b9-4e0b-8906-c6610f7ee40c" name="UndoPosRef" visibility="package" isLeaf="true">
                <ownedComment xmi:id="c445ee6d-44ce-4984-9287-4125e583115b" body="Used to hold a reference to a Mark that is being reset as the&#xA;result of removing from the content.&#xA;" annotatedElement="ae17b153-93b9-4e0b-8906-c6610f7ee40c"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="33b56214-9106-4788-9fa7-dbca2daf15a9" name="InsertUndo" visibility="package">
                <ownedComment xmi:id="fc425937-96e6-4fb9-882e-031a1d7ac8bc" body="UnoableEdit created for inserts.&#xA;" annotatedElement="33b56214-9106-4788-9fa7-dbca2daf15a9"/>
                <generalization xmi:id="9a2d55f5-5ef6-495f-b924-0038880af4c3" isSubstitutable="true" general="01807a27-262a-407f-9ff1-9f482a3fceb4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="9d8f09fa-ee50-424d-9028-345d77286b72" name="RemoveUndo" visibility="package">
                <ownedComment xmi:id="eade23b6-1c36-497a-b2d2-3bf6aac8f2c9" body="UndoableEdit created for removes.&#xA;" annotatedElement="9d8f09fa-ee50-424d-9028-345d77286b72"/>
                <generalization xmi:id="277162de-2bf3-46a8-8b07-8df2cb82206b" isSubstitutable="true" general="01807a27-262a-407f-9ff1-9f482a3fceb4"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="57df980b-ec0c-46d3-ac19-39c7d0bbfed7" name="SimpleAttributeSet" clientDependency="b8a827db-d7d2-4590-9e40-4e9ec2f3ee7a 06b07317-2baf-416f-a98a-d4750367034e 6d85d93f-18da-4deb-a8d8-6801c72cd140">
              <ownedComment xmi:id="a20cedc8-b745-43f5-aa1b-815a6eb120fb" body="A straightforward implementation of MutableAttributeSet using a&#xA;hash table.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.41 05/05/04&#xA;@author Tim Prinzing&#xA;" annotatedElement="57df980b-ec0c-46d3-ac19-39c7d0bbfed7"/>
              <interfaceRealization xmi:id="b8a827db-d7d2-4590-9e40-4e9ec2f3ee7a" name="" supplier="11e28f5b-cfc8-4b49-ac32-476c2ab7442b" client="57df980b-ec0c-46d3-ac19-39c7d0bbfed7" contract="11e28f5b-cfc8-4b49-ac32-476c2ab7442b"/>
              <interfaceRealization xmi:id="06b07317-2baf-416f-a98a-d4750367034e" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="57df980b-ec0c-46d3-ac19-39c7d0bbfed7" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="6d85d93f-18da-4deb-a8d8-6801c72cd140" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="57df980b-ec0c-46d3-ac19-39c7d0bbfed7" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="c9997619-5fd1-4338-a151-1984628e1a7f" name="EmptyAttributeSet" visibility="package" clientDependency="12d3853a-c762-42ac-8cf6-d4b45854a019 39ee9f19-7c11-440e-b0a8-e8484b36a2c1">
                <ownedComment xmi:id="92eac408-d6b4-407a-9e43-4c630acd6fdd" body="An AttributeSet this is always empty.&#xA;" annotatedElement="c9997619-5fd1-4338-a151-1984628e1a7f"/>
                <interfaceRealization xmi:id="39ee9f19-7c11-440e-b0a8-e8484b36a2c1" name="" supplier="dff5659c-62af-4166-9a96-573a58fd7f7e" client="c9997619-5fd1-4338-a151-1984628e1a7f" contract="dff5659c-62af-4166-9a96-573a58fd7f7e"/>
                <interfaceRealization xmi:id="12d3853a-c762-42ac-8cf6-d4b45854a019" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="c9997619-5fd1-4338-a151-1984628e1a7f" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="29680b8c-6cbf-4327-89c3-399a8050d607" name="NumberFormatter">
              <ownedComment xmi:id="0e6282fe-2255-4630-bda9-f5a0a8a0b110" body="&lt;code>NumberFormatter&lt;/code> subclasses &lt;code>InternationalFormatter&lt;/code>&#xA;adding special behavior for numbers. Among the specializations are&#xA;(these are only used if the &lt;code>NumberFormatter&lt;/code> does not display&#xA;invalid nubers, eg &lt;code>setAllowsInvalid(false)&lt;/code>):&#xA;&lt;ul>&#xA;&lt;li>Pressing +/- (- is determined from the&#xA;&lt;code>DecimalFormatSymbols&lt;/code> associated with the&#xA;&lt;code>DecimalFormat&lt;/code>) in any field but the exponent&#xA;field will attempt to change the sign of the number to&#xA;positive/negative.&#xA;&lt;li>Pressing +/- (- is determined from the&#xA;&lt;code>DecimalFormatSymbols&lt;/code> associated with the&#xA;&lt;code>DecimalFormat&lt;/code>) in the exponent field will&#xA;attemp to change the sign of the exponent to positive/negative.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;If you are displaying scientific numbers, you may wish to turn on&#xA;overwrite mode, &lt;code>setOverwriteMode(true)&lt;/code>. For example:&#xA;&lt;pre>&#xA;DecimalFormat decimalFormat = new DecimalFormat(&quot;0.000E0&quot;);&#xA;NumberFormatter textFormatter = new NumberFormatter(decimalFormat);&#xA;textFormatter.setOverwriteMode(true);&#xA;textFormatter.setAllowsInvalid(false);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;If you are going to allow the user to enter decimal&#xA;values, you should either force the DecimalFormat to contain at least&#xA;one decimal (&lt;code>#.0###&lt;/code>), or allow the value to be invalid&#xA;&lt;code>setAllowsInvalid(true)&lt;/code>. Otherwise users may not be able to&#xA;input decimal values.&#xA;&lt;p>&#xA;&lt;code>NumberFormatter&lt;/code> provides slightly different behavior to&#xA;&lt;code>stringToValue&lt;/code> than that of its superclass. If you have&#xA;specified a Class for values, {@link #setValueClass}, that is one of&#xA;of &lt;code>Integer&lt;/code>, &lt;code>Long&lt;/code>, &lt;code>Float&lt;/code>,&#xA;&lt;code>Double&lt;/code>, &lt;code>Byte&lt;/code> or &lt;code>Short&lt;/code> and&#xA;the Format's &lt;code>parseObject&lt;/code> returns an instance of&#xA;&lt;code>Number&lt;/code>, the corresponding instance of the value class&#xA;will be created using the constructor appropriate for the primitive&#xA;type the value class represents. For example:&#xA;&lt;code>setValueClass(Integer.class)&lt;/code> will cause the resulting&#xA;value to be created via&#xA;&lt;code>new Integer(((Number)formatter.parseObject(string)).intValue())&lt;/code>.&#xA;This is typically useful if you&#xA;wish to set a min/max value as the various &lt;code>Number&lt;/code>&#xA;implementations are generally not comparable to each other. This is also&#xA;useful if for some reason you need a specific &lt;code>Number&lt;/code>&#xA;implementation for your values.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.4 03/05/01&#xA;@since 1.4&#xA;" annotatedElement="29680b8c-6cbf-4327-89c3-399a8050d607"/>
              <generalization xmi:id="09c05c6d-2b86-43c9-b371-8c70fd062307" isSubstitutable="true" general="f2bda7bb-632f-4c90-b2b5-25789ef98ccb"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2da9e4c7-f746-4cc1-87f1-26de789a81cc" name="DefaultCaret" clientDependency="252a9547-fd13-45bc-aad8-d7ca1e90e86f 1495507e-92ab-4e2d-942b-74b35f2dbc90 429b2bd6-f214-47b3-80a0-8c81eeefae53 65b4df4f-8c79-4fd0-8ae8-1f0b72e28afa">
              <ownedComment xmi:id="154646ac-ffc3-477b-8481-2f1fac75eb57" body="A default implementation of Caret.  The caret is rendered as&#xA;a vertical line in the color specified by the CaretColor property&#xA;of the associated JTextComponent.  It can blink at the rate specified&#xA;by the BlinkRate property.&#xA;&lt;p>&#xA;This implementation expects two sources of asynchronous notification.&#xA;The timer thread fires asynchronously, and causes the caret to simply&#xA;repaint the most recent bounding box.  The caret also tracks change&#xA;as the document is modified.  Typically this will happen on the&#xA;event dispatch thread as a result of some mouse or keyboard event.&#xA;The caret behavior on both synchronous and asynchronous documents updates&#xA;is controlled by &lt;code>UpdatePolicy&lt;/code> property. The repaint of the&#xA;new caret location will occur on the event thread in any case, as calls to&#xA;&lt;code>modelToView&lt;/code> are only safe on the event thread.&#xA;&lt;p>&#xA;The caret acts as a mouse and focus listener on the text component&#xA;it has been installed in, and defines the caret semantics based upon&#xA;those events.  The listener methods can be reimplemented to change the&#xA;semantics.&#xA;By default, the first mouse button will be used to set focus and caret&#xA;position.  Dragging the mouse pointer with the first mouse button will&#xA;sweep out a selection that is contiguous in the model.  If the associated&#xA;text component is editable, the caret will become visible when focus&#xA;is gained, and invisible when focus is lost.&#xA;&lt;p>&#xA;The Highlighter bound to the associated text component is used to&#xA;render the selection by default.&#xA;Selection appearance can be customized by supplying a&#xA;painter to use for the highlights.  By default a painter is used that&#xA;will render a solid color as specified in the associated text component&#xA;in the &lt;code>SelectionColor&lt;/code> property.  This can easily be changed&#xA;by reimplementing the&#xA;&lt;a href=&quot;#getSelectionHighlighter&quot;>getSelectionHighlighter&lt;/a>&#xA;method.&#xA;&lt;p>&#xA;A customized caret appearance can be achieved by reimplementing&#xA;the paint method.  If the paint method is changed, the damage method&#xA;should also be reimplemented to cause a repaint for the area needed&#xA;to render the caret.  The caret extends the Rectangle class which&#xA;is used to hold the bounding box for where the caret was last rendered.&#xA;This enables the caret to repaint in a thread-safe manner when the&#xA;caret moves without making a call to modelToView which is unstable&#xA;between model updates and view repair (i.e. the order of delivery&#xA;to DocumentListeners is not guaranteed).&#xA;&lt;p>&#xA;The magic caret position is set to null when the caret position changes.&#xA;A timer is used to determine the new location (after the caret change).&#xA;When the timer fires, if the magic caret position is still null it is&#xA;reset to the current caret position. Any actions that change&#xA;the caret position and want the magic caret position to remain the&#xA;same, must remember the magic caret position, change the cursor, and&#xA;then set the magic caret position to its original value. This has the&#xA;benefit that only actions that want the magic caret position to persist&#xA;(such as open/down) need to know about it.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.138 06/24/04&#xA;@see     Caret&#xA;" annotatedElement="2da9e4c7-f746-4cc1-87f1-26de789a81cc"/>
              <generalization xmi:id="4ca62611-309b-4ba9-ad02-8d0115b7f1fc" isSubstitutable="true" general="146f32ee-ae59-495e-96f8-2d40650e9030"/>
              <interfaceRealization xmi:id="1495507e-92ab-4e2d-942b-74b35f2dbc90" name="" supplier="7f676a2f-d6d1-458c-bdb5-9b59ef3b7eb1" client="2da9e4c7-f746-4cc1-87f1-26de789a81cc" contract="7f676a2f-d6d1-458c-bdb5-9b59ef3b7eb1"/>
              <interfaceRealization xmi:id="429b2bd6-f214-47b3-80a0-8c81eeefae53" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="2da9e4c7-f746-4cc1-87f1-26de789a81cc" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
              <interfaceRealization xmi:id="65b4df4f-8c79-4fd0-8ae8-1f0b72e28afa" name="" supplier="d2bfccf2-94c5-4882-8d84-613f4ad53195" client="2da9e4c7-f746-4cc1-87f1-26de789a81cc" contract="d2bfccf2-94c5-4882-8d84-613f4ad53195"/>
              <interfaceRealization xmi:id="252a9547-fd13-45bc-aad8-d7ca1e90e86f" name="" supplier="8747391f-bebd-47e3-888b-8e509ac223c9" client="2da9e4c7-f746-4cc1-87f1-26de789a81cc" contract="8747391f-bebd-47e3-888b-8e509ac223c9"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8b26c1e9-03c9-4a2d-8986-85ef876106f5" name="SafeScroller" visibility="package" clientDependency="7139647d-54c0-46d5-aa47-15af66d7de14">
                <interfaceRealization xmi:id="7139647d-54c0-46d5-aa47-15af66d7de14" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="8b26c1e9-03c9-4a2d-8986-85ef876106f5" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="62727520-ad5f-4ff3-b218-86398f6a524c" name="DefaultFilterBypass" visibility="private">
                <generalization xmi:id="c6e2da76-5be7-4a7c-9439-cd1a18de4ecd" isSubstitutable="true" general="1f4752ae-a5b5-4eb5-89e6-e7bf19af30af"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="b3c0213b-5de2-4b8b-8973-276db1472be9" name="Handler" visibility="package" clientDependency="3056654e-2594-4adb-9704-ac26aa9c8e66 f48cef6b-48a0-4800-a8e4-8c7ef0e724c6 fa024356-1f98-4fb3-a3c0-96038fa78fe1 998f4325-76b1-4f77-8bfc-c47be9da0910">
                <interfaceRealization xmi:id="fa024356-1f98-4fb3-a3c0-96038fa78fe1" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="b3c0213b-5de2-4b8b-8973-276db1472be9" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <interfaceRealization xmi:id="998f4325-76b1-4f77-8bfc-c47be9da0910" name="" supplier="8473483d-b350-428d-828b-a5a719abea43" client="b3c0213b-5de2-4b8b-8973-276db1472be9" contract="8473483d-b350-428d-828b-a5a719abea43"/>
                <interfaceRealization xmi:id="f48cef6b-48a0-4800-a8e4-8c7ef0e724c6" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="b3c0213b-5de2-4b8b-8973-276db1472be9" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                <interfaceRealization xmi:id="3056654e-2594-4adb-9704-ac26aa9c8e66" name="" supplier="63638b0c-847b-4f43-9375-9eefaae00afa" client="b3c0213b-5de2-4b8b-8973-276db1472be9" contract="63638b0c-847b-4f43-9375-9eefaae00afa"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f2bda7bb-632f-4c90-b2b5-25789ef98ccb" name="InternationalFormatter">
              <ownedComment xmi:id="88912ae8-508a-45f8-9089-1d7d761fafbd" body="&lt;code>InternationalFormatter&lt;/code> extends &lt;code>DefaultFormatter&lt;/code>,&#xA;using an instance of &lt;code>java.text.Format&lt;/code> to handle the&#xA;conversion to a String, and the conversion from a String.&#xA;&lt;p>&#xA;If &lt;code>getAllowsInvalid()&lt;/code> is false, this will ask the&#xA;&lt;code>Format&lt;/code> to format the current text on every edit.&#xA;&lt;p>&#xA;You can specify a minimum and maximum value by way of the&#xA;&lt;code>setMinimum&lt;/code> and &lt;code>setMaximum&lt;/code> methods. In order&#xA;for this to work the values returned from &lt;code>stringToValue&lt;/code> must be&#xA;comparable to the min/max values by way of the &lt;code>Comparable&lt;/code>&#xA;interface.&#xA;&lt;p>&#xA;Be careful how you configure the &lt;code>Format&lt;/code> and the&#xA;&lt;code>InternationalFormatter&lt;/code>, as it is possible to create a&#xA;situation where certain values can not be input. Consider the date&#xA;format 'M/d/yy', an &lt;code>InternationalFormatter&lt;/code> that is always&#xA;valid (&lt;code>setAllowsInvalid(false)&lt;/code>), is in overwrite mode&#xA;(&lt;code>setOverwriteMode(true)&lt;/code>) and the date 7/1/99. In this&#xA;case the user will not be able to enter a two digit month or day of&#xA;month. To avoid this, the format should be 'MM/dd/yy'.&#xA;&lt;p>&#xA;If &lt;code>InternationalFormatter&lt;/code> is configured to only allow valid&#xA;values (&lt;code>setAllowsInvalid(false)&lt;/code>), every valid edit will result&#xA;in the text of the &lt;code>JFormattedTextField&lt;/code> being completely reset&#xA;from the &lt;code>Format&lt;/code>.&#xA;The cursor position will also be adjusted as literal characters are&#xA;added/removed from the resulting String.&#xA;&lt;p>&#xA;&lt;code>InternationalFormatter&lt;/code>'s behavior of&#xA;&lt;code>stringToValue&lt;/code> is  slightly different than that of&#xA;&lt;code>DefaultTextFormatter&lt;/code>, it does the following:&#xA;&lt;ol>&#xA;&lt;li>&lt;code>parseObject&lt;/code> is invoked on the &lt;code>Format&lt;/code>&#xA;specified by &lt;code>setFormat&lt;/code>&#xA;&lt;li>If a Class has been set for the values (&lt;code>setValueClass&lt;/code>),&#xA;supers implementation is invoked to convert the value returned&#xA;from &lt;code>parseObject&lt;/code> to the appropriate class.&#xA;&lt;li>If a &lt;code>ParseException&lt;/code> has not been thrown, and the value&#xA;is outside the min/max a &lt;code>ParseException&lt;/code> is thrown.&#xA;&lt;li>The value is returned.&#xA;&lt;/ol>&#xA;&lt;code>InternationalFormatter&lt;/code> implements &lt;code>stringToValue&lt;/code>&#xA;in this manner so that you can specify an alternate Class than&#xA;&lt;code>Format&lt;/code> may return.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see java.text.Format&#xA;@see java.lang.Comparable&#xA;&#xA;@version 1.7 04/09/01&#xA;@since 1.4&#xA;" annotatedElement="f2bda7bb-632f-4c90-b2b5-25789ef98ccb"/>
              <generalization xmi:id="83ff013b-3a02-4fe6-9a47-321e127732bf" isSubstitutable="true" general="78e6ec72-6983-4b50-88ca-6cdba8cd5321"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="a47929bf-eb5b-4e25-8c4e-54fa70cd40a4" name="ExtendedReplaceHolder" visibility="package">
                <ownedComment xmi:id="0d07a690-b97d-40c5-b8cd-1c1b25a7aac7" body="As InternationalFormatter replaces the complete text on every edit,&#xA;ExtendedReplaceHolder keeps track of the offset and length passed&#xA;into canReplace.&#xA;" annotatedElement="a47929bf-eb5b-4e25-8c4e-54fa70cd40a4"/>
                <generalization xmi:id="61f9b69d-9768-41f8-8ec3-3c873ee62ccb" isSubstitutable="true" general="962b7202-bd96-446c-8d2f-92b36e04d168"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="2c1017ac-58f1-4c9d-a95b-89d43d40ea2e" name="IncrementAction" visibility="private">
                <ownedComment xmi:id="1a00e315-c1e8-4de5-8cb2-ee0b21ad22e0" body="IncrementAction is used to increment the value by a certain amount.&#xA;It calls into &lt;code>adjustValue&lt;/code> to handle the actual&#xA;incrementing of the value.&#xA;" annotatedElement="2c1017ac-58f1-4c9d-a95b-89d43d40ea2e"/>
                <generalization xmi:id="3da4402e-5f1a-4c69-8fae-66fc1c16261f" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="d554dfce-3e9c-4e78-be00-8ad7e9095568" name="rtf">
              <packagedElement xmi:type="uml:Class" xmi:id="b539d54c-5d11-4fc4-afef-43a4496554f8" name="RTFParser" visibility="package" isAbstract="true">
                <ownedComment xmi:id="2d131a8e-1303-44d5-aa8d-fa779a35a765" body="&lt;b>RTFParser&lt;/b> is a subclass of &lt;b>AbstractFilter&lt;/b> which understands basic RTF syntax&#xA;and passes a stream of control words, text, and begin/end group&#xA;indications to its subclass.&#xA;&#xA;Normally programmers will only use &lt;b>RTFFilter&lt;/b>, a subclass of this class that knows what to&#xA;do with the tokens this class parses.&#xA;&#xA;@see AbstractFilter&#xA;@see RTFFilter&#xA;" annotatedElement="b539d54c-5d11-4fc4-afef-43a4496554f8"/>
                <generalization xmi:id="b5a76f2f-9f1e-4deb-b482-1fb41221d98a" isSubstitutable="true" general="e74f7f8d-d15c-4324-b559-3bacae88fdc0"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="54650de7-eed8-4ead-8038-f3ce6c81a111" name="RTFEditorKit">
                <ownedComment xmi:id="ab9f1ddb-2b15-493a-a1bb-f9b59419572f" body="This is the default implementation of RTF editing&#xA;functionality.  The RTF support was not written by the&#xA;Swing team.  In the future we hope to improve the support&#xA;provided.&#xA;&#xA;@author  Timothy Prinzing (of this class, not the package!)&#xA;@version 1.13 12/19/03&#xA;" annotatedElement="54650de7-eed8-4ead-8038-f3ce6c81a111"/>
                <generalization xmi:id="61a356ad-6616-43a7-a7ab-fb3221017488" isSubstitutable="true" general="adcb1769-ab8f-46e7-bb6a-b279d64dd48c"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f412965d-beac-4910-bba1-17204b4363ba" name="Constants" visibility="package">
                <ownedComment xmi:id="d33c7c54-faea-4f22-9383-2a9c369ddc5d" body="Class to hold dictionary keys used by the RTF reader/writer.&#xA;These should be moved into StyleConstants.&#xA;" annotatedElement="f412965d-beac-4910-bba1-17204b4363ba"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="f4185305-8de4-40e6-9c96-8f64ce74fc12" name="RTFAttribute" visibility="package" isAbstract="true">
                <ownedComment xmi:id="db7fc2ec-a651-491e-8c00-e9cc6c031160" body="This interface describes a class which defines a 1-1 mapping between&#xA;an RTF keyword and a SwingText attribute.&#xA;" annotatedElement="f4185305-8de4-40e6-9c96-8f64ce74fc12"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f7acd370-b3a4-41f7-9708-84115c76ee76" name="RTFReader" visibility="package">
                <ownedComment xmi:id="39863198-a911-4263-87ef-f695d7c9dcca" body="Takes a sequence of RTF tokens and text and appends the text&#xA;described by the RTF to a &lt;code>StyledDocument&lt;/code> (the &lt;em>target&lt;/em>).&#xA;The RTF is lexed&#xA;from the character stream by the &lt;code>RTFParser&lt;/code> which is this class's&#xA;superclass.&#xA;&#xA;This class is an indirect subclass of OutputStream. It must be closed&#xA;in order to guarantee that all of the text has been sent to&#xA;the text acceptor.&#xA;&#xA;@see RTFParser&#xA;@see java.io.OutputStream&#xA;" annotatedElement="f7acd370-b3a4-41f7-9708-84115c76ee76"/>
                <generalization xmi:id="66d14d21-275b-4917-a145-b56604458de9" isSubstitutable="true" general="b539d54c-5d11-4fc4-afef-43a4496554f8"/>
                <nestedClassifier xmi:type="uml:Interface" xmi:id="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02" name="Destination" visibility="package" isAbstract="true">
                  <ownedComment xmi:id="465712d6-2467-4103-8e28-61e2fa33c128" body="An interface (could be an entirely abstract class) describing&#xA;a destination. The RTF reader always has a current destination&#xA;which is where text is sent.&#xA;&#xA;@see RTFReader&#xA;" annotatedElement="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="2ba71e06-6ca5-4440-b386-8434a85c90f5" name="DiscardingDestination" visibility="package" clientDependency="6d8c82cc-003e-45ad-8248-4597f543ac2f">
                  <ownedComment xmi:id="9434601b-262e-4e76-b81b-663754ff3e37" body="This data-sink class is used to implement ignored destinations&#xA;(e.g. {\*\blegga blah blah blah} )&#xA;It accepts all keywords and text but does nothing with them." annotatedElement="2ba71e06-6ca5-4440-b386-8434a85c90f5"/>
                  <interfaceRealization xmi:id="6d8c82cc-003e-45ad-8248-4597f543ac2f" name="" supplier="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02" client="2ba71e06-6ca5-4440-b386-8434a85c90f5" contract="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="4d108627-0f6e-4b1c-8da5-3c6122fa3dab" name="FonttblDestination" visibility="package" clientDependency="b8abf80f-af15-4167-b299-e245d0960814">
                  <ownedComment xmi:id="9e64c1ce-dbe2-47ba-b5ac-b2c42c8746c7" body="Reads the fonttbl group, inserting fonts into the RTFReader's&#xA;fontTable dictionary." annotatedElement="4d108627-0f6e-4b1c-8da5-3c6122fa3dab"/>
                  <interfaceRealization xmi:id="b8abf80f-af15-4167-b299-e245d0960814" name="" supplier="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02" client="4d108627-0f6e-4b1c-8da5-3c6122fa3dab" contract="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="0e97bfd7-4015-41c2-a0b6-b27cf37d8826" name="ColortblDestination" visibility="package" clientDependency="33642759-d26f-4cea-a0a3-ddba5478362e">
                  <ownedComment xmi:id="56789b87-2ac9-4d4e-a93f-47576a5e4e30" body="Reads the colortbl group. Upon end-of-group, the RTFReader's&#xA;color table is set to an array containing the read colors." annotatedElement="0e97bfd7-4015-41c2-a0b6-b27cf37d8826"/>
                  <interfaceRealization xmi:id="33642759-d26f-4cea-a0a3-ddba5478362e" name="" supplier="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02" client="0e97bfd7-4015-41c2-a0b6-b27cf37d8826" contract="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a269d2c6-d41c-4ef6-ae1c-85390333c98b" name="StylesheetDestination" visibility="package" clientDependency="5c11a402-8a08-4168-aaef-002bf53a62b5">
                  <ownedComment xmi:id="db07d57d-7b21-4dc7-9cea-4bb6c7de0cfc" body="Handles the stylesheet keyword. Styles are read and sorted&#xA;into the three style arrays in the RTFReader." annotatedElement="a269d2c6-d41c-4ef6-ae1c-85390333c98b"/>
                  <generalization xmi:id="a1f1581e-e8fa-47f3-902b-afdc87e9b79a" isSubstitutable="true" general="2ba71e06-6ca5-4440-b386-8434a85c90f5"/>
                  <interfaceRealization xmi:id="5c11a402-8a08-4168-aaef-002bf53a62b5" name="" supplier="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02" client="a269d2c6-d41c-4ef6-ae1c-85390333c98b" contract="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02"/>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="f8c74b15-66a1-47ff-bbe5-16e68b8468e9" name="StyleDefiningDestination" visibility="package" clientDependency="5c6b228c-4c60-427e-9077-08515a6e0c0b">
                    <ownedComment xmi:id="699f7ef0-4547-4a55-912f-4858290b3401" body="This subclass handles an individual style" annotatedElement="f8c74b15-66a1-47ff-bbe5-16e68b8468e9"/>
                    <generalization xmi:id="e726855e-f387-4571-b80b-a9842040847f" isSubstitutable="true" general="67a085e8-a15e-457a-9377-e82e8bc5fc3a"/>
                    <interfaceRealization xmi:id="5c6b228c-4c60-427e-9077-08515a6e0c0b" name="" supplier="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02" client="f8c74b15-66a1-47ff-bbe5-16e68b8468e9" contract="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02"/>
                  </nestedClassifier>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="8498fc92-9feb-429c-b9cd-8a889ae7b53f" name="InfoDestination" visibility="package" clientDependency="558b7032-114e-4233-bedc-d1c55b1e1c3b">
                  <ownedComment xmi:id="a52fddab-a577-4664-bcd6-f1667fbc9ce8" body="Handles the info group. Currently no info keywords are recognized&#xA;so this is a subclass of DiscardingDestination." annotatedElement="8498fc92-9feb-429c-b9cd-8a889ae7b53f"/>
                  <generalization xmi:id="a052de98-26d8-4eb6-ba32-46618640d952" isSubstitutable="true" general="2ba71e06-6ca5-4440-b386-8434a85c90f5"/>
                  <interfaceRealization xmi:id="558b7032-114e-4233-bedc-d1c55b1e1c3b" name="" supplier="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02" client="8498fc92-9feb-429c-b9cd-8a889ae7b53f" contract="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="67a085e8-a15e-457a-9377-e82e8bc5fc3a" name="AttributeTrackingDestination" visibility="package" clientDependency="508f40d8-2795-487b-bb23-593eb8ab35d3" isAbstract="true">
                  <ownedComment xmi:id="4459e33f-a396-4905-be10-a585be2068f5" body="RTFReader.TextHandlingDestination is an abstract RTF destination&#xA;which simply tracks the attributes specified by the RTF control words&#xA;in internal form and can produce acceptable AttributeSets for the&#xA;current character, paragraph, and section attributes. It is up&#xA;to the subclasses to determine what is done with the actual text." annotatedElement="67a085e8-a15e-457a-9377-e82e8bc5fc3a"/>
                  <interfaceRealization xmi:id="508f40d8-2795-487b-bb23-593eb8ab35d3" name="" supplier="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02" client="67a085e8-a15e-457a-9377-e82e8bc5fc3a" contract="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="b0166dfe-ff04-48ae-861d-fa4e3120eecc" name="TextHandlingDestination" visibility="package" clientDependency="ff9a2570-a063-445c-9f67-3e4e0416cc54" isAbstract="true">
                  <ownedComment xmi:id="fd65fb90-4ad4-4ec6-9c22-12dc7326ed3b" body="RTFReader.TextHandlingDestination provides basic text handling&#xA;functionality. Subclasses must implement: &lt;dl>&#xA;&lt;dt>deliverText()&lt;dd>to handle a run of text with the same&#xA;attributes&#xA;&lt;dt>finishParagraph()&lt;dd>to end the current paragraph and&#xA;set the paragraph's attributes&#xA;&lt;dt>endSection()&lt;dd>to end the current section&#xA;&lt;/dl>&#xA;" annotatedElement="b0166dfe-ff04-48ae-861d-fa4e3120eecc"/>
                  <generalization xmi:id="2a55cf91-e630-4353-b2d7-f250dcb8fc93" isSubstitutable="true" general="67a085e8-a15e-457a-9377-e82e8bc5fc3a"/>
                  <interfaceRealization xmi:id="ff9a2570-a063-445c-9f67-3e4e0416cc54" name="" supplier="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02" client="b0166dfe-ff04-48ae-861d-fa4e3120eecc" contract="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="16a9e96e-b01e-4d1e-9608-071e94e6cda0" name="DocumentDestination" visibility="package" clientDependency="d96c83f2-1e03-430f-932b-6c3e879861ca">
                  <ownedComment xmi:id="7e7aa796-e835-4b4e-9b99-9fe90195ad5c" body="RTFReader.DocumentDestination is a concrete subclass of&#xA;TextHandlingDestination which appends the text to the&#xA;StyledDocument given by the &lt;code>target&lt;/code> ivar of the&#xA;containing RTFReader.&#xA;" annotatedElement="16a9e96e-b01e-4d1e-9608-071e94e6cda0"/>
                  <generalization xmi:id="5cd19a15-624a-44b0-b196-2dd8d1a5b904" isSubstitutable="true" general="b0166dfe-ff04-48ae-861d-fa4e3120eecc"/>
                  <interfaceRealization xmi:id="d96c83f2-1e03-430f-932b-6c3e879861ca" name="" supplier="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02" client="16a9e96e-b01e-4d1e-9608-071e94e6cda0" contract="9f55a9e7-99b7-4f30-8c6d-f5ea58553f02"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="45d7a62d-4b30-46fa-bab9-08eb9fee9bd9" name="RTFGenerator" visibility="package">
                <ownedComment xmi:id="1177e107-bcbe-45f0-81cb-0b764dcf9725" body="Generates an RTF output stream (java.io.OutputStream) from rich text&#xA;(handed off through a series of LTTextAcceptor calls).  Can be used to&#xA;generate RTF from any object which knows how to write to a text acceptor&#xA;(e.g., LTAttributedText and LTRTFFilter).&#xA;&#xA;&lt;p>Note that this is a lossy conversion since RTF's model of&#xA;text does not exactly correspond with LightText's.&#xA;&#xA;@see LTAttributedText&#xA;@see LTRTFFilter&#xA;@see LTTextAcceptor&#xA;@see java.io.OutputStream&#xA;" annotatedElement="45d7a62d-4b30-46fa-bab9-08eb9fee9bd9"/>
                <generalization xmi:id="c0754234-42e5-4119-a0ad-5256cbefacfd" isSubstitutable="true" general="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="3bc9fe9f-6346-46c8-bcdc-8fb0d5ea2c6a" name="CharacterKeywordPair" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f2279df9-f158-446e-b133-b9e3934ffe32" name="MockAttributeSet" visibility="package" clientDependency="71a61e02-e7bb-4124-8dd6-14b9412ddc35 46886384-4ff3-42f4-9839-076a558c1039">
                <interfaceRealization xmi:id="46886384-4ff3-42f4-9839-076a558c1039" name="" supplier="dff5659c-62af-4166-9a96-573a58fd7f7e" client="f2279df9-f158-446e-b133-b9e3934ffe32" contract="dff5659c-62af-4166-9a96-573a58fd7f7e"/>
                <interfaceRealization xmi:id="71a61e02-e7bb-4124-8dd6-14b9412ddc35" name="" supplier="11e28f5b-cfc8-4b49-ac32-476c2ab7442b" client="f2279df9-f158-446e-b133-b9e3934ffe32" contract="11e28f5b-cfc8-4b49-ac32-476c2ab7442b"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="e74f7f8d-d15c-4324-b559-3bacae88fdc0" name="AbstractFilter" visibility="package" isAbstract="true">
                <ownedComment xmi:id="8f328187-8b0f-4c9c-a04f-726cb97b278e" body="A generic superclass for streams which read and parse text&#xA;consisting of runs of characters interspersed with occasional&#xA;``specials'' (formatting characters).&#xA;&#xA;&lt;p> Most of the functionality&#xA;of this class would be redundant except that the&#xA;&lt;code>ByteToChar&lt;/code> converters&#xA;are suddenly private API. Presumably this class will disappear&#xA;when the API is made public again. (sigh) That will also let us handle&#xA;multibyte character sets...&#xA;&#xA;&lt;P> A subclass should override at least &lt;code>write(char)&lt;/code>&#xA;and &lt;code>writeSpecial(int)&lt;/code>. For efficiency's sake it's a&#xA;good idea to override &lt;code>write(String)&lt;/code> as well. The subclass'&#xA;initializer may also install appropriate translation and specials tables.&#xA;&#xA;@see OutputStream&#xA;" annotatedElement="e74f7f8d-d15c-4324-b559-3bacae88fdc0"/>
                <generalization xmi:id="bbe04f46-1a69-4865-a1e7-66c23cbf1dbd" isSubstitutable="true" general="23f94159-dc57-40a7-86d8-db17a349aa48"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="a8daf476-da19-4952-b4ab-81cf79fa6c0e" name="RTFAttributes" visibility="package">
                <nestedClassifier xmi:type="uml:Class" xmi:id="6eef3001-e046-482d-a3da-83ca0028b29a" name="GenericAttribute" visibility="package" isAbstract="true"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="97ca528c-ca1d-44e9-8c3b-713bd305b0fb" name="BooleanAttribute" visibility="package" clientDependency="77a51a23-7cde-4d3d-9dba-4c2d65f4309c">
                  <generalization xmi:id="c4a7f4b7-08ab-4271-b4a4-e3622aeab6dd" isSubstitutable="true" general="6eef3001-e046-482d-a3da-83ca0028b29a"/>
                  <interfaceRealization xmi:id="77a51a23-7cde-4d3d-9dba-4c2d65f4309c" name="" supplier="f4185305-8de4-40e6-9c96-8f64ce74fc12" client="97ca528c-ca1d-44e9-8c3b-713bd305b0fb" contract="f4185305-8de4-40e6-9c96-8f64ce74fc12"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="f1cea5b5-e56c-4b61-b1b4-736227cc691b" name="AssertiveAttribute" visibility="package" clientDependency="22d48696-b74c-43c5-97c8-762c8fb51590">
                  <generalization xmi:id="be8f0205-e4b6-4c16-beaf-a04e588f03a6" isSubstitutable="true" general="6eef3001-e046-482d-a3da-83ca0028b29a"/>
                  <interfaceRealization xmi:id="22d48696-b74c-43c5-97c8-762c8fb51590" name="" supplier="f4185305-8de4-40e6-9c96-8f64ce74fc12" client="f1cea5b5-e56c-4b61-b1b4-736227cc691b" contract="f4185305-8de4-40e6-9c96-8f64ce74fc12"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="3a74a66a-79f3-4589-a778-24e285c9874f" name="NumericAttribute" visibility="package" clientDependency="111a9c40-04f0-4de1-973b-87cf5f4e4910">
                  <generalization xmi:id="d199d112-0a42-4db0-a31c-1752b81c06b6" isSubstitutable="true" general="6eef3001-e046-482d-a3da-83ca0028b29a"/>
                  <interfaceRealization xmi:id="111a9c40-04f0-4de1-973b-87cf5f4e4910" name="" supplier="f4185305-8de4-40e6-9c96-8f64ce74fc12" client="3a74a66a-79f3-4589-a778-24e285c9874f" contract="f4185305-8de4-40e6-9c96-8f64ce74fc12"/>
                </nestedClassifier>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="efe89494-5782-49b2-ac23-97d168814f56" name="GlyphView" clientDependency="da0cb8c2-b5c0-4c32-a70e-2fc131063837 f37b66be-27c7-48d0-89ac-e741601a635e">
              <ownedComment xmi:id="c6463635-fe5c-4e84-961e-24265bbe394e" body="A GlyphView is a styled chunk of text that represents a view&#xA;mapped over an element in the text model. This view is generally&#xA;responsible for displaying text glyphs using character level&#xA;attributes in some way.&#xA;An implementation of the GlyphPainter class is used to do the&#xA;actual rendering and model/view translations.  This separates&#xA;rendering from layout and management of the association with&#xA;the model.&#xA;&lt;p>&#xA;The view supports breaking for the purpose of formatting.&#xA;The fragments produced by breaking share the view that has&#xA;primary responsibility for the element (i.e. they are nested&#xA;classes and carry only a small amount of state of their own)&#xA;so they can share its resources.&#xA;&lt;p>&#xA;Since this view&#xA;represents text that may have tabs embedded in it, it implements the&#xA;&lt;code>TabableView&lt;/code> interface.  Tabs will only be&#xA;expanded if this view is embedded in a container that does&#xA;tab expansion.  ParagraphView is an example of a container&#xA;that does tab expansion.&#xA;&lt;p>&#xA;&#xA;@since 1.3&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.36 05/26/04&#xA;" annotatedElement="efe89494-5782-49b2-ac23-97d168814f56"/>
              <generalization xmi:id="1fe4643e-e801-4925-a6b7-b428d0663a3f" isSubstitutable="true" general="a12ab75d-4ae8-40c5-ac6c-848d1ef3f725"/>
              <interfaceRealization xmi:id="f37b66be-27c7-48d0-89ac-e741601a635e" name="" supplier="f616bb7c-1596-4944-985b-70ce95a8f715" client="efe89494-5782-49b2-ac23-97d168814f56" contract="f616bb7c-1596-4944-985b-70ce95a8f715"/>
              <interfaceRealization xmi:id="da0cb8c2-b5c0-4c32-a70e-2fc131063837" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="efe89494-5782-49b2-ac23-97d168814f56" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f8686d37-9d9e-4909-9dea-f1c70f6a2a55" name="GlyphPainter" isAbstract="true">
                <ownedComment xmi:id="cc22aaab-f33e-466e-ba06-28806ec10048" body="A class to perform rendering of the glyphs.&#xA;This can be implemented to be stateless, or&#xA;to hold some information as a cache to&#xA;facilitate faster rendering and model/view&#xA;translation.  At a minimum, the GlyphPainter&#xA;allows a View implementation to perform its&#xA;duties independant of a particular version&#xA;of JVM and selection of capabilities (i.e.&#xA;shaping for i18n, etc).&#xA;&#xA;@since 1.3&#xA;" annotatedElement="f8686d37-9d9e-4909-9dea-f1c70f6a2a55"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="11e28f5b-cfc8-4b49-ac32-476c2ab7442b" name="MutableAttributeSet" isAbstract="true">
              <ownedComment xmi:id="7920fe33-e25b-45f3-9989-110ca0ebd325" body="A generic interface for a mutable collection of unique attributes.&#xA;&#xA;Implementations will probably want to provide a constructor of the&#xA;form:&lt;tt>&#xA;public XXXAttributeSet(ConstAttributeSet source);&lt;/tt>&#xA;&#xA;@version 1.17 05/05/04&#xA;" annotatedElement="11e28f5b-cfc8-4b49-ac32-476c2ab7442b"/>
              <generalization xmi:id="ba0d5430-43da-4b3e-81fb-a68f4f4715fc" isSubstitutable="true" general="dff5659c-62af-4166-9a96-573a58fd7f7e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="67c81813-bb1a-4cec-b3e2-099e14a823af" name="DocumentFilter">
              <ownedComment xmi:id="92f08698-aa50-40fc-b3be-d1bd172a5281" body="&lt;code>DocumentFilter&lt;/code>, as the name implies, is a filter for the&#xA;&lt;code>Document&lt;/code> mutation methods. When a &lt;code>Document&lt;/code>&#xA;containing a &lt;code>DocumentFilter&lt;/code> is modified (either through&#xA;&lt;code>insert&lt;/code> or &lt;code>remove&lt;/code>), it forwards the appropriate&#xA;method invocation to the &lt;code>DocumentFilter&lt;/code>. The&#xA;default implementation allows the modification to&#xA;occur. Subclasses can filter the modifications by conditionally invoking&#xA;methods on the superclass, or invoking the necessary methods on&#xA;the passed in &lt;code>FilterBypass&lt;/code>. Subclasses should NOT call back&#xA;into the Document for the modification&#xA;instead call into the superclass or the &lt;code>FilterBypass&lt;/code>.&#xA;&lt;p>&#xA;When &lt;code>remove&lt;/code> or &lt;code>insertString&lt;/code> is invoked&#xA;on the &lt;code>DocumentFilter&lt;/code>, the &lt;code>DocumentFilter&lt;/code>&#xA;may callback into the&#xA;&lt;code>FilterBypass&lt;/code> multiple times, or for different regions, but&#xA;it should not callback into the &lt;code>FilterBypass&lt;/code> after returning&#xA;from the &lt;code>remove&lt;/code> or &lt;code>insertString&lt;/code> method.&#xA;&#xA;@see javax.swing.text.Document&#xA;&#xA;@version 1.6 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="67c81813-bb1a-4cec-b3e2-099e14a823af"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="1db07092-84f6-4caf-974f-23cd7595575b" name="FilterBypass" isAbstract="true">
                <ownedComment xmi:id="698697c5-10e8-4371-a43e-8081bc5738fe" body="Used as a way to circumvent calling back into the Document to&#xA;change it. Document implementations that wish to support&#xA;a DocumentFilter must provide an implementation that will&#xA;not callback into the DocumentFilter when the following methods&#xA;are invoked from the DocumentFilter.&#xA;" annotatedElement="1db07092-84f6-4caf-974f-23cd7595575b"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="72432745-db40-4cae-846a-6d4303cc4e53" name="MaskFormatter">
              <ownedComment xmi:id="de291e8b-6a64-4c77-bf8c-7a2dbc6d0cca" body="&lt;code>MaskFormatter&lt;/code> is used to format and edit strings. The behavior&#xA;of a &lt;code>MaskFormatter&lt;/code> is controlled by way of a String mask&#xA;that specifies the valid characters that can be contained at a particular&#xA;location in the &lt;code>Document&lt;/code> model. The following characters can&#xA;be specified:&#xA;&#xA;&lt;table border=1 summary=&quot;Valid characters and their descriptions&quot;>&#xA;&lt;tr>&#xA;&lt;th>Character&amp;nbsp;&lt;/th>&#xA;&lt;th>&lt;p align=&quot;left&quot;>Description&lt;/p>&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>#&lt;/td>&#xA;&lt;td>Any valid number, uses &lt;code>Character.isDigit&lt;/code>.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>'&lt;/td>&#xA;&lt;td>Escape character, used to escape any of the&#xA;special formatting characters.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>U&lt;/td>&lt;td>Any character (&lt;code>Character.isLetter&lt;/code>). All&#xA;lowercase letters are mapped to upper case.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&lt;td>L&lt;/td>&lt;td>Any character (&lt;code>Character.isLetter&lt;/code>). All&#xA;upper case letters are mapped to lower case.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&lt;td>A&lt;/td>&lt;td>Any character or number (&lt;code>Character.isLetter&lt;/code>&#xA;or &lt;code>Character.isDigit&lt;/code>)&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&lt;td>?&lt;/td>&lt;td>Any character&#xA;(&lt;code>Character.isLetter&lt;/code>).&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&lt;td>*&lt;/td>&lt;td>Anything.&lt;/td>&lt;/tr>&#xA;&lt;tr>&lt;td>H&lt;/td>&lt;td>Any hex character (0-9, a-f or A-F).&lt;/td>&lt;/tr>&#xA;&lt;/table>&#xA;&#xA;&lt;p>&#xA;Typically characters correspond to one char, but in certain languages this&#xA;is not the case. The mask is on a per character basis, and will thus&#xA;adjust to fit as many chars as are needed.&#xA;&lt;p>&#xA;You can further restrict the characters that can be input by the&#xA;&lt;code>setInvalidCharacters&lt;/code> and &lt;code>setValidCharacters&lt;/code>&#xA;methods. &lt;code>setInvalidCharacters&lt;/code> allows you to specify&#xA;which characters are not legal. &lt;code>setValidCharacters&lt;/code> allows&#xA;you to specify which characters are valid. For example, the following&#xA;code block is equivalent to a mask of '0xHHH' with no invalid/valid&#xA;characters:&#xA;&lt;pre>&#xA;MaskFormatter formatter = new MaskFormatter(&quot;0x***&quot;);&#xA;formatter.setValidCharacters(&quot;0123456789abcdefABCDEF&quot;);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;When initially formatting a value if the length of the string is&#xA;less than the length of the mask, two things can happen. Either&#xA;the placeholder string will be used, or the placeholder character will&#xA;be used. Precedence is given to the placeholder string. For example:&#xA;&lt;pre>&#xA;MaskFormatter formatter = new MaskFormatter(&quot;###-####&quot;);&#xA;formatter.setPlaceholderCharacter('_');&#xA;formatter.getDisplayValue(tf, &quot;123&quot;);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;Would result in the string '123-____'. If&#xA;&lt;code>setPlaceholder(&quot;555-1212&quot;)&lt;/code> was invoked '123-1212' would&#xA;result. The placeholder String is only used on the initial format,&#xA;on subsequent formats only the placeholder character will be used.&#xA;&lt;p>&#xA;If a &lt;code>MaskFormatter&lt;/code> is configured to only allow valid characters&#xA;(&lt;code>setAllowsInvalid(false)&lt;/code>) literal characters will be skipped as&#xA;necessary when editing. Consider a &lt;code>MaskFormatter&lt;/code> with&#xA;the mask &quot;###-####&quot; and current value &quot;555-1212&quot;. Using the right&#xA;arrow key to navigate through the field will result in (| indicates the&#xA;position of the caret):&#xA;&lt;pre>&#xA;|555-1212&#xA;5|55-1212&#xA;55|5-1212&#xA;555-|1212&#xA;555-1|212&#xA;&lt;/pre>&#xA;The '-' is a literal (non-editable) character, and is skipped.&#xA;&lt;p>&#xA;Similar behavior will result when editing. Consider inserting the string&#xA;'123-45' and '12345' into the &lt;code>MaskFormatter&lt;/code> in the&#xA;previous example. Both inserts will result in the same String,&#xA;'123-45__'. When &lt;code>MaskFormatter&lt;/code>&#xA;is processing the insert at character position 3 (the '-'), two things can&#xA;happen:&#xA;&lt;ol>&#xA;&lt;li>If the inserted character is '-', it is accepted.&#xA;&lt;li>If the inserted character matches the mask for the next non-literal&#xA;character, it is accepted at the new location.&#xA;&lt;li>Anything else results in an invalid edit&#xA;&lt;/ol>&#xA;&lt;p>&#xA;By default &lt;code>MaskFormatter&lt;/code> will not allow invalid edits, you can&#xA;change this with the &lt;code>setAllowsInvalid&lt;/code> method, and will&#xA;commit edits on valid edits (use the &lt;code>setCommitsOnValidEdit&lt;/code> to&#xA;change this).&#xA;&lt;p>&#xA;By default, &lt;code>MaskFormatter&lt;/code> is in overwrite mode. That is as&#xA;characters are typed a new character is not inserted, rather the character&#xA;at the current location is replaced with the newly typed character. You&#xA;can change this behavior by way of the method &lt;code>setOverwriteMode&lt;/code>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.12 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="72432745-db40-4cae-846a-6d4303cc4e53"/>
              <generalization xmi:id="6672c585-401a-4cf5-aedb-78f73674e003" isSubstitutable="true" general="78e6ec72-6983-4b50-88ca-6cdba8cd5321"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="68a855f6-19a2-4363-bc9f-f346befea4b8" name="MaskCharacter" visibility="private"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="e96be32c-d1f7-41b1-bdea-fe5370c3c2a7" name="LiteralCharacter" visibility="private">
                <ownedComment xmi:id="6497603a-4a6d-4fe9-83df-0078f0381302" body="Used to represent a fixed character in the mask.&#xA;" annotatedElement="e96be32c-d1f7-41b1-bdea-fe5370c3c2a7"/>
                <generalization xmi:id="8c1c506b-ca17-4acf-a5c6-58c890703bbb" isSubstitutable="true" general="68a855f6-19a2-4363-bc9f-f346befea4b8"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="7e3f082d-ce6d-4b8e-839d-89fe5940834d" name="DigitMaskCharacter" visibility="private">
                <ownedComment xmi:id="4b2dc11a-0868-467d-8ff1-6c15f9c5bd7e" body="Represents a number, uses &lt;code>Character.isDigit&lt;/code>.&#xA;" annotatedElement="7e3f082d-ce6d-4b8e-839d-89fe5940834d"/>
                <generalization xmi:id="3dbd825e-98df-4530-9c7c-c546416a73a7" isSubstitutable="true" general="68a855f6-19a2-4363-bc9f-f346befea4b8"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="9e18439d-363d-4d92-b54e-d1f4ccb6e020" name="UpperCaseCharacter" visibility="private">
                <ownedComment xmi:id="f097c0fe-5302-4d34-b5d9-d3b672565744" body="Represents a character, lower case letters are mapped to upper case&#xA;using &lt;code>Character.toUpperCase&lt;/code>.&#xA;" annotatedElement="9e18439d-363d-4d92-b54e-d1f4ccb6e020"/>
                <generalization xmi:id="90be0921-aa81-4328-8620-750118f12f5f" isSubstitutable="true" general="68a855f6-19a2-4363-bc9f-f346befea4b8"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="7ed4f0f9-8558-4a42-a443-377a24c8c260" name="LowerCaseCharacter" visibility="private">
                <ownedComment xmi:id="2faf21a4-d817-4add-bbc7-b79b4333c498" body="Represents a character, upper case letters are mapped to lower case&#xA;using &lt;code>Character.toLowerCase&lt;/code>.&#xA;" annotatedElement="7ed4f0f9-8558-4a42-a443-377a24c8c260"/>
                <generalization xmi:id="d7732d6e-6572-40f6-9620-516e5c96ca89" isSubstitutable="true" general="68a855f6-19a2-4363-bc9f-f346befea4b8"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="04ec1f66-610d-4b6c-b946-bbd8128cf96b" name="AlphaNumericCharacter" visibility="private">
                <ownedComment xmi:id="fae6096b-dfe3-45a0-9428-ca2649930b5e" body="Represents either a character or digit, uses&#xA;&lt;code>Character.isLetterOrDigit&lt;/code>.&#xA;" annotatedElement="04ec1f66-610d-4b6c-b946-bbd8128cf96b"/>
                <generalization xmi:id="ebf69533-ac08-46f1-b78b-5e4bc4f80322" isSubstitutable="true" general="68a855f6-19a2-4363-bc9f-f346befea4b8"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="607950fe-2d72-40f5-9c7c-d1561f160f79" name="CharCharacter" visibility="private">
                <ownedComment xmi:id="53784124-f644-45ba-a0bc-d36c2a0602d2" body="Represents a letter, uses &lt;code>Character.isLetter&lt;/code>.&#xA;" annotatedElement="607950fe-2d72-40f5-9c7c-d1561f160f79"/>
                <generalization xmi:id="03adee5c-d62c-4cde-b66a-8cbfc3730612" isSubstitutable="true" general="68a855f6-19a2-4363-bc9f-f346befea4b8"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f9b4d10f-7250-4571-89ce-7381523b6bc6" name="HexCharacter" visibility="private">
                <ownedComment xmi:id="0a6320d4-0319-416c-bc22-26069336525a" body="Represents a hex character, 0-9a-fA-F. a-f is mapped to A-F&#xA;" annotatedElement="f9b4d10f-7250-4571-89ce-7381523b6bc6"/>
                <generalization xmi:id="59d8e167-d7b7-466c-ba5f-680c577647ed" isSubstitutable="true" general="68a855f6-19a2-4363-bc9f-f346befea4b8"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a12979bf-dc25-465a-99b1-80834b828e26" name="FlowView" isAbstract="true">
              <ownedComment xmi:id="87d83bbf-1195-4764-81ed-e0ff62ae9d81" body="A View that tries to flow it's children into some&#xA;partially constrained space.  This can be used to&#xA;build things like paragraphs, pages, etc.  The&#xA;flow is made up of the following pieces of functionality.&#xA;&lt;ul>&#xA;&lt;li>A logical set of child views, which as used as a&#xA;layout pool from which a physical view is formed.&#xA;&lt;li>A strategy for translating the logical view to&#xA;a physical (flowed) view.&#xA;&lt;li>Constraints for the strategy to work against.&#xA;&lt;li>A physical structure, that represents the flow.&#xA;The children of this view are where the pieces of&#xA;of the logical views are placed to create the flow.&#xA;&lt;/ul>&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.43 06/24/04&#xA;@see     View&#xA;" annotatedElement="a12979bf-dc25-465a-99b1-80834b828e26"/>
              <generalization xmi:id="4f264ca3-bf09-4401-996f-bd91875c48ec" isSubstitutable="true" general="21bc7467-2f3d-4452-af93-a254d26bf84f"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="5bbb271f-8ad1-4cce-a722-5195d547a880" name="FlowStrategy">
                <ownedComment xmi:id="7cf493c5-b64b-4f94-92bf-fb40b7ff30fb" body="Strategy for maintaining the physical form&#xA;of the flow.  The default implementation is&#xA;completely stateless, and recalculates the&#xA;entire flow if the layout is invalid on the&#xA;given FlowView.  Alternative strategies can&#xA;be implemented by subclassing, and might&#xA;perform incrementatal repair to the layout&#xA;or alternative breaking behavior.&#xA;" annotatedElement="5bbb271f-8ad1-4cce-a722-5195d547a880"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="3911a1e6-5970-49e5-a59a-0ffb02458705" name="LogicalView" visibility="package">
                <ownedComment xmi:id="67e11f98-0f0f-4369-a691-7a4a8dbca501" body="This class can be used to represent a logical view for&#xA;a flow.  It keeps the children updated to reflect the state&#xA;of the model, gives the logical child views access to the&#xA;view hierarchy, and calculates a preferred span.  It doesn't&#xA;do any rendering, layout, or model/view translation.&#xA;" annotatedElement="3911a1e6-5970-49e5-a59a-0ffb02458705"/>
                <generalization xmi:id="75f8177f-a59f-4a5e-8ac9-a6ed3a01ef74" isSubstitutable="true" general="921a61fb-ee13-4ede-8408-998656f76875"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4cb26dea-0a8c-4e5a-930a-f1759c987b15" name="GapVector" visibility="package" clientDependency="ba958f0e-b431-4d3d-b8ad-d1366410eb2c" isAbstract="true">
              <ownedComment xmi:id="03ddcccb-8f3e-473e-ab85-7940fbde0222" body="An implementation of a gapped buffer similar to that used by&#xA;emacs.  The underlying storage is a java array of some type,&#xA;which is known only by the subclass of this class.  The array&#xA;has a gap somewhere.  The gap is moved to the location of changes&#xA;to take advantage of common behavior where most changes occur&#xA;in the same location.  Changes that occur at a gap boundary are&#xA;generally cheap and moving the gap is generally cheaper than&#xA;moving the array contents directly to accomodate the change.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.12 12/19/03&#xA;@see GapContent&#xA;" annotatedElement="4cb26dea-0a8c-4e5a-930a-f1759c987b15"/>
              <interfaceRealization xmi:id="ba958f0e-b431-4d3d-b8ad-d1366410eb2c" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4cb26dea-0a8c-4e5a-930a-f1759c987b15" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="e3a1d3f4-af71-4ce0-962d-e7b0b2295c0d" name="ViewFactory" isAbstract="true">
              <ownedComment xmi:id="aa8df14a-8a6d-4209-9d2f-d32a2bd7514c" body="A factory to create a view of some portion of document subject.&#xA;This is intended to enable customization of how views get&#xA;mapped over a document model.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.18 12/19/03&#xA;" annotatedElement="e3a1d3f4-af71-4ce0-962d-e7b0b2295c0d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="68b1870d-5065-4117-948b-c38cdad767c9" name="Position" isAbstract="true">
              <ownedComment xmi:id="08d11862-f26e-4cad-8e09-b04435386d12" body="Represents a location within a document.  It is intended to abstract away&#xA;implementation details of the document and enable specification of&#xA;positions within the document that are capable of tracking of change as&#xA;the document is edited (i.e. offsets are fragile).&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.18 12/19/03&#xA;" annotatedElement="68b1870d-5065-4117-948b-c38cdad767c9"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="084b2d64-60a3-42b6-b771-a2f6d7c9fce8" name="Bias" isLeaf="true">
                <ownedComment xmi:id="25f5376b-5854-427f-bf1d-61cfb239b12c" body="A typesafe enumeration to indicate bias to a position&#xA;in the model.  A position indicates a location between&#xA;two characters.  The bias can be used to indicate an&#xA;interest toward one of the two sides of the position&#xA;in boundary conditions where a simple offset is&#xA;ambiguous.&#xA;" annotatedElement="084b2d64-60a3-42b6-b771-a2f6d7c9fce8"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="092e0576-dee7-4b99-882e-13d468759154" name="Style" isAbstract="true">
              <ownedComment xmi:id="e4c58c15-80f2-4e53-970d-85a94486b3de" body="A collection of attributes to associate with an element in a document.&#xA;Since these are typically used to associate character and paragraph&#xA;styles with the element, operations for this are provided.  Other&#xA;customized attributes that get associated with the element will&#xA;effectively be name-value pairs that live in a hierarchy and if a name&#xA;(key) is not found locally, the request is forwarded to the parent.&#xA;Commonly used attributes are separated out to facilitate alternative&#xA;implementations that are more efficient.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.21 12/19/03&#xA;" annotatedElement="092e0576-dee7-4b99-882e-13d468759154"/>
              <generalization xmi:id="03a9d885-6ca8-4035-8c46-59844e3e0725" isSubstitutable="true" general="11e28f5b-cfc8-4b49-ac32-476c2ab7442b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="974b1632-9d9f-462c-bf8e-d43f8ba0ce0d" name="ElementIterator" clientDependency="29cfe0fe-174d-4f37-83a7-376ad33e93f6">
              <ownedComment xmi:id="a84b9bbe-1011-4c6d-9769-e2291891441f" body="&lt;p>&#xA;ElementIterator, as the name suggests, iteratates over the Element&#xA;tree.  The constructor can be invoked with either Document or an Element&#xA;as an argument.  If the constructor is invoked with a Document as an&#xA;argument then the root of the iteration is the return value of&#xA;document.getDefaultRootElement().&#xA;&#xA;The iteration happens in a depth-first manner.  In terms of how&#xA;boundary conditions are handled:&#xA;a) if next() is called before first() or current(), the&#xA;root will be returned.&#xA;b) next() returns null to indicate the end of the list.&#xA;c) previous() returns null when the current element is the root&#xA;or next() has returned null.&#xA;&#xA;The ElementIterator does no locking of the Element tree. This means&#xA;that it does not track any changes.  It is the responsibility of the&#xA;user of this class, to ensure that no changes happen during element&#xA;iteration.&#xA;&#xA;Simple usage example:&#xA;&#xA;public void iterate() {&#xA;ElementIterator it = new ElementIterator(root);&#xA;Element elem;&#xA;while (true) {&#xA;if ((elem = next()) != null) {&#xA;process element&#xA;System.out.println(&quot;elem: &quot; + elem.getName());&#xA;} else {&#xA;break;&#xA;}&#xA;}&#xA;}&#xA;&#xA;@author Sunita Mani&#xA;@version 1.14 12/19/03&#xA;&#xA;" annotatedElement="974b1632-9d9f-462c-bf8e-d43f8ba0ce0d"/>
              <interfaceRealization xmi:id="29cfe0fe-174d-4f37-83a7-376ad33e93f6" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="974b1632-9d9f-462c-bf8e-d43f8ba0ce0d" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="3c3c6fe0-06ce-428a-b8a0-0ea862e29930" name="StackItem" visibility="private" clientDependency="d83c6ef5-f11e-4531-aa27-494a613c80b7">
                <ownedComment xmi:id="dff240a3-ba15-4c77-aa09-dfff820955e7" body="The StackItem class stores the element&#xA;as well as a child index.  If the&#xA;index is -1, then the element represented&#xA;on the stack is the element itself.&#xA;Otherwise, the index functions as as index&#xA;into the vector of children of the element.&#xA;In this case, the item on the stack&#xA;represents the &quot;index&quot;th child of the element&#xA;&#xA;" annotatedElement="3c3c6fe0-06ce-428a-b8a0-0ea862e29930"/>
                <interfaceRealization xmi:id="d83c6ef5-f11e-4531-aa27-494a613c80b7" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="3c3c6fe0-06ce-428a-b8a0-0ea862e29930" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d410429e-c819-4f74-8033-825e3ad50afd" name="ZoneView">
              <ownedComment xmi:id="b13accd6-f5c0-432c-ac5b-7ce66f92386c" body="ZoneView is a View implementation that creates zones for which&#xA;the child views are not created or stored until they are needed&#xA;for display or model/view translations.  This enables a substantial&#xA;reduction in memory consumption for situations where the model&#xA;being represented is very large, by building view objects only for&#xA;the region being actively viewed/edited.  The size of the children&#xA;can be estimated in some way, or calculated asynchronously with&#xA;only the result being saved.&#xA;&lt;p>&#xA;ZoneView extends BoxView to provide a box that implements&#xA;zones for it's children.  The zones are special View implementations&#xA;(the children of an instance of this class) that represent only a&#xA;portion of the model that an instance of ZoneView is responsible&#xA;for.  The zones don't create child views until an attempt is made&#xA;to display them. A box shaped view is well suited to this because:&#xA;&lt;ul>&#xA;&lt;li>&#xA;Boxes are a heavily used view, and having a box that&#xA;provides this behavior gives substantial opportunity&#xA;to plug the behavior into a view hierarchy from the&#xA;view factory.&#xA;&lt;li>&#xA;Boxes are tiled in one direction, so it is easy to&#xA;divide them into zones in a reliable way.&#xA;&lt;li>&#xA;Boxes typically have a simple relationship to the model (i.e. they&#xA;create child views that directly represent the child elements).&#xA;&lt;li>&#xA;Boxes are easier to estimate the size of than some other shapes.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;The default behavior is controled by two properties, maxZoneSize&#xA;and maxZonesLoaded.  Setting maxZoneSize to Integer.MAX_VALUE would&#xA;have the effect of causing only one zone to be created.  This would&#xA;effectively turn the view into an implementation of the decorator&#xA;pattern.  Setting maxZonesLoaded to a value of Integer.MAX_VALUE would&#xA;cause zones to never be unloaded.  For simplicity, zones are created on&#xA;boundaries represented by the child elements of the element the view is&#xA;responsible for.  The zones can be any View implementation, but the&#xA;default implementation is based upon AsyncBoxView which supports fairly&#xA;large zones efficiently.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.17 12/19/03&#xA;@see     View&#xA;@since   1.3&#xA;" annotatedElement="d410429e-c819-4f74-8033-825e3ad50afd"/>
              <generalization xmi:id="dd43b18b-9706-4821-bafb-b672d8589c9a" isSubstitutable="true" general="21bc7467-2f3d-4452-af93-a254d26bf84f"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="e39621d8-dcda-4ffb-ad17-f06ad5a6e6ac" name="Zone" visibility="package">
                <ownedComment xmi:id="05be317b-8b13-4185-9924-5405e60af66e" body="Internally created view that has the purpose of holding&#xA;the views that represent the children of the ZoneView&#xA;that have been arranged in a zone.&#xA;" annotatedElement="e39621d8-dcda-4ffb-ad17-f06ad5a6e6ac"/>
                <generalization xmi:id="b0205583-efab-49fe-adf2-da2a1628567d" isSubstitutable="true" general="eed69a87-993a-4c1a-b4b6-bafdf0f4d09a"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e9f02124-8b18-4407-9a18-f31a273a80c3" name="LabelView" clientDependency="c3e3de0d-1d5c-4d7a-9db7-de89e3ebcaaa">
              <ownedComment xmi:id="0db24190-2008-4aaf-8a81-62f46a74c6b1" body="A &lt;code>LabelView&lt;/code> is a styled chunk of text&#xA;that represents a view mapped over an element in the&#xA;text model.  It caches the character level attributes&#xA;used for rendering.&#xA;&#xA;@author Timothy Prinzing&#xA;@version 1.68 06/28/04&#xA;" annotatedElement="e9f02124-8b18-4407-9a18-f31a273a80c3"/>
              <generalization xmi:id="3983620a-677a-49d0-8698-726ed0994580" isSubstitutable="true" general="efe89494-5782-49b2-ac23-97d168814f56"/>
              <interfaceRealization xmi:id="c3e3de0d-1d5c-4d7a-9db7-de89e3ebcaaa" name="" supplier="f616bb7c-1596-4944-985b-70ce95a8f715" client="e9f02124-8b18-4407-9a18-f31a273a80c3" contract="f616bb7c-1596-4944-985b-70ce95a8f715"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="21bc7467-2f3d-4452-af93-a254d26bf84f" name="BoxView">
              <ownedComment xmi:id="020ab65b-178e-41e8-acc4-e5c8828b52ec" body="A view that arranges its children into a box shape by tiling&#xA;its children along an axis.  The box is somewhat like that&#xA;found in TeX where there is alignment of the&#xA;children, flexibility of the children is considered, etc.&#xA;This is a building block that might be useful to represent&#xA;things like a collection of lines, paragraphs,&#xA;lists, columns, pages, etc.  The axis along which the children are tiled is&#xA;considered the major axis.  The orthoginal axis is the minor axis.&#xA;&lt;p>&#xA;Layout for each axis is handled separately by the methods&#xA;&lt;code>layoutMajorAxis&lt;/code> and &lt;code>layoutMinorAxis&lt;/code>.&#xA;Subclasses can change the layout algorithm by&#xA;reimplementing these methods.    These methods will be called&#xA;as necessary depending upon whether or not there is cached&#xA;layout information and the cache is considered&#xA;valid.  These methods are typically called if the given size&#xA;along the axis changes, or if &lt;code>layoutChanged&lt;/code> is&#xA;called to force an updated layout.  The &lt;code>layoutChanged&lt;/code>&#xA;method invalidates cached layout information, if there is any.&#xA;The requirements published to the parent view are calculated by&#xA;the methods &lt;code>calculateMajorAxisRequirements&lt;/code>&#xA;and  &lt;code>calculateMinorAxisRequirements&lt;/code>.&#xA;If the layout algorithm is changed, these methods will&#xA;likely need to be reimplemented.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.61 03/05/04&#xA;" annotatedElement="21bc7467-2f3d-4452-af93-a254d26bf84f"/>
              <generalization xmi:id="a054eee4-8245-4bab-b7ca-113ac72e0f36" isSubstitutable="true" general="921a61fb-ee13-4ede-8408-998656f76875"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="adcb1769-ab8f-46e7-bb6a-b279d64dd48c" name="StyledEditorKit">
              <ownedComment xmi:id="6022e509-a68e-4671-8f88-03bde01ec6d0" body="This is the set of things needed by a text component&#xA;to be a reasonably functioning editor for some &lt;em>type&lt;/em>&#xA;of text document.  This implementation provides a default&#xA;implementation which treats text as styled text and&#xA;provides a minimal set of actions for editing styled text.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.45 02/04/04&#xA;" annotatedElement="adcb1769-ab8f-46e7-bb6a-b279d64dd48c"/>
              <generalization xmi:id="d91386fd-a34b-4388-8430-865af082d558" isSubstitutable="true" general="638f44d8-d827-4f2f-bc04-3ab6e61eeeee"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0e902bb0-d6b2-472a-b9bc-72724cba035e" name="AttributeTracker" visibility="package" clientDependency="742d3716-5d62-4756-b16f-16f801f02633 353a616c-ac8b-4172-9e2a-5d0aa3814326 48b2d6f4-7b5b-43d2-aa72-0b6a8b2070e7">
                <ownedComment xmi:id="fd1f8552-635d-4de5-912d-e9123a7a3453" body="Tracks caret movement and keeps the input attributes set&#xA;to reflect the current set of attribute definitions at the&#xA;caret position.&#xA;&lt;p>This implements PropertyChangeListener to update the&#xA;input attributes when the Document changes, as if the Document&#xA;changes the attributes will almost certainly change.&#xA;" annotatedElement="0e902bb0-d6b2-472a-b9bc-72724cba035e"/>
                <interfaceRealization xmi:id="742d3716-5d62-4756-b16f-16f801f02633" name="" supplier="7f3dfbae-e88f-4d3a-854b-189e70ccdda1" client="0e902bb0-d6b2-472a-b9bc-72724cba035e" contract="7f3dfbae-e88f-4d3a-854b-189e70ccdda1"/>
                <interfaceRealization xmi:id="353a616c-ac8b-4172-9e2a-5d0aa3814326" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="0e902bb0-d6b2-472a-b9bc-72724cba035e" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <interfaceRealization xmi:id="48b2d6f4-7b5b-43d2-aa72-0b6a8b2070e7" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0e902bb0-d6b2-472a-b9bc-72724cba035e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="046347ae-851a-4a7f-a28d-8da6e5fd1806" name="StyledViewFactory" visibility="package" clientDependency="c95f5093-b147-4da9-86fc-ae2538fce9fd">
                <interfaceRealization xmi:id="c95f5093-b147-4da9-86fc-ae2538fce9fd" name="" supplier="e3a1d3f4-af71-4ce0-962d-e7b0b2295c0d" client="046347ae-851a-4a7f-a28d-8da6e5fd1806" contract="e3a1d3f4-af71-4ce0-962d-e7b0b2295c0d"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6d5b1c6d-7b0a-4924-83e8-e41c0da9e864" name="StyledTextAction" isAbstract="true">
                <ownedComment xmi:id="00cc1b51-b1e7-49d3-a616-aee1f8e5b787" body="An action that assumes it's being fired on a JEditorPane&#xA;with a StyledEditorKit (or subclass) installed.  This has&#xA;some convenience methods for causing character or paragraph&#xA;level attribute changes.  The convenience methods will&#xA;throw an IllegalArgumentException if the assumption of&#xA;a StyledDocument, a JEditorPane, or a StyledEditorKit&#xA;fail to be true.&#xA;&lt;p>&#xA;The component that gets acted upon by the action&#xA;will be the source of the ActionEvent if the source&#xA;can be narrowed to a JEditorPane type.  If the source&#xA;can't be narrowed, the most recently focused text&#xA;component is changed.  If neither of these are the&#xA;case, the action cannot be performed.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="6d5b1c6d-7b0a-4924-83e8-e41c0da9e864"/>
                <generalization xmi:id="8864fcd5-549f-41db-8f88-33fc884b0a42" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="e50f1002-7e4e-4169-8b5f-c7104159a9a6" name="FontFamilyAction">
                <ownedComment xmi:id="85d47d13-bdfa-4981-83a4-8903167ae740" body="An action to set the font family in the associated&#xA;JEditorPane.  This will use the family specified as&#xA;the command string on the ActionEvent if there is one,&#xA;otherwise the family that was initialized with will be used.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="e50f1002-7e4e-4169-8b5f-c7104159a9a6"/>
                <generalization xmi:id="652b496b-ffc2-49d3-bbf4-46ad5bf22b2d" isSubstitutable="true" general="6d5b1c6d-7b0a-4924-83e8-e41c0da9e864"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="150a135c-6cb8-4227-bf85-ec28dff469d1" name="FontSizeAction">
                <ownedComment xmi:id="756d1fb4-077a-4f48-928c-0e9132801117" body="An action to set the font size in the associated&#xA;JEditorPane.  This will use the size specified as&#xA;the command string on the ActionEvent if there is one,&#xA;otherwise the size that was initialized with will be used.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="150a135c-6cb8-4227-bf85-ec28dff469d1"/>
                <generalization xmi:id="9111e787-031c-4f56-953c-da42c07e45a0" isSubstitutable="true" general="6d5b1c6d-7b0a-4924-83e8-e41c0da9e864"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="16e8fa56-a09b-481d-b8b4-0ddd8201ffea" name="ForegroundAction">
                <ownedComment xmi:id="e1878f5d-2b4e-4340-938d-3cec43353a77" body="An action to set foreground color.  This sets the&#xA;&lt;code>StyleConstants.Foreground&lt;/code> attribute for the&#xA;currently selected range of the target JEditorPane.&#xA;This is done by calling&#xA;&lt;code>StyledDocument.setCharacterAttributes&lt;/code>&#xA;on the styled document associated with the target&#xA;JEditorPane.&#xA;&lt;p>&#xA;If the target text component is specified as the&#xA;source of the ActionEvent and there is a command string,&#xA;the command string will be interpreted as the foreground&#xA;color.  It will be interpreted by called&#xA;&lt;code>Color.decode&lt;/code>, and should therefore be&#xA;legal input for that method.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="16e8fa56-a09b-481d-b8b4-0ddd8201ffea"/>
                <generalization xmi:id="b6f94b50-3a33-4ee5-a7d2-4da8fdab1bbe" isSubstitutable="true" general="6d5b1c6d-7b0a-4924-83e8-e41c0da9e864"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="fda1c31c-8c39-43d8-9ff8-6d2fcf55cc19" name="AlignmentAction">
                <ownedComment xmi:id="7f9016d7-c95b-4ec8-a2cb-c589327daedf" body="An action to set paragraph alignment.  This sets the&#xA;&lt;code>StyleConstants.Alignment&lt;/code> attribute for the&#xA;currently selected range of the target JEditorPane.&#xA;This is done by calling&#xA;&lt;code>StyledDocument.setParagraphAttributes&lt;/code>&#xA;on the styled document associated with the target&#xA;JEditorPane.&#xA;&lt;p>&#xA;If the target text component is specified as the&#xA;source of the ActionEvent and there is a command string,&#xA;the command string will be interpreted as an integer&#xA;that should be one of the legal values for the&#xA;&lt;code>StyleConstants.Alignment&lt;/code> attribute.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="fda1c31c-8c39-43d8-9ff8-6d2fcf55cc19"/>
                <generalization xmi:id="bfef6f2e-d865-4ba7-b3ca-acd93ef3924e" isSubstitutable="true" general="6d5b1c6d-7b0a-4924-83e8-e41c0da9e864"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="320b69d3-0732-45bd-8b75-f1af7fb70a04" name="BoldAction">
                <ownedComment xmi:id="025a0bca-b5cf-4b99-8330-cdfaa6869480" body="An action to toggle the bold attribute.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="320b69d3-0732-45bd-8b75-f1af7fb70a04"/>
                <generalization xmi:id="bbbde80f-0dd5-497e-bfa7-59442f58983b" isSubstitutable="true" general="6d5b1c6d-7b0a-4924-83e8-e41c0da9e864"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="a6a40341-1fb5-4d24-bd3e-f1b05010a505" name="ItalicAction">
                <ownedComment xmi:id="aafc54bb-9580-4c70-b5d1-08e60e5a0384" body="An action to toggle the italic attribute.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="a6a40341-1fb5-4d24-bd3e-f1b05010a505"/>
                <generalization xmi:id="13638b3c-474b-4e8a-aed8-d94b22863221" isSubstitutable="true" general="6d5b1c6d-7b0a-4924-83e8-e41c0da9e864"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="34d50eb0-d996-4867-8c06-19d90fc24f4e" name="UnderlineAction">
                <ownedComment xmi:id="b771e552-356d-4777-a439-33a638af3bc3" body="An action to toggle the underline attribute.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="34d50eb0-d996-4867-8c06-19d90fc24f4e"/>
                <generalization xmi:id="ae9e1ac4-0c5e-46e0-842b-020b360ea4f9" isSubstitutable="true" general="6d5b1c6d-7b0a-4924-83e8-e41c0da9e864"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="79bc69d8-fa65-4ec1-a250-340e8665c005" name="StyledInsertBreakAction" visibility="package">
                <ownedComment xmi:id="301fc310-ed1d-479c-beec-6c48e4cb2f44" body="StyledInsertBreakAction has similar behavior to that of&#xA;&lt;code>DefaultEditorKit.InsertBreakAction&lt;/code>. That is when&#xA;its &lt;code>actionPerformed&lt;/code> method is invoked, a newline&#xA;is inserted. Beyond that, this will reset the input attributes to&#xA;what they were before the newline was inserted.&#xA;" annotatedElement="79bc69d8-fa65-4ec1-a250-340e8665c005"/>
                <generalization xmi:id="b9386e14-3e48-4bb5-acd8-3150feeb6302" isSubstitutable="true" general="6d5b1c6d-7b0a-4924-83e8-e41c0da9e864"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d1f20ab2-0faa-4376-9f82-0f9c00f6bb90" name="FieldView">
              <ownedComment xmi:id="570689c7-2d1f-41d6-bb87-c692c559bf4b" body="Extends the multi-line plain text view to be suitable&#xA;for a single-line editor view.  If the view is&#xA;allocated extra space, the field must adjust for it.&#xA;If the hosting component is a JTextField, this view&#xA;will manage the ranges of the associated BoundedRangeModel&#xA;and will adjust the horizontal allocation to match the&#xA;current visibility settings of the JTextField.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.25 12/19/03&#xA;@see     View&#xA;" annotatedElement="d1f20ab2-0faa-4376-9f82-0f9c00f6bb90"/>
              <generalization xmi:id="8f0ffbb9-13d6-4321-8d55-1c3816cd45d3" isSubstitutable="true" general="875a0cbd-921f-4a58-91b4-b21e826a824e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="41880b03-9d0b-427d-8989-efd10e1e295a" name="DateFormatter">
              <ownedComment xmi:id="a4d27537-ae98-4a71-ae56-6c47b02d6b0a" body="DateFormatter is an &lt;code>InternationalFormatter&lt;/code> that does its&#xA;formatting by way of an instance of &lt;code>java.text.DateFormat&lt;/code>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see java.text.DateFormat&#xA;&#xA;@version 1.5 04/09/01&#xA;@since 1.4&#xA;" annotatedElement="41880b03-9d0b-427d-8989-efd10e1e295a"/>
              <generalization xmi:id="8993b211-2aa4-48dc-a202-8bf2b42cc9e7" isSubstitutable="true" general="f2bda7bb-632f-4c90-b2b5-25789ef98ccb"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5aa16894-767b-4c46-a10a-e130c0ff3d92" name="TextLayoutStrategy" visibility="package">
              <ownedComment xmi:id="af62171c-fbcd-450c-9184-5a163de894ae" body="A flow strategy that uses java.awt.font.LineBreakMeasureer to&#xA;produce java.awt.font.TextLayout for i18n capable rendering.&#xA;If the child view being placed into the flow is of type&#xA;GlyphView and can be rendered by TextLayout, a GlyphPainter&#xA;that uses TextLayout is plugged into the GlyphView.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.22 05/05/04&#xA;" annotatedElement="5aa16894-767b-4c46-a10a-e130c0ff3d92"/>
              <generalization xmi:id="a28d561d-187d-475e-8b56-0d6c78662287" isSubstitutable="true" general="5bbb271f-8ad1-4cce-a722-5195d547a880"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="5b633551-5b55-490e-a027-95f1dcb3c1cc" name="AttributedSegment" visibility="package" clientDependency="ae85a898-104b-49b8-adc6-02b2211f4eea">
                <ownedComment xmi:id="ad90a529-e0c0-49db-b0dd-9a2d2902f7ee" body="Implementation of AttributedCharacterIterator that supports&#xA;the GlyphView attributes for rendering the glyphs through a&#xA;TextLayout.&#xA;" annotatedElement="5b633551-5b55-490e-a027-95f1dcb3c1cc"/>
                <generalization xmi:id="bcd6a4f4-a391-4463-a7a2-050aa0350b3f" isSubstitutable="true" general="478d78bb-16f5-4c49-b06d-f85bef80ef4f"/>
                <interfaceRealization xmi:id="ae85a898-104b-49b8-adc6-02b2211f4eea" name="" supplier="5ba316b1-ef90-436f-aa60-bf5bdaa9ad19" client="5b633551-5b55-490e-a027-95f1dcb3c1cc" contract="5ba316b1-ef90-436f-aa60-bf5bdaa9ad19"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="844eee80-e5fd-4f7a-821a-e09286fa6abf" name="DefaultFormatterFactory" clientDependency="953d7f14-e540-4ec6-9be6-532671df776f">
              <ownedComment xmi:id="5270684c-4ac4-4f61-9282-a746ab208413" body="An implementation of&#xA;&lt;code>JFormattedTextField.AbstractFormatterFactory&lt;/code>.&#xA;&lt;code>DefaultFormatterFactory&lt;/code> allows specifying a number of&#xA;different &lt;code>JFormattedTextField.AbstractFormatter&lt;/code>s that are to&#xA;be used.&#xA;The most important one is the default one&#xA;(&lt;code>setDefaultFormatter&lt;/code>). The default formatter will be used&#xA;if a more specific formatter could not be found. The following process&#xA;is used to determine the appropriate formatter to use.&#xA;&lt;ol>&#xA;&lt;li>Is the passed in value null? Use the null formatter.&#xA;&lt;li>Does the &lt;code>JFormattedTextField&lt;/code> have focus? Use the edit&#xA;formatter.&#xA;&lt;li>Otherwise, use the display formatter.&#xA;&lt;li>If a non-null &lt;code>AbstractFormatter&lt;/code> has not been found, use&#xA;the default formatter.&#xA;&lt;/ol>&#xA;&lt;p>&#xA;The following code shows how to configure a&#xA;&lt;code>JFormattedTextField&lt;/code> with two&#xA;&lt;code>JFormattedTextField.AbstractFormatter&lt;/code>s, one for display and&#xA;one for editing.&#xA;&lt;pre>&#xA;JFormattedTextField.AbstractFormatter editFormatter = ...;&#xA;JFormattedTextField.AbstractFormatter displayFormatter = ...;&#xA;DefaultFormatterFactory factory = new DefaultFormatterFactory(&#xA;displayFormatter, displayFormatter, editFormatter);&#xA;JFormattedTextField tf = new JFormattedTextField(factory);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see javax.swing.JFormattedTextField&#xA;&#xA;@version 1.8 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="844eee80-e5fd-4f7a-821a-e09286fa6abf"/>
              <generalization xmi:id="dabcc923-7064-41cf-b8bb-1be1c528b93f" isSubstitutable="true" general="c8c7842a-fbe8-4764-89d4-8c2da7995687"/>
              <interfaceRealization xmi:id="953d7f14-e540-4ec6-9be6-532671df776f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="844eee80-e5fd-4f7a-821a-e09286fa6abf" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="64ba1159-e043-4105-970c-ca441fa77872" name="StyleConstants">
              <ownedComment xmi:id="a64974a7-f6a1-4742-88b0-3fc02fd5ca76" body="&lt;p>&#xA;A collection of &lt;em>well known&lt;/em> or common attribute keys&#xA;and methods to apply to an AttributeSet or MutableAttributeSet&#xA;to get/set the properties in a typesafe manner.&#xA;&lt;p>&#xA;The paragraph attributes form the definition of a paragraph to be rendered.&#xA;All sizes are specified in points (such as found in postscript), a&#xA;device independent measure.&#xA;&lt;/p>&#xA;&lt;p align=center>&lt;img src=&quot;doc-files/paragraph.gif&quot;&#xA;alt=&quot;Diagram shows SpaceAbove, FirstLineIndent, LeftIndent, RightIndent,&#xA;and SpaceBelow a paragraph.&quot;>&lt;/p>&#xA;&lt;p>&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.36 12/19/03&#xA;" annotatedElement="64ba1159-e043-4105-970c-ca441fa77872"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8e345298-b938-4432-8110-74620a9bf45e" name="ParagraphConstants" clientDependency="718dbb37-ac79-48bb-8e82-978f68ac50c1">
                <ownedComment xmi:id="a52e1a2a-1512-42d2-b0f9-1bc4890994b2" body="This is a typesafe enumeration of the &lt;em>well-known&lt;/em>&#xA;attributes that contribute to a paragraph style.  These are&#xA;aliased by the outer class for general presentation.&#xA;" annotatedElement="8e345298-b938-4432-8110-74620a9bf45e"/>
                <generalization xmi:id="8d59daac-7988-48d4-bb98-9de7fe35744d" isSubstitutable="true" general="64ba1159-e043-4105-970c-ca441fa77872"/>
                <interfaceRealization xmi:id="718dbb37-ac79-48bb-8e82-978f68ac50c1" name="" supplier="81b2da61-5d6b-46f3-b75a-db8ef305bc2f" client="8e345298-b938-4432-8110-74620a9bf45e" contract="81b2da61-5d6b-46f3-b75a-db8ef305bc2f"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="df2c32b5-ad21-4746-8cfb-82bb1b22ddca" name="CharacterConstants" clientDependency="c53de67c-90fa-4c46-a30d-01c16b9de6a4">
                <ownedComment xmi:id="596442b5-2d3a-4215-a4b4-98773f3b6e14" body="This is a typesafe enumeration of the &lt;em>well-known&lt;/em>&#xA;attributes that contribute to a character style.  These are&#xA;aliased by the outer class for general presentation.&#xA;" annotatedElement="df2c32b5-ad21-4746-8cfb-82bb1b22ddca"/>
                <generalization xmi:id="ccb1dbea-ec37-4b4f-817e-55f0d25c0fd8" isSubstitutable="true" general="64ba1159-e043-4105-970c-ca441fa77872"/>
                <interfaceRealization xmi:id="c53de67c-90fa-4c46-a30d-01c16b9de6a4" name="" supplier="91c4dc84-9d03-4084-8a67-c0c71b84a485" client="df2c32b5-ad21-4746-8cfb-82bb1b22ddca" contract="91c4dc84-9d03-4084-8a67-c0c71b84a485"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="cda3213b-8260-4f94-9063-99dbae87501a" name="ColorConstants" clientDependency="a5936142-5d2e-49d6-8c99-6057c9b6e85b fdfa4357-50bf-4dda-a86b-0d37d6cded83">
                <ownedComment xmi:id="9d5621dc-0400-4780-815e-10ddef08b73a" body="This is a typesafe enumeration of the &lt;em>well-known&lt;/em>&#xA;attributes that contribute to a color.  These are aliased&#xA;by the outer class for general presentation.&#xA;" annotatedElement="cda3213b-8260-4f94-9063-99dbae87501a"/>
                <generalization xmi:id="f76143a4-2967-4177-b853-2a185155fd93" isSubstitutable="true" general="64ba1159-e043-4105-970c-ca441fa77872"/>
                <interfaceRealization xmi:id="a5936142-5d2e-49d6-8c99-6057c9b6e85b" name="" supplier="e3eaeed0-bb69-4822-8ef0-762a03d11e22" client="cda3213b-8260-4f94-9063-99dbae87501a" contract="e3eaeed0-bb69-4822-8ef0-762a03d11e22"/>
                <interfaceRealization xmi:id="fdfa4357-50bf-4dda-a86b-0d37d6cded83" name="" supplier="91c4dc84-9d03-4084-8a67-c0c71b84a485" client="cda3213b-8260-4f94-9063-99dbae87501a" contract="91c4dc84-9d03-4084-8a67-c0c71b84a485"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="478e122a-51d0-4bcc-9c5d-a12a9b3d46f0" name="FontConstants" clientDependency="27a67763-9656-4d65-994f-e39c52efacf8 452323cd-9c26-453a-b128-ceac08bec534">
                <ownedComment xmi:id="79b54fbb-a29b-4ca4-b64e-2e0a3de3ea74" body="This is a typesafe enumeration of the &lt;em>well-known&lt;/em>&#xA;attributes that contribute to a font.  These are aliased&#xA;by the outer class for general presentation.&#xA;" annotatedElement="478e122a-51d0-4bcc-9c5d-a12a9b3d46f0"/>
                <generalization xmi:id="ece5c2d6-e569-4afa-9288-0b4c85c8b37b" isSubstitutable="true" general="64ba1159-e043-4105-970c-ca441fa77872"/>
                <interfaceRealization xmi:id="27a67763-9656-4d65-994f-e39c52efacf8" name="" supplier="64cbe558-33e3-4c08-92b5-8c0b5919313b" client="478e122a-51d0-4bcc-9c5d-a12a9b3d46f0" contract="64cbe558-33e3-4c08-92b5-8c0b5919313b"/>
                <interfaceRealization xmi:id="452323cd-9c26-453a-b128-ceac08bec534" name="" supplier="91c4dc84-9d03-4084-8a67-c0c71b84a485" client="478e122a-51d0-4bcc-9c5d-a12a9b3d46f0" contract="91c4dc84-9d03-4084-8a67-c0c71b84a485"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f136ff6a-f89d-4e2c-8284-640d0aa408eb" name="ParagraphView" clientDependency="62d5e3c1-c3f0-4d30-a055-e88c9a834eda">
              <ownedComment xmi:id="d6f8fcb4-8d5e-4f98-8be6-379e3a1d0a33" body="View of a simple line-wrapping paragraph that supports&#xA;multiple fonts, colors, components, icons, etc.  It is&#xA;basically a vertical box with a margin around it.  The&#xA;contents of the box are a bunch of rows which are special&#xA;horizontal boxes.  This view creates a collection of&#xA;views that represent the child elements of the paragraph&#xA;element.  Each of these views are placed into a row&#xA;directly if they will fit, otherwise the &lt;code>breakView&lt;/code>&#xA;method is called to try and carve the view into pieces&#xA;that fit.&#xA;&#xA;@author  Timothy Prinzing&#xA;@author  Scott Violet&#xA;@version 1.90 04/16/03&#xA;@see     View&#xA;" annotatedElement="f136ff6a-f89d-4e2c-8284-640d0aa408eb"/>
              <generalization xmi:id="8883c47f-1c02-46cd-a11c-519aa1c0f379" isSubstitutable="true" general="a12979bf-dc25-465a-99b1-80834b828e26"/>
              <interfaceRealization xmi:id="62d5e3c1-c3f0-4d30-a055-e88c9a834eda" name="" supplier="3216e397-d46f-4b97-83bc-9d08d4eed789" client="f136ff6a-f89d-4e2c-8284-640d0aa408eb" contract="3216e397-d46f-4b97-83bc-9d08d4eed789"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="c2e22c57-fa53-4d12-9ecd-b856f4877b1d" name="Row" visibility="package">
                <ownedComment xmi:id="8637402f-3e3a-45ba-be91-d6632f9c9a7b" body="Internally created view that has the purpose of holding&#xA;the views that represent the children of the paragraph&#xA;that have been arranged in rows.&#xA;" annotatedElement="c2e22c57-fa53-4d12-9ecd-b856f4877b1d"/>
                <generalization xmi:id="92b1529f-a032-4429-84a3-dc4dda3115a0" isSubstitutable="true" general="21bc7467-2f3d-4452-af93-a254d26bf84f"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="7f676a2f-d6d1-458c-bdb5-9b59ef3b7eb1" name="Caret" isAbstract="true">
              <ownedComment xmi:id="a4361e9c-a365-445d-86cf-43ede911bb94" body="A place within a document view that represents where&#xA;things can be inserted into the document model.  A caret&#xA;has a position in the document referred to as a dot.&#xA;The dot is where the caret is currently located in the&#xA;model.  There is&#xA;a second position maintained by the caret that represents&#xA;the other end of a selection called mark.  If there is&#xA;no selection the dot and mark will be equal.  If a selection&#xA;exists, the two values will be different.&#xA;&lt;p>&#xA;The dot can be placed by either calling&#xA;&lt;code>setDot&lt;/code> or &lt;code>moveDot&lt;/code>.  Setting&#xA;the dot has the effect of removing any selection that may&#xA;have previously existed.  The dot and mark will be equal.&#xA;Moving the dot has the effect of creating a selection as&#xA;the mark is left at whatever position it previously had.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.30 12/19/03&#xA;" annotatedElement="7f676a2f-d6d1-458c-bdb5-9b59ef3b7eb1"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c038627a-3c3d-4818-a3ec-07acfbe4d685" name="GlyphPainter1" visibility="package">
              <ownedComment xmi:id="bd602d2b-eb83-4d98-bedc-66143d3ab8a5" body="A class to perform rendering of the glyphs.&#xA;This can be implemented to be stateless, or&#xA;to hold some information as a cache to&#xA;facilitate faster rendering and model/view&#xA;translation.  At a minimum, the GlyphPainter&#xA;allows a View implementation to perform its&#xA;duties independent of a particular version&#xA;of JVM and selection of capabilities (i.e.&#xA;shaping for i18n, etc).&#xA;&lt;p>&#xA;This implementation is intended for operation&#xA;under the JDK1.1 API of the Java Platform.&#xA;Since the JDK is backward compatible with&#xA;JDK1.1 API, this class will also function on&#xA;Java 2.  The JDK introduces improved&#xA;API for rendering text however, so the GlyphPainter2&#xA;is recommended for the DK.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.18 06/28/04&#xA;@see GlyphView&#xA;" annotatedElement="c038627a-3c3d-4818-a3ec-07acfbe4d685"/>
              <generalization xmi:id="f64fb6f1-34cc-468d-b6bb-7d1ef38a1012" isSubstitutable="true" general="f8686d37-9d9e-4909-9dea-f1c70f6a2a55"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2c9474a6-9ae9-4dee-b817-9d1e6eaf0358" name="PasswordView">
              <ownedComment xmi:id="58ce844f-149f-4fdc-b37b-fa05c3134e32" body="Implements a View suitable for use in JPasswordField&#xA;UI implementations.  This is basically a field ui that&#xA;renders its contents as the echo character specified&#xA;in the associated component (if it can narrow the&#xA;component to a JPasswordField).&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.20 04/15/04&#xA;@see     View&#xA;" annotatedElement="2c9474a6-9ae9-4dee-b817-9d1e6eaf0358"/>
              <generalization xmi:id="ace4eb5c-b4c5-4b0f-abe1-539fc143f7ac" isSubstitutable="true" general="d1f20ab2-0faa-4376-9f82-0f9c00f6bb90"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="de2dc809-78c4-4fee-9a14-26108eab795d" name="DefaultStyledDocument" clientDependency="96b0788a-72af-47c3-9009-17d68878da23">
              <ownedComment xmi:id="63286e3e-4dee-474f-b687-767fb5806bcf" body="A document that can be marked up with character and paragraph&#xA;styles in a manner similar to the Rich Text Format.  The element&#xA;structure for this document represents style crossings for&#xA;style runs.  These style runs are mapped into a paragraph element&#xA;structure (which may reside in some other structure).  The&#xA;style runs break at paragraph boundaries since logical styles are&#xA;assigned to paragraph boundaries.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.124 05/05/04&#xA;@see     Document&#xA;@see     AbstractDocument&#xA;" annotatedElement="de2dc809-78c4-4fee-9a14-26108eab795d"/>
              <generalization xmi:id="550ebb3f-7aa9-49aa-8086-6e18be1c639f" isSubstitutable="true" general="3fd6e7dd-7f4e-4cae-a36c-0657262b7ed7"/>
              <interfaceRealization xmi:id="96b0788a-72af-47c3-9009-17d68878da23" name="" supplier="1a2642e7-6b6d-457d-bd21-34355fd52412" client="de2dc809-78c4-4fee-9a14-26108eab795d" contract="1a2642e7-6b6d-457d-bd21-34355fd52412"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="dd9025f2-2a88-4ba4-9416-dd08966baed8" name="SectionElement" visibility="protected">
                <ownedComment xmi:id="82b7af3b-d9fc-4b55-88cd-152650f3e29b" body="Default root element for a document... maps out the&#xA;paragraphs/lines contained.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="dd9025f2-2a88-4ba4-9416-dd08966baed8"/>
                <generalization xmi:id="0019158b-6579-403a-9a43-aade0ca3cafc" isSubstitutable="true" general="ec19227e-e149-4e07-b09d-8bb50d3628ad"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="2227726b-f61a-4fab-ad76-522c5fae671d" name="ElementSpec">
                <ownedComment xmi:id="5c8137a8-38a3-43e9-9b30-42e2df9870c4" body="Specification for building elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="2227726b-f61a-4fab-ad76-522c5fae671d"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="21673b79-dc9c-4bff-aa63-c284e5da1f1f" name="ElementBuffer" clientDependency="70f096a3-5a8f-4847-8198-617425cd9ec2">
                <ownedComment xmi:id="f86fc627-ae1e-4f77-95c5-06ae7b68cafc" body="Class to manage changes to the element&#xA;hierarchy.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="21673b79-dc9c-4bff-aa63-c284e5da1f1f"/>
                <interfaceRealization xmi:id="70f096a3-5a8f-4847-8198-617425cd9ec2" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="21673b79-dc9c-4bff-aa63-c284e5da1f1f" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6d734e58-e35a-43d4-b398-f768ce44092e" name="ElemChanges" visibility="package"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6db7c662-5e40-4ecb-ae3b-823bd6993cab" name="AttributeUndoableEdit">
                <ownedComment xmi:id="f79d2588-c696-4522-b8dc-1b5552ce2613" body="An UndoableEdit used to remember AttributeSet changes to an&#xA;Element.&#xA;" annotatedElement="6db7c662-5e40-4ecb-ae3b-823bd6993cab"/>
                <generalization xmi:id="2a5dfdf6-9181-4fff-9b33-3a81bce812c1" isSubstitutable="true" general="01807a27-262a-407f-9ff1-9f482a3fceb4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="9878ddc3-7238-4617-ae85-a63b9c78c4ca" name="StyleChangeUndoableEdit" visibility="package">
                <ownedComment xmi:id="01a1313f-7ebe-4dd1-935a-1cc32064df78" body="UndoableEdit for changing the resolve parent of an Element.&#xA;" annotatedElement="9878ddc3-7238-4617-ae85-a63b9c78c4ca"/>
                <generalization xmi:id="2a757af5-afcb-48d6-9b70-817e514e608f" isSubstitutable="true" general="01807a27-262a-407f-9ff1-9f482a3fceb4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="e8b21f1b-581c-48d2-92e5-e5bdc200bacd" name="StyleChangeHandler" visibility="package" clientDependency="44986647-88b2-4ced-b471-5ebe5660a6f9">
                <ownedComment xmi:id="052ad19a-00e7-4c0b-982d-fe92bb816365" body="Added to all the Styles. When instances of this receive a&#xA;stateChanged method, styleChanged is invoked.&#xA;" annotatedElement="e8b21f1b-581c-48d2-92e5-e5bdc200bacd"/>
                <interfaceRealization xmi:id="44986647-88b2-4ced-b471-5ebe5660a6f9" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="e8b21f1b-581c-48d2-92e5-e5bdc200bacd" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="47f437bf-6236-4629-80c8-6e855abb0251" name="StyleContextChangeHandler" visibility="package" clientDependency="85ba5b23-56e2-49a0-91ce-7f5d7dd1964e">
                <ownedComment xmi:id="b455a433-0167-4041-9b27-61587ba09750" body="Added to the StyleContext. When the StyleContext changes, this invokes&#xA;&lt;code>updateStylesListeningTo&lt;/code>.&#xA;" annotatedElement="47f437bf-6236-4629-80c8-6e855abb0251"/>
                <interfaceRealization xmi:id="85ba5b23-56e2-49a0-91ce-7f5d7dd1964e" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="47f437bf-6236-4629-80c8-6e855abb0251" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="b79cce7d-2138-49ef-bd66-aa196e00d664" name="ChangeUpdateRunnable" visibility="package" clientDependency="bbaf2fb8-151e-4cac-a1a9-9fc5b9c18281">
                <ownedComment xmi:id="b0d71a6e-fa21-4668-924b-dbcf0821aeff" body="When run this creates a change event for the complete document&#xA;and fires it.&#xA;" annotatedElement="b79cce7d-2138-49ef-bd66-aa196e00d664"/>
                <interfaceRealization xmi:id="bbaf2fb8-151e-4cac-a1a9-9fc5b9c18281" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="b79cce7d-2138-49ef-bd66-aa196e00d664" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="875a0cbd-921f-4a58-91b4-b21e826a824e" name="PlainView" clientDependency="493a842b-5739-4d9f-b129-2cc7d24b62eb">
              <ownedComment xmi:id="34162c9b-c848-41d9-bca6-1d2693f24328" body="Implements View interface for a simple multi-line text view&#xA;that has text in one font and color.  The view represents each&#xA;child element as a line of text.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.74 04/15/04&#xA;@see     View&#xA;" annotatedElement="875a0cbd-921f-4a58-91b4-b21e826a824e"/>
              <generalization xmi:id="65f598df-f946-4cb2-a222-6f388f712257" isSubstitutable="true" general="a12ab75d-4ae8-40c5-ac6c-848d1ef3f725"/>
              <interfaceRealization xmi:id="493a842b-5739-4d9f-b129-2cc7d24b62eb" name="" supplier="3216e397-d46f-4b97-83bc-9d08d4eed789" client="875a0cbd-921f-4a58-91b4-b21e826a824e" contract="3216e397-d46f-4b97-83bc-9d08d4eed789"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="3fd6e7dd-7f4e-4cae-a36c-0657262b7ed7" name="AbstractDocument" clientDependency="f83c3bac-81a8-4739-b0bb-6806da8d4cc7 ce2e9dcf-f112-4922-8ac1-87bf2e34759e" isAbstract="true">
              <ownedComment xmi:id="033bcfed-1116-4981-b640-704db8f20c11" body="An implementation of the document interface to serve as a&#xA;basis for implementing various kinds of documents.  At this&#xA;level there is very little policy, so there is a corresponding&#xA;increase in difficulty of use.&#xA;&lt;p>&#xA;This class implements a locking mechanism for the document.  It&#xA;allows multiple readers or one writer, and writers must wait until&#xA;all observers of the document have been notified of a previous&#xA;change before beginning another mutation to the document.  The&#xA;read lock is acquired and released using the &lt;code>render&lt;/code>&#xA;method.  A write lock is aquired by the methods that mutate the&#xA;document, and are held for the duration of the method call.&#xA;Notification is done on the thread that produced the mutation,&#xA;and the thread has full read access to the document for the&#xA;duration of the notification, but other readers are kept out&#xA;until the notification has finished.  The notification is a&#xA;beans event notification which does not allow any further&#xA;mutations until all listeners have been notified.&#xA;&lt;p>&#xA;Any models subclassed from this class and used in conjunction&#xA;with a text component that has a look and feel implementation&#xA;that is derived from BasicTextUI may be safely updated&#xA;asynchronously, because all access to the View hierarchy&#xA;is serialized by BasicTextUI if the document is of type&#xA;&lt;code>AbstractDocument&lt;/code>.  The locking assumes that an&#xA;independant thread will access the View hierarchy only from&#xA;the DocumentListener methods, and that there will be only&#xA;one event thread active at a time.&#xA;&lt;p>&#xA;If concurrency support is desired, there are the following&#xA;additional implications.  The code path for any DocumentListener&#xA;implementation and any UndoListener implementation must be threadsafe,&#xA;and not access the component lock if trying to be safe from deadlocks.&#xA;The &lt;code>repaint&lt;/code> and &lt;code>revalidate&lt;/code> methods&#xA;on JComponent are safe.&#xA;&lt;p>&#xA;AbstractDocument models an implied break at the end of the document.&#xA;Among other things this allows you to position the caret after the last&#xA;character. As a result of this, &lt;code>getLength&lt;/code> returns one less&#xA;than the length of the Content. If you create your own Content, be&#xA;sure and initialize it to have an additional character. Refer to&#xA;StringContent and GapContent for examples of this. Another implication&#xA;of this is that Elements that model the implied end character will have&#xA;an endOffset == (getLength() + 1). For example, in DefaultStyledDocument&#xA;&lt;code>getParagraphElement(getLength()).getEndOffset() == getLength() + 1&#xA;&lt;/code>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.151 07/13/04&#xA;" annotatedElement="3fd6e7dd-7f4e-4cae-a36c-0657262b7ed7"/>
              <interfaceRealization xmi:id="f83c3bac-81a8-4739-b0bb-6806da8d4cc7" name="" supplier="da8fe07d-b07a-4bd5-9a27-88605c655f19" client="3fd6e7dd-7f4e-4cae-a36c-0657262b7ed7" contract="da8fe07d-b07a-4bd5-9a27-88605c655f19"/>
              <interfaceRealization xmi:id="ce2e9dcf-f112-4922-8ac1-87bf2e34759e" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="3fd6e7dd-7f4e-4cae-a36c-0657262b7ed7" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Interface" xmi:id="c7262eed-db71-4380-8f1f-ae9e28a918b5" name="Content" isAbstract="true">
                <ownedComment xmi:id="b286c200-d3c2-4eca-9f1b-23121e647201" body="Interface to describe a sequence of character content that&#xA;can be edited.  Implementations may or may not support a&#xA;history mechanism which will be reflected by whether or not&#xA;mutations return an UndoableEdit implementation.&#xA;@see AbstractDocument&#xA;" annotatedElement="c7262eed-db71-4380-8f1f-ae9e28a918b5"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Interface" xmi:id="339003a4-41c7-4c7e-82b3-254fc9e8c8fb" name="AttributeContext" isAbstract="true">
                <ownedComment xmi:id="3c664803-1877-46ae-b683-f1e5c95ca19f" body="An interface that can be used to allow MutableAttributeSet&#xA;implementations to use pluggable attribute compression&#xA;techniques.  Each mutation of the attribute set can be&#xA;used to exchange a previous AttributeSet instance with&#xA;another, preserving the possibility of the AttributeSet&#xA;remaining immutable.  An implementation is provided by&#xA;the StyleContext class.&#xA;&#xA;The Element implementations provided by this class use&#xA;this interface to provide their MutableAttributeSet&#xA;implementations, so that different AttributeSet compression&#xA;techniques can be employed.  The method&#xA;&lt;code>getAttributeContext&lt;/code> should be implemented to&#xA;return the object responsible for implementing the desired&#xA;compression technique.&#xA;&#xA;@see StyleContext&#xA;" annotatedElement="339003a4-41c7-4c7e-82b3-254fc9e8c8fb"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="fad87078-2c75-4898-bad0-a852a5b4d450" name="AbstractElement" clientDependency="4dc994fc-4981-42e6-9a6b-d32de5e6c710 997c9c75-0930-4081-bdbd-6bb9b36d3871 ae731056-3c55-46ad-afc5-9f968f5cd229 603e4f71-8b56-48c9-8304-f6d0bb3ba9c8" isAbstract="true">
                <ownedComment xmi:id="3b66cc32-478f-43f1-95e4-1990ccf02600" body="Implements the abstract part of an element.  By default elements&#xA;support attributes by having a field that represents the immutable&#xA;part of the current attribute set for the element.  The element itself&#xA;implements MutableAttributeSet which can be used to modify the set&#xA;by fetching a new immutable set.  The immutable sets are provided&#xA;by the AttributeContext associated with the document.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="fad87078-2c75-4898-bad0-a852a5b4d450"/>
                <interfaceRealization xmi:id="4dc994fc-4981-42e6-9a6b-d32de5e6c710" name="" supplier="79427637-7675-4625-912c-8c13efd71ae3" client="fad87078-2c75-4898-bad0-a852a5b4d450" contract="79427637-7675-4625-912c-8c13efd71ae3"/>
                <interfaceRealization xmi:id="997c9c75-0930-4081-bdbd-6bb9b36d3871" name="" supplier="11e28f5b-cfc8-4b49-ac32-476c2ab7442b" client="fad87078-2c75-4898-bad0-a852a5b4d450" contract="11e28f5b-cfc8-4b49-ac32-476c2ab7442b"/>
                <interfaceRealization xmi:id="ae731056-3c55-46ad-afc5-9f968f5cd229" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="fad87078-2c75-4898-bad0-a852a5b4d450" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <interfaceRealization xmi:id="603e4f71-8b56-48c9-8304-f6d0bb3ba9c8" name="" supplier="491a6387-f262-443c-8af1-a5cce3554fa2" client="fad87078-2c75-4898-bad0-a852a5b4d450" contract="491a6387-f262-443c-8af1-a5cce3554fa2"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="ec19227e-e149-4e07-b09d-8bb50d3628ad" name="BranchElement">
                <ownedComment xmi:id="b3194da0-a416-4398-aeec-206a6d204fc5" body="Implements a composite element that contains other elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="ec19227e-e149-4e07-b09d-8bb50d3628ad"/>
                <generalization xmi:id="d3640b30-cb57-48a1-9980-9cdaebffb42d" isSubstitutable="true" general="fad87078-2c75-4898-bad0-a852a5b4d450"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="2e1af822-cf29-40f9-9100-e56c5130f540" name="LeafElement">
                <ownedComment xmi:id="33ed8e0f-40bd-4d36-9dce-635a4cfb3e00" body="Implements an element that directly represents content of&#xA;some kind.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see     Element&#xA;" annotatedElement="2e1af822-cf29-40f9-9100-e56c5130f540"/>
                <generalization xmi:id="bebda24f-b7c8-420e-b686-7ae96a717076" isSubstitutable="true" general="fad87078-2c75-4898-bad0-a852a5b4d450"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f1e15267-0505-48cb-9300-3ea424a0c72a" name="BidiRootElement" visibility="package">
                <ownedComment xmi:id="b211028f-ce5e-4a11-9b21-a8cc916eadd5" body="Represents the root element of the bidirectional element structure.&#xA;The root element is the only element in the bidi element structure&#xA;which contains children.&#xA;" annotatedElement="f1e15267-0505-48cb-9300-3ea424a0c72a"/>
                <generalization xmi:id="39b12929-4ae9-4fa9-a2b9-d44ffc5d3afc" isSubstitutable="true" general="ec19227e-e149-4e07-b09d-8bb50d3628ad"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="d7503385-3876-4560-9759-ee81f85b9a57" name="BidiElement" visibility="package">
                <ownedComment xmi:id="17fca493-8cb8-4bd7-b04f-42c5c7402b27" body="Represents an element of the bidirectional element structure.&#xA;" annotatedElement="d7503385-3876-4560-9759-ee81f85b9a57"/>
                <generalization xmi:id="7db3506f-abd4-44f8-a197-970727a754e7" isSubstitutable="true" general="2e1af822-cf29-40f9-9100-e56c5130f540"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="10460906-0650-46d5-9626-7bbf25238bad" name="DefaultDocumentEvent" clientDependency="dc6c9a09-6d51-44c7-91b1-b5b60288e46b">
                <ownedComment xmi:id="f4a1f3c7-7008-452c-a5ef-d212aaa88184" body="Stores document changes as the document is being&#xA;modified.  Can subsequently be used for change notification&#xA;when done with the document modification transaction.&#xA;This is used by the AbstractDocument class and its extensions&#xA;for broadcasting change information to the document listeners.&#xA;" annotatedElement="10460906-0650-46d5-9626-7bbf25238bad"/>
                <generalization xmi:id="7abedcc4-a240-4c42-8e82-6ba433ce3823" isSubstitutable="true" general="64fb6629-40e8-4ab5-b8bf-84a4b23e2e66"/>
                <interfaceRealization xmi:id="dc6c9a09-6d51-44c7-91b1-b5b60288e46b" name="" supplier="ed4ebb41-73e1-415b-b527-955941359030" client="10460906-0650-46d5-9626-7bbf25238bad" contract="ed4ebb41-73e1-415b-b527-955941359030"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f011e262-6027-4d12-8bcf-955c8c393dd7" name="ElementEdit" clientDependency="9f0aafdb-fa17-4345-a847-50bdcbd0f1f4">
                <ownedComment xmi:id="1c9bd7e3-bed3-400a-9dcd-855e17457547" body="An implementation of ElementChange that can be added to the document&#xA;event.&#xA;" annotatedElement="f011e262-6027-4d12-8bcf-955c8c393dd7"/>
                <generalization xmi:id="a5f0ba1a-dcb9-49d7-beb7-056ab754776f" isSubstitutable="true" general="01807a27-262a-407f-9ff1-9f482a3fceb4"/>
                <interfaceRealization xmi:id="9f0aafdb-fa17-4345-a847-50bdcbd0f1f4" name="" supplier="eee74a14-6c3d-4deb-abef-61c9ea3b3cbf" client="f011e262-6027-4d12-8bcf-955c8c393dd7" contract="eee74a14-6c3d-4deb-abef-61c9ea3b3cbf"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0201d4ee-2757-4983-8dd7-f2d2e5c21017" name="DefaultFilterBypass" visibility="private">
                <generalization xmi:id="a7afd2bb-bcb3-4ac3-b20c-b596283d27de" isSubstitutable="true" general="1db07092-84f6-4caf-974f-23cd7595575b"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="e2937a1c-8861-4527-b370-ac1045883391" name="UndoRedoDocumentEvent" visibility="package" clientDependency="5ad20ed6-2628-4d1a-8665-6de7f17002a6">
                <ownedComment xmi:id="d191ba2e-fd13-4620-a372-57a9b96ab9f8" body="This event used when firing document changes while Undo/Redo&#xA;operations. It just wraps DefaultDocumentEvent and delegates&#xA;all calls to it except getType() which depends on operation&#xA;(Undo or Redo).&#xA;" annotatedElement="e2937a1c-8861-4527-b370-ac1045883391"/>
                <interfaceRealization xmi:id="5ad20ed6-2628-4d1a-8665-6de7f17002a6" name="" supplier="ed4ebb41-73e1-415b-b527-955941359030" client="e2937a1c-8861-4527-b370-ac1045883391" contract="ed4ebb41-73e1-415b-b527-955941359030"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="f8d2f783-a216-463c-b5a2-5cbb26ddaad1" name="Keymap" isAbstract="true">
              <ownedComment xmi:id="377731a2-0d60-4d24-aca0-4e2d3ded3563" body="A collection of bindings of KeyStrokes to actions.  The&#xA;bindings are basically name-value pairs that potentially&#xA;resolve in a hierarchy.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.18 12/19/03&#xA;" annotatedElement="f8d2f783-a216-463c-b5a2-5cbb26ddaad1"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5e961e27-6a21-473d-885b-b0c1a1a61e33" name="TabSet" clientDependency="1a6ed90f-909f-4dd3-a852-b25a5b56ce48">
              <ownedComment xmi:id="beac3454-d3cc-4abc-860b-fd71700d20ed" body="A TabSet is comprised of many TabStops. It offers methods for locating the&#xA;closest TabStop to a given position and finding all the potential TabStops.&#xA;It is also immutable.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author  Scott Violet&#xA;@version 1.15 12/19/03&#xA;" annotatedElement="5e961e27-6a21-473d-885b-b0c1a1a61e33"/>
              <interfaceRealization xmi:id="1a6ed90f-909f-4dd3-a852-b25a5b56ce48" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="5e961e27-6a21-473d-885b-b0c1a1a61e33" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="62f915e8-066b-4544-bfe2-844bac226c62" name="LayoutQueue">
              <ownedComment xmi:id="ae72c016-adbb-4a08-afa1-7850fcf38e56" body="A queue of text layout tasks.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.6 12/19/03&#xA;@see     AsyncBoxView&#xA;@since   1.3&#xA;" annotatedElement="62f915e8-066b-4544-bfe2-844bac226c62"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="50326401-f67b-4fa3-bee9-d019e64b774e" name="LayoutThread" visibility="package">
                <ownedComment xmi:id="263920b5-5770-41df-ba7d-4d65676079e8" body="low priority thread to perform layout work forever&#xA;" annotatedElement="50326401-f67b-4fa3-bee9-d019e64b774e"/>
                <generalization xmi:id="f91f0290-9dd7-454e-af11-4da156111111" isSubstitutable="true" general="c9830202-c9c4-48c6-a18c-376520128934"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="12542915-d6ee-4879-9d4d-59d17e59d4b3" name="GlyphPainter2" visibility="package">
              <ownedComment xmi:id="7f5730bb-8456-4d7e-9aba-2f788590ebe9" body="A class to perform rendering of the glyphs.&#xA;This can be implemented to be stateless, or&#xA;to hold some information as a cache to&#xA;facilitate faster rendering and model/view&#xA;translation.  At a minimum, the GlyphPainter&#xA;allows a View implementation to perform its&#xA;duties independent of a particular version&#xA;of JVM and selection of capabilities (i.e.&#xA;shaping for i18n, etc).&#xA;&lt;p>&#xA;This implementation is intended for operation&#xA;under the JDK.  It uses the&#xA;java.awt.font.TextLayout class to do i18n capable&#xA;rendering.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.21 06/28/04&#xA;@see GlyphView&#xA;" annotatedElement="12542915-d6ee-4879-9d4d-59d17e59d4b3"/>
              <generalization xmi:id="d9124246-8c19-4375-91e4-759a7ae8332c" isSubstitutable="true" general="f8686d37-9d9e-4909-9dea-f1c70f6a2a55"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8d3894dd-b70c-4585-9126-8c42e5ec577a" name="ComponentView">
              <ownedComment xmi:id="5227a521-5df4-45be-965e-5f110e5f872c" body="Component decorator that implements the view interface.  The&#xA;entire element is used to represent the component.  This acts&#xA;as a gateway from the display-only View implementations to&#xA;interactive lightweight components (ie it allows components&#xA;to be embedded into the View hierarchy).&#xA;&lt;p>&#xA;The component is placed relative to the text baseline&#xA;according to the value returned by&#xA;&lt;code>Component.getAlignmentY&lt;/code>.  For Swing components&#xA;this value can be conveniently set using the method&#xA;&lt;code>JComponent.setAlignmentY&lt;/code>.  For example, setting&#xA;a value of &lt;code>0.75&lt;/code> will cause 75 percent of the&#xA;component to be above the baseline, and 25 percent of the&#xA;component to be below the baseline.&#xA;&lt;p>&#xA;This class is implemented to do the extra work necessary to&#xA;work properly in the presence of multiple threads (i.e. from&#xA;asynchronous notification of model changes for example) by&#xA;ensuring that all component access is done on the event thread.&#xA;&lt;p>&#xA;The component used is determined by the return value of the&#xA;createComponent method.  The default implementation of this&#xA;method is to return the component held as an attribute of&#xA;the element (by calling StyleConstants.getComponent).  A&#xA;limitation of this behavior is that the component cannot&#xA;be used by more than one text component (i.e. with a shared&#xA;model).  Subclasses can remove this constraint by implementing&#xA;the createComponent to actually create a component based upon&#xA;some kind of specification contained in the attributes.  The&#xA;ObjectView class in the html package is an example of a&#xA;ComponentView implementation that supports multiple component&#xA;views of a shared model.&#xA;&#xA;@author Timothy Prinzing&#xA;@version 1.54 12/19/03&#xA;" annotatedElement="8d3894dd-b70c-4585-9126-8c42e5ec577a"/>
              <generalization xmi:id="f13d6038-7f4a-47c3-b4f4-daf5795402b5" isSubstitutable="true" general="a12ab75d-4ae8-40c5-ac6c-848d1ef3f725"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6ed973bb-9935-48ea-ab12-d7fa8a6bd734" name="Invalidator" visibility="package">
                <ownedComment xmi:id="b0b2208c-049d-4fcf-86f8-5b75980e3aef" body="This class feeds the invalidate back to the&#xA;hosting View.  This is needed to get the View&#xA;hierarchy to consider giving the component&#xA;a different size (i.e. layout may have been&#xA;cached between the associated view and the&#xA;container hosting this component).&#xA;" annotatedElement="6ed973bb-9935-48ea-ab12-d7fa8a6bd734"/>
                <generalization xmi:id="81954944-6395-4b46-b8a7-1430091a7082" isSubstitutable="true" general="a4edac23-263c-4616-857d-4de97445e12a"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c3f5c7a5-562c-4f64-83ee-9dfc8922c4d4" name="WrappedPlainView" clientDependency="c54062df-639d-4fcd-a750-f2602faa5bfc">
              <ownedComment xmi:id="92b04e4b-dd61-4a6e-894f-4f0c3ae2eb06" body="View of plain text (text with only one font and color)&#xA;that does line-wrapping.  This view expects that its&#xA;associated element has child elements that represent&#xA;the lines it should be wrapping.  It is implemented&#xA;as a vertical box that contains logical line views.&#xA;The logical line views are nested classes that render&#xA;the logical line as multiple physical line if the logical&#xA;line is too wide to fit within the allocation.  The&#xA;line views draw upon the outer class for its state&#xA;to reduce their memory requirements.&#xA;&lt;p>&#xA;The line views do all of their rendering through the&#xA;&lt;code>drawLine&lt;/code> method which in turn does all of&#xA;its rendering through the &lt;code>drawSelectedText&lt;/code>&#xA;and &lt;code>drawUnselectedText&lt;/code> methods.  This&#xA;enables subclasses to easily specialize the rendering&#xA;without concern for the layout aspects.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.38 05/26/04&#xA;@see     View&#xA;" annotatedElement="c3f5c7a5-562c-4f64-83ee-9dfc8922c4d4"/>
              <generalization xmi:id="20c7dfce-7753-4698-aa4b-dc8b3c7db256" isSubstitutable="true" general="21bc7467-2f3d-4452-af93-a254d26bf84f"/>
              <interfaceRealization xmi:id="c54062df-639d-4fcd-a750-f2602faa5bfc" name="" supplier="3216e397-d46f-4b97-83bc-9d08d4eed789" client="c3f5c7a5-562c-4f64-83ee-9dfc8922c4d4" contract="3216e397-d46f-4b97-83bc-9d08d4eed789"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="cbabcd27-17dc-4314-87b1-b2950ab2bfb6" name="WrappedLine" visibility="package">
                <ownedComment xmi:id="87ad7fc8-0f84-45d8-9aa2-ba74279e28d7" body="Simple view of a line that wraps if it doesn't&#xA;fit withing the horizontal space allocated.&#xA;This class tries to be lightweight by carrying little&#xA;state of it's own and sharing the state of the outer class&#xA;with it's sibblings.&#xA;" annotatedElement="cbabcd27-17dc-4314-87b1-b2950ab2bfb6"/>
                <generalization xmi:id="d76a9dac-8a89-4fd0-8ae7-98dd84247824" isSubstitutable="true" general="a12ab75d-4ae8-40c5-ac6c-848d1ef3f725"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="061b2087-43c7-41d9-a32f-389e9e332db8" name="BadLocationException">
              <ownedComment xmi:id="d4e2da33-f5e0-4e6e-a11a-b6ca2f0c78d6" body="This exception is to report bad locations within a document model&#xA;(that is, attempts to reference a location that doesn't exist).&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.20 12/19/03&#xA;" annotatedElement="061b2087-43c7-41d9-a32f-389e9e332db8"/>
              <generalization xmi:id="e5907920-ca6a-48b8-be4b-1b5e28d936e5" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f1400625-1356-4283-a6af-16f6f216692c" name="StyleContext" clientDependency="d0f919c1-abc2-4ed6-98a6-aa59225b6583 6cb06ee1-9b23-46e7-8d24-529a52314424">
              <ownedComment xmi:id="ed2afb95-2daf-49db-872f-4c4f85034fd6" body="A pool of styles and their associated resources.  This class determines&#xA;the lifetime of a group of resources by being a container that holds&#xA;caches for various resources such as font and color that get reused&#xA;by the various style definitions.  This can be shared by multiple&#xA;documents if desired to maximize the sharing of related resources.&#xA;&lt;p>&#xA;This class also provides efficient support for small sets of attributes&#xA;and compresses them by sharing across uses and taking advantage of&#xA;their immutable nature.  Since many styles are replicated, the potential&#xA;for sharing is significant, and copies can be extremely cheap.&#xA;Larger sets reduce the possibility of sharing, and therefore revert&#xA;automatically to a less space-efficient implementation.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.78 05/05/04&#xA;" annotatedElement="f1400625-1356-4283-a6af-16f6f216692c"/>
              <interfaceRealization xmi:id="d0f919c1-abc2-4ed6-98a6-aa59225b6583" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="f1400625-1356-4283-a6af-16f6f216692c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <interfaceRealization xmi:id="6cb06ee1-9b23-46e7-8d24-529a52314424" name="" supplier="339003a4-41c7-4c7e-82b3-254fc9e8c8fb" client="f1400625-1356-4283-a6af-16f6f216692c" contract="339003a4-41c7-4c7e-82b3-254fc9e8c8fb"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="253dc961-4400-4214-86f9-b2f2ffa96f63" name="SmallAttributeSet" clientDependency="106c3917-36f2-4383-a147-08a624f13d54">
                <ownedComment xmi:id="9fcaea1c-821e-46a9-9886-3753cfc95fe3" body="This class holds a small number of attributes in an array.&#xA;The storage format is key, value, key, value, etc.  The size&#xA;of the set is the length of the array divided by two.  By&#xA;default, this is the class that will be used to store attributes&#xA;when held in the compact sharable form.&#xA;" annotatedElement="253dc961-4400-4214-86f9-b2f2ffa96f63"/>
                <interfaceRealization xmi:id="106c3917-36f2-4383-a147-08a624f13d54" name="" supplier="dff5659c-62af-4166-9a96-573a58fd7f7e" client="253dc961-4400-4214-86f9-b2f2ffa96f63" contract="dff5659c-62af-4166-9a96-573a58fd7f7e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="bff22dd7-d3f2-459f-806d-f0d02cc673de" name="KeyEnumeration" visibility="package" clientDependency="a8283ca2-6818-4034-a15e-930eb29812a3">
                <ownedComment xmi:id="9e503f96-d019-4e31-abc9-1060b3675fdc" body="An enumeration of the keys in a SmallAttributeSet.&#xA;" annotatedElement="bff22dd7-d3f2-459f-806d-f0d02cc673de"/>
                <interfaceRealization xmi:id="a8283ca2-6818-4034-a15e-930eb29812a3" name="" supplier="ae48c0db-9bd1-4cc3-a19c-b4aacc62eb41" client="bff22dd7-d3f2-459f-806d-f0d02cc673de" contract="ae48c0db-9bd1-4cc3-a19c-b4aacc62eb41"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="90a22ffd-d03c-4430-a27e-6977650c46aa" name="KeyBuilder" visibility="package">
                <ownedComment xmi:id="5291e114-664d-4df9-b78e-c6f56b7375dc" body="Sorts the key strings so that they can be very quickly compared&#xA;in the attribute set searchs.&#xA;" annotatedElement="90a22ffd-d03c-4430-a27e-6977650c46aa"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f2077651-1507-4720-bc01-de4fdecab124" name="FontKey" visibility="package">
                <ownedComment xmi:id="95909c0d-c216-4cc6-b83a-1d6b48f8d791" body="key for a font table&#xA;" annotatedElement="f2077651-1507-4720-bc01-de4fdecab124"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="ad3815ca-54e8-4ffd-a9e3-69de2e779468" name="NamedStyle" clientDependency="b7a071cc-c754-4dbf-9c7b-8f0ef0dc56a8 67e4dabc-ac71-423c-9028-704d7d7a87dd">
                <ownedComment xmi:id="c057eb77-981a-4cea-ba15-e6d383d35cf8" body="A collection of attributes, typically used to represent&#xA;character and paragraph styles.  This is an implementation&#xA;of MutableAttributeSet that can be observed if desired.&#xA;These styles will take advantage of immutability while&#xA;the sets are small enough, and may be substantially more&#xA;efficient than something like SimpleAttributeSet.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="ad3815ca-54e8-4ffd-a9e3-69de2e779468"/>
                <interfaceRealization xmi:id="b7a071cc-c754-4dbf-9c7b-8f0ef0dc56a8" name="" supplier="092e0576-dee7-4b99-882e-13d468759154" client="ad3815ca-54e8-4ffd-a9e3-69de2e779468" contract="092e0576-dee7-4b99-882e-13d468759154"/>
                <interfaceRealization xmi:id="67e4dabc-ac71-423c-9028-704d7d7a87dd" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ad3815ca-54e8-4ffd-a9e3-69de2e779468" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="12dfd28e-d6c9-4052-aa8f-53f4838bd201" name="AbstractWriter" isAbstract="true">
              <ownedComment xmi:id="7fb8de66-dc90-41c4-8749-78916cbc911f" body="AbstractWriter is an abstract class that actually&#xA;does the work of writing out the element tree&#xA;including the attributes.  In terms of how much is&#xA;written out per line, the writer defaults to 100.&#xA;But this value can be set by subclasses.&#xA;&#xA;@author Sunita Mani&#xA;@version 1.21, 12/19/03&#xA;" annotatedElement="12dfd28e-d6c9-4052-aa8f-53f4838bd201"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="78e6ec72-6983-4b50-88ca-6cdba8cd5321" name="DefaultFormatter" clientDependency="a178884b-27e3-4b26-a31e-7ce95789b7f5 0d21baed-118d-4b48-b52b-a0ffd800d00d">
              <ownedComment xmi:id="b20ce5e9-8548-4c71-bcc5-4600da7e630e" body="&lt;code>DefaultFormatter&lt;/code> formats aribtrary objects. Formatting is done&#xA;by invoking the &lt;code>toString&lt;/code> method. In order to convert the&#xA;value back to a String, your class must provide a constructor that&#xA;takes a String argument. If no single argument constructor that takes a&#xA;String is found, the returned value will be the String passed into&#xA;&lt;code>stringToValue&lt;/code>.&#xA;&lt;p>&#xA;Instances of &lt;code>DefaultFormatter&lt;/code> can not be used in multiple&#xA;instances of &lt;code>JFormattedTextField&lt;/code>. To obtain a copy of&#xA;an already configured &lt;code>DefaultFormatter&lt;/code>, use the&#xA;&lt;code>clone&lt;/code> method.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see javax.swing.JFormattedTextField.AbstractFormatter&#xA;&#xA;@version 1.13 05/05/04&#xA;@since 1.4&#xA;" annotatedElement="78e6ec72-6983-4b50-88ca-6cdba8cd5321"/>
              <generalization xmi:id="2fd7804a-5725-4ff6-a3b9-84c4ed65da6f" isSubstitutable="true" general="eab6c93c-ab8c-436f-b98f-fc1a232f0ca5"/>
              <interfaceRealization xmi:id="0d21baed-118d-4b48-b52b-a0ffd800d00d" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="78e6ec72-6983-4b50-88ca-6cdba8cd5321" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <interfaceRealization xmi:id="a178884b-27e3-4b26-a31e-7ce95789b7f5" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="78e6ec72-6983-4b50-88ca-6cdba8cd5321" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="962b7202-bd96-446c-8d2f-92b36e04d168" name="ReplaceHolder" visibility="package">
                <ownedComment xmi:id="e320f445-5979-4b55-adfb-729a8754d959" body="ReplaceHolder is used to track where insert/remove/replace is&#xA;going to happen.&#xA;" annotatedElement="962b7202-bd96-446c-8d2f-92b36e04d168"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="e77ed2f0-6d0f-4547-a162-cca38f279e76" name="DefaultNavigationFilter" visibility="private" clientDependency="9bea5e64-69a4-474f-af7e-8a96d6363f68">
                <ownedComment xmi:id="928b0b01-57cb-4e7e-838b-988c4926b855" body="NavigationFilter implementation that calls back to methods with&#xA;same name in DefaultFormatter.&#xA;" annotatedElement="e77ed2f0-6d0f-4547-a162-cca38f279e76"/>
                <generalization xmi:id="198fb9a0-1353-427e-9b6e-d421cb2baba7" isSubstitutable="true" general="42789ab6-4b5b-47ac-a6ad-3f3c06edfe87"/>
                <interfaceRealization xmi:id="9bea5e64-69a4-474f-af7e-8a96d6363f68" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="e77ed2f0-6d0f-4547-a162-cca38f279e76" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="c5e10637-cd54-4fc9-97c5-571cf152f8b7" name="DefaultDocumentFilter" visibility="private" clientDependency="766e68e3-f319-49ed-b75a-f3c3f2149838">
                <ownedComment xmi:id="8823470f-cb53-4f24-83fc-5f8c25f37272" body="DocumentFilter implementation that calls back to the replace&#xA;method of DefaultFormatter.&#xA;" annotatedElement="c5e10637-cd54-4fc9-97c5-571cf152f8b7"/>
                <generalization xmi:id="c7777b11-388c-41af-bac4-3bd494658c41" isSubstitutable="true" general="67c81813-bb1a-4cec-b3e2-099e14a823af"/>
                <interfaceRealization xmi:id="766e68e3-f319-49ed-b75a-f3c3f2149838" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="c5e10637-cd54-4fc9-97c5-571cf152f8b7" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="da8fe07d-b07a-4bd5-9a27-88605c655f19" name="Document" isAbstract="true">
              <ownedComment xmi:id="f0213aa2-7db7-4131-9a33-adb8baa48cbb" body="&lt;p>&#xA;The &lt;code>Document&lt;/code> is a container for text that serves&#xA;as the model for swing text components.  The goal for this&#xA;interface is to scale from very simple needs (a plain text textfield)&#xA;to complex needs (an HTML or XML document, for example).&#xA;&#xA;&lt;p>&lt;b>&lt;font size=+1>Content&lt;/font>&lt;/b>&#xA;&lt;p>&#xA;At the simplest level, text can be&#xA;modeled as a linear sequence of characters. To support&#xA;internationalization, the Swing text model uses&#xA;&lt;a href=&quot;http://www.unicode.org/&quot;>unicode&lt;/a> characters.&#xA;The sequence of characters displayed in a text component is&#xA;generally referred to as the component's &lt;em>content&lt;/em>.&#xA;&lt;p>&#xA;To refer to locations within the sequence, the coordinates&#xA;used are the location between two characters.  As the diagram&#xA;below shows, a location in a text document can be referred to&#xA;as a position, or an offset. This position is zero-based.&#xA;&lt;p align=center>&lt;img src=&quot;doc-files/Document-coord.gif&quot;&#xA;alt=&quot;The following text describes this graphic.&quot;>&#xA;&lt;p>&#xA;In the example, if the content of a document is the&#xA;sequence &quot;The quick brown fox,&quot; as shown in the preceding diagram,&#xA;the location just before the word &quot;The&quot; is 0, and the location after&#xA;the word &quot;The&quot; and before the whitespace that follows it is 3.&#xA;The entire sequence of characters in the sequence &quot;The&quot; is called a&#xA;&lt;em>range&lt;/em>.&#xA;&lt;p>The following methods give access to the character data&#xA;that makes up the content.&#xA;&lt;ul>&#xA;&lt;li>&lt;a href=&quot;#getLength()&quot;>getLength()&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#getText(int, int)&quot;>getText(int, int)&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#getText(int, int, javax.swing.text.Segment)&quot;>getText(int, int, Segment)&lt;/a>&#xA;&lt;/ul>&#xA;&lt;p>&lt;b>&lt;font size=+1>Structure&lt;/font>&lt;/b>&#xA;&lt;p>&#xA;Text is rarely represented simply as featureless content. Rather,&#xA;text typically has some sort of structure associated with it.&#xA;Exactly what structure is modeled is up to a particular Document&#xA;implementation.  It might be as simple as no structure (i.e. a&#xA;simple text field), or it might be something like diagram below.&#xA;&lt;p align=center>&lt;img src=&quot;doc-files/Document-structure.gif&quot;&#xA;alt=&quot;Diagram shows Book->Chapter->Paragraph&quot;>&#xA;&lt;p>&#xA;The unit of structure (i.e. a node of the tree) is referred to&#xA;by the &lt;a href=&quot;Element.html&quot;>Element&lt;/a> interface.  Each Element&#xA;can be tagged with a set of attributes.  These attributes&#xA;(name/value pairs) are defined by the&#xA;&lt;a href=&quot;AttributeSet.html&quot;>AttributeSet&lt;/a> interface.&#xA;&lt;p>The following methods give access to the document structure.&#xA;&lt;ul>&#xA;&lt;li>&lt;a href=&quot;#getDefaultRootElement()&quot;>getDefaultRootElement&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#getRootElements()&quot;>getRootElements&lt;/a>&#xA;&lt;/ul>&#xA;&#xA;&lt;p>&lt;b>&lt;font size=+1>Mutations&lt;/font>&lt;/b>&#xA;&lt;p>&#xA;All documents need to be able to add and remove simple text.&#xA;Typically, text is inserted and removed via gestures from&#xA;a keyboard or a mouse.  What effect the insertion or removal&#xA;has upon the document structure is entirely up to the&#xA;implementation of the document.&#xA;&lt;p>The following methods are related to mutation of the&#xA;document content:&#xA;&lt;ul>&#xA;&lt;li>&lt;a href=&quot;#insertString(int, java.lang.String, javax.swing.text.AttributeSet)&quot;>insertString(int, String, AttributeSet)&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#remove(int, int)&quot;>remove(int, int)&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#createPosition(int)&quot;>createPosition(int)&lt;/a>&#xA;&lt;/ul>&#xA;&#xA;&lt;p>&lt;b>&lt;font size=+1>Notification&lt;/font>&lt;/b>&#xA;&lt;p>&#xA;Mutations to the &lt;code>Document&lt;/code> must be communicated to&#xA;interested observers.  The notification of change follows the event model&#xA;guidelines that are specified for JavaBeans.  In the JavaBeans&#xA;event model, once an event notification is dispatched, all listeners&#xA;must be notified before any further mutations occur to the source&#xA;of the event.  Further, order of delivery is not guaranteed.&#xA;&lt;p>&#xA;Notification is provided as two separate events,&#xA;&lt;a href=&quot;../event/DocumentEvent.html&quot;>DocumentEvent&lt;/a>, and&#xA;&lt;a href=&quot;../event/UndoableEditEvent.html&quot;>UndoableEditEvent&lt;/a>.&#xA;If a mutation is made to a &lt;code>Document&lt;/code> through its api,&#xA;a &lt;code>DocumentEvent&lt;/code> will be sent to all of the registered&#xA;&lt;code>DocumentListeners&lt;/code>.  If the &lt;code>Document&lt;/code>&#xA;implementation supports undo/redo capabilities, an&#xA;&lt;code>UndoableEditEvent&lt;/code> will be sent&#xA;to all of the registered &lt;code>UndoableEditListener&lt;/code>s.&#xA;If an undoable edit is undone, a &lt;code>DocumentEvent&lt;/code> should be&#xA;fired from the Document to indicate it has changed again.&#xA;In this case however, there should be no &lt;code>UndoableEditEvent&lt;/code>&#xA;generated since that edit is actually the source of the change&#xA;rather than a mutation to the &lt;code>Document&lt;/code> made through its&#xA;api.&#xA;&lt;p align=center>&lt;img src=&quot;doc-files/Document-notification.gif&quot;&#xA;alt=&quot;The preceeding text describes this graphic.&quot;>&#xA;&lt;p>&#xA;Referring to the above diagram, suppose that the component shown&#xA;on the left mutates the document object represented by the blue&#xA;rectangle. The document responds by dispatching a DocumentEvent to&#xA;both component views and sends an UndoableEditEvent to the listening&#xA;logic, which maintains a history buffer.&#xA;&lt;p>&#xA;Now suppose that the component shown on the right mutates the same&#xA;document.  Again, the document dispatches a DocumentEvent to both&#xA;component views and sends an UndoableEditEvent to the listening logic&#xA;that is maintaining the history buffer.&#xA;&lt;p>&#xA;If the history buffer is then rolled back (i.e. the last UndoableEdit&#xA;undone), a DocumentEvent is sent to both views, causing both of them to&#xA;reflect the undone mutation to the document (that is, the&#xA;removal of the right component's mutation). If the history buffer again&#xA;rolls back another change, another DocumentEvent is sent to both views,&#xA;causing them to reflect the undone mutation to the document -- that is,&#xA;the removal of the left component's mutation.&#xA;&lt;p>&#xA;The methods related to observing mutations to the document are:&#xA;&lt;ul>&#xA;&lt;li>&lt;a href=&quot;#addDocumentListener(javax.swing.event.DocumentListener)&quot;>addDocumentListener(DocumentListener)&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#removeDocumentListener(javax.swing.event.DocumentListener)&quot;>removeDocumentListener(DocumentListener)&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#addUndoableEditListener(javax.swing.event.UndoableEditListener)&quot;>addUndoableEditListener(UndoableEditListener)&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#removeUndoableEditListener(javax.swing.event.UndoableEditListener)&quot;>removeUndoableEditListener(UndoableEditListener)&lt;/a>&#xA;&lt;/ul>&#xA;&#xA;&lt;p>&lt;b>&lt;font size=+1>Properties&lt;/font>&lt;/b>&#xA;&lt;p>&#xA;Document implementations will generally have some set of properties&#xA;associated with them at runtime.  Two well known properties are the&#xA;&lt;a href=&quot;#StreamDescriptionProperty&quot;>StreamDescriptionProperty&lt;/a>,&#xA;which can be used to describe where the &lt;code>Document&lt;/code> came from,&#xA;and the &lt;a href=&quot;#TitleProperty&quot;>TitleProperty&lt;/a>, which can be used to&#xA;name the &lt;code>Document&lt;/code>.  The methods related to the properties are:&#xA;&lt;ul>&#xA;&lt;li>&lt;a href=&quot;#getProperty(java.lang.Object)&quot;>getProperty(Object)&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#putProperty(java.lang.Object, java.lang.Object)&quot;>putProperty(Object, Object)&lt;/a>&#xA;&lt;/ul>&#xA;&#xA;&lt;p>For more information on the &lt;code>Document&lt;/code> class, see&#xA;&lt;a href=&quot;http://java.sun.com/products/jfc/tsc&quot;>The Swing Connection&lt;/a>&#xA;and most particularly the article,&#xA;&lt;a href=&quot;http://java.sun.com/products/jfc/tsc/articles/text/element_interface&quot;>&#xA;The Element Interface&lt;/a>.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.43 12/19/03&#xA;&#xA;@see javax.swing.event.DocumentEvent&#xA;@see javax.swing.event.DocumentListener&#xA;@see javax.swing.event.UndoableEditEvent&#xA;@see javax.swing.event.UndoableEditListener&#xA;@see Element&#xA;@see Position&#xA;@see AttributeSet&#xA;" annotatedElement="da8fe07d-b07a-4bd5-9a27-88605c655f19"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="921a61fb-ee13-4ede-8408-998656f76875" name="CompositeView" isAbstract="true">
              <ownedComment xmi:id="755a4354-ef35-48d0-ab71-d4308f44caa1" body="&lt;code>CompositeView&lt;/code> is an abstract &lt;code>View&lt;/code>&#xA;implementation which manages one or more child views.&#xA;(Note that &lt;code>CompositeView&lt;/code> is intended&#xA;for managing relatively small numbers of child views.)&#xA;&lt;code>CompositeView&lt;/code> is intended to be used as&#xA;a starting point for &lt;code>View&lt;/code> implementations,&#xA;such as &lt;code>BoxView&lt;/code>, that will contain child&#xA;&lt;code>View&lt;/code>s. Subclasses that wish to manage the&#xA;collection of child &lt;code>View&lt;/code>s should use the&#xA;{@link #replace} method.  As &lt;code>View&lt;/code> invokes&#xA;&lt;code>replace&lt;/code> during &lt;code>DocumentListener&lt;/code>&#xA;notification, you normally won't need to directly&#xA;invoke &lt;code>replace&lt;/code>.&#xA;&#xA;&lt;p>While &lt;code>CompositeView&lt;/code>&#xA;does not impose a layout policy on its child &lt;code>View&lt;/code>s,&#xA;it does allow for inseting the child &lt;code>View&lt;/code>s&#xA;it will contain.  The insets can be set by either&#xA;{@link #setInsets} or {@link #setParagraphInsets}.&#xA;&#xA;&lt;p>In addition to the abstract methods of&#xA;{@link javax.swing.text.View},&#xA;subclasses of &lt;code>CompositeView&lt;/code> will need to&#xA;override:&#xA;&lt;ul>&#xA;&lt;li>{@link #isBefore} - Used to test if a given&#xA;&lt;code>View&lt;/code> location is before the visual space&#xA;of the &lt;code>CompositeView&lt;/code>.&#xA;&lt;li>{@link #isAfter} - Used to test if a given&#xA;&lt;code>View&lt;/code> location is after the visual space&#xA;of the &lt;code>CompositeView&lt;/code>.&#xA;&lt;li>{@link #getViewAtPoint} - Returns the view at&#xA;a given visual location.&#xA;&lt;li>{@link #childAllocation} - Returns the bounds of&#xA;a particular child &lt;code>View&lt;/code>.&#xA;&lt;code>getChildAllocation&lt;/code> will invoke&#xA;&lt;code>childAllocation&lt;/code> after offseting&#xA;the bounds by the &lt;code>Inset&lt;/code>s of the&#xA;&lt;code>CompositeView&lt;/code>.&#xA;&lt;/ul>&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.67 12/19/03&#xA;" annotatedElement="921a61fb-ee13-4ede-8408-998656f76875"/>
              <generalization xmi:id="eca1c16e-8d72-4c44-a28c-a10ae4dc2b17" isSubstitutable="true" general="a12ab75d-4ae8-40c5-ac6c-848d1ef3f725"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="638f44d8-d827-4f2f-bc04-3ab6e61eeeee" name="DefaultEditorKit">
              <ownedComment xmi:id="acb11f70-abc8-4d7a-9fbc-730a04ed5535" body="This is the set of things needed by a text component&#xA;to be a reasonably functioning editor for some &lt;em>type&lt;/em>&#xA;of text document.  This implementation provides a default&#xA;implementation which treats text as plain text and&#xA;provides a minimal set of actions for a simple editor.&#xA;&lt;p>&#xA;&lt;dl>&#xA;&lt;dt>&lt;b>&lt;font size=+1>Newlines&lt;/font>&lt;/b>&#xA;&lt;dd>&#xA;There are two properties which deal with newlines.  The&#xA;system property, &lt;code>line.separator&lt;/code>, is defined to be&#xA;platform-dependent, either &quot;\n&quot;, &quot;\r&quot;, or &quot;\r\n&quot;.  There is also&#xA;a property defined in &lt;code>DefaultEditorKit&lt;/code>, called&#xA;&lt;a href=#EndOfLineStringProperty>&lt;code>EndOfLineStringProperty&lt;/code>&lt;/a>,&#xA;which is defined automatically when a document is loaded, to be&#xA;the first occurrence of any of the newline characters.&#xA;When a document is loaded, &lt;code>EndOfLineStringProperty&lt;/code>&#xA;is set appropriately, and when the document is written back out, the&#xA;&lt;code>EndOfLineStringProperty&lt;/code> is used.  But while the document&#xA;is in memory, the &quot;\n&quot; character is used to define a&#xA;newline, regardless of how the newline is defined when&#xA;the document is on disk.  Therefore, for searching purposes,&#xA;&quot;\n&quot; should always be used.  When a new document is created,&#xA;and the &lt;code>EndOfLineStringProperty&lt;/code> has not been defined,&#xA;it will use the System property when writing out the&#xA;document.&#xA;&lt;p>Note that &lt;code>EndOfLineStringProperty&lt;/code> is set&#xA;on the &lt;code>Document&lt;/code> using the &lt;code>get/setProperty&lt;/code>&#xA;methods.  Subclasses may override this behavior.&#xA;&#xA;&lt;/dl>&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.67 12/19/03&#xA;" annotatedElement="638f44d8-d827-4f2f-bc04-3ab6e61eeeee"/>
              <generalization xmi:id="be36169f-5c02-408c-a587-5685b2b19b29" isSubstitutable="true" general="96d02e76-4b51-4798-a201-452a82af342f"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="fc471d5a-3af3-4270-b1fd-76bc1d2333cc" name="DefaultKeyTypedAction">
                <ownedComment xmi:id="5e504f8a-7684-440b-8ab0-5117e1c4ab14" body="The action that is executed by default if&#xA;a &lt;em>key typed event&lt;/em> is received and there&#xA;is no keymap entry.  There is a variation across&#xA;different VM's in what gets sent as a &lt;em>key typed&lt;/em>&#xA;event, and this action tries to filter out the undesired&#xA;events.  This filters the control characters and those&#xA;with the ALT modifier.  It allows Control-Alt sequences&#xA;through as these form legitimate unicode characters on&#xA;some PC keyboards.&#xA;&lt;p>&#xA;If the event doesn't get filtered, it will try to insert&#xA;content into the text editor.  The content is fetched&#xA;from the command string of the ActionEvent.  The text&#xA;entry is done through the &lt;code>replaceSelection&lt;/code>&#xA;method on the target text component.  This is the&#xA;action that will be fired for most text entry tasks.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see DefaultEditorKit#defaultKeyTypedAction&#xA;@see DefaultEditorKit#getActions&#xA;@see Keymap#setDefaultAction&#xA;@see Keymap#getDefaultAction&#xA;" annotatedElement="fc471d5a-3af3-4270-b1fd-76bc1d2333cc"/>
                <generalization xmi:id="a349842d-e8d5-4a45-804a-f29c9ed46392" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6b31355e-58ea-433f-9228-419a2c523695" name="InsertContentAction">
                <ownedComment xmi:id="590c9d5f-3c6e-4d42-9ec8-6c5adf1c6d4b" body="Places content into the associated document.&#xA;If there is a selection, it is removed before&#xA;the new content is added.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see DefaultEditorKit#insertContentAction&#xA;@see DefaultEditorKit#getActions&#xA;" annotatedElement="6b31355e-58ea-433f-9228-419a2c523695"/>
                <generalization xmi:id="5d8ffac9-06ae-4502-aed1-31d0fa74deb3" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="a2cd7ca5-6544-47e9-8f86-930d1735a4c1" name="InsertBreakAction">
                <ownedComment xmi:id="0d16ad65-5200-40b5-8dd4-eaf14feeff7b" body="Places a line/paragraph break into the document.&#xA;If there is a selection, it is removed before&#xA;the break is added.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see DefaultEditorKit#insertBreakAction&#xA;@see DefaultEditorKit#getActions&#xA;" annotatedElement="a2cd7ca5-6544-47e9-8f86-930d1735a4c1"/>
                <generalization xmi:id="e7f30cc1-2113-4ae4-b33d-36613103684c" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="597e2117-3cae-4d4e-9863-88b599d7fb54" name="InsertTabAction">
                <ownedComment xmi:id="0b8c5254-ee7e-4f25-81ad-cd79657b6e3b" body="Places a tab character into the document. If there&#xA;is a selection, it is removed before the tab is added.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see DefaultEditorKit#insertTabAction&#xA;@see DefaultEditorKit#getActions&#xA;" annotatedElement="597e2117-3cae-4d4e-9863-88b599d7fb54"/>
                <generalization xmi:id="b483b357-3c58-43db-a1f1-b7db7295a3ed" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="576c5714-e3dc-42ce-989f-fe0eff50c7a1" name="DeletePrevCharAction" visibility="package">
                <generalization xmi:id="05911508-8539-48fe-a748-90d3483ba1b1" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="25a4447f-60f2-4074-9e94-bb64e24f8c3b" name="DeleteNextCharAction" visibility="package">
                <generalization xmi:id="82346579-09d3-4d6b-a547-40d52565c3c0" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="c1b0d564-eaee-4e12-bf82-f8d066034ea0" name="ReadOnlyAction" visibility="package">
                <generalization xmi:id="6de33419-0f29-45ca-ae98-67d449dfec52" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="888b5ec2-9fc0-4d36-9259-515ef130a2bd" name="WritableAction" visibility="package">
                <generalization xmi:id="207fc55c-2e01-4329-b9a2-b37c7e73f498" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="1c16132a-eb54-48be-8075-4704f6def58a" name="CutAction">
                <ownedComment xmi:id="35dbb430-7191-4e77-b7ed-0ac8f7f8260c" body="Cuts the selected region and place its contents&#xA;into the system clipboard.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see DefaultEditorKit#cutAction&#xA;@see DefaultEditorKit#getActions&#xA;" annotatedElement="1c16132a-eb54-48be-8075-4704f6def58a"/>
                <generalization xmi:id="cda7f30f-2c54-43d0-8f38-7067aa758c8c" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="3132b783-f123-4288-839c-5f2e5ddae9f3" name="CopyAction">
                <ownedComment xmi:id="0bc78eb2-6081-42e5-baf9-18866a40293a" body="Copies the selected region and place its contents&#xA;into the system clipboard.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see DefaultEditorKit#copyAction&#xA;@see DefaultEditorKit#getActions&#xA;" annotatedElement="3132b783-f123-4288-839c-5f2e5ddae9f3"/>
                <generalization xmi:id="f30060e7-90db-40f2-a9e1-f5925d151f8c" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="07bcfd99-acf9-4a29-8eb3-adbfc6b92bae" name="PasteAction">
                <ownedComment xmi:id="4402365d-2450-477c-aca4-2514b6517eaf" body="Pastes the contents of the system clipboard into the&#xA;selected region, or before the caret if nothing is&#xA;selected.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see DefaultEditorKit#pasteAction&#xA;@see DefaultEditorKit#getActions&#xA;" annotatedElement="07bcfd99-acf9-4a29-8eb3-adbfc6b92bae"/>
                <generalization xmi:id="8dca20b4-c86b-42c0-829d-03db8c07e288" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="2f35eeec-3614-490f-b188-73ded6478141" name="BeepAction">
                <ownedComment xmi:id="a7b4cbcb-e489-48c9-862c-79c6160e697e" body="Creates a beep.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see DefaultEditorKit#beepAction&#xA;@see DefaultEditorKit#getActions&#xA;" annotatedElement="2f35eeec-3614-490f-b188-73ded6478141"/>
                <generalization xmi:id="de51223d-eb4f-4d21-93ab-52edbf52de07" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="4c6e953a-90e6-4750-bb97-66790da43ae1" name="VerticalPageAction" visibility="package">
                <ownedComment xmi:id="cc385412-476e-4042-a3f4-2d70dee17c16" body="Scrolls up/down vertically.  The select version of this action extends&#xA;the selection, instead of simply moving the caret.&#xA;&#xA;@see DefaultEditorKit#pageUpAction&#xA;@see DefaultEditorKit#selectPageUpAction&#xA;@see DefaultEditorKit#getActions&#xA;" annotatedElement="4c6e953a-90e6-4750-bb97-66790da43ae1"/>
                <generalization xmi:id="e18f1038-2ef3-493d-8477-1467c2ebbcdd" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="a100e396-04bf-42db-acf1-e78fcb08fcee" name="PageAction" visibility="package">
                <ownedComment xmi:id="8e6d82ce-cd06-4955-a666-5c9b7806279e" body="Pages one view to the left or right.&#xA;" annotatedElement="a100e396-04bf-42db-acf1-e78fcb08fcee"/>
                <generalization xmi:id="b90c5099-87b8-4f6a-94a7-f12484c8c3db" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8e68a1b7-e206-48cd-bcac-553890ace3e1" name="DumpModelAction" visibility="package">
                <generalization xmi:id="91fc5581-50e4-4655-a329-958d1fecdf96" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6951a1f1-05b4-4311-8483-ebac495fa045" name="NextVisualPositionAction" visibility="package">
                <generalization xmi:id="a582214d-0c69-457e-b0d1-5f0d65593208" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="4f106d88-0d65-4a7c-8d4b-57b331ba6c53" name="BeginWordAction" visibility="package">
                <generalization xmi:id="161301c4-85cb-42ad-816e-a9febcdc8581" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f2a74cdf-c94f-44d9-806a-2aef6f26b9a7" name="EndWordAction" visibility="package">
                <generalization xmi:id="5cbed366-dc2e-4c6b-b60d-0c1a2e876d22" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="6d5e8b5f-1ae7-4413-a920-cc3a28739f5a" name="PreviousWordAction" visibility="package">
                <generalization xmi:id="be3aa5b4-296a-4745-acf4-d9e9e635ef0d" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="e1ea659d-1927-4551-ac02-32379be76207" name="NextWordAction" visibility="package">
                <generalization xmi:id="bff45cb5-fa2e-40d3-96b4-fd76ed1654b3" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="27073242-4939-4fba-a738-c4f0a9f20395" name="BeginLineAction" visibility="package">
                <generalization xmi:id="cd7f505c-5fb5-4eef-ac5f-5ce0065928ec" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="fc317190-462f-46e3-ac8b-d8a3edcc1d7c" name="EndLineAction" visibility="package">
                <generalization xmi:id="42922e97-27bf-4e74-a0de-5c25c68f31e3" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="bf74eaa4-3de7-4619-bffb-246969f26048" name="BeginParagraphAction" visibility="package">
                <generalization xmi:id="f2e6b7a2-eb76-484e-a7e3-57a3ca31cec3" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="a367c05b-3a3b-4b82-aee3-dca6ac1e5025" name="EndParagraphAction" visibility="package">
                <generalization xmi:id="41b9bc8b-e361-4eab-9161-aa1c2764d7d4" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="3f34ea41-bdd8-4678-af4f-c53c37a6bb37" name="BeginAction" visibility="package">
                <generalization xmi:id="cec3590d-e40a-4d61-b5b7-17311fb9ae15" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="4ecdd21d-e0aa-4ed9-9b3a-a85408d19a33" name="EndAction" visibility="package">
                <generalization xmi:id="92b7cad0-8cbb-403c-b9e8-0b0af4e48422" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0f7be1ce-ac2b-4b91-a139-29e30fdb6b57" name="SelectWordAction" visibility="package">
                <generalization xmi:id="abcdf740-5557-4073-8079-68d351c8f203" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="d45c1edb-a4d0-4f90-be3b-5de73e5360cb" name="SelectLineAction" visibility="package">
                <generalization xmi:id="b475addc-b54d-48e1-a86d-05a560d58b2c" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0ab2d6ae-493f-4cb5-91bf-108a653d25b6" name="SelectParagraphAction" visibility="package">
                <generalization xmi:id="0fe84f28-1042-421a-bf59-e601e9ba7337" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0f06eb87-fafb-4f47-a86f-f3d8b7dbdd8f" name="SelectAllAction" visibility="package">
                <generalization xmi:id="3fb619c4-18b0-4446-9ebf-7c445cf9b349" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="bf5ce6c3-d9b1-4967-b4d6-7171b1d0f811" name="UnselectAction" visibility="package">
                <generalization xmi:id="923fc2da-0c91-448e-9149-ad07d8a267f5" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="7cd1f09e-2e67-4080-89fd-725615a4cb97" name="ToggleComponentOrientationAction" visibility="package">
                <generalization xmi:id="40dc6bad-956e-4494-b562-c76a788094d0" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="f616bb7c-1596-4944-985b-70ce95a8f715" name="TabableView" isAbstract="true">
              <ownedComment xmi:id="ebe63d0c-0b6c-45b4-9092-7085da74baea" body="Interface for &lt;code>View&lt;/code>s that have size dependent upon tabs.&#xA;&#xA;@author  Timothy Prinzing&#xA;@author  Scott Violet&#xA;@version 1.10 12/19/03&#xA;@see TabExpander&#xA;@see LabelView&#xA;@see ParagraphView&#xA;" annotatedElement="f616bb7c-1596-4944-985b-70ce95a8f715"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="96d02e76-4b51-4798-a201-452a82af342f" name="EditorKit" clientDependency="1d469078-89fa-4f32-8ccb-2ec64961093b dec70461-f7f6-4604-ac28-7221907c702f" isAbstract="true">
              <ownedComment xmi:id="4397ccd5-9da6-4228-9b48-9d0595fe013e" body="Establishes the set of things needed by a text component&#xA;to be a reasonably functioning editor for some &lt;em>type&lt;/em>&#xA;of text content.  The EditorKit acts as a factory for some&#xA;kind of policy.  For example, an implementation&#xA;of html and rtf can be provided that is replaceable&#xA;with other implementations.&#xA;&lt;p>&#xA;A kit can safely store editing state as an instance&#xA;of the kit will be dedicated to a text component.&#xA;New kits will normally be created by cloning a&#xA;prototype kit.  The kit will have it's&#xA;&lt;code>setComponent&lt;/code> method called to establish&#xA;it's relationship with a JTextComponent.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.19 12/19/03&#xA;" annotatedElement="96d02e76-4b51-4798-a201-452a82af342f"/>
              <interfaceRealization xmi:id="1d469078-89fa-4f32-8ccb-2ec64961093b" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="96d02e76-4b51-4798-a201-452a82af342f" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <interfaceRealization xmi:id="dec70461-f7f6-4604-ac28-7221907c702f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="96d02e76-4b51-4798-a201-452a82af342f" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="3d79bb12-5ff6-42db-beda-3eb72b121f78" name="DefaultTextUI" isAbstract="true">
              <ownedComment xmi:id="93171d1d-4223-419c-bafa-dce43910c2be" body="&lt;p>&#xA;This class has been deprecated and should no longer be used.&#xA;The basis of the various TextUI implementations can be found&#xA;in the javax.swing.plaf.basic package and the class&#xA;BasicTextUI replaces this class.&#xA;&#xA;@deprecated&#xA;" annotatedElement="3d79bb12-5ff6-42db-beda-3eb72b121f78"/>
              <generalization xmi:id="d6f32b61-6015-4ad7-a239-d0cc2b22e8eb" isSubstitutable="true" general="a3da9a99-2268-4a6c-88e9-6c25e0a1e77c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a12ab75d-4ae8-40c5-ac6c-848d1ef3f725" name="View" clientDependency="1ff8e489-3221-4c30-b5c8-95577c2519be" isAbstract="true">
              <ownedComment xmi:id="063329bd-5cbf-4410-8c5e-770d55022014" body="&lt;p>&#xA;A very important part of the text package is the &lt;code>View&lt;/code> class.&#xA;As the name suggests it represents a view of the text model,&#xA;or a piece of the text model.&#xA;It is this class that is responsible for the look of the text component.&#xA;The view is not intended to be some completely new thing that one must&#xA;learn, but rather is much like a lightweight component.&#xA;In fact, the original &lt;code>View&lt;/code> implementation was a&#xA;lightweight component.   There were several reasons why&#xA;the &lt;code>Component&lt;/code> implementation was abandoned in favor of&#xA;an alternative.&#xA;&lt;ol>&#xA;&lt;li>&#xA;&lt;p>&#xA;There was barely time to get the lightweight component support in the&#xA;1.1 version of the JDK.  There simply wasn't time to lighten up the&#xA;component further to where it would need to be to be used for text purposes.&#xA;The additions made to &lt;code>JComponent&lt;/code> increased the memory&#xA;consumption, and as it currently stands its much too heavy for&#xA;representing text.&#xA;&lt;/p>&#xA;&lt;li>&#xA;&lt;p>&#xA;The layout semantics aren't quite right for text,&#xA;and changing the current layout&#xA;semantics of component might break existing applications.&#xA;&lt;/p>&#xA;&lt;li>&#xA;&lt;p>&#xA;The component api uses integers, but in 1.2 one can use floating point&#xA;device independent coordinates.  An api that works in both 1.1 and 1.2&#xA;would be convenient for minimizing transition difficulties.  The&#xA;&lt;code>View&lt;/code> class uses the &lt;code>Shape&lt;/code> interface and&#xA;float arguments to enable View implementations for the Java 2 platform&#xA;v1.2 and later while still functioning in the older 1.1 JDK.&#xA;&lt;/p>&#xA;&lt;/ol>&#xA;&lt;p>&#xA;By default, a view is very light.  It contains a reference to the parent&#xA;view from which it can fetch many things without holding state, and it&#xA;contains a reference to a portion of the model (&lt;/code>Element&lt;/code>).&#xA;A view does not&#xA;have to exactly represent an element in the model, that is simply a typical&#xA;and therefore convenient mapping.  A view can alternatively maintain a couple&#xA;of Position objects to maintain its location in the model (i.e. represent&#xA;a fragment of an element).  This is typically the result of formatting where&#xA;views have been broken down into pieces.  The convenience of a substantial&#xA;relationship to the element makes it easier to build factories to produce the&#xA;views, and makes it easier  to keep track of the view pieces as the model is&#xA;changed and the view must be changed to reflect the model.  Simple views&#xA;therefore represent an Element directly and complex views do not.&#xA;&lt;p>&#xA;A view has the following responsibilities:&#xA;&lt;dl>&#xA;&lt;dt>&lt;b>Participate in layout.&lt;/b>&#xA;&lt;dd>&#xA;&lt;p>The view has a &lt;code>setSize&lt;/code> method which is like&#xA;&lt;code>doLayout&lt;/code> and &lt;code>setSize&lt;/code> in &lt;code>Component&lt;/code> combined.&#xA;The view has a &lt;code>preferenceChanged&lt;/code> method which is&#xA;like &lt;code>invalidate&lt;/code> in &lt;code>Component&lt;/code> except that one can&#xA;invalidate just one axis&#xA;and the child requesting the change is identified.&#xA;&lt;p>A View expresses the size that it would like to be in terms of three&#xA;values, a minimum, a preferred, and a maximum span.  Layout in a view is&#xA;can be done independently upon each axis.  For a properly functioning View&#xA;implementation, the minimum span will be &lt;= the preferred span which in turn&#xA;will be &lt;= the maximum span.&#xA;&lt;/p>&#xA;&lt;p align=center>&lt;img src=&quot;doc-files/View-flexibility.jpg&quot;&#xA;alt=&quot;The above text describes this graphic.&quot;>&#xA;&lt;p>The minimum set of methods for layout are:&#xA;&lt;ul>&#xA;&lt;li>&lt;a href=&quot;#getMinimumSpan(int)&quot;>getMinimumSpan&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#getPreferredSpan(int)&quot;>getPreferredSpan&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#getMaximumSpan(int)&quot;>getMaximumSpan&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#getAlignment(int)&quot;>getAlignment&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#preferenceChanged(javax.swing.text.View, boolean, boolean)&quot;>preferenceChanged&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#setSize(float, float)&quot;>setSize&lt;/a>&#xA;&lt;/ul>&#xA;&#xA;&lt;p>The &lt;code>setSize&lt;/code> method should be prepared to be called a number of times&#xA;(i.e. It may be called even if the size didn't change).&#xA;The &lt;code>setSize&lt;/code> method&#xA;is generally called to make sure the View layout is complete prior to trying&#xA;to perform an operation on it that requires an up-to-date layout.  A view's&#xA;size should &lt;em>always&lt;/em> be set to a value within the minimum and maximum&#xA;span specified by that view.  Additionally, the view must always call the&#xA;&lt;code>preferenceChanged&lt;/code> method on the parent if it has changed the&#xA;values for the&#xA;layout it would like, and expects the parent to honor.  The parent View is&#xA;not required to recognize a change until the &lt;code>preferenceChanged&lt;/code>&#xA;has been sent.&#xA;This allows parent View implementations to cache the child requirements if&#xA;desired.  The calling sequence looks something like the following:&#xA;&lt;/p>&#xA;&lt;p align=center>&#xA;&lt;img src=&quot;doc-files/View-layout.jpg&quot;&#xA;alt=&quot;Sample calling sequence between parent view and child view:&#xA;setSize, getMinimum, getPreferred, getMaximum, getAlignment, setSize&quot;>&#xA;&lt;p>The exact calling sequence is up to the layout functionality of&#xA;the parent view (if the view has any children).  The view may collect&#xA;the preferences of the children prior to determining what it will give&#xA;each child, or it might iteratively update the children one at a time.&#xA;&lt;/p>&#xA;&lt;dt>&lt;b>Render a portion of the model.&lt;/b>&#xA;&lt;dd>&#xA;&lt;p>This is done in the paint method, which is pretty much like a component&#xA;paint method.  Views are expected to potentially populate a fairly large&#xA;tree.  A &lt;code>View&lt;/code> has the following semantics for rendering:&#xA;&lt;/p>&#xA;&lt;ul>&#xA;&lt;li>The view gets its allocation from the parent at paint time, so it&#xA;must be prepared to redo layout if the allocated area is different from&#xA;what it is prepared to deal with.&#xA;&lt;li>The coordinate system is the same as the hosting &lt;code>Component&lt;/code>&#xA;(i.e. the &lt;code>Component&lt;/code> returned by the&#xA;&lt;a href=&quot;#getContainer&quot;>getContainer&lt;/a> method).&#xA;This means a child view lives in the same coordinate system as the parent&#xA;view unless the parent has explicitly changed the coordinate system.&#xA;To schedule itself to be repainted a view can call repaint on the hosting&#xA;&lt;code>Component&lt;/code>.&#xA;&lt;li>The default is to &lt;em>not clip&lt;/em> the children.  It is more efficient&#xA;to allow a view to clip only if it really feels it needs clipping.&#xA;&lt;li>The &lt;code>Graphics&lt;/code> object given is not initialized in any way.&#xA;A view should set any settings needed.&#xA;&lt;li>A &lt;code>View&lt;/code> is inherently transparent.  While a view may render into its&#xA;entire allocation, typically a view does not.  Rendering is performed by&#xA;tranversing down the tree of &lt;code>View&lt;/code> implementations.&#xA;Each &lt;code>View&lt;/code> is responsible&#xA;for rendering its children.  This behavior is depended upon for thread&#xA;safety.  While view implementations do not necessarily have to be implemented&#xA;with thread safety in mind, other view implementations that do make use of&#xA;concurrency can depend upon a tree traversal to guarantee thread safety.&#xA;&lt;li>The order of views relative to the model is up to the implementation.&#xA;Although child views will typically be arranged in the same order that they&#xA;occur in the model, they may be visually arranged in an entirely different&#xA;order.  View implementations may have Z-Order associated with them if the&#xA;children are overlapping.&#xA;&lt;/ul>&#xA;&lt;p>The methods for rendering are:&#xA;&lt;ul>&#xA;&lt;li>&lt;a href=&quot;#paint(java.awt.Graphics, java.awt.Shape)&quot;>paint&lt;/a>&#xA;&lt;/ul>&#xA;&lt;p>&#xA;&lt;dt>&lt;b>Translate between the model and view coordinate systems.&lt;/b>&#xA;&lt;dd>&#xA;&lt;p>Because the view objects are produced from a factory and therefore cannot&#xA;necessarily be counted upon to be in a particular pattern, one must be able&#xA;to perform translation to properly locate spatial representation of the model.&#xA;The methods for doing this are:&#xA;&lt;ul>&#xA;&lt;li>&lt;a href=&quot;#modelToView(int, javax.swing.text.Position.Bias, int, javax.swing.text.Position.Bias, java.awt.Shape)&quot;>modelToView&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])&quot;>viewToModel&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#getDocument()&quot;>getDocument&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#getElement()&quot;>getElement&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#getStartOffset()&quot;>getStartOffset&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#getEndOffset()&quot;>getEndOffset&lt;/a>&#xA;&lt;/ul>&#xA;&lt;p>The layout must be valid prior to attempting to make the translation.&#xA;The translation is not valid, and must not be attempted while changes&#xA;are being broadcasted from the model via a &lt;code>DocumentEvent&lt;/code>.&#xA;&lt;/p>&#xA;&lt;dt>&lt;b>Respond to changes from the model.&lt;/b>&#xA;&lt;dd>&#xA;&lt;p>If the overall view is represented by many pieces (which is the best situation&#xA;if one want to be able to change the view and write the least amount of new code),&#xA;it would be impractical to have a huge number of &lt;code>DocumentListener&lt;/code>s.&#xA;If each&#xA;view listened to the model, only a few would actually be interested in the&#xA;changes broadcasted at any given time.   Since the model has no knowledge of&#xA;views, it has no way to filter the broadcast of change information.  The view&#xA;hierarchy itself is instead responsible for propagating the change information.&#xA;At any level in the view hierarchy, that view knows enough about its children to&#xA;best distribute the change information further.   Changes are therefore broadcasted&#xA;starting from the root of the view hierarchy.&#xA;The methods for doing this are:&#xA;&lt;ul>&#xA;&lt;li>&lt;a href=&quot;#insertUpdate&quot;>insertUpdate&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#removeUpdate&quot;>removeUpdate&lt;/a>&#xA;&lt;li>&lt;a href=&quot;#changedUpdate&quot;>changedUpdate&lt;/a>&#xA;&lt;/ul>&#xA;&lt;p>&#xA;&lt;/dl>&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.70 05/18/04&#xA;" annotatedElement="a12ab75d-4ae8-40c5-ac6c-848d1ef3f725"/>
              <interfaceRealization xmi:id="1ff8e489-3221-4c30-b5c8-95577c2519be" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="a12ab75d-4ae8-40c5-ac6c-848d1ef3f725" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="478d78bb-16f5-4c49-b06d-f85bef80ef4f" name="Segment" clientDependency="d8f19891-4921-4b6d-8807-b45258a3ceea 1b59e12b-e44b-4d5e-ba51-d79d01eaabc7">
              <ownedComment xmi:id="cf19dadb-6088-4e97-92a0-fbe895a4fcdf" body="A segment of a character array representing a fragment&#xA;of text.  It should be treated as immutable even though&#xA;the array is directly accessible.  This gives fast access&#xA;to fragments of text without the overhead of copying&#xA;around characters.  This is effectively an unprotected&#xA;String.&#xA;&lt;p>&#xA;The Segment implements the java.text.CharacterIterator&#xA;interface to support use with the i18n support without&#xA;copying text into a string.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.22 12/19/03&#xA;" annotatedElement="478d78bb-16f5-4c49-b06d-f85bef80ef4f"/>
              <interfaceRealization xmi:id="d8f19891-4921-4b6d-8807-b45258a3ceea" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="478d78bb-16f5-4c49-b06d-f85bef80ef4f" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
              <interfaceRealization xmi:id="1b59e12b-e44b-4d5e-ba51-d79d01eaabc7" name="" supplier="b475bdb8-5ca3-494d-9082-5f62a1aa4a16" client="478d78bb-16f5-4c49-b06d-f85bef80ef4f" contract="b475bdb8-5ca3-494d-9082-5f62a1aa4a16"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7a3ededb-6011-4766-be76-c6a07c6c59db" name="DefaultCellEditor" clientDependency="32bdefd8-4a0a-4858-9c6f-e9cd25ef460d 1b43efa6-2b98-415a-bb23-815bba6709ec">
            <ownedComment xmi:id="4fa760c8-aac1-40bb-b6b3-87b81cba48b6" body="The default editor for table and tree cells.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.50 12/19/03&#xA;@author Alan Chung&#xA;@author Philip Milne&#xA;" annotatedElement="7a3ededb-6011-4766-be76-c6a07c6c59db"/>
            <generalization xmi:id="19d899f6-fcad-4675-a2fb-90d2a601375c" isSubstitutable="true" general="3f10b1c3-0725-419f-b438-415deee7a9d4"/>
            <interfaceRealization xmi:id="32bdefd8-4a0a-4858-9c6f-e9cd25ef460d" name="" supplier="5575d96f-9252-46f2-8be1-e5d0d692a14e" client="7a3ededb-6011-4766-be76-c6a07c6c59db" contract="5575d96f-9252-46f2-8be1-e5d0d692a14e"/>
            <interfaceRealization xmi:id="1b43efa6-2b98-415a-bb23-815bba6709ec" name="" supplier="bfb39e02-d098-4a7c-9d43-99b38ee28dcd" client="7a3ededb-6011-4766-be76-c6a07c6c59db" contract="bfb39e02-d098-4a7c-9d43-99b38ee28dcd"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="dd0ea117-4d59-411f-a02c-34542a87ded2" name="EditorDelegate" visibility="protected" clientDependency="ed19d4db-1634-4c06-9035-d110e98fa3b6 8c664b59-59e9-4c8f-bcf9-6f77243b9632 a8e5eb80-c7a7-4454-bd67-501209a651a5">
              <ownedComment xmi:id="6cbda67f-0ba9-4571-81ac-b4c39147a635" body="The protected &lt;code>EditorDelegate&lt;/code> class.&#xA;" annotatedElement="dd0ea117-4d59-411f-a02c-34542a87ded2"/>
              <interfaceRealization xmi:id="ed19d4db-1634-4c06-9035-d110e98fa3b6" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="dd0ea117-4d59-411f-a02c-34542a87ded2" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
              <interfaceRealization xmi:id="8c664b59-59e9-4c8f-bcf9-6f77243b9632" name="" supplier="1dd642cc-ad4c-43b8-91c1-a201cb5d8292" client="dd0ea117-4d59-411f-a02c-34542a87ded2" contract="1dd642cc-ad4c-43b8-91c1-a201cb5d8292"/>
              <interfaceRealization xmi:id="a8e5eb80-c7a7-4454-bd67-501209a651a5" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="dd0ea117-4d59-411f-a02c-34542a87ded2" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="771591b8-32e3-4e12-93c1-5cca9e08c3a2" name="plaf">
            <packagedElement xmi:type="uml:Class" xmi:id="9ff2f339-26b8-4661-845a-ec726c26f6d9" name="LabelUI" isAbstract="true">
              <ownedComment xmi:id="1938cedb-c38b-422c-adeb-164e040f1380" body="Pluggable look and feel interface for JLabel.&#xA;&#xA;@version 1.12 12/19/03&#xA;@author Hans Muller&#xA;" annotatedElement="9ff2f339-26b8-4661-845a-ec726c26f6d9"/>
              <generalization xmi:id="23864d42-cafb-4fb1-8f74-4440d0238f35" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd" name="ComponentUI" isAbstract="true">
              <ownedComment xmi:id="d4f6c0bf-833a-4991-af21-8e01550e00c4" body="The base class for all UI delegate objects in the Swing pluggable&#xA;look and feel architecture.  The UI delegate object for a Swing&#xA;component is responsible for implementing the aspects of the&#xA;component that depend on the look and feel.&#xA;The &lt;code>JComponent&lt;/code> class&#xA;invokes methods from this class in order to delegate operations&#xA;(painting, layout calculations, etc.) that may vary depending on the&#xA;look and feel installed.  &lt;b>Client programs should not invoke methods&#xA;on this class directly.&lt;/b>&#xA;&#xA;@see javax.swing.JComponent&#xA;@see javax.swing.UIManager&#xA;&#xA;" annotatedElement="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5486de47-e653-4cd2-aa43-7e465d28906f" name="SplitPaneUI" isAbstract="true">
              <ownedComment xmi:id="6f25b296-b1b2-43ec-b64a-05a8cf69f309" body="Pluggable look and feel interface for JSplitPane.&#xA;&#xA;@version 1.16 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="5486de47-e653-4cd2-aa43-7e465d28906f"/>
              <generalization xmi:id="1f1ecc6d-8d40-4139-a883-0eb812d2c010" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="01b9ade1-e7a2-4e5a-b24c-f448898f3c54" name="ComboBoxUI" isAbstract="true">
              <ownedComment xmi:id="19304c28-c498-4e43-ae43-35f74a73bd37" body="Pluggable look and feel interface for JComboBox.&#xA;&#xA;@version 1.19 12/19/03&#xA;@author Arnaud Weber&#xA;@author Tom Santos&#xA;" annotatedElement="01b9ade1-e7a2-4e5a-b24c-f448898f3c54"/>
              <generalization xmi:id="e41d4364-9f76-42c6-9df0-ad52ff925aeb" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2aaa6bed-3a0e-4682-97d6-d49cf10bae09" name="PanelUI" isAbstract="true">
              <ownedComment xmi:id="daa24ba6-e2f6-43f1-8695-fe20ec96c970" body="Pluggable look and feel interface for Panel.&#xA;&#xA;@version 1.8 12/19/03&#xA;@author Steve Wilson&#xA;" annotatedElement="2aaa6bed-3a0e-4682-97d6-d49cf10bae09"/>
              <generalization xmi:id="3875c73e-62e2-4eb5-8d9d-70c65b877523" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2d85b975-83b5-41be-b382-f35b3ffbae32" name="TableUI" isAbstract="true">
              <ownedComment xmi:id="e85e1bcf-d8d2-44b2-81a8-2f9c1b5d8d0d" body="Pluggable look and feel interface for JTable.&#xA;&#xA;@version 1.12 12/19/03&#xA;@author Alan Chung&#xA;" annotatedElement="2d85b975-83b5-41be-b382-f35b3ffbae32"/>
              <generalization xmi:id="f4b2f77a-c746-4b91-89ea-904c9b8c22f8" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2f3e5226-6a6f-4235-b6c3-4cccde30c6f2" name="ActionMapUIResource" clientDependency="569a5b8d-d64a-4835-9c21-ed68f68fd80c">
              <ownedComment xmi:id="dca1ba39-c8de-4ffb-b0de-36ff3fffb247" body="A subclass of javax.swing.ActionMap that implements UIResource.&#xA;UI classes which provide an ActionMap should use this class.&#xA;&#xA;@version 1.6 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="2f3e5226-6a6f-4235-b6c3-4cccde30c6f2"/>
              <generalization xmi:id="43ec8a3d-d060-4ad6-96a2-8b6a7b079d97" isSubstitutable="true" general="890d1c02-f889-4eae-b1d6-2f325ecf9797"/>
              <interfaceRealization xmi:id="569a5b8d-d64a-4835-9c21-ed68f68fd80c" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="2f3e5226-6a6f-4235-b6c3-4cccde30c6f2" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="63991190-1e8c-47b0-8acc-38ac2fcbc070" name="SeparatorUI" isAbstract="true">
              <ownedComment xmi:id="876d3e71-2ac8-4165-a039-a23793544102" body="Pluggable look and feel interface for JSeparator.&#xA;&#xA;@version 1.11 12/19/03&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;" annotatedElement="63991190-1e8c-47b0-8acc-38ac2fcbc070"/>
              <generalization xmi:id="a8ebad1f-41b3-41ab-84aa-c99157094b45" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0d32b011-12dd-4c8c-be95-aed4b08d5233" name="ViewportUI" isAbstract="true">
              <ownedComment xmi:id="b4b9c4b3-a72c-424a-8bd5-5be5f7885d1d" body="Pluggable look and feel interface for JViewport.&#xA;&#xA;@version 1.1 05/01/98&#xA;@author Rich Schiavi&#xA;" annotatedElement="0d32b011-12dd-4c8c-be95-aed4b08d5233"/>
              <generalization xmi:id="a0b9ccf3-c5c0-46c3-9204-474d69295b40" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8fa68540-8d39-482d-b69d-ada870b61bf0" name="FontUIResource" clientDependency="8b8a6918-6879-4ddd-b6c7-04ac1512ae86">
              <ownedComment xmi:id="b96e419f-68e3-489b-a821-9ab4443c9fda" body="A subclass of java.awt.Font that implements UIResource.&#xA;UI classes which set default font properties should use&#xA;this class.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see javax.swing.plaf.UIResource&#xA;@version 1.14 12/19/03&#xA;@author Hans Muller&#xA;&#xA;" annotatedElement="8fa68540-8d39-482d-b69d-ada870b61bf0"/>
              <generalization xmi:id="6805362b-3e56-4943-9283-535e325bfd39" isSubstitutable="true" general="84b0dd69-8bb5-461f-8f37-f1604b5c3fd8"/>
              <interfaceRealization xmi:id="8b8a6918-6879-4ddd-b6c7-04ac1512ae86" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="8fa68540-8d39-482d-b69d-ada870b61bf0" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="314015f1-69fe-46d6-9f23-cdb0596c80ef" name="TableHeaderUI" isAbstract="true">
              <ownedComment xmi:id="6302593c-8870-4ab5-b1ab-fcc6e802eedc" body="Pluggable look and feel interface for JTableHeader.&#xA;&#xA;@version 1.12 12/19/03&#xA;@author Alan Chung&#xA;" annotatedElement="314015f1-69fe-46d6-9f23-cdb0596c80ef"/>
              <generalization xmi:id="159ee023-575e-4d70-8ea8-468fa61a05d1" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="fd6be86a-b9b4-4e70-be64-5f9288521af7" name="TreeUI" isAbstract="true">
              <ownedComment xmi:id="24712cb4-af0c-435f-9977-0edbca7591e3" body="Pluggable look and feel interface for JTree.&#xA;&#xA;@version 1.24 12/19/03&#xA;@author Rob Davis&#xA;@author Scott Violet&#xA;" annotatedElement="fd6be86a-b9b4-4e70-be64-5f9288521af7"/>
              <generalization xmi:id="9c65a215-515b-45df-8805-aefd1c6d6c9d" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="499a68cd-e4e8-43b2-9985-51d0931b9e3c" name="MenuItemUI" isAbstract="true">
              <ownedComment xmi:id="2fc25baa-2daa-4917-8fcf-41e819b35403" body="Pluggable look and feel interface for JMenuItem.&#xA;&#xA;@version @(#)MenuItemUI.java&#x9;1.16 03/12/19&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;@author Arnaud Weber&#xA;" annotatedElement="499a68cd-e4e8-43b2-9985-51d0931b9e3c"/>
              <generalization xmi:id="3d32e65d-d14b-4a5b-8beb-12a6932d13af" isSubstitutable="true" general="6d44d004-82d0-4a2e-8a23-9169fd9f018a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="fa4aba5a-71a8-40b0-93ce-cad08b1a8641" name="PopupMenuUI" isAbstract="true">
              <ownedComment xmi:id="5be5ee67-0086-43ae-b4f6-544a973fd970" body="Pluggable look and feel interface for JPopupMenu.&#xA;&#xA;@version 1.16 12/19/03&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;" annotatedElement="fa4aba5a-71a8-40b0-93ce-cad08b1a8641"/>
              <generalization xmi:id="c3d20c92-b443-4fcf-bd56-7f6e063576ee" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4de80b8a-81cb-46ec-999a-87a3b81bac4e" name="InternalFrameUI" isAbstract="true">
              <ownedComment xmi:id="40d74c06-e166-4768-b927-b42d8dafd90f" body="Pluggable look and feel interface for JInternalFrame.&#xA;&#xA;@version 1.14 12/19/03&#xA;@author David Kloba&#xA;" annotatedElement="4de80b8a-81cb-46ec-999a-87a3b81bac4e"/>
              <generalization xmi:id="54058d05-075e-4928-811c-8a7e3e3a76a8" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="3007cb60-68ca-4f02-a833-baa63951b6a9" name="multi">
              <packagedElement xmi:type="uml:Class" xmi:id="b5a82a47-cba0-4c04-b063-6e8d227317f6" name="MultiTableUI">
                <ownedComment xmi:id="9a97fb9f-19c3-44b8-b258-7cd10fcb0e00" body="A multiplexing UI used to combine &lt;code>TableUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.24 12/19/03 17:39:44&#xA;@author  Otto Multey&#xA;" annotatedElement="b5a82a47-cba0-4c04-b063-6e8d227317f6"/>
                <generalization xmi:id="4f517413-ba1a-46e6-82ae-7f6632670b64" isSubstitutable="true" general="2d85b975-83b5-41be-b382-f35b3ffbae32"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="cd2e76dd-6b5a-4270-a0dd-4cd311028061" name="MultiSplitPaneUI">
                <ownedComment xmi:id="c2a1d2ef-9dcf-401d-af13-67e9e0c84e48" body="A multiplexing UI used to combine &lt;code>SplitPaneUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.27 12/19/03 17:39:42&#xA;@author  Otto Multey&#xA;" annotatedElement="cd2e76dd-6b5a-4270-a0dd-4cd311028061"/>
                <generalization xmi:id="2f44517a-4ef9-458c-bc6a-b4ef8f0bb4a7" isSubstitutable="true" general="5486de47-e653-4cd2-aa43-7e465d28906f"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="bb25e5f2-9909-4995-a89b-705acf71f1d4" name="MultiInternalFrameUI">
                <ownedComment xmi:id="ca7f8042-5ec4-4c3a-bc79-450a37bed0bc" body="A multiplexing UI used to combine &lt;code>InternalFrameUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.27 12/19/03 17:39:32&#xA;@author  Otto Multey&#xA;" annotatedElement="bb25e5f2-9909-4995-a89b-705acf71f1d4"/>
                <generalization xmi:id="db37e01e-1e4d-42dc-a799-36fe3c0e4bef" isSubstitutable="true" general="4de80b8a-81cb-46ec-999a-87a3b81bac4e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4367140c-68cd-4a0f-8358-8b61729b41af" name="MultiSpinnerUI">
                <ownedComment xmi:id="6a4ee10a-e549-4fdf-98b2-f73566a9b6d7" body="A multiplexing UI used to combine &lt;code>SpinnerUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.4 12/19/03 17:39:41&#xA;@author  Otto Multey&#xA;" annotatedElement="4367140c-68cd-4a0f-8358-8b61729b41af"/>
                <generalization xmi:id="e44baa6d-741a-413a-a381-14bfe3a6fab9" isSubstitutable="true" general="e86bfcae-6af7-459f-9e7b-b1bde0a3528a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="7604edb9-6222-4081-a0b3-f78a33f14814" name="MultiToolBarUI">
                <ownedComment xmi:id="3431f4eb-3fe7-4565-b3f9-b4c3a590d81e" body="A multiplexing UI used to combine &lt;code>ToolBarUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.28 12/19/03 17:39:45&#xA;@author  Otto Multey&#xA;" annotatedElement="7604edb9-6222-4081-a0b3-f78a33f14814"/>
                <generalization xmi:id="1b0f5a92-42d1-4024-a079-08a50e05df83" isSubstitutable="true" general="09f4aa71-eb70-48b3-8a99-d5fbeb4c2952"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6185c017-892f-4b45-846f-c8ff77ef4bda" name="MultiMenuBarUI">
                <ownedComment xmi:id="99f412fa-603e-454c-af57-b5052b364d33" body="A multiplexing UI used to combine &lt;code>MenuBarUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.28 12/19/03 17:39:34&#xA;@author  Otto Multey&#xA;" annotatedElement="6185c017-892f-4b45-846f-c8ff77ef4bda"/>
                <generalization xmi:id="862e02bd-9d07-403d-96c1-3090ea04432a" isSubstitutable="true" general="a55d53a0-4608-4efa-b95c-9d8cc41a353c"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="73cda110-8e8b-4d00-ae50-9663e234bca1" name="MultiPanelUI">
                <ownedComment xmi:id="31c186bd-b0c6-49dd-90d1-e354b3a39582" body="A multiplexing UI used to combine &lt;code>PanelUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.12 12/19/03 17:39:36&#xA;@author  Otto Multey&#xA;" annotatedElement="73cda110-8e8b-4d00-ae50-9663e234bca1"/>
                <generalization xmi:id="568ad97c-3574-4adc-854b-81defa6ba30f" isSubstitutable="true" general="2aaa6bed-3a0e-4682-97d6-d49cf10bae09"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="62402a47-aa08-4c57-b3d3-02abad265a65" name="MultiRootPaneUI">
                <ownedComment xmi:id="1be88897-8207-4658-b583-d347c7487010" body="A multiplexing UI used to combine &lt;code>RootPaneUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.5 12/19/03 17:39:38&#xA;@author  Otto Multey&#xA;" annotatedElement="62402a47-aa08-4c57-b3d3-02abad265a65"/>
                <generalization xmi:id="33a7e482-da89-4174-830e-adb705c0364b" isSubstitutable="true" general="bdf79edf-3407-4b65-bd77-31f9fba69d9d"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="cb10cee3-6ec5-4de1-a389-519e70f2fc0d" name="MultiTabbedPaneUI">
                <ownedComment xmi:id="6c01fada-3842-46f7-b734-6933331068ee" body="A multiplexing UI used to combine &lt;code>TabbedPaneUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.28 12/19/03 17:39:42&#xA;@author  Otto Multey&#xA;" annotatedElement="cb10cee3-6ec5-4de1-a389-519e70f2fc0d"/>
                <generalization xmi:id="510bad02-e706-422e-8ad8-f38888aedb27" isSubstitutable="true" general="6636af71-8b26-4dbc-9e2a-c7812a45d9f8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="81a032b8-6d3b-4362-9613-fb4eefbd4b50" name="MultiTextUI">
                <ownedComment xmi:id="4fbbadf2-3e79-4332-baa3-941bb5a25571" body="A multiplexing UI used to combine &lt;code>TextUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.34 12/19/03 17:39:44&#xA;@author  Otto Multey&#xA;" annotatedElement="81a032b8-6d3b-4362-9613-fb4eefbd4b50"/>
                <generalization xmi:id="f3a6cb1d-5508-4882-94b7-dabc9c1a9769" isSubstitutable="true" general="9a8e91d9-0a6f-44ae-8d1d-6d91f631a1de"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f042b442-16b5-4cda-9c8f-fc3161a31410" name="MultiScrollBarUI">
                <ownedComment xmi:id="5298a021-6530-4d30-a6f2-cb597bdd7aea" body="A multiplexing UI used to combine &lt;code>ScrollBarUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.26 12/19/03 17:39:39&#xA;@author  Otto Multey&#xA;" annotatedElement="f042b442-16b5-4cda-9c8f-fc3161a31410"/>
                <generalization xmi:id="cad5573d-bcc8-4d81-9bca-91b01a184d6b" isSubstitutable="true" general="6852ad20-0f51-481e-a1bd-88e1c2a21cfa"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="281defd0-4de5-4a7a-baf7-d1939eb6c11f" name="MultiScrollPaneUI">
                <ownedComment xmi:id="91d0f253-3573-4160-9c2c-dbe478a8d7cf" body="A multiplexing UI used to combine &lt;code>ScrollPaneUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.27 12/19/03 17:39:39&#xA;@author  Otto Multey&#xA;" annotatedElement="281defd0-4de5-4a7a-baf7-d1939eb6c11f"/>
                <generalization xmi:id="232b01be-bd6e-4123-8e73-40eac3721965" isSubstitutable="true" general="80ce906e-c485-4502-963b-6b02d46ebbc1"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="db792bad-d9ef-4ab9-9aef-4ded072992df" name="MultiLabelUI">
                <ownedComment xmi:id="c4ec2414-165e-44ee-aac7-eccbee349536" body="A multiplexing UI used to combine &lt;code>LabelUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.26 12/19/03 17:39:32&#xA;@author  Otto Multey&#xA;" annotatedElement="db792bad-d9ef-4ab9-9aef-4ded072992df"/>
                <generalization xmi:id="41617329-deca-426c-a7e0-04bb70bc6e3c" isSubstitutable="true" general="9ff2f339-26b8-4661-845a-ec726c26f6d9"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="2a84f929-9a6d-404b-b75e-d0f64a2fe837" name="MultiDesktopPaneUI">
                <ownedComment xmi:id="fa3f73ff-9458-4e02-b46b-03efb6c46162" body="A multiplexing UI used to combine &lt;code>DesktopPaneUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.24 12/19/03 17:39:31&#xA;@author  Otto Multey&#xA;" annotatedElement="2a84f929-9a6d-404b-b75e-d0f64a2fe837"/>
                <generalization xmi:id="0e143801-b476-4de4-a0de-24b93046b592" isSubstitutable="true" general="0f3f3f3b-490e-47da-9080-5458d19139c4"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4734ccef-c577-456a-85fc-0b88615a2cb0" name="MultiOptionPaneUI">
                <ownedComment xmi:id="1946fa89-05eb-4439-a5ff-ed9fa203ba71" body="A multiplexing UI used to combine &lt;code>OptionPaneUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.25 12/19/03 17:39:36&#xA;@author  Otto Multey&#xA;" annotatedElement="4734ccef-c577-456a-85fc-0b88615a2cb0"/>
                <generalization xmi:id="f1c36296-d8e6-4ff6-8470-87f598e7f77a" isSubstitutable="true" general="9a64d3c2-d2f6-4573-9d95-cf9f3ff86af5"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="2b0bbfd5-032f-40f3-8310-43f66ea73826" name="MultiProgressBarUI">
                <ownedComment xmi:id="d5fd4321-7868-4d44-b951-618c1bf4b64a" body="A multiplexing UI used to combine &lt;code>ProgressBarUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.26 12/19/03 17:39:37&#xA;@author  Otto Multey&#xA;" annotatedElement="2b0bbfd5-032f-40f3-8310-43f66ea73826"/>
                <generalization xmi:id="f6216fc7-7904-41e9-a3b1-530d2bccfded" isSubstitutable="true" general="c85ac2f3-62f4-40f2-9ef5-b00225fdace6"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="88257143-82ac-4ab2-8c3e-7a0e20bdfec3" name="MultiDesktopIconUI">
                <ownedComment xmi:id="74e74f61-f5fb-4fe0-9a65-caf596f212ed" body="A multiplexing UI used to combine &lt;code>DesktopIconUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.24 12/19/03 17:39:30&#xA;@author  Otto Multey&#xA;" annotatedElement="88257143-82ac-4ab2-8c3e-7a0e20bdfec3"/>
                <generalization xmi:id="14cb3018-b6a1-499c-a4c4-a820b282ae15" isSubstitutable="true" general="41c8caca-9409-4580-93a2-dae51b1e6d8c"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="df5dd433-13f8-4b39-9bd8-d654b93f1fc8" name="MultiLookAndFeel">
                <ownedComment xmi:id="e8f5c850-9ee2-444e-a327-53f88ec2db7e" body="&lt;p>A multiplexing look and feel that allows more than one UI&#xA;to be associated with a component at the same time.&#xA;The primary look and feel is called&#xA;the &lt;em>default&lt;/em> look and feel,&#xA;and the other look and feels are called &lt;em>auxiliary&lt;/em>.&#xA;&lt;p>&#xA;&#xA;For further information, see&#xA;&lt;a href=&quot;doc-files/multi_tsc.html&quot; target=&quot;_top&quot;>Using the&#xA;Multiplexing Look and Feel.&lt;/a>&#xA;&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see UIManager#addAuxiliaryLookAndFeel&#xA;@see javax.swing.plaf.multi&#xA;&#xA;@version 1.34 12/19/03&#xA;@author Willie Walker&#xA;" annotatedElement="df5dd433-13f8-4b39-9bd8-d654b93f1fc8"/>
                <generalization xmi:id="e7fb6b52-c4af-4c9d-9c42-849b5fc85296" isSubstitutable="true" general="8e3e0707-da20-4081-b9b1-0a8cb379d61a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4449c765-ec2a-433b-9084-29bc244ee02e" name="MultiViewportUI">
                <ownedComment xmi:id="f55d0fbf-a963-49f9-8cea-445b3577b4f8" body="A multiplexing UI used to combine &lt;code>ViewportUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.11 12/19/03 17:39:47&#xA;@author  Otto Multey&#xA;" annotatedElement="4449c765-ec2a-433b-9084-29bc244ee02e"/>
                <generalization xmi:id="45e94f44-7e98-4303-abcd-f0095df99c3a" isSubstitutable="true" general="0d32b011-12dd-4c8c-be95-aed4b08d5233"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f5887d0b-fd30-478a-a39f-b5efc4d78169" name="MultiComboBoxUI">
                <ownedComment xmi:id="4d379dd7-486d-452e-bbe4-8a6737d216e5" body="A multiplexing UI used to combine &lt;code>ComboBoxUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.32 12/19/03 17:39:29&#xA;@author  Otto Multey&#xA;" annotatedElement="f5887d0b-fd30-478a-a39f-b5efc4d78169"/>
                <generalization xmi:id="1a5ac6fe-5b09-471b-b3cc-b25ddb9738c5" isSubstitutable="true" general="01b9ade1-e7a2-4e5a-b24c-f448898f3c54"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="b8dab95f-7716-4917-bce3-5c57d0e20ea0" name="MultiFileChooserUI">
                <ownedComment xmi:id="8d77504b-2d9b-4750-bc94-356209c0c282" body="A multiplexing UI used to combine &lt;code>FileChooserUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.26 12/19/03 17:39:31&#xA;@author  Otto Multey&#xA;" annotatedElement="b8dab95f-7716-4917-bce3-5c57d0e20ea0"/>
                <generalization xmi:id="48f00d5d-e293-490c-9bf3-0ec95237a1a5" isSubstitutable="true" general="5c48dacc-c874-478d-9beb-e00967383408"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="fbac3139-ec58-4bc8-84a2-b460121601ec" name="MultiSeparatorUI">
                <ownedComment xmi:id="eb0baaee-d952-4ddc-838c-43e91d7330cd" body="A multiplexing UI used to combine &lt;code>SeparatorUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.26 12/19/03 17:39:40&#xA;@author  Otto Multey&#xA;" annotatedElement="fbac3139-ec58-4bc8-84a2-b460121601ec"/>
                <generalization xmi:id="8befd6ae-1154-4fc2-83d2-bbb43a24ace9" isSubstitutable="true" general="63991190-1e8c-47b0-8acc-38ac2fcbc070"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="3399f151-9e7b-4bce-b8b4-facc615dfbd3" name="MultiColorChooserUI">
                <ownedComment xmi:id="91a29e76-29f4-4036-8519-411f4b5ab9f5" body="A multiplexing UI used to combine &lt;code>ColorChooserUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.21 12/19/03 17:39:29&#xA;@author  Otto Multey&#xA;" annotatedElement="3399f151-9e7b-4bce-b8b4-facc615dfbd3"/>
                <generalization xmi:id="01eadc9f-4e82-4b2d-a93a-d1cbda56dd2b" isSubstitutable="true" general="3db64f1a-7e6e-4546-ac1e-39b528d73ea0"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="5e76568d-131c-4ab7-bba5-35a82093b663" name="MultiUIDefaults" visibility="package">
                <ownedComment xmi:id="33d62324-9369-44b9-b17a-c03160100f64" body="We want the Multiplexing LookAndFeel to be quiet and fallback&#xA;gracefully if it cannot find a UI.  This class overrides the&#xA;getUIError method of UIDefaults, which is the method that&#xA;emits error messages when it cannot find a UI class in the&#xA;LAF.&#xA;" annotatedElement="5e76568d-131c-4ab7-bba5-35a82093b663"/>
                <generalization xmi:id="9d3d7049-b7b9-494e-bc87-330e026721e7" isSubstitutable="true" general="07efb30b-f3bf-4a82-8804-829b13b9bf19"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6b517bcf-ea14-4028-b225-05776abe60cc" name="MultiButtonUI">
                <ownedComment xmi:id="bde43c02-0b01-44d8-a3ad-7fd2c222241c" body="A multiplexing UI used to combine &lt;code>ButtonUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.27 12/19/03 17:39:28&#xA;@author  Otto Multey&#xA;" annotatedElement="6b517bcf-ea14-4028-b225-05776abe60cc"/>
                <generalization xmi:id="6f0a4b89-be25-4c76-9e2c-f39d41bcbaaf" isSubstitutable="true" general="6d44d004-82d0-4a2e-8a23-9169fd9f018a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="c26ae926-860c-4123-b54a-acc44623eb9b" name="MultiToolTipUI">
                <ownedComment xmi:id="e826e836-af5a-4730-9e55-3cb8a1393efa" body="A multiplexing UI used to combine &lt;code>ToolTipUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.26 12/19/03 17:39:45&#xA;@author  Otto Multey&#xA;" annotatedElement="c26ae926-860c-4123-b54a-acc44623eb9b"/>
                <generalization xmi:id="2df29d81-9c3f-446f-bd18-6f8e206a0849" isSubstitutable="true" general="003dadb2-cab7-4cb1-a294-627cbefa8e20"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="3357a923-e1ab-488b-9d61-a4c38ba48e83" name="MultiTreeUI">
                <ownedComment xmi:id="8d3b151c-b902-4b89-858c-1ff134243ea6" body="A multiplexing UI used to combine &lt;code>TreeUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.32 12/19/03 17:39:46&#xA;@author  Otto Multey&#xA;" annotatedElement="3357a923-e1ab-488b-9d61-a4c38ba48e83"/>
                <generalization xmi:id="d742a50e-8064-465c-915f-d3e7a44c4822" isSubstitutable="true" general="fd6be86a-b9b4-4e70-be64-5f9288521af7"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="d8f71cf8-c3cf-4de3-8d94-5df946136fec" name="MultiPopupMenuUI">
                <ownedComment xmi:id="42d390f6-4b5e-4233-8bcd-4571722c2086" body="A multiplexing UI used to combine &lt;code>PopupMenuUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.28 12/19/03 17:39:37&#xA;@author  Otto Multey&#xA;" annotatedElement="d8f71cf8-c3cf-4de3-8d94-5df946136fec"/>
                <generalization xmi:id="bb4bf965-2149-443b-9026-f65fe653d401" isSubstitutable="true" general="fa4aba5a-71a8-40b0-93ce-cad08b1a8641"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="27849042-20ce-4d30-84f7-548985aeaba3" name="MultiSliderUI">
                <ownedComment xmi:id="a7edf711-25b4-4729-b468-57d703f0c77a" body="A multiplexing UI used to combine &lt;code>SliderUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.26 12/19/03 17:39:40&#xA;@author  Otto Multey&#xA;" annotatedElement="27849042-20ce-4d30-84f7-548985aeaba3"/>
                <generalization xmi:id="5006a1c4-8137-427e-9836-c4944cccdd41" isSubstitutable="true" general="6df8fb0d-68cf-4f85-8edc-043cc1d83d94"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="42482bda-6a99-48c3-ab94-3aab968bbd86" name="MultiMenuItemUI">
                <ownedComment xmi:id="96d862dd-c7ed-44df-9474-847bdd47b2d2" body="A multiplexing UI used to combine &lt;code>MenuItemUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.28 12/19/03 17:39:35&#xA;@author  Otto Multey&#xA;" annotatedElement="42482bda-6a99-48c3-ab94-3aab968bbd86"/>
                <generalization xmi:id="30102c6d-a0be-409f-a6d3-8179ae7436b9" isSubstitutable="true" general="499a68cd-e4e8-43b2-9985-51d0931b9e3c"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="710ed9ce-2f47-4ed9-a908-cb374d6afdcc" name="MultiTableHeaderUI">
                <ownedComment xmi:id="bb6489ec-2ac7-4057-89b9-d0aeb3e56510" body="A multiplexing UI used to combine &lt;code>TableHeaderUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.25 12/19/03 17:39:43&#xA;@author  Otto Multey&#xA;" annotatedElement="710ed9ce-2f47-4ed9-a908-cb374d6afdcc"/>
                <generalization xmi:id="f5378ee7-d14c-4348-a2d7-827405b70e78" isSubstitutable="true" general="314015f1-69fe-46d6-9f23-cdb0596c80ef"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="ef8c87cf-3f81-4abd-a957-54accf98392e" name="MultiListUI">
                <ownedComment xmi:id="7c9325cf-31a7-4f9b-9e15-4ada9568a0d2" body="A multiplexing UI used to combine &lt;code>ListUI&lt;/code>s.&#xA;&#xA;&lt;p>This file was automatically generated by AutoMulti.&#xA;&#xA;@version 1.27 12/19/03 17:39:33&#xA;@author  Otto Multey&#xA;" annotatedElement="ef8c87cf-3f81-4abd-a957-54accf98392e"/>
                <generalization xmi:id="9e1ff05e-7e42-4f82-9395-cd8c9c926ffd" isSubstitutable="true" general="0eebb1f7-e719-4743-a6fe-f20170d56229"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="03158fac-4f1c-4c62-b0ac-0ba2f4963a85" name="IconUIResource" clientDependency="2a6a2813-cd73-4223-8897-391291bb7202 507b7817-94d9-48c9-b1eb-03157d677375 a87f2f5c-26d3-4508-b44c-c77849ab2a67">
              <interfaceRealization xmi:id="2a6a2813-cd73-4223-8897-391291bb7202" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="03158fac-4f1c-4c62-b0ac-0ba2f4963a85" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
              <interfaceRealization xmi:id="507b7817-94d9-48c9-b1eb-03157d677375" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="03158fac-4f1c-4c62-b0ac-0ba2f4963a85" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
              <interfaceRealization xmi:id="a87f2f5c-26d3-4508-b44c-c77849ab2a67" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="03158fac-4f1c-4c62-b0ac-0ba2f4963a85" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6d44d004-82d0-4a2e-8a23-9169fd9f018a" name="ButtonUI" isAbstract="true">
              <ownedComment xmi:id="67a45aab-a7a2-49ff-b57c-a3bc8c8d65ef" body="Pluggable look and feel interface for JButton.&#xA;&#xA;@version 1.20 04/02/04&#xA;@author Jeff Dinkins&#xA;" annotatedElement="6d44d004-82d0-4a2e-8a23-9169fd9f018a"/>
              <generalization xmi:id="fa2eb0de-3fee-48b4-b1a9-f9c2ea968e39" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9a8e91d9-0a6f-44ae-8d1d-6d91f631a1de" name="TextUI" isAbstract="true">
              <ownedComment xmi:id="040a19f0-8538-461c-ba2b-997c3d75e6d6" body="Text editor user interface&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.32 12/19/03&#xA;" annotatedElement="9a8e91d9-0a6f-44ae-8d1d-6d91f631a1de"/>
              <generalization xmi:id="ee0692cd-4aae-4da0-8851-8d5d4c5f6ccf" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6852ad20-0f51-481e-a1bd-88e1c2a21cfa" name="ScrollBarUI" isAbstract="true">
              <ownedComment xmi:id="e13a6c1d-33f9-4c26-83cc-b85af37e672b" body="Pluggable look and feel interface for JScrollBar.&#xA;&#xA;@version 1.12 03/12/19&#xA;@author David Kloba&#xA;" annotatedElement="6852ad20-0f51-481e-a1bd-88e1c2a21cfa"/>
              <generalization xmi:id="ad3b127b-cbe7-45ec-8ea4-e741199732e9" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6636af71-8b26-4dbc-9e2a-c7812a45d9f8" name="TabbedPaneUI" isAbstract="true">
              <ownedComment xmi:id="181b8446-a5b2-4f20-8fc2-8e18976a287b" body="Pluggable look and feel interface for JTabbedPane.&#xA;&#xA;@version 1.15 12/19/03&#xA;@author Dave Moore&#xA;@author Amy Fowler&#xA;" annotatedElement="6636af71-8b26-4dbc-9e2a-c7812a45d9f8"/>
              <generalization xmi:id="52b1ce27-6431-4bc6-af9e-3cca454c0559" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6df8fb0d-68cf-4f85-8edc-043cc1d83d94" name="SliderUI" isAbstract="true">
              <ownedComment xmi:id="d9dbcc17-6c08-43bb-9c3e-14e9a62b73df" body="Pluggable look and feel interface for JSlider.&#xA;&#xA;@version 1.12 12/19/03&#xA;@author Hans Muller&#xA;" annotatedElement="6df8fb0d-68cf-4f85-8edc-043cc1d83d94"/>
              <generalization xmi:id="51eb01e3-ed08-4dc9-8538-5de0e04387eb" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="3ed07f5a-0c38-4055-b174-b7d1f2a6c785" name="basic">
              <packagedElement xmi:type="uml:Interface" xmi:id="6cc37dcf-633e-482c-b368-71f3a822330b" name="ComboPopup" isAbstract="true">
                <ownedComment xmi:id="3f540476-bae7-4752-8965-d13a8f077017" body="The interface which defines the methods required for the implementation of the popup&#xA;portion of a combo box.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.15 12/19/03&#xA;@author Tom Santos&#xA;" annotatedElement="6cc37dcf-633e-482c-b368-71f3a822330b"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="63e4e11a-495b-414f-9415-fdbd1112cec3" name="BasicMenuBarUI">
                <ownedComment xmi:id="5c2f8199-bff1-48a4-8f3c-a45e51fee6e6" body="A default L&amp;F implementation of MenuBarUI.  This implementation&#xA;is a &quot;combined&quot; view/controller.&#xA;&#xA;@version 1.80 12/19/03&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;@author Arnaud Weber&#xA;" annotatedElement="63e4e11a-495b-414f-9415-fdbd1112cec3"/>
                <generalization xmi:id="baed9072-7eb6-42f0-ad9b-cdcae8aa8778" isSubstitutable="true" general="a55d53a0-4608-4efa-b95c-9d8cc41a353c"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="cef97a11-9887-4514-95db-ec70f27fa77c" name="Handler" visibility="private" clientDependency="ed7ec9df-d095-4be2-967f-8e1b5029f237 70c530d8-6d17-4def-b778-c044c9d3ce9e">
                  <interfaceRealization xmi:id="ed7ec9df-d095-4be2-967f-8e1b5029f237" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="cef97a11-9887-4514-95db-ec70f27fa77c" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                  <interfaceRealization xmi:id="70c530d8-6d17-4def-b778-c044c9d3ce9e" name="" supplier="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8" client="cef97a11-9887-4514-95db-ec70f27fa77c" contract="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ca7b0987-8ce2-499b-9866-fd7258a0246e" name="Actions" visibility="private"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6af9ec7c-a503-4cd7-a4c3-1ce52e789003" name="BasicTransferable" visibility="package" clientDependency="82ad2f3f-2f79-4fbd-a85a-c9968ae5422d c5a2bf3d-7dfe-45ce-a16d-670d64442dbc">
                <ownedComment xmi:id="d32f46c9-3f31-4efd-bdd1-a4ae073e9f66" body="A transferable implementation for the default data transfer of some Swing&#xA;components.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.9 12/19/03&#xA;" annotatedElement="6af9ec7c-a503-4cd7-a4c3-1ce52e789003"/>
                <interfaceRealization xmi:id="82ad2f3f-2f79-4fbd-a85a-c9968ae5422d" name="" supplier="93975c92-87b1-4831-a429-d2cc70682ac8" client="6af9ec7c-a503-4cd7-a4c3-1ce52e789003" contract="93975c92-87b1-4831-a429-d2cc70682ac8"/>
                <interfaceRealization xmi:id="c5a2bf3d-7dfe-45ce-a16d-670d64442dbc" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="6af9ec7c-a503-4cd7-a4c3-1ce52e789003" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="99358614-84fd-4231-afd2-c74334bb76ee" name="BasicLookAndFeel" clientDependency="43fdab45-f74f-4efd-a8ff-919934c85239" isAbstract="true">
                <ownedComment xmi:id="fafa3d70-93ae-4cc7-b875-b0a8f55adb09" body="Implements the a standard base LookAndFeel class from which&#xA;standard desktop LookAndFeel classes (JLF, Mac, Windows, etc.)&#xA;can be derived.  This class cannot be instantiated directly,&#xA;however the UI classes &quot;Basic&quot; defines can be.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.238 03/05/04&#xA;@author unattributed&#xA;" annotatedElement="99358614-84fd-4231-afd2-c74334bb76ee"/>
                <generalization xmi:id="a422c54e-8f8d-437c-8b35-eaf00d2dfa2e" isSubstitutable="true" general="8e3e0707-da20-4081-b9b1-0a8cb379d61a"/>
                <interfaceRealization xmi:id="43fdab45-f74f-4efd-a8ff-919934c85239" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="99358614-84fd-4231-afd2-c74334bb76ee" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="9d4c5cb2-d69b-469f-b3f0-0caa7f2a7b8e" name="AudioAction" visibility="private" clientDependency="7cda694e-f08d-4950-b0a1-819fef6a3188">
                  <ownedComment xmi:id="1133b93d-976e-4058-871e-907aff301afb" body="Pass the name String to the super constructor. This is used&#xA;later to identify the Action and decide whether to play it or&#xA;not. Store the resource String. I is used to get the audio&#xA;resource. In this case, the resource is an audio file.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="9d4c5cb2-d69b-469f-b3f0-0caa7f2a7b8e"/>
                  <generalization xmi:id="2447d67b-c89f-4e18-850e-771b95d16105" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                  <interfaceRealization xmi:id="7cda694e-f08d-4950-b0a1-819fef6a3188" name="" supplier="47bde82f-ad2b-4d2b-8ee9-a9091243562d" client="9d4c5cb2-d69b-469f-b3f0-0caa7f2a7b8e" contract="47bde82f-ad2b-4d2b-8ee9-a9091243562d"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="b4f027c0-4878-429e-be5b-9f13ec92bd0a" name="PopupInvocationHelper" visibility="package" clientDependency="26ff2fd2-c03e-400a-bdf1-5a614e1d3e40 72d65a25-c18f-4e21-8b26-d3745776b71b">
                  <ownedComment xmi:id="674fa857-ebf2-43e2-8163-d5675dc16133" body="This class contains listener that watches for all the mouse&#xA;events that can possibly invoke popup on the component&#xA;" annotatedElement="b4f027c0-4878-429e-be5b-9f13ec92bd0a"/>
                  <interfaceRealization xmi:id="26ff2fd2-c03e-400a-bdf1-5a614e1d3e40" name="" supplier="44edb2fe-b050-4f4b-84d0-05d4b3301cb8" client="b4f027c0-4878-429e-be5b-9f13ec92bd0a" contract="44edb2fe-b050-4f4b-84d0-05d4b3301cb8"/>
                  <interfaceRealization xmi:id="72d65a25-c18f-4e21-8b26-d3745776b71b" name="" supplier="5646b95f-c8d5-4f70-8c2b-9996e66b63ce" client="b4f027c0-4878-429e-be5b-9f13ec92bd0a" contract="5646b95f-c8d5-4f70-8c2b-9996e66b63ce"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="2f3b5d4e-f579-4db4-bb59-c507f66e8d59" name="CenterLayout" visibility="package" clientDependency="205868b4-bb99-4d07-8c87-b4d0e2ee87f4 5125319b-a1c2-429d-a298-1708cdee2633">
                <ownedComment xmi:id="2ea740f0-14f3-4bea-8859-93cad35c155f" body="Center-positioning layout manager.&#xA;@version 1.12 12/19/03&#xA;@author Tom Santos&#xA;@author Steve Wilson&#xA;" annotatedElement="2f3b5d4e-f579-4db4-bb59-c507f66e8d59"/>
                <interfaceRealization xmi:id="5125319b-a1c2-429d-a298-1708cdee2633" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="2f3b5d4e-f579-4db4-bb59-c507f66e8d59" contract="c3507179-c29c-40a9-8869-092757900e53"/>
                <interfaceRealization xmi:id="205868b4-bb99-4d07-8c87-b4d0e2ee87f4" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="2f3b5d4e-f579-4db4-bb59-c507f66e8d59" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="ce986630-63e2-4d59-b74b-8d8821b02dbc" name="BasicPanelUI">
                <ownedComment xmi:id="81e55276-d851-4124-a7b7-1e98fa4d9822" body="BasicPanel implementation&#xA;&#xA;@version 1.11 12/19/03&#xA;@author Steve Wilson&#xA;" annotatedElement="ce986630-63e2-4d59-b74b-8d8821b02dbc"/>
                <generalization xmi:id="26c74ed2-8b4e-435b-9fd3-1b0ffc5bdfb6" isSubstitutable="true" general="2aaa6bed-3a0e-4682-97d6-d49cf10bae09"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="885c095d-ae9f-442a-b0bc-449398bcfcb5" name="BasicSplitPaneUI">
                <ownedComment xmi:id="0c2dfdc5-8c27-4b10-81bd-4e6b3bef5bed" body="A Basic L&amp;F implementation of the SplitPaneUI.&#xA;&#xA;@version 1.80 05/18/04&#xA;@author Scott Violet&#xA;@author Steve Wilson&#xA;@author Ralph Kar&#xA;" annotatedElement="885c095d-ae9f-442a-b0bc-449398bcfcb5"/>
                <generalization xmi:id="2eeb81d1-50d4-47df-9075-a53c118a3e7a" isSubstitutable="true" general="5486de47-e653-4cd2-aa43-7e465d28906f"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="526e0477-34e6-4917-9d3b-c51c9649fc1b" name="PropertyHandler" clientDependency="a6972e17-2224-405c-9eaa-cdc0ff89d3ae">
                  <ownedComment xmi:id="6305f69f-e5a1-44cd-a1fb-083638ed9f79" body="Implementation of the PropertyChangeListener&#xA;that the JSplitPane UI uses.&#xA;&lt;p>&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicSplitPaneUI.&#xA;" annotatedElement="526e0477-34e6-4917-9d3b-c51c9649fc1b"/>
                  <interfaceRealization xmi:id="a6972e17-2224-405c-9eaa-cdc0ff89d3ae" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="526e0477-34e6-4917-9d3b-c51c9649fc1b" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5819fb24-d44d-4320-beff-2478f109702f" name="FocusHandler">
                  <ownedComment xmi:id="feb091c8-407f-48ec-9c20-2dc05fe74abc" body="Implementation of the FocusListener that the JSplitPane UI uses.&#xA;&lt;p>&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicSplitPaneUI.&#xA;" annotatedElement="5819fb24-d44d-4320-beff-2478f109702f"/>
                  <generalization xmi:id="46f4d2e3-9411-44e2-9a1d-d8a62862150f" isSubstitutable="true" general="53b3c159-7523-4e58-a3a3-3971308e2311"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="40e5e09d-131e-4656-9510-235845a64ee9" name="KeyboardUpLeftHandler" clientDependency="4ff457db-1791-4416-98d3-737f9563c82e">
                  <ownedComment xmi:id="224d1e89-9395-483b-9378-b268d0954eb7" body="Implementation of an ActionListener that the JSplitPane UI uses for&#xA;handling specific key presses.&#xA;&lt;p>&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicSplitPaneUI.&#xA;" annotatedElement="40e5e09d-131e-4656-9510-235845a64ee9"/>
                  <interfaceRealization xmi:id="4ff457db-1791-4416-98d3-737f9563c82e" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="40e5e09d-131e-4656-9510-235845a64ee9" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="8d7738dd-4841-48fe-abe5-b4460dc117ed" name="KeyboardDownRightHandler" clientDependency="8ac0c615-3cdd-42e2-9e1c-18cc09956ef9">
                  <ownedComment xmi:id="574a865c-4d1f-4d7d-86ad-7b955ff53aac" body="Implementation of an ActionListener that the JSplitPane UI uses for&#xA;handling specific key presses.&#xA;&lt;p>&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicSplitPaneUI.&#xA;" annotatedElement="8d7738dd-4841-48fe-abe5-b4460dc117ed"/>
                  <interfaceRealization xmi:id="8ac0c615-3cdd-42e2-9e1c-18cc09956ef9" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="8d7738dd-4841-48fe-abe5-b4460dc117ed" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="3b892e9a-a226-4d9b-9509-70fec5c0fa43" name="KeyboardHomeHandler" clientDependency="b6adb4f9-3160-4784-bf0a-5e8aaf5faba8">
                  <ownedComment xmi:id="de3cf59b-c206-4952-943e-45f23a6c2f90" body="Implementation of an ActionListener that the JSplitPane UI uses for&#xA;handling specific key presses.&#xA;&lt;p>&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicSplitPaneUI.&#xA;" annotatedElement="3b892e9a-a226-4d9b-9509-70fec5c0fa43"/>
                  <interfaceRealization xmi:id="b6adb4f9-3160-4784-bf0a-5e8aaf5faba8" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="3b892e9a-a226-4d9b-9509-70fec5c0fa43" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e0bbadf8-9124-4f85-9e21-7cdd3765cb8b" name="KeyboardEndHandler" clientDependency="1ebf8798-713d-4375-960f-419219d54c72">
                  <ownedComment xmi:id="10d39b8d-3363-4a43-9b62-7d54e2f24767" body="Implementation of an ActionListener that the JSplitPane UI uses for&#xA;handling specific key presses.&#xA;&lt;p>&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicSplitPaneUI.&#xA;" annotatedElement="e0bbadf8-9124-4f85-9e21-7cdd3765cb8b"/>
                  <interfaceRealization xmi:id="1ebf8798-713d-4375-960f-419219d54c72" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="e0bbadf8-9124-4f85-9e21-7cdd3765cb8b" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5629a2d9-124b-42f6-b61b-f9a0f78f7102" name="KeyboardResizeToggleHandler" clientDependency="6e234b77-68fe-4e19-9cf9-abce6099640f">
                  <ownedComment xmi:id="b5940cc1-b09d-4452-b4b0-b2299f1aa9cc" body="Implementation of an ActionListener that the JSplitPane UI uses for&#xA;handling specific key presses.&#xA;&lt;p>&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicSplitPaneUI.&#xA;" annotatedElement="5629a2d9-124b-42f6-b61b-f9a0f78f7102"/>
                  <interfaceRealization xmi:id="6e234b77-68fe-4e19-9cf9-abce6099640f" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="5629a2d9-124b-42f6-b61b-f9a0f78f7102" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="d8e14788-a665-4b96-b550-72f788ff2d96" name="BasicHorizontalLayoutManager" clientDependency="ff8e0479-1aa4-40f6-8a53-f479e41ace85">
                  <ownedComment xmi:id="d47fbb0d-a5c8-4289-a8f3-250273131ad8" body="LayoutManager for JSplitPanes that have an orientation of&#xA;HORIZONTAL_SPLIT.&#xA;" annotatedElement="d8e14788-a665-4b96-b550-72f788ff2d96"/>
                  <interfaceRealization xmi:id="ff8e0479-1aa4-40f6-8a53-f479e41ace85" name="" supplier="a42fe497-3d64-40e3-8aae-e48bec8b7d93" client="d8e14788-a665-4b96-b550-72f788ff2d96" contract="a42fe497-3d64-40e3-8aae-e48bec8b7d93"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="56a3c9b0-37f2-45ce-b4af-99609216ac53" name="BasicVerticalLayoutManager">
                  <ownedComment xmi:id="89f3c1e5-f3b3-4e61-b6c2-24f0276d17cc" body="LayoutManager used for JSplitPanes with an orientation of&#xA;VERTICAL_SPLIT.&#xA;&lt;p>&#xA;" annotatedElement="56a3c9b0-37f2-45ce-b4af-99609216ac53"/>
                  <generalization xmi:id="bda28476-8c42-4a9a-a71a-0261de392648" isSubstitutable="true" general="d8e14788-a665-4b96-b550-72f788ff2d96"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e009a66b-5cfb-4953-9dd4-b008f08afc71" name="Handler" visibility="private" clientDependency="dc6e7367-5ead-4499-81c3-41292a219c8b 63c43257-763d-4d6a-be0d-6a1370a83e22">
                  <interfaceRealization xmi:id="dc6e7367-5ead-4499-81c3-41292a219c8b" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="e009a66b-5cfb-4953-9dd4-b008f08afc71" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                  <interfaceRealization xmi:id="63c43257-763d-4d6a-be0d-6a1370a83e22" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="e009a66b-5cfb-4953-9dd4-b008f08afc71" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="cbe9f567-99fa-4e7b-ac33-80f8d4b49b90" name="Actions" visibility="private"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="a3da9a99-2268-4a6c-88e9-6c25e0a1e77c" name="BasicTextUI" clientDependency="6d5802df-25e4-45b7-8b33-9008030d05d4" isAbstract="true">
                <ownedComment xmi:id="9efb9308-44f6-43eb-af0c-34f428eae660" body="&lt;p>&#xA;Basis of a text components look-and-feel.  This provides the&#xA;basic editor view and controller services that may be useful&#xA;when creating a look-and-feel for an extension of&#xA;&lt;code>JTextComponent&lt;/code>.&#xA;&lt;p>&#xA;Most state is held in the associated &lt;code>JTextComponent&lt;/code>&#xA;as bound properties, and the UI installs default values for the&#xA;various properties.  This default will install something for&#xA;all of the properties.  Typically, a LAF implementation will&#xA;do more however.  At a minimum, a LAF would generally install&#xA;key bindings.&#xA;&lt;p>&#xA;This class also provides some concurrency support if the&#xA;&lt;code>Document&lt;/code> associated with the JTextComponent is a subclass of&#xA;&lt;code>AbstractDocument&lt;/code>.  Access to the View (or View hierarchy) is&#xA;serialized between any thread mutating the model and the Swing&#xA;event thread (which is expected to render, do model/view coordinate&#xA;translation, etc).  &lt;em>Any access to the root view should first&#xA;acquire a read-lock on the AbstractDocument and release that lock&#xA;in a finally block.&lt;/em>&#xA;&lt;p>&#xA;An important method to define is the {@link #getPropertyPrefix} method&#xA;which is used as the basis of the keys used to fetch defaults&#xA;from the UIManager.  The string should reflect the type of&#xA;TextUI (eg. TextField, TextArea, etc) without the particular&#xA;LAF part of the name (eg Metal, Motif, etc).&#xA;&lt;p>&#xA;To build a view of the model, one of the following strategies&#xA;can be employed.&#xA;&lt;ol>&#xA;&lt;li>&#xA;One strategy is to simply redefine the&#xA;ViewFactory interface in the UI.  By default, this UI itself acts&#xA;as the factory for View implementations.  This is useful&#xA;for simple factories.  To do this reimplement the&#xA;{@link #create} method.&#xA;&lt;li>&#xA;A common strategy for creating more complex types of documents&#xA;is to have the EditorKit implementation return a factory.  Since&#xA;the EditorKit ties all of the pieces necessary to maintain a type&#xA;of document, the factory is typically an important part of that&#xA;and should be produced by the EditorKit implementation.&#xA;&lt;li>&#xA;A less common way to create more complex types is to have&#xA;the UI implementation create a.&#xA;separate object for the factory.  To do this, the&#xA;{@link #createViewFactory} method should be reimplemented to&#xA;return some factory.&#xA;&lt;/ol>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.103 05/26/04&#xA;" annotatedElement="a3da9a99-2268-4a6c-88e9-6c25e0a1e77c"/>
                <generalization xmi:id="e1da068b-1ecc-49e5-bac5-d22a694b204e" isSubstitutable="true" general="9a8e91d9-0a6f-44ae-8d1d-6d91f631a1de"/>
                <interfaceRealization xmi:id="6d5802df-25e4-45b7-8b33-9008030d05d4" name="" supplier="e3a1d3f4-af71-4ce0-962d-e7b0b2295c0d" client="a3da9a99-2268-4a6c-88e9-6c25e0a1e77c" contract="e3a1d3f4-af71-4ce0-962d-e7b0b2295c0d"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ac84be59-fe1a-45d9-9f7c-072bf97ffa5f" name="BasicCaret" clientDependency="d2c6e08b-0952-4ae4-92ce-747886f73756">
                  <generalization xmi:id="21fc9763-087d-4c02-827c-ed9347961a7d" isSubstitutable="true" general="2da9e4c7-f746-4cc1-87f1-26de789a81cc"/>
                  <interfaceRealization xmi:id="d2c6e08b-0952-4ae4-92ce-747886f73756" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="ac84be59-fe1a-45d9-9f7c-072bf97ffa5f" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="662ddb50-f471-4a0a-ab88-b70fde1b3384" name="BasicHighlighter" clientDependency="a8197b15-23c7-4222-bfa9-462297145841">
                  <generalization xmi:id="c7a33635-52e0-446b-bd87-706950fa9d4f" isSubstitutable="true" general="48b422bb-abf9-4577-8c8a-23743ff3ade5"/>
                  <interfaceRealization xmi:id="a8197b15-23c7-4222-bfa9-462297145841" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="662ddb50-f471-4a0a-ab88-b70fde1b3384" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="249d3190-c8b3-4d67-a63d-eadaefacda3d" name="RootView" visibility="package">
                  <ownedComment xmi:id="010c2610-5481-41e2-b043-0f673a94fa7e" body="Root view that acts as a gateway between the component&#xA;and the View hierarchy.&#xA;" annotatedElement="249d3190-c8b3-4d67-a63d-eadaefacda3d"/>
                  <generalization xmi:id="60e9fff0-116e-4553-a53f-70e11ff8220f" isSubstitutable="true" general="a12ab75d-4ae8-40c5-ac6c-848d1ef3f725"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="0588493f-f3e1-4d37-bd9d-82bfe9d7325d" name="UpdateHandler" visibility="package" clientDependency="9c66064a-387c-4090-a804-10b4944f0948 3214dc89-6670-4e38-8efe-4993a7f57a03 68c2b5a6-9234-4859-af27-2a06d6333871 92038583-3c32-4503-bfee-443e1df26390">
                  <ownedComment xmi:id="dd19c1c8-c5ba-4c61-9af7-8da5d17794d0" body="Handles updates from various places.  If the model is changed,&#xA;this class unregisters as a listener to the old model and&#xA;registers with the new model.  If the document model changes,&#xA;the change is forwarded to the root view.  If the focus&#xA;accelerator changes, a new keystroke is registered to request&#xA;focus.&#xA;" annotatedElement="0588493f-f3e1-4d37-bd9d-82bfe9d7325d"/>
                  <interfaceRealization xmi:id="3214dc89-6670-4e38-8efe-4993a7f57a03" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="0588493f-f3e1-4d37-bd9d-82bfe9d7325d" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                  <interfaceRealization xmi:id="68c2b5a6-9234-4859-af27-2a06d6333871" name="" supplier="8473483d-b350-428d-828b-a5a719abea43" client="0588493f-f3e1-4d37-bd9d-82bfe9d7325d" contract="8473483d-b350-428d-828b-a5a719abea43"/>
                  <interfaceRealization xmi:id="9c66064a-387c-4090-a804-10b4944f0948" name="" supplier="a42fe497-3d64-40e3-8aae-e48bec8b7d93" client="0588493f-f3e1-4d37-bd9d-82bfe9d7325d" contract="a42fe497-3d64-40e3-8aae-e48bec8b7d93"/>
                  <interfaceRealization xmi:id="92038583-3c32-4503-bfee-443e1df26390" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="0588493f-f3e1-4d37-bd9d-82bfe9d7325d" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="eaf27915-d67c-4586-8422-a25ccf8292ab" name="TextActionWrapper" visibility="package">
                  <ownedComment xmi:id="30b8a7a5-4d42-4b23-8118-6bc8fd3f5da7" body="Wrapper for text actions to return isEnabled false in case editor is non editable&#xA;" annotatedElement="eaf27915-d67c-4586-8422-a25ccf8292ab"/>
                  <generalization xmi:id="cacca764-8d58-4f99-b683-d4b35733d5f4" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="8a0e7811-cba9-4eb4-a058-e48080bbe728" name="FocusAction" visibility="package">
                  <ownedComment xmi:id="9f0a953f-1540-42b0-aaf3-21b688951a88" body="Registered in the ActionMap.&#xA;" annotatedElement="8a0e7811-cba9-4eb4-a058-e48080bbe728"/>
                  <generalization xmi:id="e8372589-dda1-4f28-b800-e9bf6dee1673" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="f5f3bf52-493c-40f9-9786-9be039f7628f" name="TextDragGestureRecognizer" visibility="package">
                  <ownedComment xmi:id="53fe57d0-9cb4-48dd-92c6-ffa7cea71aae" body="Drag gesture recognizer for text components.&#xA;" annotatedElement="f5f3bf52-493c-40f9-9786-9be039f7628f"/>
                  <generalization xmi:id="1564d3da-6a2f-45e5-8ecf-50db902301c4" isSubstitutable="true" general="602f8cf7-2456-4c0f-adf7-4b948b620265"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="3423ede5-0ca1-41ae-aa5d-f8323bba008f" name="TextDropTargetListener" visibility="package">
                  <ownedComment xmi:id="964c9ed4-b5b3-4bae-a5f7-feaafa1d92c3" body="A DropTargetListener to extend the default Swing handling of drop operations&#xA;by moving the caret to the nearest location to the mouse pointer.&#xA;" annotatedElement="3423ede5-0ca1-41ae-aa5d-f8323bba008f"/>
                  <generalization xmi:id="798c175b-5aeb-49e9-8cd5-c3bce9ad9748" isSubstitutable="true" general="424a8ed1-20ee-48b8-b496-2d41d652479a"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c9c8dd5d-ac01-4f55-8bd4-bcc68e3e48ca" name="TextTransferHandler" visibility="package" clientDependency="19c2a9c1-06a6-4b35-9dbf-3072d1973793">
                  <generalization xmi:id="8092703f-f6fa-4398-aba6-2b4b9e61f398" isSubstitutable="true" general="74564559-a512-4c82-bfcc-29769618ec6c"/>
                  <interfaceRealization xmi:id="19c2a9c1-06a6-4b35-9dbf-3072d1973793" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="c9c8dd5d-ac01-4f55-8bd4-bcc68e3e48ca" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="43c4899a-a749-437d-8e3f-46d7c8758389" name="TextTransferable" visibility="package">
                    <ownedComment xmi:id="542762c1-0e19-4d9d-8565-bbbc0c3e7754" body="A possible implementation of the Transferable interface&#xA;for text components.  For a JEditorPane with a rich set&#xA;of EditorKit implementations, conversions could be made&#xA;giving a wider set of formats.  This is implemented to&#xA;offer up only the active content type and text/plain&#xA;(if that is not the active format) since that can be&#xA;extracted from other formats.&#xA;" annotatedElement="43c4899a-a749-437d-8e3f-46d7c8758389"/>
                    <generalization xmi:id="3a12257d-e4e1-4988-9e9a-9abcd4390ec1" isSubstitutable="true" general="6af9ec7c-a503-4cd7-a4c3-1ce52e789003"/>
                  </nestedClassifier>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="602f8cf7-2456-4c0f-adf7-4b948b620265" name="BasicDragGestureRecognizer" visibility="package" clientDependency="752115d1-05c0-4f7c-8ee9-b9181c82afee 86598995-efbd-4b63-8f5a-d7375d30c3bb">
                <ownedComment xmi:id="cc4f291b-3dbd-4672-90b2-6e2be362f868" body="Default drag gesture recognition for drag operations performed by classses&#xA;that have a &lt;code>dragEnabled&lt;/code> property.  The gesture for a drag in&#xA;this package is a mouse press over a selection followed by some movement&#xA;by enough pixels to keep it from being treated as a click.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.7 12/19/03&#xA;" annotatedElement="602f8cf7-2456-4c0f-adf7-4b948b620265"/>
                <interfaceRealization xmi:id="752115d1-05c0-4f7c-8ee9-b9181c82afee" name="" supplier="d2bfccf2-94c5-4882-8d84-613f4ad53195" client="602f8cf7-2456-4c0f-adf7-4b948b620265" contract="d2bfccf2-94c5-4882-8d84-613f4ad53195"/>
                <interfaceRealization xmi:id="86598995-efbd-4b63-8f5a-d7375d30c3bb" name="" supplier="8747391f-bebd-47e3-888b-8e509ac223c9" client="602f8cf7-2456-4c0f-adf7-4b948b620265" contract="8747391f-bebd-47e3-888b-8e509ac223c9"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f53a63fa-b154-4792-97d7-8488efbcc67b" name="BasicScrollBarUI" clientDependency="e9fa8f00-4229-4adf-9130-afbfe1e0e097 8c79bcc9-fcad-47b5-ba42-96b31cc5e73b">
                <ownedComment xmi:id="308de093-10d2-4857-8c5d-d7e5be7eec48" body="Implementation of ScrollBarUI for the Basic Look and Feel&#xA;&#xA;@version 1.83 01/09/04&#xA;@author Rich Schiavi&#xA;@author David Kloba&#xA;@author Hans Muller&#xA;" annotatedElement="f53a63fa-b154-4792-97d7-8488efbcc67b"/>
                <generalization xmi:id="4598e09e-9dc0-4896-bc70-44ddc2b53322" isSubstitutable="true" general="6852ad20-0f51-481e-a1bd-88e1c2a21cfa"/>
                <interfaceRealization xmi:id="e9fa8f00-4229-4adf-9130-afbfe1e0e097" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="f53a63fa-b154-4792-97d7-8488efbcc67b" contract="c3507179-c29c-40a9-8869-092757900e53"/>
                <interfaceRealization xmi:id="8c79bcc9-fcad-47b5-ba42-96b31cc5e73b" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="f53a63fa-b154-4792-97d7-8488efbcc67b" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="de40c8ed-54de-4f1d-bebf-924489ec6992" name="ModelListener" visibility="protected" clientDependency="91257a66-5f17-42f2-a93e-d230854a82b1">
                  <ownedComment xmi:id="66695101-5c2b-4b19-a259-54efc6ef79e6" body="A listener to listen for model changes.&#xA;&#xA;" annotatedElement="de40c8ed-54de-4f1d-bebf-924489ec6992"/>
                  <interfaceRealization xmi:id="91257a66-5f17-42f2-a93e-d230854a82b1" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="de40c8ed-54de-4f1d-bebf-924489ec6992" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ad9b0d6f-62de-4f59-b646-a00d76d8537b" name="TrackListener" visibility="protected" clientDependency="e363e19b-83b7-47d1-bf6c-ac1301e04b3b">
                  <ownedComment xmi:id="6dcc57e1-180e-4406-83c3-ce5eff1db032" body="Track mouse drags.&#xA;" annotatedElement="ad9b0d6f-62de-4f59-b646-a00d76d8537b"/>
                  <generalization xmi:id="83d52a2e-457a-4425-8f71-17e35aaeef33" isSubstitutable="true" general="0db79cd4-0757-4282-b2c3-730fa54c5c55"/>
                  <interfaceRealization xmi:id="e363e19b-83b7-47d1-bf6c-ac1301e04b3b" name="" supplier="8747391f-bebd-47e3-888b-8e509ac223c9" client="ad9b0d6f-62de-4f59-b646-a00d76d8537b" contract="8747391f-bebd-47e3-888b-8e509ac223c9"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1d900375-8a73-4573-9c79-eac533411b9b" name="ArrowButtonListener" visibility="protected">
                  <ownedComment xmi:id="9982caa4-a579-44fa-8b04-4f7cce5b3b95" body="Listener for cursor keys.&#xA;" annotatedElement="1d900375-8a73-4573-9c79-eac533411b9b"/>
                  <generalization xmi:id="092f8dcd-dd04-49bd-b89c-e94c253d1257" isSubstitutable="true" general="0db79cd4-0757-4282-b2c3-730fa54c5c55"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a7c2b6a0-669c-4055-8c8a-992c59951b75" name="ScrollListener" visibility="protected" clientDependency="1be572ad-909b-4e2f-8775-0f348efc29e1">
                  <ownedComment xmi:id="4803b5e3-0c46-424d-bfb6-9ee9ed701d87" body="Listener for scrolling events initiated in the&#xA;&lt;code>ScrollPane&lt;/code>.&#xA;" annotatedElement="a7c2b6a0-669c-4055-8c8a-992c59951b75"/>
                  <interfaceRealization xmi:id="1be572ad-909b-4e2f-8775-0f348efc29e1" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="a7c2b6a0-669c-4055-8c8a-992c59951b75" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a16d6321-8c60-4ccc-8c2f-2246937840d0" name="PropertyChangeHandler" clientDependency="5c6eff1e-0012-4333-84e9-0d3934b44be6">
                  <interfaceRealization xmi:id="5c6eff1e-0012-4333-84e9-0d3934b44be6" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="a16d6321-8c60-4ccc-8c2f-2246937840d0" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e3661084-b946-4e1b-9812-a269f8f6cc15" name="Actions" visibility="private">
                  <ownedComment xmi:id="3fef913f-9ebe-4320-b85e-58c7fc4cebb7" body="Used for scrolling the scrollbar.&#xA;" annotatedElement="e3661084-b946-4e1b-9812-a269f8f6cc15"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="8889f5a9-1c90-4dc3-9caf-e06bba654e63" name="Handler" visibility="private" clientDependency="683e6f57-c10b-473f-9bd4-8c9f97f9ece7 2d90785e-07e8-4553-b660-0f3c0dd94550">
                  <interfaceRealization xmi:id="683e6f57-c10b-473f-9bd4-8c9f97f9ece7" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="8889f5a9-1c90-4dc3-9caf-e06bba654e63" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                  <interfaceRealization xmi:id="2d90785e-07e8-4553-b660-0f3c0dd94550" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="8889f5a9-1c90-4dc3-9caf-e06bba654e63" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="0d3d80b2-b0a6-4896-9560-78415ad5639b" name="BasicEditorPaneUI">
                <ownedComment xmi:id="43ed2df6-4ddd-413e-a7a4-919a2ec7a872" body="Provides the look and feel for a JEditorPane.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.32 07/23/04&#xA;" annotatedElement="0d3d80b2-b0a6-4896-9560-78415ad5639b"/>
                <generalization xmi:id="71995be7-3b8d-439d-8561-140abd5a09fb" isSubstitutable="true" general="a3da9a99-2268-4a6c-88e9-6c25e0a1e77c"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1a227c22-6efd-4c95-aa99-88301107ada8" name="StyleSheetUIResource" visibility="package" clientDependency="c82af4f2-f5fa-4317-84a5-c2b445265c1f">
                  <generalization xmi:id="a5004341-718e-4e2f-917c-ab73d153307b" isSubstitutable="true" general="4ffca5b9-8538-474e-b79c-238cc5ef1219"/>
                  <interfaceRealization xmi:id="c82af4f2-f5fa-4317-84a5-c2b445265c1f" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="1a227c22-6efd-4c95-aa99-88301107ada8" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="41ce2a09-b378-4cc0-b753-f4751dedaa8f" name="BasicTextPaneUI">
                <ownedComment xmi:id="5536c62a-3aed-4871-beec-4487e6b05790" body="Provides the look and feel for a styled text editor.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.69 07/23/04&#xA;" annotatedElement="41ce2a09-b378-4cc0-b753-f4751dedaa8f"/>
                <generalization xmi:id="5b07eed2-99b6-4a7a-b0b0-78cee4b1d23f" isSubstitutable="true" general="0d3d80b2-b0a6-4896-9560-78415ad5639b"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f107c761-ab2f-41fb-8dfa-baad7e029ba8" name="BasicFormattedTextFieldUI">
                <ownedComment xmi:id="b3f45ecd-e26a-407f-bf12-a97a6a8589a2" body="Provides the look and feel implementation for&#xA;&lt;code>JFormattedTextField&lt;/code>.&#xA;&#xA;@version 1.4 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="f107c761-ab2f-41fb-8dfa-baad7e029ba8"/>
                <generalization xmi:id="76f9cac3-9666-4186-8c12-607cd45ad41d" isSubstitutable="true" general="289b701d-6a86-42ec-8cfb-29415722efca"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="b720308d-6638-4771-a9c2-a324cb24131f" name="BasicMenuItemUI">
                <ownedComment xmi:id="339c9803-5ef6-4c1f-bdda-bd447cae36e8" body="BasicMenuItem implementation&#xA;&#xA;@version 1.128 12/19/03&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;@author Arnaud Weber&#xA;@author Fredrik Lagerblad&#xA;" annotatedElement="b720308d-6638-4771-a9c2-a324cb24131f"/>
                <generalization xmi:id="289c214c-8f02-47ac-bcf5-3c0ce64c1ac6" isSubstitutable="true" general="499a68cd-e4e8-43b2-9985-51d0931b9e3c"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ca5b47a9-4046-4bac-b0f5-07aad1beb879" name="MouseInputHandler" visibility="protected" clientDependency="954e2116-6a1b-4ff3-83b5-d80cf6611d16">
                  <interfaceRealization xmi:id="954e2116-6a1b-4ff3-83b5-d80cf6611d16" name="" supplier="361ca981-29c8-430f-b1a4-fa3e692a1955" client="ca5b47a9-4046-4bac-b0f5-07aad1beb879" contract="361ca981-29c8-430f-b1a4-fa3e692a1955"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="237c4491-ab07-4435-a5fe-97b11a0d47a2" name="Actions" visibility="private"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6e4ca77a-08b7-4951-b65e-6d2d89405dd4" name="Handler" visibility="package" clientDependency="d658691e-b686-4f50-a3fb-ce7bdbcf8947 8ea43a5b-65c2-4f98-bcd0-3ca98c031013 308e76ee-e200-41c7-90c2-b6ca44080197">
                  <interfaceRealization xmi:id="308e76ee-e200-41c7-90c2-b6ca44080197" name="" supplier="33f8e49e-c9a3-4db4-94cf-6592c6ee6894" client="6e4ca77a-08b7-4951-b65e-6d2d89405dd4" contract="33f8e49e-c9a3-4db4-94cf-6592c6ee6894"/>
                  <interfaceRealization xmi:id="8ea43a5b-65c2-4f98-bcd0-3ca98c031013" name="" supplier="361ca981-29c8-430f-b1a4-fa3e692a1955" client="6e4ca77a-08b7-4951-b65e-6d2d89405dd4" contract="361ca981-29c8-430f-b1a4-fa3e692a1955"/>
                  <interfaceRealization xmi:id="d658691e-b686-4f50-a3fb-ce7bdbcf8947" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="6e4ca77a-08b7-4951-b65e-6d2d89405dd4" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f17d9947-808a-4ef4-ae5f-c6b4ab225088" name="BasicScrollPaneUI" clientDependency="19b99ccb-e37d-4635-9e02-4b679e935d19">
                <ownedComment xmi:id="e4f29dbc-f745-47aa-87ef-d0e42f79c651" body="A default L&amp;F implementation of ScrollPaneUI.&#xA;&#xA;@version 1.70 12/19/03&#xA;@author Hans Muller&#xA;" annotatedElement="f17d9947-808a-4ef4-ae5f-c6b4ab225088"/>
                <generalization xmi:id="9b698e24-1815-40a9-b155-dd85e810dced" isSubstitutable="true" general="80ce906e-c485-4502-963b-6b02d46ebbc1"/>
                <interfaceRealization xmi:id="19b99ccb-e37d-4635-9e02-4b679e935d19" name="" supplier="077d0b24-8305-4eeb-a301-15642735b20b" client="f17d9947-808a-4ef4-ae5f-c6b4ab225088" contract="077d0b24-8305-4eeb-a301-15642735b20b"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="83474ed8-94c5-4131-b6bf-503b16c3a042" name="ViewportChangeHandler" clientDependency="cf45e0e5-49b0-4615-806f-d6a124beb900">
                  <ownedComment xmi:id="200c67ba-28aa-4469-8a95-bf15d1f73fac" body="Listener for viewport events.&#xA;" annotatedElement="83474ed8-94c5-4131-b6bf-503b16c3a042"/>
                  <interfaceRealization xmi:id="cf45e0e5-49b0-4615-806f-d6a124beb900" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="83474ed8-94c5-4131-b6bf-503b16c3a042" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="945202a5-1a48-48f4-9680-0b94f365a139" name="HSBChangeListener" clientDependency="76b08575-c2cb-4a10-9713-d47544b30830">
                  <ownedComment xmi:id="0b46582d-5f16-47c8-8eae-7dc87f653621" body="Horizontal scrollbar listener.&#xA;" annotatedElement="945202a5-1a48-48f4-9680-0b94f365a139"/>
                  <interfaceRealization xmi:id="76b08575-c2cb-4a10-9713-d47544b30830" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="945202a5-1a48-48f4-9680-0b94f365a139" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="721fac53-3e51-411e-ab71-c92149c6d077" name="VSBChangeListener" clientDependency="163eeea5-4200-4739-8d9f-0f3954bcf311">
                  <ownedComment xmi:id="2bccb6b9-37c9-422b-8e87-b8621f53f711" body="Vertical scrollbar listener.&#xA;" annotatedElement="721fac53-3e51-411e-ab71-c92149c6d077"/>
                  <interfaceRealization xmi:id="163eeea5-4200-4739-8d9f-0f3954bcf311" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="721fac53-3e51-411e-ab71-c92149c6d077" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="2a230527-f255-426c-90a5-015b1be47947" name="MouseWheelHandler" visibility="protected" clientDependency="0e186b0d-7a7f-426f-978d-0e09b930867d">
                  <ownedComment xmi:id="e03400b2-ec37-4c69-8c2c-3839f4c1b855" body="MouseWheelHandler is an inner class which implements the&#xA;MouseWheelListener interface.  MouseWheelHandler responds to&#xA;MouseWheelEvents by scrolling the JScrollPane appropriately.&#xA;If the scroll pane's&#xA;&lt;code>isWheelScrollingEnabled&lt;/code>&#xA;method returns false, no scrolling occurs.&#xA;&#xA;@see javax.swing.JScrollPane#isWheelScrollingEnabled&#xA;@see #createMouseWheelListener&#xA;@see java.awt.event.MouseWheelListener&#xA;@see java.awt.event.MouseWheelEvent&#xA;@since 1.4&#xA;" annotatedElement="2a230527-f255-426c-90a5-015b1be47947"/>
                  <interfaceRealization xmi:id="0e186b0d-7a7f-426f-978d-0e09b930867d" name="" supplier="5aeb340d-26cb-44e4-8320-a8d8eff4ca3c" client="2a230527-f255-426c-90a5-015b1be47947" contract="5aeb340d-26cb-44e4-8320-a8d8eff4ca3c"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="cb3c5795-55ad-42fe-9dce-f7be3028457d" name="PropertyChangeHandler" clientDependency="c930b063-33e7-49f8-bef9-2484849b5a56">
                  <interfaceRealization xmi:id="c930b063-33e7-49f8-bef9-2484849b5a56" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="cb3c5795-55ad-42fe-9dce-f7be3028457d" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="eaa78e1f-7120-43c9-82e7-f7abb0371aad" name="Actions" visibility="private"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="f416e5d6-d102-44ff-b01e-c14c6c83d0e9" name="Handler" visibility="package" clientDependency="76bae2d6-f843-473e-b377-435efadd3551 c1313f79-b92f-4100-8143-59502e889543 780a9b08-a20c-4e70-93a9-9f7e919cf085">
                  <interfaceRealization xmi:id="c1313f79-b92f-4100-8143-59502e889543" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="f416e5d6-d102-44ff-b01e-c14c6c83d0e9" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                  <interfaceRealization xmi:id="76bae2d6-f843-473e-b377-435efadd3551" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="f416e5d6-d102-44ff-b01e-c14c6c83d0e9" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                  <interfaceRealization xmi:id="780a9b08-a20c-4e70-93a9-9f7e919cf085" name="" supplier="5aeb340d-26cb-44e4-8320-a8d8eff4ca3c" client="f416e5d6-d102-44ff-b01e-c14c6c83d0e9" contract="5aeb340d-26cb-44e4-8320-a8d8eff4ca3c"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="e6d6a3ed-17b0-4971-b0ef-69d4af0c330e" name="BasicMenuUI">
                <ownedComment xmi:id="ee86b55b-de76-45b0-ab07-6a364aabbec5" body="A default L&amp;F implementation of MenuUI.  This implementation&#xA;is a &quot;combined&quot; view/controller.&#xA;&#xA;@version 1.158 02/26/04&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;@author Arnaud Weber&#xA;" annotatedElement="e6d6a3ed-17b0-4971-b0ef-69d4af0c330e"/>
                <generalization xmi:id="700810dc-6cbf-479d-aa5d-56856d442bdf" isSubstitutable="true" general="b720308d-6638-4771-a9c2-a324cb24131f"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="0c1a1873-df4a-4499-a247-78c6548d0824" name="MouseInputHandler" visibility="protected" clientDependency="9ba39ef1-da94-4efd-92b8-999910da9276">
                  <ownedComment xmi:id="248ab219-960c-4fe3-a349-fef8e2b104b2" body="Instantiated and used by a menu item to handle the current menu selection&#xA;from mouse events. A MouseInputHandler processes and forwards all mouse events&#xA;to a shared instance of the MenuSelectionManager.&#xA;&lt;p>&#xA;This class is protected so that it can be subclassed by other look and&#xA;feels to implement their own mouse handling behavior. All overridden&#xA;methods should call the parent methods so that the menu selection&#xA;is correct.&#xA;&#xA;@see javax.swing.MenuSelectionManager&#xA;@since 1.4&#xA;" annotatedElement="0c1a1873-df4a-4499-a247-78c6548d0824"/>
                  <interfaceRealization xmi:id="9ba39ef1-da94-4efd-92b8-999910da9276" name="" supplier="361ca981-29c8-430f-b1a4-fa3e692a1955" client="0c1a1873-df4a-4499-a247-78c6548d0824" contract="361ca981-29c8-430f-b1a4-fa3e692a1955"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="13aec1e1-d6cb-44e6-88f4-2c24a8760588" name="ChangeHandler" clientDependency="737f5c1b-cd7d-48f5-b2ec-5742b63f8786">
                  <ownedComment xmi:id="a2ed4b1a-3146-451e-a78e-95ea978400a0" body="As of Java 2 platform 1.4, this previously undocumented class&#xA;is now obsolete. KeyBindings are now managed by the popup menu.&#xA;" annotatedElement="13aec1e1-d6cb-44e6-88f4-2c24a8760588"/>
                  <interfaceRealization xmi:id="737f5c1b-cd7d-48f5-b2ec-5742b63f8786" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="13aec1e1-d6cb-44e6-88f4-2c24a8760588" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c60f4f4d-e37e-4c1a-909c-98fe414ee4f5" name="Actions" visibility="private"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="4c9de5e7-79cf-4859-8bb0-3a0a714198e5" name="Handler" visibility="private" clientDependency="53383859-0d64-4256-930b-11c974551173">
                  <generalization xmi:id="d8bc6873-7b63-4c3d-a110-3f4596cd3acd" isSubstitutable="true" general="6e4ca77a-08b7-4951-b65e-6d2d89405dd4"/>
                  <interfaceRealization xmi:id="53383859-0d64-4256-930b-11c974551173" name="" supplier="66876c63-9640-4ecf-85d5-22e30bc84e77" client="4c9de5e7-79cf-4859-8bb0-3a0a714198e5" contract="66876c63-9640-4ecf-85d5-22e30bc84e77"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="64f9054d-9608-4032-9681-25f2405ebdfe" name="BasicArrowButton" clientDependency="4105a1b6-1733-4395-9082-448d138f3480">
                <ownedComment xmi:id="fdcb7d43-6f4f-4e4b-9030-137f6686bb4e" body="JButton object that draws a scaled Arrow in one of the cardinal directions.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.26 12/19/03&#xA;@author David Kloba&#xA;" annotatedElement="64f9054d-9608-4032-9681-25f2405ebdfe"/>
                <generalization xmi:id="4b6ee8ec-491f-4b5d-a920-549030720585" isSubstitutable="true" general="1c2f22f0-8bbd-4e4b-915e-ea57b72df83b"/>
                <interfaceRealization xmi:id="4105a1b6-1733-4395-9082-448d138f3480" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="64f9054d-9608-4032-9681-25f2405ebdfe" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="424a8ed1-20ee-48b8-b496-2d41d652479a" name="BasicDropTargetListener" visibility="package" clientDependency="f22ef624-7d47-4c5f-af44-634ef6685251 bea06a29-5e50-40b7-b693-2b7ec553cac9 b6249877-145b-48cc-a1c7-d45005931cb1">
                <ownedComment xmi:id="bbabdf27-6144-4fcc-a98a-f9d4efbe0a17" body="The Swing DropTarget implementation supports multicast notification&#xA;to listeners, so this implementation is used as an additional&#xA;listener that extends the primary drop target functionality&#xA;(i.e. linkage to the TransferHandler) to include autoscroll and&#xA;establish an insertion point for the drop.  This is used by the ComponentUI&#xA;of components supporting a selection mechanism, which have a&#xA;way of indicating a location within their model.&#xA;&lt;p>&#xA;The autoscroll functionality is based upon the Swing scrolling mechanism&#xA;of the Scrollable interface.  The unit scroll increment is used to as&#xA;the scroll amount, and the scrolling is based upon JComponent.getVisibleRect&#xA;and JComponent.scrollRectToVisible.  The band of area around the visible&#xA;rectangle used to invoke autoscroll is based upon the unit scroll increment&#xA;as that is assumed to represent the last possible item in the visible region.&#xA;&lt;p>&#xA;The subclasses are expected to implement the following methods to manage the&#xA;insertion location via the components selection mechanism.&#xA;&lt;ul>&#xA;&lt;li>saveComponentState&#xA;&lt;li>restoreComponentState&#xA;&lt;li>restoreComponentStateForDrop&#xA;&lt;li>updateInsertionLocation&#xA;&lt;/ul>&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.10 12/19/03&#xA;" annotatedElement="424a8ed1-20ee-48b8-b496-2d41d652479a"/>
                <interfaceRealization xmi:id="b6249877-145b-48cc-a1c7-d45005931cb1" name="" supplier="2d2b5782-0c86-4da3-a722-9835891eb353" client="424a8ed1-20ee-48b8-b496-2d41d652479a" contract="2d2b5782-0c86-4da3-a722-9835891eb353"/>
                <interfaceRealization xmi:id="bea06a29-5e50-40b7-b693-2b7ec553cac9" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="424a8ed1-20ee-48b8-b496-2d41d652479a" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                <interfaceRealization xmi:id="f22ef624-7d47-4c5f-af44-634ef6685251" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="424a8ed1-20ee-48b8-b496-2d41d652479a" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="5b5de748-63dc-474c-9db9-da1539379d67" name="BasicSplitPaneDivider" clientDependency="2ebcdf42-14ea-4a7c-a92f-4edfeef8deb3">
                <ownedComment xmi:id="571d7143-2044-4a75-bdcc-3708d6a92b1c" body="Divider used by BasicSplitPaneUI. Subclassers may wish to override&#xA;paint to do something more interesting.&#xA;The border effect is drawn in BasicSplitPaneUI, so if you don't like&#xA;that border, reset it there.&#xA;To conditionally drag from certain areas subclass mousePressed and&#xA;call super when you wish the dragging to begin.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.52 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="5b5de748-63dc-474c-9db9-da1539379d67"/>
                <generalization xmi:id="9120eb86-9807-433e-84b7-3cfccb2b8de4" isSubstitutable="true" general="a4edac23-263c-4616-857d-4de97445e12a"/>
                <interfaceRealization xmi:id="2ebcdf42-14ea-4a7c-a92f-4edfeef8deb3" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="5b5de748-63dc-474c-9db9-da1539379d67" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="24e844f8-9ccd-482f-b550-34924b86214b" name="MouseHandler" visibility="protected" clientDependency="3c6ad21b-a79b-44ca-893e-8d060b96d63f">
                  <ownedComment xmi:id="706e6e63-32cc-4b24-859f-fb7d5005ebe0" body="MouseHandler is responsible for converting mouse events&#xA;(released, dragged...) into the appropriate DragController&#xA;methods.&#xA;&lt;p>&#xA;" annotatedElement="24e844f8-9ccd-482f-b550-34924b86214b"/>
                  <generalization xmi:id="d65c258b-1df7-47bc-a215-2c16f08d5ea3" isSubstitutable="true" general="0db79cd4-0757-4282-b2c3-730fa54c5c55"/>
                  <interfaceRealization xmi:id="3c6ad21b-a79b-44ca-893e-8d060b96d63f" name="" supplier="8747391f-bebd-47e3-888b-8e509ac223c9" client="24e844f8-9ccd-482f-b550-34924b86214b" contract="8747391f-bebd-47e3-888b-8e509ac223c9"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="7cb5fad6-4cae-474c-a959-93f5e90baf76" name="DragController" visibility="protected">
                  <ownedComment xmi:id="f032b9bb-5af2-43a9-ae46-3c25ccc3500f" body="Handles the events during a dragging session for a&#xA;HORIZONTAL_SPLIT oriented split pane. This continually&#xA;messages &lt;code>dragDividerTo&lt;/code> and then when done messages&#xA;&lt;code>finishDraggingTo&lt;/code>. When an instance is created it should be&#xA;messaged with &lt;code>isValid&lt;/code> to insure that dragging can happen&#xA;(dragging won't be allowed if the two views can not be resized).&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="7cb5fad6-4cae-474c-a959-93f5e90baf76"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1c041d67-c5d6-4abd-afe4-7f99087bed3e" name="VerticalDragController" visibility="protected">
                  <ownedComment xmi:id="2805b758-da3d-4544-9a4c-0600bce9107c" body="Handles the events during a dragging session for a&#xA;VERTICAL_SPLIT oriented split pane. This continually&#xA;messages &lt;code>dragDividerTo&lt;/code> and then when done messages&#xA;&lt;code>finishDraggingTo&lt;/code>. When an instance is created it should be&#xA;messaged with &lt;code>isValid&lt;/code> to insure that dragging can happen&#xA;(dragging won't be allowed if the two views can not be resized).&#xA;" annotatedElement="1c041d67-c5d6-4abd-afe4-7f99087bed3e"/>
                  <generalization xmi:id="c380f333-1928-43d9-965e-302d6f3a3d22" isSubstitutable="true" general="7cb5fad6-4cae-474c-a959-93f5e90baf76"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="06c75bfc-c3ec-40cf-aa2c-b5beb862688c" name="DividerLayout" visibility="protected" clientDependency="87feb366-ff7d-4bb5-afe9-a0f7f4b33674">
                  <ownedComment xmi:id="2ee834c6-e134-4bd6-b099-912e1071bcd3" body="Used to layout a &lt;code>BasicSplitPaneDivider&lt;/code>.&#xA;Layout for the divider&#xA;involves appropriately moving the left/right buttons around.&#xA;&lt;p>&#xA;" annotatedElement="06c75bfc-c3ec-40cf-aa2c-b5beb862688c"/>
                  <interfaceRealization xmi:id="87feb366-ff7d-4bb5-afe9-a0f7f4b33674" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="06c75bfc-c3ec-40cf-aa2c-b5beb862688c" contract="c3507179-c29c-40a9-8869-092757900e53"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="8fe6ed5d-4a16-4081-92d5-1c37f69f279f" name="OneTouchActionHandler" visibility="private" clientDependency="c23e3623-71a7-4283-adf4-af5a956b4d24">
                  <ownedComment xmi:id="8009551c-6851-4932-aef0-065a7d2c93d4" body="Listeners installed on the one touch expandable buttons.&#xA;" annotatedElement="8fe6ed5d-4a16-4081-92d5-1c37f69f279f"/>
                  <interfaceRealization xmi:id="c23e3623-71a7-4283-adf4-af5a956b4d24" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="8fe6ed5d-4a16-4081-92d5-1c37f69f279f" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="b4108404-9b3e-4324-81b0-a3f5814871a3" name="BasicListUI">
                <ownedComment xmi:id="690a8896-7fdc-4235-948d-6dba67caf82a" body="A Windows L&amp;F implementation of ListUI.&#xA;&lt;p>&#xA;&#xA;@version 1.104 03/30/04&#xA;@author Hans Muller&#xA;@author Philip Milne&#xA;" annotatedElement="b4108404-9b3e-4324-81b0-a3f5814871a3"/>
                <generalization xmi:id="e43973f0-952b-422d-97d5-85ca3cdba48c" isSubstitutable="true" general="0eebb1f7-e719-4743-a6fe-f20170d56229"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="93575280-690d-438c-8ed5-1ce3e58b50e8" name="MouseInputHandler" clientDependency="2e12c3c4-c226-40e6-befb-4bc2226de8a1">
                  <ownedComment xmi:id="3c99f712-9419-4d1b-b2d4-3da793822b14" body="Mouse input, and focus handling for JList.  An instance of this&#xA;class is added to the appropriate java.awt.Component lists&#xA;at installUI() time.  Note keyboard input is handled with JComponent&#xA;KeyboardActions, see installKeyboardActions().&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see #createMouseInputListener&#xA;@see #installKeyboardActions&#xA;@see #installUI&#xA;" annotatedElement="93575280-690d-438c-8ed5-1ce3e58b50e8"/>
                  <interfaceRealization xmi:id="2e12c3c4-c226-40e6-befb-4bc2226de8a1" name="" supplier="361ca981-29c8-430f-b1a4-fa3e692a1955" client="93575280-690d-438c-8ed5-1ce3e58b50e8" contract="361ca981-29c8-430f-b1a4-fa3e692a1955"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="14542da5-a7be-4722-9439-92a6c618c7d8" name="FocusHandler" clientDependency="c6393602-215a-4491-84cd-81d1d51e17e2">
                  <ownedComment xmi:id="446bf877-8e89-4752-905a-7350d03bb5fe" body="This inner class is marked &quot;public&quot; due to a compiler bug.&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicTableUI.&#xA;" annotatedElement="14542da5-a7be-4722-9439-92a6c618c7d8"/>
                  <interfaceRealization xmi:id="c6393602-215a-4491-84cd-81d1d51e17e2" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="14542da5-a7be-4722-9439-92a6c618c7d8" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="b3046c28-3232-4792-b380-5526875e5029" name="ListSelectionHandler" clientDependency="78074d95-bf9c-4d17-8a1d-d07937081352">
                  <ownedComment xmi:id="9acf36ae-b73f-4e0d-930b-727610344c31" body="The ListSelectionListener that's added to the JLists selection&#xA;model at installUI time, and whenever the JList.selectionModel property&#xA;changes.  When the selection changes we repaint the affected rows.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see #createListSelectionListener&#xA;@see #getCellBounds&#xA;@see #installUI&#xA;" annotatedElement="b3046c28-3232-4792-b380-5526875e5029"/>
                  <interfaceRealization xmi:id="78074d95-bf9c-4d17-8a1d-d07937081352" name="" supplier="077ca4fe-3afb-4e22-bed0-5cc47445acf4" client="b3046c28-3232-4792-b380-5526875e5029" contract="077ca4fe-3afb-4e22-bed0-5cc47445acf4"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="235b6ac1-bfdf-4596-9a44-89575b887fa5" name="ListDataHandler" clientDependency="e17cd3b9-b4e6-43f2-b1d7-0da285b09e3d">
                  <ownedComment xmi:id="9380e04f-6651-4dd6-a1ff-6a656dbfd440" body="The ListDataListener that's added to the JLists model at&#xA;installUI time, and whenever the JList.model property changes.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see JList#getModel&#xA;@see #maybeUpdateLayoutState&#xA;@see #createListDataListener&#xA;@see #installUI&#xA;" annotatedElement="235b6ac1-bfdf-4596-9a44-89575b887fa5"/>
                  <interfaceRealization xmi:id="e17cd3b9-b4e6-43f2-b1d7-0da285b09e3d" name="" supplier="bcdeadf8-6999-41e4-bdd9-4404260fdf22" client="235b6ac1-bfdf-4596-9a44-89575b887fa5" contract="bcdeadf8-6999-41e4-bdd9-4404260fdf22"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="0bb16054-403b-4c26-ae52-32ab8ae6a0b8" name="PropertyChangeHandler" clientDependency="158ac69a-50a1-47ee-aaee-7d7959f4929f">
                  <ownedComment xmi:id="b110f219-7ebd-4cf9-9108-30ef3fcad61d" body="The PropertyChangeListener that's added to the JList at&#xA;installUI time.  When the value of a JList property that&#xA;affects layout changes, we set a bit in updateLayoutStateNeeded.&#xA;If the JLists model changes we additionally remove our listeners&#xA;from the old model.  Likewise for the JList selectionModel.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see #maybeUpdateLayoutState&#xA;@see #createPropertyChangeListener&#xA;@see #installUI&#xA;" annotatedElement="0bb16054-403b-4c26-ae52-32ab8ae6a0b8"/>
                  <interfaceRealization xmi:id="158ac69a-50a1-47ee-aaee-7d7959f4929f" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="0bb16054-403b-4c26-ae52-32ab8ae6a0b8" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="2e4ba6a5-a6db-48be-90c7-cf16ccc5aee8" name="ListDragGestureRecognizer" visibility="package">
                  <ownedComment xmi:id="698bf2c0-681f-45f5-838a-0439b4eaba58" body="Drag gesture recognizer for JList components&#xA;" annotatedElement="2e4ba6a5-a6db-48be-90c7-cf16ccc5aee8"/>
                  <generalization xmi:id="4ccff696-0b15-46f1-a6cd-d44b811fbd1b" isSubstitutable="true" general="602f8cf7-2456-4c0f-adf7-4b948b620265"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6c483a2f-2e35-4660-832f-9ffbff616a00" name="ListDropTargetListener" visibility="package">
                  <ownedComment xmi:id="3574e7cd-d875-40a4-8a87-e449f25e2540" body="A DropTargetListener to extend the default Swing handling of drop operations&#xA;by moving the list selection to the nearest location to the mouse pointer.&#xA;Also adds autoscroll.&#xA;" annotatedElement="6c483a2f-2e35-4660-832f-9ffbff616a00"/>
                  <generalization xmi:id="9bacfbd0-20bf-4532-a884-82d6cf4e446a" isSubstitutable="true" general="424a8ed1-20ee-48b8-b496-2d41d652479a"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6f283f5d-dc27-4138-a0f0-6b8417fd34f1" name="ListTransferHandler" visibility="package" clientDependency="e11ba18d-9ee6-4c72-9c7c-55a782202f37">
                  <generalization xmi:id="e6f0d38c-203a-4171-befc-6115f9e8379d" isSubstitutable="true" general="74564559-a512-4c82-bfcc-29769618ec6c"/>
                  <interfaceRealization xmi:id="e11ba18d-9ee6-4c72-9c7c-55a782202f37" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="6f283f5d-dc27-4138-a0f0-6b8417fd34f1" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="06d081cc-fdd2-4603-9d86-1836d21387c9" name="Actions" visibility="private"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="279d891a-66b6-4b9b-a614-7daf0af05247" name="Handler" visibility="private" clientDependency="9d301782-95df-494a-bba8-bdc0c326fc1a f6060669-d1df-453d-8739-d999f7312488 734ae034-af40-457d-acb4-8b8288f59367 e2fb6eb8-c9e6-4686-963f-7163403aeaee 5c8e682e-e9ae-4842-94e2-bf11d0acd59d 8615cbb0-c43c-4cbb-86f6-2d532fc122e3">
                  <interfaceRealization xmi:id="f6060669-d1df-453d-8739-d999f7312488" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="279d891a-66b6-4b9b-a614-7daf0af05247" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                  <interfaceRealization xmi:id="734ae034-af40-457d-acb4-8b8288f59367" name="" supplier="d0d97f9c-d8a0-4583-b30e-176f42c3f7e7" client="279d891a-66b6-4b9b-a614-7daf0af05247" contract="d0d97f9c-d8a0-4583-b30e-176f42c3f7e7"/>
                  <interfaceRealization xmi:id="e2fb6eb8-c9e6-4686-963f-7163403aeaee" name="" supplier="bcdeadf8-6999-41e4-bdd9-4404260fdf22" client="279d891a-66b6-4b9b-a614-7daf0af05247" contract="bcdeadf8-6999-41e4-bdd9-4404260fdf22"/>
                  <interfaceRealization xmi:id="9d301782-95df-494a-bba8-bdc0c326fc1a" name="" supplier="077ca4fe-3afb-4e22-bed0-5cc47445acf4" client="279d891a-66b6-4b9b-a614-7daf0af05247" contract="077ca4fe-3afb-4e22-bed0-5cc47445acf4"/>
                  <interfaceRealization xmi:id="5c8e682e-e9ae-4842-94e2-bf11d0acd59d" name="" supplier="361ca981-29c8-430f-b1a4-fa3e692a1955" client="279d891a-66b6-4b9b-a614-7daf0af05247" contract="361ca981-29c8-430f-b1a4-fa3e692a1955"/>
                  <interfaceRealization xmi:id="8615cbb0-c43c-4cbb-86f6-2d532fc122e3" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="279d891a-66b6-4b9b-a614-7daf0af05247" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="e30b7f0f-612d-4cf5-93ac-f3cc948333a6" name="BasicOptionPaneUI">
                <ownedComment xmi:id="b28169be-f771-445a-b1fe-72448940f348" body="Provides the basic look and feel for a &lt;code>JOptionPane&lt;/code>.&#xA;&lt;code>BasicMessagePaneUI&lt;/code> provides a means to place an icon,&#xA;message and buttons into a &lt;code>Container&lt;/code>.&#xA;Generally, the layout will look like:&lt;p>&#xA;&lt;pre>&#xA;------------------&#xA;| i | message    |&#xA;| c | message    |&#xA;| o | message    |&#xA;| n | message    |&#xA;------------------&#xA;|     buttons    |&#xA;|________________|&#xA;&lt;/pre>&#xA;icon is an instance of &lt;code>Icon&lt;/code> that is wrapped inside a&#xA;&lt;code>JLabel&lt;/code>.  The message is an opaque object and is tested&#xA;for the following: if the message is a &lt;code>Component&lt;/code> it is&#xA;added to the &lt;code>Container&lt;/code>, if it is an &lt;code>Icon&lt;/code>&#xA;it is wrapped inside a &lt;code>JLabel&lt;/code> and added to the&#xA;&lt;code>Container&lt;/code> otherwise it is wrapped inside a &lt;code>JLabel&lt;/code>.&#xA;&lt;p>&#xA;The above layout is used when the option pane's&#xA;&lt;code>ComponentOrientation&lt;/code> property is horizontal, left-to-right.&#xA;The layout will be adjusted appropriately for other orientations.&#xA;&lt;p>&#xA;The &lt;code>Container&lt;/code>, message, icon, and buttons are all&#xA;determined from abstract methods.&#xA;&#xA;@version 1.58 12/19/03&#xA;@author James Gosling&#xA;@author Scott Violet&#xA;@author Amy Fowler&#xA;" annotatedElement="e30b7f0f-612d-4cf5-93ac-f3cc948333a6"/>
                <generalization xmi:id="f85978fc-a67d-4a81-a614-9ddfa29ac26f" isSubstitutable="true" general="9a64d3c2-d2f6-4573-9d95-cf9f3ff86af5"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="2d4131f0-2daf-4254-ab5d-b618b8fd5dd9" name="ButtonAreaLayout" clientDependency="1414e8ef-03b5-4004-8cac-ffc4da581137">
                  <ownedComment xmi:id="455572a6-c6eb-4e45-beb4-218fd73beb79" body="&lt;code>ButtonAreaLayout&lt;/code> behaves in a similar manner to&#xA;&lt;code>FlowLayout&lt;/code>. It lays out all components from left to&#xA;right. If &lt;code>syncAllWidths&lt;/code> is true, the widths of each&#xA;component will be set to the largest preferred size width.&#xA;&#xA;This inner class is marked &quot;public&quot; due to a compiler bug.&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicOptionPaneUI.&#xA;" annotatedElement="2d4131f0-2daf-4254-ab5d-b618b8fd5dd9"/>
                  <interfaceRealization xmi:id="1414e8ef-03b5-4004-8cac-ffc4da581137" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="2d4131f0-2daf-4254-ab5d-b618b8fd5dd9" contract="c3507179-c29c-40a9-8869-092757900e53"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="f56188b9-6439-4a0a-9923-ab16076f67ac" name="PropertyChangeHandler" clientDependency="06c1dba0-5432-4870-b0fa-dd3a4aa179ad">
                  <ownedComment xmi:id="da69fd46-3a1d-4801-aa9e-ef5a991ab477" body="This inner class is marked &quot;public&quot; due to a compiler bug.&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicOptionPaneUI.&#xA;" annotatedElement="f56188b9-6439-4a0a-9923-ab16076f67ac"/>
                  <interfaceRealization xmi:id="06c1dba0-5432-4870-b0fa-dd3a4aa179ad" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="f56188b9-6439-4a0a-9923-ab16076f67ac" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="280056a9-5936-4377-9c8e-2aac9685d806" name="ButtonActionListener" clientDependency="46c6d158-48a9-4432-b9ae-01399d0168e2">
                  <ownedComment xmi:id="f9ad0cba-1076-4ded-bcc5-bfc8fb891e43" body="This inner class is marked &quot;public&quot; due to a compiler bug.&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicOptionPaneUI.&#xA;" annotatedElement="280056a9-5936-4377-9c8e-2aac9685d806"/>
                  <interfaceRealization xmi:id="46c6d158-48a9-4432-b9ae-01399d0168e2" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="280056a9-5936-4377-9c8e-2aac9685d806" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="eee34f32-ab77-43d7-a732-6e11a951abba" name="MultiplexingTextField" visibility="private">
                  <ownedComment xmi:id="0fdaa0e3-be27-459e-8cdb-54025637a2ab" body="A JTextField that allows you to specify an array of KeyStrokes that&#xA;that will have their bindings processed regardless of whether or&#xA;not they are registered on the JTextField. This is used as we really&#xA;want the ActionListener to be notified so that we can push the&#xA;change to the JOptionPane, but we also want additional bindings&#xA;(those of the JRootPane) to be processed as well.&#xA;" annotatedElement="eee34f32-ab77-43d7-a732-6e11a951abba"/>
                  <generalization xmi:id="3e9a5c0e-aba9-420e-b2b8-6c2e8d7baa6d" isSubstitutable="true" general="e8b3dc5a-f346-4fc4-b077-bbe69ee386a3"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="3a5e08ab-d0a7-4b80-bdf9-ec55b00596f9" name="Handler" visibility="private" clientDependency="803e48da-0332-4e58-8e10-a4f256d49176 ee818e48-388e-4a10-a118-42a802d8422a e2af933d-68d6-4cf5-b31e-0b300660873c">
                  <interfaceRealization xmi:id="ee818e48-388e-4a10-a118-42a802d8422a" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="3a5e08ab-d0a7-4b80-bdf9-ec55b00596f9" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                  <interfaceRealization xmi:id="803e48da-0332-4e58-8e10-a4f256d49176" name="" supplier="d2bfccf2-94c5-4882-8d84-613f4ad53195" client="3a5e08ab-d0a7-4b80-bdf9-ec55b00596f9" contract="d2bfccf2-94c5-4882-8d84-613f4ad53195"/>
                  <interfaceRealization xmi:id="e2af933d-68d6-4cf5-b31e-0b300660873c" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="3a5e08ab-d0a7-4b80-bdf9-ec55b00596f9" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="4ba064c0-67e7-4808-8b05-d9cd75f593f1" name="Actions" visibility="private">
                  <ownedComment xmi:id="c3a46f7e-bac9-4771-b36a-5ed74a2f0bd2" body="Registered in the ActionMap. Sets the value of the option pane&#xA;to &lt;code>JOptionPane.CLOSED_OPTION&lt;/code>.&#xA;" annotatedElement="4ba064c0-67e7-4808-8b05-d9cd75f593f1"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="f19e418e-a9b1-4fe4-b9d6-23c3a8d44dae" name="ButtonFactory" visibility="private">
                  <ownedComment xmi:id="c25825ba-b7c0-4c24-a6d5-967429e36fb2" body="This class is used to create the default buttons. This indirection is&#xA;used so that addButtonComponents can tell which Buttons were created&#xA;by us vs subclassers or from the JOptionPane itself.&#xA;" annotatedElement="f19e418e-a9b1-4fe4-b9d6-23c3a8d44dae"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="58c4042d-5b6a-4562-933e-f16d310c42d8" name="BasicLabelUI" clientDependency="7260851c-0a34-4b7a-96ca-49db59aeecc2">
                <ownedComment xmi:id="b963afdc-c5dd-4b58-a08f-d56bd48a9f79" body="A Windows L&amp;F implementation of LabelUI.  This implementation&#xA;is completely static, i.e. there's only one UIView implementation&#xA;that's shared by all JLabel objects.&#xA;&#xA;@version 1.84 12/19/03&#xA;@author Hans Muller&#xA;" annotatedElement="58c4042d-5b6a-4562-933e-f16d310c42d8"/>
                <generalization xmi:id="0d1e4931-380a-49a9-abc1-3614f1d1c140" isSubstitutable="true" general="9ff2f339-26b8-4661-845a-ec726c26f6d9"/>
                <interfaceRealization xmi:id="7260851c-0a34-4b7a-96ca-49db59aeecc2" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="58c4042d-5b6a-4562-933e-f16d310c42d8" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="56548c75-aee2-4620-bb48-b1dcc5614e8a" name="Actions" visibility="private"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="e0d14b0e-c37c-46a0-a23a-6790de5717ee" name="BasicDesktopIconUI">
                <ownedComment xmi:id="df0ba96d-cff3-4f01-9e13-d41ae9a30774" body="Basic L&amp;F for a minimized window on a desktop.&#xA;&#xA;@version 1.35 12/19/03&#xA;@author David Kloba&#xA;@author Steve Wilson&#xA;@author Rich Schiavi&#xA;" annotatedElement="e0d14b0e-c37c-46a0-a23a-6790de5717ee"/>
                <generalization xmi:id="f14197ae-c952-4486-86d1-7e3b7469a7b4" isSubstitutable="true" general="41c8caca-9409-4580-93a2-dae51b1e6d8c"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="4f609fea-2dbb-4c7b-a660-8bd42f5f8331" name="MouseInputHandler">
                  <ownedComment xmi:id="24c049ee-c690-4c13-8de0-33d6d578c107" body="Listens for mouse movements and acts on them.&#xA;&#xA;This inner class is marked &quot;public&quot; due to a compiler bug.&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;Foo>.&#xA;" annotatedElement="4f609fea-2dbb-4c7b-a660-8bd42f5f8331"/>
                  <generalization xmi:id="aa373831-8f6e-4b2f-bf78-f55886933da2" isSubstitutable="true" general="69130d3e-0795-4340-be55-cc2ce754646e"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="8b7b7f09-514c-45c3-8000-35e658d3a600" name="BasicTabbedPaneUI" clientDependency="7217ea6d-7c47-4e67-95e2-43924641cc05">
                <ownedComment xmi:id="1d773e11-de4a-41a8-9c50-f7da9a766e4a" body="A Basic L&amp;F implementation of TabbedPaneUI.&#xA;&#xA;@version 1.87 06/08/99&#xA;@author Amy Fowler&#xA;@author Philip Milne&#xA;@author Steve Wilson&#xA;@author Tom Santos&#xA;@author Dave Moore&#xA;" annotatedElement="8b7b7f09-514c-45c3-8000-35e658d3a600"/>
                <generalization xmi:id="71421ad7-3572-46f9-b1dd-08cc86e0f230" isSubstitutable="true" general="6636af71-8b26-4dbc-9e2a-c7812a45d9f8"/>
                <interfaceRealization xmi:id="7217ea6d-7c47-4e67-95e2-43924641cc05" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="8b7b7f09-514c-45c3-8000-35e658d3a600" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="63ec4de8-7ef6-4823-9b62-ddcc4691f63e" name="TabbedPaneLayout" clientDependency="0af02511-b822-480f-8577-a60fd27e2681">
                  <ownedComment xmi:id="8f02db3f-1bec-4a89-ab61-51f2179734ed" body="This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicTabbedPaneUI.&#xA;" annotatedElement="63ec4de8-7ef6-4823-9b62-ddcc4691f63e"/>
                  <interfaceRealization xmi:id="0af02511-b822-480f-8577-a60fd27e2681" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="63ec4de8-7ef6-4823-9b62-ddcc4691f63e" contract="c3507179-c29c-40a9-8869-092757900e53"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="2fd3a18f-81d8-4939-81be-fb17d9516819" name="TabbedPaneScrollLayout" visibility="private">
                  <generalization xmi:id="bb56eadb-61f1-4d21-b041-654bcddea28b" isSubstitutable="true" general="63ec4de8-7ef6-4823-9b62-ddcc4691f63e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a278633e-736c-4723-b4bf-ce47cc85f381" name="ScrollableTabSupport" visibility="private" clientDependency="8bcbdd8c-6ae8-41a8-9b53-e685e93ea04c 2570413e-aad5-40f7-a97a-c6a4d0c44d42">
                  <interfaceRealization xmi:id="2570413e-aad5-40f7-a97a-c6a4d0c44d42" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="a278633e-736c-4723-b4bf-ce47cc85f381" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                  <interfaceRealization xmi:id="8bcbdd8c-6ae8-41a8-9b53-e685e93ea04c" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="a278633e-736c-4723-b4bf-ce47cc85f381" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a4f2d73f-8975-4ace-abdc-76005a94a476" name="ScrollableTabViewport" visibility="private" clientDependency="02d6e5b4-cf51-434d-86ea-f99aa567a48f">
                  <generalization xmi:id="8063a7da-363f-4fc6-9398-22ee94d0802a" isSubstitutable="true" general="cbe6416c-3439-4aed-b4fb-bdfa8353852f"/>
                  <interfaceRealization xmi:id="02d6e5b4-cf51-434d-86ea-f99aa567a48f" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="a4f2d73f-8975-4ace-abdc-76005a94a476" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="69410541-a2f8-448e-aa5b-4a3598bda4ef" name="ScrollableTabPanel" visibility="private" clientDependency="902af7c5-bc8d-496c-8736-f3336cdeb0aa">
                  <generalization xmi:id="06517f65-6da4-4538-9805-652b2c2e0d55" isSubstitutable="true" general="18cb35a3-9f9e-4251-ba29-48407f975f19"/>
                  <interfaceRealization xmi:id="902af7c5-bc8d-496c-8736-f3336cdeb0aa" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="69410541-a2f8-448e-aa5b-4a3598bda4ef" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="9ed8b717-5de5-48ac-9c86-6dd85926c02d" name="ScrollableTabButton" visibility="private" clientDependency="e10bdb2c-f451-40be-ad9f-5e7a6e6df173 6f15a4bc-9df8-46f4-8aab-b09a92eb5aeb">
                  <generalization xmi:id="9403a02c-7cda-4d19-afaf-97d4aa2f7ac5" isSubstitutable="true" general="64f9054d-9608-4032-9681-25f2405ebdfe"/>
                  <interfaceRealization xmi:id="e10bdb2c-f451-40be-ad9f-5e7a6e6df173" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="9ed8b717-5de5-48ac-9c86-6dd85926c02d" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="6f15a4bc-9df8-46f4-8aab-b09a92eb5aeb" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="9ed8b717-5de5-48ac-9c86-6dd85926c02d" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6085b77f-6781-4c06-97b1-0a10ef158a69" name="PropertyChangeHandler" clientDependency="f11735ce-e974-4874-b6cd-059c3dbaa6e6">
                  <ownedComment xmi:id="b22f6061-8a1b-49ed-84a4-ac314f3f6795" body="This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicTabbedPaneUI.&#xA;" annotatedElement="6085b77f-6781-4c06-97b1-0a10ef158a69"/>
                  <interfaceRealization xmi:id="f11735ce-e974-4874-b6cd-059c3dbaa6e6" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="6085b77f-6781-4c06-97b1-0a10ef158a69" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="64e0b6dd-94a0-48b3-909a-ea1cfbbaae14" name="TabSelectionHandler" clientDependency="e226ae2c-df2e-41af-b52d-8d6e9b4fa4f9">
                  <ownedComment xmi:id="fad2660a-de6b-48cb-a64a-972756a67d26" body="This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicTabbedPaneUI.&#xA;" annotatedElement="64e0b6dd-94a0-48b3-909a-ea1cfbbaae14"/>
                  <interfaceRealization xmi:id="e226ae2c-df2e-41af-b52d-8d6e9b4fa4f9" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="64e0b6dd-94a0-48b3-909a-ea1cfbbaae14" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="8d20b9ea-2d5c-4df4-8653-4df174a1b9db" name="MouseHandler">
                  <ownedComment xmi:id="0e5f1aae-4e62-4a9c-9d4a-cffee823121e" body="This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicTabbedPaneUI.&#xA;" annotatedElement="8d20b9ea-2d5c-4df4-8653-4df174a1b9db"/>
                  <generalization xmi:id="e10ecedc-b6d0-4edf-8816-ecf99128b454" isSubstitutable="true" general="0db79cd4-0757-4282-b2c3-730fa54c5c55"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="fcbf177b-ab4b-4c72-b618-a64114902d3f" name="FocusHandler">
                  <ownedComment xmi:id="942f45ed-0858-4a79-bee9-84571094092a" body="This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicTabbedPaneUI.&#xA;" annotatedElement="fcbf177b-ab4b-4c72-b618-a64114902d3f"/>
                  <generalization xmi:id="29e7b3a2-5c18-4a57-9e3d-a4b520967ac4" isSubstitutable="true" general="53b3c159-7523-4e58-a3a3-3971308e2311"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a1c4bbab-57dc-492f-8773-4ad92a907022" name="Actions" visibility="private"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="feaa34b2-e4c9-40a8-bdac-c2a3af86561a" name="Handler" visibility="private" clientDependency="1c3a0c05-752d-4288-8195-6aa6ce31330d 1c87887d-51c2-40d1-aeaf-5fe11ac3924e 61eb967a-9323-4bea-a6d9-b16f19996f2e d669ae05-80e8-4c3c-8c69-fa31ba70d7d8 b3bf86ec-1b7d-4ee9-86a7-81f3cc0925a0 69d97530-16ae-4ef9-84ae-93a51102546f">
                  <interfaceRealization xmi:id="1c87887d-51c2-40d1-aeaf-5fe11ac3924e" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="feaa34b2-e4c9-40a8-bdac-c2a3af86561a" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                  <interfaceRealization xmi:id="d669ae05-80e8-4c3c-8c69-fa31ba70d7d8" name="" supplier="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8" client="feaa34b2-e4c9-40a8-bdac-c2a3af86561a" contract="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8"/>
                  <interfaceRealization xmi:id="b3bf86ec-1b7d-4ee9-86a7-81f3cc0925a0" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="feaa34b2-e4c9-40a8-bdac-c2a3af86561a" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                  <interfaceRealization xmi:id="61eb967a-9323-4bea-a6d9-b16f19996f2e" name="" supplier="d2bfccf2-94c5-4882-8d84-613f4ad53195" client="feaa34b2-e4c9-40a8-bdac-c2a3af86561a" contract="d2bfccf2-94c5-4882-8d84-613f4ad53195"/>
                  <interfaceRealization xmi:id="69d97530-16ae-4ef9-84ae-93a51102546f" name="" supplier="8747391f-bebd-47e3-888b-8e509ac223c9" client="feaa34b2-e4c9-40a8-bdac-c2a3af86561a" contract="8747391f-bebd-47e3-888b-8e509ac223c9"/>
                  <interfaceRealization xmi:id="1c3a0c05-752d-4288-8195-6aa6ce31330d" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="feaa34b2-e4c9-40a8-bdac-c2a3af86561a" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="da1903fc-5c38-4561-b2a9-cbcc9d6a6912" name="BasicSeparatorUI">
                <ownedComment xmi:id="171c6a64-47ca-4ad0-9828-9143fda4861f" body="A Basic L&amp;F implementation of SeparatorUI.  This implementation&#xA;is a &quot;combined&quot; view/controller.&#xA;&#xA;@version 1.24 12/19/03&#xA;@author Georges Saab&#xA;@author Jeff Shapiro&#xA;" annotatedElement="da1903fc-5c38-4561-b2a9-cbcc9d6a6912"/>
                <generalization xmi:id="0a243d71-e36f-41b0-8a4a-381431b80346" isSubstitutable="true" general="63991190-1e8c-47b0-8acc-38ac2fcbc070"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="da614cb5-bb34-4928-90ae-94661f3fc2d1" name="DefaultMenuLayout" clientDependency="6c64fe50-06c5-4c9b-9a0d-9cd7f422916e">
                <ownedComment xmi:id="1e9ed289-9b8e-40f7-b2dc-972e45723391" body="The default layout manager for Popup menus and menubars.  This&#xA;class is an extension of BoxLayout which adds the UIResource tag&#xA;so that plauggable L&amp;Fs can distinguish it from user-installed&#xA;layout managers on menus.&#xA;&#xA;@version 1.8 12/19/03&#xA;@author Georges Saab&#xA;" annotatedElement="da614cb5-bb34-4928-90ae-94661f3fc2d1"/>
                <generalization xmi:id="d0251e89-9509-4d10-952c-b22d7cadff37" isSubstitutable="true" general="86c89baf-20cc-4c7b-b1a3-adca313b8e2c"/>
                <interfaceRealization xmi:id="6c64fe50-06c5-4c9b-9a0d-9cd7f422916e" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="da614cb5-bb34-4928-90ae-94661f3fc2d1" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="c4500e93-4fd5-47dd-8fb9-79f69c6be9a7" name="BasicColorChooserUI">
                <ownedComment xmi:id="5fedfc09-5ac7-443b-a407-f380f5e9fe03" body="Provides the basic look and feel for a JColorChooser.&#xA;&lt;p>&#xA;@version 1.46 12/19/03&#xA;@author Tom Santos&#xA;@author Steve Wilson&#xA;" annotatedElement="c4500e93-4fd5-47dd-8fb9-79f69c6be9a7"/>
                <generalization xmi:id="262d804b-5acf-49e3-9382-2b436e2904ee" isSubstitutable="true" general="3db64f1a-7e6e-4546-ac1e-39b528d73ea0"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="03387a83-a569-4c43-bebc-d5770ed9e37e" name="PropertyHandler" clientDependency="2c112e5a-14ee-411f-8288-f79054c4bff6">
                  <ownedComment xmi:id="7d34c42e-c955-4e2c-ae96-05243b0e8c37" body="This inner class is marked &quot;public&quot; due to a compiler bug.&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;Foo>.&#xA;" annotatedElement="03387a83-a569-4c43-bebc-d5770ed9e37e"/>
                  <interfaceRealization xmi:id="2c112e5a-14ee-411f-8288-f79054c4bff6" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="03387a83-a569-4c43-bebc-d5770ed9e37e" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6117cda8-f5bc-41c3-9f04-677a8e8d6061" name="ColorTransferHandler" visibility="package" clientDependency="22d6267f-671e-468c-84b9-55f3ef9c3500">
                  <generalization xmi:id="60d5c494-62cb-47e1-904b-9a31d95d8ae9" isSubstitutable="true" general="74564559-a512-4c82-bfcc-29769618ec6c"/>
                  <interfaceRealization xmi:id="22d6267f-671e-468c-84b9-55f3ef9c3500" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="6117cda8-f5bc-41c3-9f04-677a8e8d6061" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e36a0862-ea3c-4a7b-9a69-7ada66056ecb" name="Handler" visibility="private" clientDependency="47e25212-ceba-4b50-8fe0-46153e1b2d65 3ebadc88-61e3-4a94-85b7-2de121393337 048519a1-7324-4b5c-abff-44fb4b6ea9a2">
                  <interfaceRealization xmi:id="3ebadc88-61e3-4a94-85b7-2de121393337" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="e36a0862-ea3c-4a7b-9a69-7ada66056ecb" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                  <interfaceRealization xmi:id="048519a1-7324-4b5c-abff-44fb4b6ea9a2" name="" supplier="d2bfccf2-94c5-4882-8d84-613f4ad53195" client="e36a0862-ea3c-4a7b-9a69-7ada66056ecb" contract="d2bfccf2-94c5-4882-8d84-613f4ad53195"/>
                  <interfaceRealization xmi:id="47e25212-ceba-4b50-8fe0-46153e1b2d65" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="e36a0862-ea3c-4a7b-9a69-7ada66056ecb" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="52ed3c1b-54fe-454b-b1b3-19ef6485c306" name="BasicToolBarUI" clientDependency="07f285f8-46c4-496a-b5d8-cc9a059274c8">
                <ownedComment xmi:id="93965678-df41-4cbe-9e57-93f15f70d05d" body="A Basic L&amp;F implementation of ToolBarUI.  This implementation&#xA;is a &quot;combined&quot; view/controller.&#xA;&lt;p>&#xA;&#xA;@version 1.96 05/18/04&#xA;@author Georges Saab&#xA;@author Jeff Shapiro&#xA;" annotatedElement="52ed3c1b-54fe-454b-b1b3-19ef6485c306"/>
                <generalization xmi:id="e7173348-7359-4325-9191-b9aef35ba8fe" isSubstitutable="true" general="09f4aa71-eb70-48b3-8a99-d5fbeb4c2952"/>
                <interfaceRealization xmi:id="07f285f8-46c4-496a-b5d8-cc9a059274c8" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="52ed3c1b-54fe-454b-b1b3-19ef6485c306" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ced8508b-028d-4d8b-88be-eb4505040a5f" name="FrameListener" visibility="protected">
                  <generalization xmi:id="57b3186e-4c7d-43d3-b2e3-b4c5ff78655e" isSubstitutable="true" general="569edcca-f9c2-4c19-854b-a7ea38aaff69"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c8cfad4e-5ac4-4dae-ab43-44b5a18a1c79" name="ToolBarContListener" visibility="protected" clientDependency="63f4bf74-6c61-4311-8efe-ab7314d1a4f0">
                  <interfaceRealization xmi:id="63f4bf74-6c61-4311-8efe-ab7314d1a4f0" name="" supplier="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8" client="c8cfad4e-5ac4-4dae-ab43-44b5a18a1c79" contract="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="d0efcb52-1fea-4141-a575-0d099469f878" name="ToolBarFocusListener" visibility="protected" clientDependency="553cdbc4-94ec-4f44-af92-b66f00a82e38">
                  <interfaceRealization xmi:id="553cdbc4-94ec-4f44-af92-b66f00a82e38" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="d0efcb52-1fea-4141-a575-0d099469f878" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="4a41ea30-f34b-45fb-84b8-7cbe47106af0" name="PropertyListener" visibility="protected" clientDependency="bb9370e8-2d31-4ee0-91fc-d540634e8e8f">
                  <interfaceRealization xmi:id="bb9370e8-2d31-4ee0-91fc-d540634e8e8f" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="4a41ea30-f34b-45fb-84b8-7cbe47106af0" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ad765476-ba03-4a59-8e61-a1b04d50859a" name="DockingListener" clientDependency="14eba82c-050d-4de8-913f-82b2f635f207">
                  <ownedComment xmi:id="0e86e958-9f39-44b2-827d-b1e5fb0220a9" body="This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicToolBarUI.&#xA;" annotatedElement="ad765476-ba03-4a59-8e61-a1b04d50859a"/>
                  <interfaceRealization xmi:id="14eba82c-050d-4de8-913f-82b2f635f207" name="" supplier="361ca981-29c8-430f-b1a4-fa3e692a1955" client="ad765476-ba03-4a59-8e61-a1b04d50859a" contract="361ca981-29c8-430f-b1a4-fa3e692a1955"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="881e1414-f9dc-4aca-b197-ffe09a660e31" name="DragWindow" visibility="protected">
                  <generalization xmi:id="0df1f241-61db-4a84-a932-047a6732f134" isSubstitutable="true" general="faf9dec5-0a30-4718-8e3b-b6424fcd0d20"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="dea9e49f-eaf1-4b65-9113-159794d07998" name="Actions" visibility="private"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ea351787-f9b2-4670-a95d-74a53ef56f6e" name="Handler" visibility="private" clientDependency="db951634-9651-4355-a831-d118c8b15a0e 80ad389e-4d26-4706-8aa1-b44134ac607d bb38c7b7-e0bc-43b1-9fb1-b15ac4de00b9 f890ef60-1290-4910-99fe-796503691342">
                  <interfaceRealization xmi:id="80ad389e-4d26-4706-8aa1-b44134ac607d" name="" supplier="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8" client="ea351787-f9b2-4670-a95d-74a53ef56f6e" contract="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8"/>
                  <interfaceRealization xmi:id="bb38c7b7-e0bc-43b1-9fb1-b15ac4de00b9" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="ea351787-f9b2-4670-a95d-74a53ef56f6e" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                  <interfaceRealization xmi:id="db951634-9651-4355-a831-d118c8b15a0e" name="" supplier="361ca981-29c8-430f-b1a4-fa3e692a1955" client="ea351787-f9b2-4670-a95d-74a53ef56f6e" contract="361ca981-29c8-430f-b1a4-fa3e692a1955"/>
                  <interfaceRealization xmi:id="f890ef60-1290-4910-99fe-796503691342" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="ea351787-f9b2-4670-a95d-74a53ef56f6e" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="aca2de02-fc62-42cf-b4e9-1ca4896e245c" name="BasicTextAreaUI">
                <ownedComment xmi:id="b5620ca1-5744-4a65-9be2-9af3ded3722c" body="Provides the look and feel for a plain text editor.  In this&#xA;implementation the default UI is extended to act as a simple&#xA;view factory.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.68 01/23/03&#xA;" annotatedElement="aca2de02-fc62-42cf-b4e9-1ca4896e245c"/>
                <generalization xmi:id="93948db4-6082-4c11-99af-069d8e9eaf96" isSubstitutable="true" general="a3da9a99-2268-4a6c-88e9-6c25e0a1e77c"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e6ad44da-13a8-4564-8464-502883a98695" name="PlainParagraph" visibility="package">
                  <ownedComment xmi:id="ff0ec630-7954-4863-b175-87702b6a2cd0" body="Paragraph for representing plain-text lines that support&#xA;bidirectional text.&#xA;" annotatedElement="e6ad44da-13a8-4564-8464-502883a98695"/>
                  <generalization xmi:id="b46c721c-2610-4a3c-83ec-3235615be532" isSubstitutable="true" general="f136ff6a-f89d-4e2c-8284-640d0aa408eb"/>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="390ca9d9-54f9-437d-8eeb-d22493345544" name="LogicalView" visibility="package">
                    <ownedComment xmi:id="62ba6912-4f66-4a31-93ca-d180d8224600" body="This class can be used to represent a logical view for&#xA;a flow.  It keeps the children updated to reflect the state&#xA;of the model, gives the logical child views access to the&#xA;view hierarchy, and calculates a preferred span.  It doesn't&#xA;do any rendering, layout, or model/view translation.&#xA;" annotatedElement="390ca9d9-54f9-437d-8eeb-d22493345544"/>
                    <generalization xmi:id="298347fa-0aed-40c7-a46f-64ef0ee8df29" isSubstitutable="true" general="921a61fb-ee13-4ede-8408-998656f76875"/>
                  </nestedClassifier>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="1392bb47-4818-41f6-8373-cb0ce385cf35" name="BasicButtonListener" clientDependency="084736ee-73d1-4466-8659-bff0bf457099 c73fdb81-e653-4ac8-9346-ad348d690555 414a282c-39a0-42aa-afec-3a113b5878a9 a75262da-6240-43e2-b1f8-d41c7d24ad55 429e017e-91ab-4d4e-9c46-94e269e25ed0">
                <ownedComment xmi:id="daa0d08f-71bc-4595-b6cc-efe9548588f1" body="Button Listener&#xA;&#xA;@version 1.63 01/19/04&#xA;@author Jeff Dinkins&#xA;@author Arnaud Weber (keyboard UI support)&#xA;" annotatedElement="1392bb47-4818-41f6-8373-cb0ce385cf35"/>
                <interfaceRealization xmi:id="084736ee-73d1-4466-8659-bff0bf457099" name="" supplier="d2bfccf2-94c5-4882-8d84-613f4ad53195" client="1392bb47-4818-41f6-8373-cb0ce385cf35" contract="d2bfccf2-94c5-4882-8d84-613f4ad53195"/>
                <interfaceRealization xmi:id="414a282c-39a0-42aa-afec-3a113b5878a9" name="" supplier="8747391f-bebd-47e3-888b-8e509ac223c9" client="1392bb47-4818-41f6-8373-cb0ce385cf35" contract="8747391f-bebd-47e3-888b-8e509ac223c9"/>
                <interfaceRealization xmi:id="429e017e-91ab-4d4e-9c46-94e269e25ed0" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="1392bb47-4818-41f6-8373-cb0ce385cf35" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                <interfaceRealization xmi:id="a75262da-6240-43e2-b1f8-d41c7d24ad55" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="1392bb47-4818-41f6-8373-cb0ce385cf35" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                <interfaceRealization xmi:id="c73fdb81-e653-4ac8-9346-ad348d690555" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="1392bb47-4818-41f6-8373-cb0ce385cf35" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ddbcd4d6-b293-4e5c-bef9-e77ecff82f11" name="Actions" visibility="private">
                  <ownedComment xmi:id="715c71e6-5e86-4558-b485-6964e4acfa60" body="Actions for Buttons. Two type of action are supported:&#xA;pressed: Moves the button to a pressed state&#xA;released: Disarms the button.&#xA;" annotatedElement="ddbcd4d6-b293-4e5c-bef9-e77ecff82f11"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="289b701d-6a86-42ec-8cfb-29415722efca" name="BasicTextFieldUI">
                <ownedComment xmi:id="ea255e54-e7c4-48f8-bc9d-2f10c146ed11" body="Basis of a look and feel for a JTextField.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.95 12/19/03&#xA;" annotatedElement="289b701d-6a86-42ec-8cfb-29415722efca"/>
                <generalization xmi:id="86878b2b-e45b-4a01-aab5-84c68ae9088b" isSubstitutable="true" general="a3da9a99-2268-4a6c-88e9-6c25e0a1e77c"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="0bb7e703-bd2e-43e3-aa3d-8dc749b19cda" name="I18nFieldView" visibility="package">
                  <ownedComment xmi:id="19ea6e42-da62-478b-b32d-55741adf9276" body="A field view that support bidirectional text via the&#xA;support provided by ParagraphView.&#xA;" annotatedElement="0bb7e703-bd2e-43e3-aa3d-8dc749b19cda"/>
                  <generalization xmi:id="66c49604-e15e-45bb-ba32-62fa1363aa46" isSubstitutable="true" general="f136ff6a-f89d-4e2c-8284-640d0aa408eb"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6343f858-4c8a-4254-a72b-38bb9a941fd1" name="BasicPasswordFieldUI">
                <ownedComment xmi:id="e2880b89-5c96-4d35-8cc7-f70bfec22a21" body="Provides the Windows look and feel for a password field.&#xA;The only difference from the standard text field is that&#xA;the view of the text is simply a string of the echo&#xA;character as specified in JPasswordField, rather than the&#xA;real text contained in the field.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.30 12/19/03&#xA;" annotatedElement="6343f858-4c8a-4254-a72b-38bb9a941fd1"/>
                <generalization xmi:id="32fe4bae-ce87-4337-99a1-0784f23e1dd3" isSubstitutable="true" general="289b701d-6a86-42ec-8cfb-29415722efca"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="d974ab89-5bca-46e6-9497-fa32549eecb0" name="BasicInternalFrameTitlePane">
                <ownedComment xmi:id="a7ab113b-0733-4dd0-b8e3-6be3350ba160" body="The class that manages a basic title bar&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.41 01/18/01&#xA;@author David Kloba&#xA;@author Steve Wilson&#xA;" annotatedElement="d974ab89-5bca-46e6-9497-fa32549eecb0"/>
                <generalization xmi:id="533711f3-b626-4e59-b8fa-ee5dedfbb2ea" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c0e3b898-4900-42b1-8984-3e1dd4111b19" name="PropertyChangeHandler" clientDependency="343d1b00-2aca-4756-97b7-1573ada030ce">
                  <ownedComment xmi:id="7baaea1c-d423-4c14-a8ca-431ff511d894" body="This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;Foo>.&#xA;" annotatedElement="c0e3b898-4900-42b1-8984-3e1dd4111b19"/>
                  <interfaceRealization xmi:id="343d1b00-2aca-4756-97b7-1573ada030ce" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="c0e3b898-4900-42b1-8984-3e1dd4111b19" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="8f3d4ba2-13c5-4baa-a4d0-9f49107fa3eb" name="TitlePaneLayout" clientDependency="f8435e75-2e59-40c5-9512-c3e41872a7b0">
                  <ownedComment xmi:id="6b89c4a6-9425-4c7d-a1d8-4f6c951e88d2" body="This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;Foo>.&#xA;" annotatedElement="8f3d4ba2-13c5-4baa-a4d0-9f49107fa3eb"/>
                  <interfaceRealization xmi:id="f8435e75-2e59-40c5-9512-c3e41872a7b0" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="8f3d4ba2-13c5-4baa-a4d0-9f49107fa3eb" contract="c3507179-c29c-40a9-8869-092757900e53"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="f7039807-3fa4-4020-8fde-6f7b09979db4" name="CloseAction">
                  <ownedComment xmi:id="04c65c69-89bd-41b3-92d0-947a97d18156" body="This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;Foo>.&#xA;" annotatedElement="f7039807-3fa4-4020-8fde-6f7b09979db4"/>
                  <generalization xmi:id="8252114b-c011-48f8-8b6c-a8aa9120ea7d" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ba84df41-401d-42d9-85e8-b4f20b01a783" name="MaximizeAction">
                  <ownedComment xmi:id="56ec024d-4520-441d-af1d-2a857b0abbd9" body="This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;Foo>.&#xA;" annotatedElement="ba84df41-401d-42d9-85e8-b4f20b01a783"/>
                  <generalization xmi:id="0ed5e4d9-3597-4d23-8687-a7f4790abc74" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="b3ccb3a9-0c07-4f32-87d6-38dc23faaa3a" name="IconifyAction">
                  <ownedComment xmi:id="b4877e26-f4ea-4214-a52d-884bfcd43e67" body="This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;Foo>.&#xA;" annotatedElement="b3ccb3a9-0c07-4f32-87d6-38dc23faaa3a"/>
                  <generalization xmi:id="3a29c94a-72e3-4f5f-a99d-f30c5c21cbfb" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ee3977a9-2874-47d2-9d72-6066d61cbcca" name="RestoreAction">
                  <ownedComment xmi:id="f1755424-dbcd-4b89-af7f-c92568b26fe2" body="This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;Foo>.&#xA;" annotatedElement="ee3977a9-2874-47d2-9d72-6066d61cbcca"/>
                  <generalization xmi:id="f21c7183-e3db-4b08-abc8-40fee26ad86e" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="318aad62-c8c8-4290-87e2-3a1432aef772" name="MoveAction">
                  <ownedComment xmi:id="32a8e66d-8b67-40bf-9d48-019316f7dbaa" body="This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;Foo>.&#xA;" annotatedElement="318aad62-c8c8-4290-87e2-3a1432aef772"/>
                  <generalization xmi:id="a7f2de46-ba5f-4ad2-9e50-0d5b4b5d4bab" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6de91f54-312c-4c4f-862a-54e72d401e16" name="ShowSystemMenuAction" visibility="private">
                  <generalization xmi:id="45cefc16-3c37-47c7-9aee-95dfa78d7f4d" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="d54b8978-8168-4b8e-88df-58b7311c6f47" name="SizeAction">
                  <ownedComment xmi:id="e5521440-5dd0-4808-ab58-c84d1c3dd5e0" body="This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;Foo>.&#xA;" annotatedElement="d54b8978-8168-4b8e-88df-58b7311c6f47"/>
                  <generalization xmi:id="1f8f5dae-6c28-40f0-ab33-6d4db041f17e" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="119c6d13-d637-483a-b450-42377cb1ac08" name="SystemMenuBar">
                  <ownedComment xmi:id="40d1efdc-de9e-433f-86f1-76d4b4897510" body="This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;Foo>.&#xA;" annotatedElement="119c6d13-d637-483a-b450-42377cb1ac08"/>
                  <generalization xmi:id="30b86c39-1ef8-4375-8bb0-7d87e5972850" isSubstitutable="true" general="000640fb-2ecf-4576-91aa-37c2286ba74a"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5d6d81e4-4cf3-48d6-82b5-526914855633" name="NoFocusButton" visibility="private">
                  <generalization xmi:id="21cf8848-72df-49ad-abd3-72fe4ddce46d" isSubstitutable="true" general="1c2f22f0-8bbd-4e4b-915e-ea57b72df83b"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6369569f-3372-4303-8b29-2582cd791fde" name="Handler" visibility="private" clientDependency="3712e7f3-e25d-43c5-9e17-009078955996 ebe9c227-458f-49df-bace-8043bc89d1d2">
                  <interfaceRealization xmi:id="ebe9c227-458f-49df-bace-8043bc89d1d2" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="6369569f-3372-4303-8b29-2582cd791fde" contract="c3507179-c29c-40a9-8869-092757900e53"/>
                  <interfaceRealization xmi:id="3712e7f3-e25d-43c5-9e17-009078955996" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="6369569f-3372-4303-8b29-2582cd791fde" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="08fdc104-41ac-4f17-bca4-e383d7e51e55" name="BasicViewportUI">
                <ownedComment xmi:id="4e0bdeeb-7ec9-4c5b-b119-a501a934a046" body="BasicViewport implementation&#xA;&#xA;@version 1.1 05/01/98&#xA;@author Rich Schiavi&#xA;" annotatedElement="08fdc104-41ac-4f17-bca4-e383d7e51e55"/>
                <generalization xmi:id="baa00b07-12f3-4106-ab06-98de7f506a9f" isSubstitutable="true" general="0d32b011-12dd-4c8c-be95-aed4b08d5233"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="a8cce313-8f07-4d93-bfcf-c422d3492ec7" name="BasicToolTipUI">
                <ownedComment xmi:id="acb5895b-cbf7-4b3a-bc06-99efe7b2f325" body="Standard tool tip L&amp;F.&#xA;&lt;p>&#xA;&#xA;@version 1.41 12/19/03&#xA;@author Dave Moore&#xA;" annotatedElement="a8cce313-8f07-4d93-bfcf-c422d3492ec7"/>
                <generalization xmi:id="588cd869-6d81-4701-be95-9370be242fe6" isSubstitutable="true" general="003dadb2-cab7-4cb1-a294-627cbefa8e20"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="29b56927-9776-4452-9758-76eec4527546" name="PropertyChangeHandler" visibility="private" clientDependency="ba8f6d41-8e47-4434-ace7-df5a9774cd69">
                  <interfaceRealization xmi:id="ba8f6d41-8e47-4434-ace7-df5a9774cd69" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="29b56927-9776-4452-9758-76eec4527546" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="0cfb21d8-f918-4a7d-95e6-fb09f0d6f858" name="BasicButtonUI">
                <ownedComment xmi:id="74b998ba-7115-40a5-af8c-a5a8619214cb" body="BasicButton implementation&#xA;&#xA;@version 1.112 01/19/04&#xA;@author Jeff Dinkins&#xA;" annotatedElement="0cfb21d8-f918-4a7d-95e6-fb09f0d6f858"/>
                <generalization xmi:id="82adec0b-c2dd-470f-be76-61b7d151ef03" isSubstitutable="true" general="6d44d004-82d0-4a2e-8a23-9169fd9f018a"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="30d39fed-063e-4e0c-a8f7-983e168df979" name="BasicTableUI">
                <ownedComment xmi:id="ec6e1e81-20be-4cec-b9c4-edd563a75b06" body="BasicTableUI implementation&#xA;&#xA;@version 1.140 06/14/04&#xA;@author Philip Milne&#xA;" annotatedElement="30d39fed-063e-4e0c-a8f7-983e168df979"/>
                <generalization xmi:id="b139fa7c-6f19-4cd4-8151-ee56a5c14a11" isSubstitutable="true" general="2d85b975-83b5-41be-b382-f35b3ffbae32"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1b85ae23-8a27-4281-a782-33b9eec26f24" name="KeyHandler" clientDependency="df6eeb91-61d7-4292-a74b-591f2d6cdb35">
                  <ownedComment xmi:id="c14b0662-5c97-43a9-b106-eabf27fe8470" body="This inner class is marked &quot;public&quot; due to a compiler bug.&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicTableUI.&#xA;&lt;p>As of Java 2 platform v1.3 this class is no longer used.&#xA;Instead &lt;code>JTable&lt;/code>&#xA;overrides &lt;code>processKeyBinding&lt;/code> to dispatch the event to&#xA;the current &lt;code>TableCellEditor&lt;/code>.&#xA;" annotatedElement="1b85ae23-8a27-4281-a782-33b9eec26f24"/>
                  <interfaceRealization xmi:id="df6eeb91-61d7-4292-a74b-591f2d6cdb35" name="" supplier="d0d97f9c-d8a0-4583-b30e-176f42c3f7e7" client="1b85ae23-8a27-4281-a782-33b9eec26f24" contract="d0d97f9c-d8a0-4583-b30e-176f42c3f7e7"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="dc96635b-3f68-4d88-a64b-bf9d48e428d0" name="FocusHandler" clientDependency="f32b6c9b-14f5-4de8-b81d-ce50b87ac132">
                  <ownedComment xmi:id="b397911e-a934-47f2-adf5-271e19555c26" body="This inner class is marked &quot;public&quot; due to a compiler bug.&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicTableUI.&#xA;" annotatedElement="dc96635b-3f68-4d88-a64b-bf9d48e428d0"/>
                  <interfaceRealization xmi:id="f32b6c9b-14f5-4de8-b81d-ce50b87ac132" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="dc96635b-3f68-4d88-a64b-bf9d48e428d0" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="3c0b52a3-4b5e-403a-8e10-87ea1e3f0676" name="MouseInputHandler" clientDependency="c9530d16-a6a2-414a-9656-b66bbcce8746">
                  <ownedComment xmi:id="6d9dfc0e-18fb-4de2-b1a6-a2ef6d4661a3" body="This inner class is marked &quot;public&quot; due to a compiler bug.&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicTableUI.&#xA;" annotatedElement="3c0b52a3-4b5e-403a-8e10-87ea1e3f0676"/>
                  <interfaceRealization xmi:id="c9530d16-a6a2-414a-9656-b66bbcce8746" name="" supplier="361ca981-29c8-430f-b1a4-fa3e692a1955" client="3c0b52a3-4b5e-403a-8e10-87ea1e3f0676" contract="361ca981-29c8-430f-b1a4-fa3e692a1955"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1563b5f6-8186-41ce-8ae0-c441e8b1702b" name="TableDragGestureRecognizer" visibility="package">
                  <ownedComment xmi:id="56a934db-17a5-46fa-903a-2d9bece98f2e" body="Drag gesture recognizer for JTable components&#xA;" annotatedElement="1563b5f6-8186-41ce-8ae0-c441e8b1702b"/>
                  <generalization xmi:id="8f797c21-ad2d-4170-92e4-291f18a8dd29" isSubstitutable="true" general="602f8cf7-2456-4c0f-adf7-4b948b620265"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="354d6e7b-c6a3-4bd7-a84d-092cc65d04a9" name="TableDropTargetListener" visibility="package">
                  <ownedComment xmi:id="ada86a6d-d7af-4ad8-8777-6af3b6dcc319" body="A DropTargetListener to extend the default Swing handling of drop operations&#xA;by moving the tree selection to the nearest location to the mouse pointer.&#xA;Also adds autoscroll capability.&#xA;" annotatedElement="354d6e7b-c6a3-4bd7-a84d-092cc65d04a9"/>
                  <generalization xmi:id="307c8e22-7c94-4b97-a4b5-91c0e39e77f6" isSubstitutable="true" general="424a8ed1-20ee-48b8-b496-2d41d652479a"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="3d8b6753-392d-4392-9862-65c646a61096" name="TableTransferHandler" visibility="package" clientDependency="21b7be3d-566b-43a1-9530-de6a7e9459ed">
                  <generalization xmi:id="79ad9fa2-aaff-4e56-b916-6ab1902568fd" isSubstitutable="true" general="74564559-a512-4c82-bfcc-29769618ec6c"/>
                  <interfaceRealization xmi:id="21b7be3d-566b-43a1-9530-de6a7e9459ed" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="3d8b6753-392d-4392-9862-65c646a61096" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="307a2908-b3ae-4eb5-addb-e2a732f3cfc3" name="Actions" visibility="private"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="0d74e843-13dd-457a-80bd-eec98686423f" name="Handler" visibility="private" clientDependency="0e40f775-c4f3-4352-8786-6a5962d3dc87 9cbae123-ee62-4746-ab5d-2694b0bb8199 bef96329-6365-4265-84b4-c1e279b00c60">
                  <interfaceRealization xmi:id="9cbae123-ee62-4746-ab5d-2694b0bb8199" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="0d74e843-13dd-457a-80bd-eec98686423f" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                  <interfaceRealization xmi:id="0e40f775-c4f3-4352-8786-6a5962d3dc87" name="" supplier="361ca981-29c8-430f-b1a4-fa3e692a1955" client="0d74e843-13dd-457a-80bd-eec98686423f" contract="361ca981-29c8-430f-b1a4-fa3e692a1955"/>
                  <interfaceRealization xmi:id="bef96329-6365-4265-84b4-c1e279b00c60" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="0d74e843-13dd-457a-80bd-eec98686423f" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="e4c2ea1e-8721-4bb2-91e3-e5a626963837" name="BasicProgressBarUI">
                <ownedComment xmi:id="96b86920-e9b6-4184-90e3-412538004a78" body="A Basic L&amp;F implementation of ProgressBarUI.&#xA;&#xA;@version 1.68 03/11/04&#xA;@author Michael C. Albers&#xA;@author Kathy Walrath&#xA;" annotatedElement="e4c2ea1e-8721-4bb2-91e3-e5a626963837"/>
                <generalization xmi:id="c22045e5-21b4-4315-b356-46f8e5d5fee7" isSubstitutable="true" general="c85ac2f3-62f4-40f2-9ef5-b00225fdace6"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="06ba29bb-f189-4fc4-8b14-af81db21cdf5" name="Animator" visibility="private" clientDependency="71d3384c-40da-40ac-bb32-cbb2a0948743">
                  <ownedComment xmi:id="722b2bad-5aab-4004-899f-ef57211e6841" body="Implements an animation thread that invokes repaint&#xA;at a fixed rate.  If ADJUSTTIMER is true, this thread&#xA;will continuously adjust the repaint interval to&#xA;try to make the actual time between repaints match&#xA;the requested rate.&#xA;" annotatedElement="06ba29bb-f189-4fc4-8b14-af81db21cdf5"/>
                  <interfaceRealization xmi:id="71d3384c-40da-40ac-bb32-cbb2a0948743" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="06ba29bb-f189-4fc4-8b14-af81db21cdf5" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a02a48ce-c0da-4782-bf82-7f06f8483a83" name="ChangeHandler" clientDependency="ce0bcd46-3a14-4f45-aa45-dc3a034cfaea">
                  <ownedComment xmi:id="f66ea619-f14a-4fa7-91bc-4366b379bb4a" body="This inner class is marked &quot;public&quot; due to a compiler bug.&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicProgressBarUI.&#xA;" annotatedElement="a02a48ce-c0da-4782-bf82-7f06f8483a83"/>
                  <interfaceRealization xmi:id="ce0bcd46-3a14-4f45-aa45-dc3a034cfaea" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="a02a48ce-c0da-4782-bf82-7f06f8483a83" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1588710c-b715-4e65-a6d8-649f4e1be1de" name="Handler" visibility="private" clientDependency="2dd4aded-2f38-49b5-bdb0-4f8a346e4990 dd26167c-6c3b-4266-9ed9-d984b3b3cf1a e6deca01-16bc-4d39-959e-94043ba09f33">
                  <interfaceRealization xmi:id="2dd4aded-2f38-49b5-bdb0-4f8a346e4990" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="1588710c-b715-4e65-a6d8-649f4e1be1de" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                  <interfaceRealization xmi:id="dd26167c-6c3b-4266-9ed9-d984b3b3cf1a" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="1588710c-b715-4e65-a6d8-649f4e1be1de" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                  <interfaceRealization xmi:id="e6deca01-16bc-4d39-959e-94043ba09f33" name="" supplier="c4e4a91d-3aeb-48b7-836b-feaf66fc4ce9" client="1588710c-b715-4e65-a6d8-649f4e1be1de" contract="c4e4a91d-3aeb-48b7-836b-feaf66fc4ce9"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4eebe073-2d70-457c-94e8-b52da254b02d" name="BasicGraphicsUtils"/>
              <packagedElement xmi:type="uml:Class" xmi:id="c86408d0-50fe-41de-8e06-0102217d6abe" name="BasicToolBarSeparatorUI">
                <ownedComment xmi:id="875a86ea-1784-4cef-9673-425b91c72820" body="A Basic L&amp;F implementation of ToolBarSeparatorUI.  This implementation&#xA;is a &quot;combined&quot; view/controller.&#xA;&lt;p>&#xA;&#xA;@version 1.13 12/19/03&#xA;@author Jeff Shapiro&#xA;" annotatedElement="c86408d0-50fe-41de-8e06-0102217d6abe"/>
                <generalization xmi:id="aedea56e-1202-4949-ae50-c068a4f6f461" isSubstitutable="true" general="da1903fc-5c38-4561-b2a9-cbcc9d6a6912"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="1c152de9-ac4d-4410-8f85-138b2b0cb4ab" name="BasicComboPopup" clientDependency="28903944-0856-4203-9a7a-06ea5162da01">
                <ownedComment xmi:id="7ad0af74-c450-4a2d-a602-358fd98474fa" body="This is a basic implementation of the &lt;code>ComboPopup&lt;/code> interface.&#xA;&#xA;This class represents the ui for the popup portion of the combo box.&#xA;&lt;p>&#xA;All event handling is handled by listener classes created with the&#xA;&lt;code>createxxxListener()&lt;/code> methods and internal classes.&#xA;You can change the behavior of this class by overriding the&#xA;&lt;code>createxxxListener()&lt;/code> methods and supplying your own&#xA;event listeners or subclassing from the ones supplied in this class.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.78 03/05/04&#xA;@author Tom Santos&#xA;@author Mark Davidson&#xA;" annotatedElement="1c152de9-ac4d-4410-8f85-138b2b0cb4ab"/>
                <generalization xmi:id="af79d353-eedf-447d-ba7a-a85255b0053e" isSubstitutable="true" general="2cdf053a-2c3e-468c-b5e1-90d9541d3a65"/>
                <interfaceRealization xmi:id="28903944-0856-4203-9a7a-06ea5162da01" name="" supplier="6cc37dcf-633e-482c-b368-71f3a822330b" client="1c152de9-ac4d-4410-8f85-138b2b0cb4ab" contract="6cc37dcf-633e-482c-b368-71f3a822330b"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="03293636-ee51-4fdf-ae5b-47ce4638939b" name="InvocationMouseHandler" visibility="protected">
                  <ownedComment xmi:id="3abbd978-ebd8-4125-97ad-607fed778236" body="A listener to be registered upon the combo box&#xA;(&lt;em>not&lt;/em> its popup menu)&#xA;to handle mouse events&#xA;that affect the state of the popup menu.&#xA;The main purpose of this listener is to make the popup menu&#xA;appear and disappear.&#xA;This listener also helps&#xA;with click-and-drag scenarios by setting the selection if the mouse was&#xA;released over the list during a drag.&#xA;&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;We recommend that you &lt;em>not&lt;/em>&#xA;create subclasses of this class.&#xA;If you absolutely must create a subclass,&#xA;be sure to invoke the superclass&#xA;version of each method.&#xA;&#xA;@see BasicComboPopup#createMouseListener&#xA;" annotatedElement="03293636-ee51-4fdf-ae5b-47ce4638939b"/>
                  <generalization xmi:id="eb68983d-c617-44ed-bb84-6f825287a90c" isSubstitutable="true" general="0db79cd4-0757-4282-b2c3-730fa54c5c55"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1046609d-4ebc-4a14-a63b-26fa23a1e14d" name="InvocationMouseMotionHandler" visibility="protected">
                  <ownedComment xmi:id="1b1337b8-8efd-4908-8fda-a77cd32d2ffa" body="This listener watches for dragging and updates the current selection in the&#xA;list if it is dragging over the list.&#xA;" annotatedElement="1046609d-4ebc-4a14-a63b-26fa23a1e14d"/>
                  <generalization xmi:id="4d7ae6fb-f230-42cb-9810-6a36445be28f" isSubstitutable="true" general="78c02022-5533-497c-8742-d33826e44a9c"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1ecefbfa-e50f-4c37-875c-1a1a09ee748a" name="InvocationKeyHandler">
                  <ownedComment xmi:id="8e221276-6e65-4b24-b61e-00a6972c6b76" body="As of Java 2 platform v 1.4, this class is now obsolete and is only included for&#xA;backwards API compatibility. Do not instantiate or subclass.&#xA;&lt;p>&#xA;All the functionality of this class has been included in&#xA;BasicComboBoxUI ActionMap/InputMap methods.&#xA;" annotatedElement="1ecefbfa-e50f-4c37-875c-1a1a09ee748a"/>
                  <generalization xmi:id="4dd68e53-feb4-45ff-ac9a-725d989bc443" isSubstitutable="true" general="4f4f75e7-42ae-4792-a8d3-efa24fbec1b6"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a7c687e6-e439-4bfa-ac83-8356e9a9e206" name="ListSelectionHandler" visibility="protected" clientDependency="e89439d5-69bd-43f9-a605-2ece0eae91fc">
                  <ownedComment xmi:id="546bcb77-05e1-453c-a431-6a7ffb1a4efe" body="As of Java 2 platform v 1.4, this class is now obsolete, doesn't do anything, and&#xA;is only included for backwards API compatibility. Do not call or&#xA;override.&#xA;" annotatedElement="a7c687e6-e439-4bfa-ac83-8356e9a9e206"/>
                  <interfaceRealization xmi:id="e89439d5-69bd-43f9-a605-2ece0eae91fc" name="" supplier="077ca4fe-3afb-4e22-bed0-5cc47445acf4" client="a7c687e6-e439-4bfa-ac83-8356e9a9e206" contract="077ca4fe-3afb-4e22-bed0-5cc47445acf4"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="704f127c-5e6d-468e-883c-fa587d56324d" name="ListDataHandler" clientDependency="1739cd30-6574-4e25-9289-4e938fcd28da">
                  <ownedComment xmi:id="a789ad16-4d68-419f-8afa-a11ded69c342" body="As of 1.4, this class is now obsolete, doesn't do anything, and&#xA;is only included for backwards API compatibility. Do not call or&#xA;override.&#xA;&lt;p>&#xA;The functionality has been migrated into &lt;code>ItemHandler&lt;/code>.&#xA;&#xA;@see #createItemListener&#xA;" annotatedElement="704f127c-5e6d-468e-883c-fa587d56324d"/>
                  <interfaceRealization xmi:id="1739cd30-6574-4e25-9289-4e938fcd28da" name="" supplier="bcdeadf8-6999-41e4-bdd9-4404260fdf22" client="704f127c-5e6d-468e-883c-fa587d56324d" contract="bcdeadf8-6999-41e4-bdd9-4404260fdf22"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="42b79de0-a376-417e-afb2-ec9dcc6cbf47" name="ListMouseHandler" visibility="protected">
                  <ownedComment xmi:id="296daa92-ae08-4fbc-8d19-32469b509fe5" body="This listener hides the popup when the mouse is released in the list.&#xA;" annotatedElement="42b79de0-a376-417e-afb2-ec9dcc6cbf47"/>
                  <generalization xmi:id="d0fc50ee-8d2b-4e9c-beca-155b325e486c" isSubstitutable="true" general="0db79cd4-0757-4282-b2c3-730fa54c5c55"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6dce273c-65ef-4c73-a22f-79f5ea229be3" name="ListMouseMotionHandler" visibility="protected">
                  <ownedComment xmi:id="7435a4c7-0b84-4ba6-a675-3d0c5ddeeaaf" body="This listener changes the selected item as you move the mouse over the list.&#xA;The selection change is not committed to the model, this is for user feedback only.&#xA;" annotatedElement="6dce273c-65ef-4c73-a22f-79f5ea229be3"/>
                  <generalization xmi:id="ca9fb3ce-6096-453b-bf29-25a703efb02c" isSubstitutable="true" general="78c02022-5533-497c-8742-d33826e44a9c"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5aeeaf64-fc22-4fd2-b44d-ed7de85decce" name="ItemHandler" visibility="protected" clientDependency="327b283d-fbe7-4687-a197-ce34e5c27690">
                  <ownedComment xmi:id="e9c57ca8-7755-456f-95b7-642cfbb3c2b6" body="This listener watches for changes to the selection in the&#xA;combo box.&#xA;" annotatedElement="5aeeaf64-fc22-4fd2-b44d-ed7de85decce"/>
                  <interfaceRealization xmi:id="327b283d-fbe7-4687-a197-ce34e5c27690" name="" supplier="1dd642cc-ad4c-43b8-91c1-a201cb5d8292" client="5aeeaf64-fc22-4fd2-b44d-ed7de85decce" contract="1dd642cc-ad4c-43b8-91c1-a201cb5d8292"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6045eee5-a0db-4770-bc43-cc9e27ca05d2" name="PropertyChangeHandler" visibility="protected" clientDependency="4190cf2a-eca9-43df-ae39-af489583b4c5">
                  <ownedComment xmi:id="125d2d3e-2cee-4858-b077-a4950120de7d" body="This listener watches for bound properties that have changed in the&#xA;combo box.&#xA;&lt;p>&#xA;Subclasses which wish to listen to combo box property changes should&#xA;call the superclass methods to ensure that the combo popup correctly&#xA;handles property changes.&#xA;&#xA;@see #createPropertyChangeListener&#xA;" annotatedElement="6045eee5-a0db-4770-bc43-cc9e27ca05d2"/>
                  <interfaceRealization xmi:id="4190cf2a-eca9-43df-ae39-af489583b4c5" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="6045eee5-a0db-4770-bc43-cc9e27ca05d2" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="4af982ba-11b1-418b-b5df-ebc1edb504c4" name="EmptyListModelClass" visibility="private" clientDependency="0e86d8e1-67f0-4941-88cd-4779b68cecbb 27c3e2ae-c7b4-4918-b55f-88250f52149c">
                  <interfaceRealization xmi:id="0e86d8e1-67f0-4941-88cd-4779b68cecbb" name="" supplier="51e5a92e-9f51-44ce-9b72-74f997d3869e" client="4af982ba-11b1-418b-b5df-ebc1edb504c4" contract="51e5a92e-9f51-44ce-9b72-74f997d3869e"/>
                  <interfaceRealization xmi:id="27c3e2ae-c7b4-4918-b55f-88250f52149c" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4af982ba-11b1-418b-b5df-ebc1edb504c4" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="b527c4be-8f35-4691-9532-550a72b3bdae" name="AutoScrollActionHandler" visibility="private" clientDependency="a5ac77fe-7fd8-4bc5-b7f9-b01cfb0a2426">
                  <interfaceRealization xmi:id="a5ac77fe-7fd8-4bc5-b7f9-b01cfb0a2426" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="b527c4be-8f35-4691-9532-550a72b3bdae" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="4fe96bb6-9fff-49ed-8cab-e3ec47acb295" name="Handler" visibility="private" clientDependency="a2f0ada4-31e5-4f8d-975e-486c3128554e a3fd9ce8-6f19-4885-988e-4dbb5f258bee 63610ab8-8c53-4d16-a1e0-f947cdcd1be7 e6c080c4-8a65-447e-8407-1202c68646e7 24fb193e-7e00-4c79-b075-72c528bcc115">
                  <interfaceRealization xmi:id="a2f0ada4-31e5-4f8d-975e-486c3128554e" name="" supplier="1dd642cc-ad4c-43b8-91c1-a201cb5d8292" client="4fe96bb6-9fff-49ed-8cab-e3ec47acb295" contract="1dd642cc-ad4c-43b8-91c1-a201cb5d8292"/>
                  <interfaceRealization xmi:id="a3fd9ce8-6f19-4885-988e-4dbb5f258bee" name="" supplier="d2bfccf2-94c5-4882-8d84-613f4ad53195" client="4fe96bb6-9fff-49ed-8cab-e3ec47acb295" contract="d2bfccf2-94c5-4882-8d84-613f4ad53195"/>
                  <interfaceRealization xmi:id="63610ab8-8c53-4d16-a1e0-f947cdcd1be7" name="" supplier="8747391f-bebd-47e3-888b-8e509ac223c9" client="4fe96bb6-9fff-49ed-8cab-e3ec47acb295" contract="8747391f-bebd-47e3-888b-8e509ac223c9"/>
                  <interfaceRealization xmi:id="e6c080c4-8a65-447e-8407-1202c68646e7" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="4fe96bb6-9fff-49ed-8cab-e3ec47acb295" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                  <interfaceRealization xmi:id="24fb193e-7e00-4c79-b075-72c528bcc115" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="4fe96bb6-9fff-49ed-8cab-e3ec47acb295" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="783ccef5-def3-4cfe-b439-3c24d5ddcc40" name="BasicDirectoryModel" clientDependency="8c0f3f4b-6916-4b32-bcb8-ec3dcab646c1">
                <ownedComment xmi:id="ba044aa5-bbf4-4f4e-8143-8b811a764937" body="Basic implementation of a file list.&#xA;&#xA;@version %i% %g%&#xA;@author Jeff Dinkins&#xA;" annotatedElement="783ccef5-def3-4cfe-b439-3c24d5ddcc40"/>
                <generalization xmi:id="8b8c76a9-3c9b-4e12-8f94-eced4d28e694" isSubstitutable="true" general="8cf5bc32-a3b1-4981-bc71-7af4f2144124"/>
                <interfaceRealization xmi:id="8c0f3f4b-6916-4b32-bcb8-ec3dcab646c1" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="783ccef5-def3-4cfe-b439-3c24d5ddcc40" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="98970a61-11ea-4f81-aa62-8dcabfb72374" name="LoadFilesThread" visibility="package">
                  <generalization xmi:id="529e9daa-0d36-40e5-8dfb-8dda1693ed7b" isSubstitutable="true" general="c9830202-c9c4-48c6-a18c-376520128934"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="2178655c-dc30-4e36-bea5-52c08d9d3311" name="DoChangeContents" visibility="package" clientDependency="431c3581-d770-49f1-a0c9-0e41b5d9b042">
                  <interfaceRealization xmi:id="431c3581-d770-49f1-a0c9-0e41b5d9b042" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="2178655c-dc30-4e36-bea5-52c08d9d3311" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f73e743b-0a42-4b62-909c-f0b59c3abc8d" name="BasicPopupMenuUI">
                <ownedComment xmi:id="f550d7c4-d214-4ab9-9822-f192c81c4e50" body="A Windows L&amp;F implementation of PopupMenuUI.  This implementation&#xA;is a &quot;combined&quot; view/controller.&#xA;&#xA;@version 1.119 04/16/04&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;@author Arnaud Weber&#xA;" annotatedElement="f73e743b-0a42-4b62-909c-f0b59c3abc8d"/>
                <generalization xmi:id="ae2fe71b-9947-4214-900a-cb40a84e8d5d" isSubstitutable="true" general="fa4aba5a-71a8-40b0-93ce-cad08b1a8641"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="300d2e5a-8559-4fb0-a2b9-e8235f5955c7" name="MouseGrabber" visibility="private" clientDependency="83ac8e83-5c5f-4e4e-b282-1cd9f041d987 7ed15f6b-63f8-46f6-bbcf-984ce77cecb5 801ff99e-6858-493a-9bcb-a537778cec76 545df4fd-fdad-4c2f-b495-569ae53a9a2d">
                  <interfaceRealization xmi:id="801ff99e-6858-493a-9bcb-a537778cec76" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="300d2e5a-8559-4fb0-a2b9-e8235f5955c7" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                  <interfaceRealization xmi:id="83ac8e83-5c5f-4e4e-b282-1cd9f041d987" name="" supplier="44edb2fe-b050-4f4b-84d0-05d4b3301cb8" client="300d2e5a-8559-4fb0-a2b9-e8235f5955c7" contract="44edb2fe-b050-4f4b-84d0-05d4b3301cb8"/>
                  <interfaceRealization xmi:id="7ed15f6b-63f8-46f6-bbcf-984ce77cecb5" name="" supplier="476f85cb-73d6-493e-8dda-f7ed06712460" client="300d2e5a-8559-4fb0-a2b9-e8235f5955c7" contract="476f85cb-73d6-493e-8dda-f7ed06712460"/>
                  <interfaceRealization xmi:id="545df4fd-fdad-4c2f-b495-569ae53a9a2d" name="" supplier="10e58da0-0032-467f-9dec-983a8fcb7211" client="300d2e5a-8559-4fb0-a2b9-e8235f5955c7" contract="10e58da0-0032-467f-9dec-983a8fcb7211"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="39af6664-d397-4554-8fea-d17a9effd808" name="BasicPopupMenuListener" visibility="private" clientDependency="7a22cd91-9a6b-4901-871f-1e2d38bc162d">
                  <ownedComment xmi:id="196c5a6d-48fa-4c4e-b623-413164cf8e7f" body="This Listener fires the Action that provides the correct auditory&#xA;feedback.&#xA;&#xA;@since 1.4&#xA;" annotatedElement="39af6664-d397-4554-8fea-d17a9effd808"/>
                  <interfaceRealization xmi:id="7a22cd91-9a6b-4901-871f-1e2d38bc162d" name="" supplier="1a6761f2-765c-474c-8299-4d40d2a1e6f7" client="39af6664-d397-4554-8fea-d17a9effd808" contract="1a6761f2-765c-474c-8299-4d40d2a1e6f7"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="0e6fb1d6-8ec4-426e-aae3-f24496211992" name="MenuKeyboardHelper" visibility="private" clientDependency="9ad79d8e-303c-443d-8090-e06d6e0c878d cc69b954-b167-4fd2-b062-89c0fb1d49b0">
                  <ownedComment xmi:id="2ec45170-eb4f-4c96-b867-810639c4e709" body="This helper is added to MenuSelectionManager as a ChangeListener to&#xA;listen to menu selection changes. When a menu is activated, it passes&#xA;focus to its parent JRootPane, and installs an ActionMap/InputMap pair&#xA;on that JRootPane. Those maps are necessary in order for menu&#xA;navigation to work. When menu is being deactivated, it restores focus&#xA;to the component that has had it before menu activation, and uninstalls&#xA;the maps.&#xA;This helper is also installed as a KeyListener on root pane when menu&#xA;is active. It forwards key events to MenuSelectionManager for mnemonic&#xA;keys handling.&#xA;" annotatedElement="0e6fb1d6-8ec4-426e-aae3-f24496211992"/>
                  <interfaceRealization xmi:id="cc69b954-b167-4fd2-b062-89c0fb1d49b0" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="0e6fb1d6-8ec4-426e-aae3-f24496211992" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                  <interfaceRealization xmi:id="9ad79d8e-303c-443d-8090-e06d6e0c878d" name="" supplier="d0d97f9c-d8a0-4583-b30e-176f42c3f7e7" client="0e6fb1d6-8ec4-426e-aae3-f24496211992" contract="d0d97f9c-d8a0-4583-b30e-176f42c3f7e7"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1f845324-ac2c-49a1-a886-dc8f86ebada2" name="BasicMenuKeyListener" visibility="private" clientDependency="f59f1e38-d821-4f33-9afa-afb92e93c205">
                  <ownedComment xmi:id="1a68e036-9b9c-4f94-99bb-a8401b3d0933" body="Handles mnemonic for children JMenuItems.&#xA;@since 1.5&#xA;" annotatedElement="1f845324-ac2c-49a1-a886-dc8f86ebada2"/>
                  <interfaceRealization xmi:id="f59f1e38-d821-4f33-9afa-afb92e93c205" name="" supplier="66876c63-9640-4ecf-85d5-22e30bc84e77" client="1f845324-ac2c-49a1-a886-dc8f86ebada2" contract="66876c63-9640-4ecf-85d5-22e30bc84e77"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="8b7dd1b4-bc4c-49c8-8e83-247adc0ec78a" name="Actions" visibility="private"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="bf5639b3-ba65-4118-8f50-978fdbdc9937" name="BasicDesktopPaneUI">
                <ownedComment xmi:id="10079f55-dd63-4604-a2dd-f1e5762d9fce" body="Basic L&amp;F for a desktop.&#xA;&#xA;@version 1.55 05/18/04&#xA;@author Steve Wilson&#xA;" annotatedElement="bf5639b3-ba65-4118-8f50-978fdbdc9937"/>
                <generalization xmi:id="50986a07-644c-4948-a6f2-6d644e550fa6" isSubstitutable="true" general="0f3f3f3b-490e-47da-9080-5458d19139c4"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ab9a9a68-95df-41c1-ac5d-a1a4b422abda" name="OpenAction" visibility="protected">
                  <generalization xmi:id="8e641c83-ec0c-43c1-82ed-9cc85ae2907c" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="140bf1cd-5cb2-472a-8454-09bd63113f66" name="CloseAction" visibility="protected">
                  <generalization xmi:id="9e1a0951-6ec0-4767-b21c-e7c2e3152fab" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5328d7b1-8c79-4530-a987-10f8781a3142" name="MinimizeAction" visibility="protected">
                  <generalization xmi:id="a5db2b8a-567c-49b5-864d-a16268bdbc8e" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="d2d0c033-37d5-4508-835a-a60840006112" name="MaximizeAction" visibility="protected">
                  <generalization xmi:id="48c00c09-a5aa-4bcc-a98c-7a357915e965" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="607765bb-5a6b-454c-b9b7-634657836bc4" name="NavigateAction" visibility="protected">
                  <generalization xmi:id="9c865707-f7ae-426a-b703-34487666deaf" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a97923d0-86a5-414b-b415-f1bd28699394" name="Handler" visibility="private" clientDependency="54688dc9-64e7-4bae-b3f1-f02bc02e4017">
                  <interfaceRealization xmi:id="54688dc9-64e7-4bae-b3f1-f02bc02e4017" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="a97923d0-86a5-414b-b415-f1bd28699394" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="7eff0715-52da-492b-889d-d1bd29a7c7fc" name="BasicDesktopManager" visibility="private" clientDependency="6373d79b-2e3d-4ebd-a6b9-77dbcefd687d">
                  <ownedComment xmi:id="fdf6c7e4-6ad5-46e4-bf23-0bf5c22be2c3" body="The default DesktopManager installed by the UI.&#xA;" annotatedElement="7eff0715-52da-492b-889d-d1bd29a7c7fc"/>
                  <generalization xmi:id="7d6cdc10-e4f7-476f-89ed-11ac530c3d00" isSubstitutable="true" general="ca79776d-907f-4c42-b293-16d92d244c34"/>
                  <interfaceRealization xmi:id="6373d79b-2e3d-4ebd-a6b9-77dbcefd687d" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="7eff0715-52da-492b-889d-d1bd29a7c7fc" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="755b5343-d046-4e38-9838-52279dcc01e3" name="Actions" visibility="private"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="dbea6f5c-42c1-4f12-9b21-683ab896a0d0" name="LazyActionMap" visibility="package">
                <ownedComment xmi:id="ab3906a7-6ba1-442b-8725-3465f3604a38" body="An ActionMap that populates its contents as necessary. The&#xA;contents are populated by invoking the &lt;code>loadActionMap&lt;/code>&#xA;method on the passed in Object.&#xA;&#xA;@version 1.5, 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="dbea6f5c-42c1-4f12-9b21-683ab896a0d0"/>
                <generalization xmi:id="2cd4c043-e8db-45b5-960c-9be4d2f26a66" isSubstitutable="true" general="2f3e5226-6a6f-4235-b6c3-4cccde30c6f2"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="35f9930a-be13-42a2-bf63-2600a8b28fba" name="BasicCheckBoxMenuItemUI">
                <ownedComment xmi:id="d7723907-69e0-4401-a0ec-938670359bf4" body="BasicCheckboxMenuItem implementation&#xA;&#xA;@version 1.53 12/19/03&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;@author Arnaud Weber&#xA;" annotatedElement="35f9930a-be13-42a2-bf63-2600a8b28fba"/>
                <generalization xmi:id="7feb8615-74e2-445f-a2a2-2e1dd3c2dd78" isSubstitutable="true" general="b720308d-6638-4771-a9c2-a324cb24131f"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="88ffccc0-e752-42aa-b44f-d923d12dffc8" name="BasicSpinnerUI">
                <ownedComment xmi:id="4be7a93d-15bb-42ee-a5a1-708e1286b644" body="The default Spinner UI delegate.&#xA;&#xA;@version 1.22 12/19/03&#xA;@author Hans Muller&#xA;@since 1.4&#xA;" annotatedElement="88ffccc0-e752-42aa-b44f-d923d12dffc8"/>
                <generalization xmi:id="066bf115-7b9c-46ca-b80d-7bde41eecd6c" isSubstitutable="true" general="e86bfcae-6af7-459f-9e7b-b1bde0a3528a"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="9efe4b9b-71a3-4530-a634-ac4ba2732708" name="ArrowButtonHandler" visibility="private" clientDependency="89802dd5-ac2c-41c7-a959-826ecc67bce6 6c9c8f6e-0304-489b-b9fe-014388a9f3fa 55a69288-7d0e-412a-89a2-220ed8e6f50d">
                  <ownedComment xmi:id="8d866341-81ef-463c-80db-dccb5fa4faed" body="A handler for spinner arrow button mouse and action events.  When&#xA;a left mouse pressed event occurs we look up the (enabled) spinner&#xA;that's the source of the event and start the autorepeat timer.  The&#xA;timer fires action events until any button is released at which&#xA;point the timer is stopped and the reference to the spinner cleared.&#xA;The timer doesn't start until after a 300ms delay, so often the&#xA;source of the initial (and final) action event is just the button&#xA;logic for mouse released - which means that we're relying on the fact&#xA;that our mouse listener runs after the buttons mouse listener.&#xA;&lt;p>&#xA;Note that one instance of this handler is shared by all slider previous&#xA;arrow buttons and likewise for all of the next buttons,&#xA;so it doesn't have any state that persists beyond the limits&#xA;of a single button pressed/released gesture.&#xA;" annotatedElement="9efe4b9b-71a3-4530-a634-ac4ba2732708"/>
                  <generalization xmi:id="26b282b3-c357-45d9-9204-490087855ba4" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                  <interfaceRealization xmi:id="55a69288-7d0e-412a-89a2-220ed8e6f50d" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="9efe4b9b-71a3-4530-a634-ac4ba2732708" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                  <interfaceRealization xmi:id="6c9c8f6e-0304-489b-b9fe-014388a9f3fa" name="" supplier="d2bfccf2-94c5-4882-8d84-613f4ad53195" client="9efe4b9b-71a3-4530-a634-ac4ba2732708" contract="d2bfccf2-94c5-4882-8d84-613f4ad53195"/>
                  <interfaceRealization xmi:id="89802dd5-ac2c-41c7-a959-826ecc67bce6" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="9efe4b9b-71a3-4530-a634-ac4ba2732708" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ea985e22-43c8-4f84-be6e-bd41cf80d257" name="Handler" visibility="private" clientDependency="55e96c02-0ecf-4d93-a6f0-65c63120aa7e 535bec8e-c962-46dd-84ad-01270e6707c6">
                  <interfaceRealization xmi:id="55e96c02-0ecf-4d93-a6f0-65c63120aa7e" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="ea985e22-43c8-4f84-be6e-bd41cf80d257" contract="c3507179-c29c-40a9-8869-092757900e53"/>
                  <interfaceRealization xmi:id="535bec8e-c962-46dd-84ad-01270e6707c6" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="ea985e22-43c8-4f84-be6e-bd41cf80d257" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="59521039-0e8f-4756-8aed-62a18f51a6f2" name="BasicIconFactory" clientDependency="00a3f8c9-3260-46ed-a4b4-bdf7a81a3633">
                <ownedComment xmi:id="c2507835-1b10-47fe-ae8e-43ab57e169b9" body="Factory object that can vend Icons appropriate for the basic L &amp; F.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.27 12/19/03&#xA;@author David Kloba&#xA;@author Georges Saab&#xA;" annotatedElement="59521039-0e8f-4756-8aed-62a18f51a6f2"/>
                <interfaceRealization xmi:id="00a3f8c9-3260-46ed-a4b4-bdf7a81a3633" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="59521039-0e8f-4756-8aed-62a18f51a6f2" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="2ccb99ce-086e-427e-99d2-3de0339f18a7" name="EmptyFrameIcon" visibility="private" clientDependency="59d1b230-795b-4c64-b18c-5bbadb3ef68f df9da7c7-2267-4f57-8e49-6d122b7bf7d6">
                  <interfaceRealization xmi:id="59d1b230-795b-4c64-b18c-5bbadb3ef68f" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="2ccb99ce-086e-427e-99d2-3de0339f18a7" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="df9da7c7-2267-4f57-8e49-6d122b7bf7d6" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="2ccb99ce-086e-427e-99d2-3de0339f18a7" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ee073ae7-5caa-4530-8f0c-700af7f1c23d" name="CheckBoxIcon" visibility="private" clientDependency="bbea5722-c749-4be2-b718-c70b6caf810e c0595533-9283-41ba-baff-35948cb287a6">
                  <interfaceRealization xmi:id="c0595533-9283-41ba-baff-35948cb287a6" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="ee073ae7-5caa-4530-8f0c-700af7f1c23d" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="bbea5722-c749-4be2-b718-c70b6caf810e" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ee073ae7-5caa-4530-8f0c-700af7f1c23d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1a5f6626-5292-4f48-89d7-ccfacb480c36" name="RadioButtonIcon" visibility="private" clientDependency="b2d58b1b-7e2e-47e1-9bbf-2406f62b1942 c432b4ee-14e1-4aed-b142-3d97f60233e9 2492b04c-4495-4cdf-a092-1ff8c6781afe">
                  <interfaceRealization xmi:id="c432b4ee-14e1-4aed-b142-3d97f60233e9" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="1a5f6626-5292-4f48-89d7-ccfacb480c36" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="2492b04c-4495-4cdf-a092-1ff8c6781afe" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="1a5f6626-5292-4f48-89d7-ccfacb480c36" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="b2d58b1b-7e2e-47e1-9bbf-2406f62b1942" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="1a5f6626-5292-4f48-89d7-ccfacb480c36" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5c909619-7273-47aa-a33a-04947395d653" name="CheckBoxMenuItemIcon" visibility="private" clientDependency="1d71b283-6e4f-463a-a9b9-c98f827899ec 2ad7cfe2-7520-4951-b32a-c8eb487dac81 dc7c896a-1606-4542-9839-042647729d05">
                  <interfaceRealization xmi:id="1d71b283-6e4f-463a-a9b9-c98f827899ec" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="5c909619-7273-47aa-a33a-04947395d653" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="2ad7cfe2-7520-4951-b32a-c8eb487dac81" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="5c909619-7273-47aa-a33a-04947395d653" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="dc7c896a-1606-4542-9839-042647729d05" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="5c909619-7273-47aa-a33a-04947395d653" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6ad2ef49-e087-42c9-be90-2677293e0dcf" name="RadioButtonMenuItemIcon" visibility="private" clientDependency="016e13c1-d464-42c4-b8f2-b364eddfa09f 12a1aca7-504f-447c-a46b-a1e0bea037db 3d758d7d-625d-4a8e-97d2-a755d33c5ddf">
                  <interfaceRealization xmi:id="016e13c1-d464-42c4-b8f2-b364eddfa09f" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="6ad2ef49-e087-42c9-be90-2677293e0dcf" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="12a1aca7-504f-447c-a46b-a1e0bea037db" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="6ad2ef49-e087-42c9-be90-2677293e0dcf" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="3d758d7d-625d-4a8e-97d2-a755d33c5ddf" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="6ad2ef49-e087-42c9-be90-2677293e0dcf" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="d10e31af-1f16-4892-8173-479b7ecb4381" name="MenuItemCheckIcon" visibility="private" clientDependency="fa7c928f-8b7c-4fff-9811-64a2cea1e71d d19dd2b8-3759-4aff-a05b-a1f0d50aa313 136b6235-0456-41aa-9b40-caa406eaf83b">
                  <interfaceRealization xmi:id="d19dd2b8-3759-4aff-a05b-a1f0d50aa313" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="d10e31af-1f16-4892-8173-479b7ecb4381" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="fa7c928f-8b7c-4fff-9811-64a2cea1e71d" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="d10e31af-1f16-4892-8173-479b7ecb4381" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="136b6235-0456-41aa-9b40-caa406eaf83b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="d10e31af-1f16-4892-8173-479b7ecb4381" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="2237ddd9-d277-4fe6-ac94-1555f6b21acf" name="MenuItemArrowIcon" visibility="private" clientDependency="385cc5e3-c2a8-48f0-a24f-8838040f0499 7c61680c-9466-4370-9e07-c0ae9c7f4afc 3fcd3891-8eb9-4ee5-9ce2-77539b81286f">
                  <interfaceRealization xmi:id="7c61680c-9466-4370-9e07-c0ae9c7f4afc" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="2237ddd9-d277-4fe6-ac94-1555f6b21acf" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="3fcd3891-8eb9-4ee5-9ce2-77539b81286f" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="2237ddd9-d277-4fe6-ac94-1555f6b21acf" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="385cc5e3-c2a8-48f0-a24f-8838040f0499" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="2237ddd9-d277-4fe6-ac94-1555f6b21acf" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="2288f5f8-cf2d-45a8-9800-e205f6364cb0" name="MenuArrowIcon" visibility="private" clientDependency="4548aaa2-1cd9-4b14-8bec-5b6206fc776c 99f645ec-9faf-42cd-b43b-8cb12c0dd5ba ca888f8e-57f3-41b7-8733-b9db514ac1ce">
                  <interfaceRealization xmi:id="4548aaa2-1cd9-4b14-8bec-5b6206fc776c" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="2288f5f8-cf2d-45a8-9800-e205f6364cb0" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="99f645ec-9faf-42cd-b43b-8cb12c0dd5ba" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="2288f5f8-cf2d-45a8-9800-e205f6364cb0" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="ca888f8e-57f3-41b7-8733-b9db514ac1ce" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="2288f5f8-cf2d-45a8-9800-e205f6364cb0" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="b07677d9-84a3-40cc-8dd6-839e91b449b5" name="BasicInternalFrameUI">
                <ownedComment xmi:id="94331a24-115d-49dd-81ad-448e2681c097" body="A basic L&amp;F implementation of JInternalFrame.&#xA;&#xA;@version 1.118 05/18/04&#xA;@author David Kloba&#xA;@author Rich Schiavi&#xA;" annotatedElement="b07677d9-84a3-40cc-8dd6-839e91b449b5"/>
                <generalization xmi:id="70a17642-66f1-48ed-a2c0-33efe1650518" isSubstitutable="true" general="4de80b8a-81cb-46ec-999a-87a3b81bac4e"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="23de58d6-a847-4dcc-a92e-d923d9b5f4f8" name="InternalFramePropertyChangeListener" clientDependency="ff9fbf11-0bef-4f31-bc9a-ea62aad7a933">
                  <interfaceRealization xmi:id="ff9fbf11-0bef-4f31-bc9a-ea62aad7a933" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="23de58d6-a847-4dcc-a92e-d923d9b5f4f8" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="48b331fc-ae6a-47fc-92a1-adfac9806c63" name="InternalFrameLayout" clientDependency="9861b2ec-f667-40c5-80dd-c6e274ffde4a">
                  <interfaceRealization xmi:id="9861b2ec-f667-40c5-80dd-c6e274ffde4a" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="48b331fc-ae6a-47fc-92a1-adfac9806c63" contract="c3507179-c29c-40a9-8869-092757900e53"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="fec44175-4401-4703-9d79-91d426b4903a" name="BorderListener" visibility="protected" clientDependency="41ba2810-a93d-4245-8dda-88ac30a062af">
                  <ownedComment xmi:id="046c7657-e25c-42f4-a913-32b078489993" body="Listens for border adjustments.&#xA;" annotatedElement="fec44175-4401-4703-9d79-91d426b4903a"/>
                  <generalization xmi:id="1d2c1e01-e3b4-4386-8fe4-94219b5e457b" isSubstitutable="true" general="69130d3e-0795-4340-be55-cc2ce754646e"/>
                  <interfaceRealization xmi:id="41ba2810-a93d-4245-8dda-88ac30a062af" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="fec44175-4401-4703-9d79-91d426b4903a" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="d606b5f2-2d98-47e2-9bc7-3a58b55a5623" name="ComponentHandler" visibility="protected" clientDependency="d2510db6-d196-4bd8-846e-5077e4551675">
                  <interfaceRealization xmi:id="d2510db6-d196-4bd8-846e-5077e4551675" name="" supplier="476f85cb-73d6-493e-8dda-f7ed06712460" client="d606b5f2-2d98-47e2-9bc7-3a58b55a5623" contract="476f85cb-73d6-493e-8dda-f7ed06712460"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="0baa6bc7-0497-41fb-a17f-0020aae8c6a4" name="GlassPaneDispatcher" visibility="protected" clientDependency="759f0c6a-1ad1-49d5-aa0a-62f049dc14a1">
                  <interfaceRealization xmi:id="759f0c6a-1ad1-49d5-aa0a-62f049dc14a1" name="" supplier="361ca981-29c8-430f-b1a4-fa3e692a1955" client="0baa6bc7-0497-41fb-a17f-0020aae8c6a4" contract="361ca981-29c8-430f-b1a4-fa3e692a1955"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c686dfc9-bb6e-4a87-8d74-b1e85a5e18dc" name="BasicInternalFrameListener" visibility="protected" clientDependency="2991fdfb-b7d2-433a-badc-01c7e30450e8">
                  <interfaceRealization xmi:id="2991fdfb-b7d2-433a-badc-01c7e30450e8" name="" supplier="1e7d1b2b-1cbe-4e5f-963e-45b930b3deca" client="c686dfc9-bb6e-4a87-8d74-b1e85a5e18dc" contract="1e7d1b2b-1cbe-4e5f-963e-45b930b3deca"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e4af857f-00ff-4b0e-9009-c83505aec619" name="Handler" visibility="private" clientDependency="3378789f-0e43-4dc1-8cf2-468b6d6c04ef 9fe27c64-a4c0-43eb-90c7-260f34268091 589f583d-edd1-4b02-bdae-a8c281422f6e ba0ed290-3409-429b-a57e-13190e2e7fae 4e3336b0-7b59-488d-9e6c-ef5014d301d6 d554d381-d822-4343-868f-ba1cfdbfc007">
                  <interfaceRealization xmi:id="ba0ed290-3409-429b-a57e-13190e2e7fae" name="" supplier="476f85cb-73d6-493e-8dda-f7ed06712460" client="e4af857f-00ff-4b0e-9009-c83505aec619" contract="476f85cb-73d6-493e-8dda-f7ed06712460"/>
                  <interfaceRealization xmi:id="d554d381-d822-4343-868f-ba1cfdbfc007" name="" supplier="1e7d1b2b-1cbe-4e5f-963e-45b930b3deca" client="e4af857f-00ff-4b0e-9009-c83505aec619" contract="1e7d1b2b-1cbe-4e5f-963e-45b930b3deca"/>
                  <interfaceRealization xmi:id="9fe27c64-a4c0-43eb-90c7-260f34268091" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="e4af857f-00ff-4b0e-9009-c83505aec619" contract="c3507179-c29c-40a9-8869-092757900e53"/>
                  <interfaceRealization xmi:id="3378789f-0e43-4dc1-8cf2-468b6d6c04ef" name="" supplier="361ca981-29c8-430f-b1a4-fa3e692a1955" client="e4af857f-00ff-4b0e-9009-c83505aec619" contract="361ca981-29c8-430f-b1a4-fa3e692a1955"/>
                  <interfaceRealization xmi:id="589f583d-edd1-4b02-bdae-a8c281422f6e" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="e4af857f-00ff-4b0e-9009-c83505aec619" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                  <interfaceRealization xmi:id="4e3336b0-7b59-488d-9e6c-ef5014d301d6" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="e4af857f-00ff-4b0e-9009-c83505aec619" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="fd184e4b-ee0a-4f4f-8b18-549734fc5190" name="BasicRadioButtonUI">
                <ownedComment xmi:id="451f742e-85ad-4a57-9257-eeb39afc065a" body="RadioButtonUI implementation for BasicRadioButtonUI&#xA;&#xA;@version 1.69 12/19/03&#xA;@author Jeff Dinkins&#xA;" annotatedElement="fd184e4b-ee0a-4f4f-8b18-549734fc5190"/>
                <generalization xmi:id="5209ff98-62b5-417d-8e01-ffb990ddf845" isSubstitutable="true" general="eae58b78-886e-4dd6-8ec4-8b7e1c3572d9"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="813e831f-c07f-4ddb-bc14-959e1b6d7ff5" name="BasicFileChooserUI">
                <ownedComment xmi:id="4abfd6ca-5577-450b-8ab6-e061a7733359" body="Basic L&amp;F implementation of a FileChooser.&#xA;&#xA;@version %i% %g%&#xA;@author Jeff Dinkins&#xA;" annotatedElement="813e831f-c07f-4ddb-bc14-959e1b6d7ff5"/>
                <generalization xmi:id="8de77b7f-5ede-4026-a8fc-15d4d218f359" isSubstitutable="true" general="5c48dacc-c874-478d-9beb-e00967383408"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="33ea31fa-dba6-481f-a32a-480375a1ec73" name="DoubleClickListener" visibility="protected">
                  <generalization xmi:id="902fba56-7895-4d02-821e-f0c2b399ccb2" isSubstitutable="true" general="0db79cd4-0757-4282-b2c3-730fa54c5c55"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="4002cc71-b310-4a26-b920-87ce83b382c4" name="SelectionListener" visibility="protected" clientDependency="a0ac897b-7580-4ca2-98b6-d84b237bf34d">
                  <interfaceRealization xmi:id="a0ac897b-7580-4ca2-98b6-d84b237bf34d" name="" supplier="077ca4fe-3afb-4e22-bed0-5cc47445acf4" client="4002cc71-b310-4a26-b920-87ce83b382c4" contract="077ca4fe-3afb-4e22-bed0-5cc47445acf4"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a8be4638-99c0-4a32-92a9-480d6006d1c1" name="NewFolderAction" visibility="protected">
                  <ownedComment xmi:id="b8891180-ff47-4726-aec2-b8fe7b0152cc" body="Creates a new folder.&#xA;" annotatedElement="a8be4638-99c0-4a32-92a9-480d6006d1c1"/>
                  <generalization xmi:id="6e924c63-b8f7-4741-b023-921daa9fa9df" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1369b207-21c1-48b0-af13-02ab19c54900" name="GoHomeAction" visibility="protected">
                  <ownedComment xmi:id="54835e7d-2c81-43bd-b712-73e72c974b11" body="Acts on the &quot;home&quot; key event or equivalent event.&#xA;" annotatedElement="1369b207-21c1-48b0-af13-02ab19c54900"/>
                  <generalization xmi:id="d51acad2-c149-44cc-b4fa-3b6e4ecaa068" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="2ab85ce6-fe05-4294-8a9a-23a75c189167" name="ChangeToParentDirectoryAction" visibility="protected">
                  <generalization xmi:id="2ec54015-c4e2-4ff7-95eb-dc81f0744029" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a1e25d20-da39-4fd4-9a6a-0ca9678d6173" name="ApproveSelectionAction" visibility="protected">
                  <ownedComment xmi:id="5bf8d410-8e8a-4d65-aa36-ae0fe83e2586" body="Responds to an Open or Save request&#xA;" annotatedElement="a1e25d20-da39-4fd4-9a6a-0ca9678d6173"/>
                  <generalization xmi:id="6f01fcee-3e12-4469-b9a5-aa5a5ab4ad7f" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a4861527-bbff-44ef-b516-0874f2cfff8b" name="GlobFilter" visibility="package">
                  <generalization xmi:id="f9816a7c-6203-4254-b192-a49911c242c7" isSubstitutable="true" general="6f2ff785-2405-4e6d-8ecd-7dd923b852a0"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="3d696406-2fa6-4a35-a4ca-2a1024a8a8a7" name="CancelSelectionAction" visibility="protected">
                  <ownedComment xmi:id="a1923cbe-8048-4655-858f-f24bbbb1a5c1" body="Responds to a cancel request.&#xA;" annotatedElement="3d696406-2fa6-4a35-a4ca-2a1024a8a8a7"/>
                  <generalization xmi:id="491c9af0-daf3-48e7-90be-c4b84152f154" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="3dd8b957-5b90-414e-9234-344d98c4d1dc" name="UpdateAction" visibility="protected">
                  <ownedComment xmi:id="36636f5a-4e98-48cb-8ce0-a5bf0a875a91" body="Rescans the files in the current directory&#xA;" annotatedElement="3dd8b957-5b90-414e-9234-344d98c4d1dc"/>
                  <generalization xmi:id="00f17a42-9d37-4256-aa5b-28b1d2344292" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="35061478-5f3f-45e6-86af-58e9ef450af5" name="AcceptAllFileFilter" visibility="protected">
                  <generalization xmi:id="a3745fba-43e3-47ea-a54f-731d77ba17c1" isSubstitutable="true" general="6f2ff785-2405-4e6d-8ecd-7dd923b852a0"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="9a13c96b-797a-47d3-b962-4ac0dda3adc7" name="BasicFileView" visibility="protected">
                  <generalization xmi:id="61e567e6-f7b3-4e11-82c2-123a566a73e0" isSubstitutable="true" general="ddb804cd-7e9a-4def-b1ab-2acdcf70c97a"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="010a4fb5-d688-45d6-916a-c8c027926335" name="FileTransferHandler" visibility="package" clientDependency="bc189c1c-81b4-4eed-a58f-854470703671">
                  <ownedComment xmi:id="6ff8a387-f385-4992-97e9-bdcd2a89076e" body="Data transfer support for the file chooser.  Since files are currently presented&#xA;as a list, the list support is reused with the added flavor of DataFlavor.javaFileListFlavor&#xA;" annotatedElement="010a4fb5-d688-45d6-916a-c8c027926335"/>
                  <generalization xmi:id="9920419d-3d3b-41a6-8c66-f2f27be5d9df" isSubstitutable="true" general="74564559-a512-4c82-bfcc-29769618ec6c"/>
                  <interfaceRealization xmi:id="bc189c1c-81b4-4eed-a58f-854470703671" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="010a4fb5-d688-45d6-916a-c8c027926335" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="e2c46000-cebe-4a07-a885-38f6fb410dcc" name="FileTransferable" visibility="package">
                    <generalization xmi:id="7f1c8225-3838-4e62-9397-65d1fac72bd7" isSubstitutable="true" general="6af9ec7c-a503-4cd7-a4c3-1ce52e789003"/>
                  </nestedClassifier>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="01675840-0f55-44e6-8bd8-7ba90eedefde" name="Handler" visibility="private" clientDependency="b8ae0ce6-0f9d-4b78-b19f-2b34441c1675 74e3d28d-2221-4296-9f07-07a793e1f660">
                  <interfaceRealization xmi:id="b8ae0ce6-0f9d-4b78-b19f-2b34441c1675" name="" supplier="d2bfccf2-94c5-4882-8d84-613f4ad53195" client="01675840-0f55-44e6-8bd8-7ba90eedefde" contract="d2bfccf2-94c5-4882-8d84-613f4ad53195"/>
                  <interfaceRealization xmi:id="74e3d28d-2221-4296-9f07-07a793e1f660" name="" supplier="077ca4fe-3afb-4e22-bed0-5cc47445acf4" client="01675840-0f55-44e6-8bd8-7ba90eedefde" contract="077ca4fe-3afb-4e22-bed0-5cc47445acf4"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="231c68ec-aa06-4626-acc7-6fe0706d5054" name="BasicHTML">
                <ownedComment xmi:id="53e06c62-b2d1-4535-a436-0e7b8f07ef8c" body="Support for providing html views for the swing components.&#xA;This translates a simple html string to a javax.swing.text.View&#xA;implementation that can render the html and provide the necessary&#xA;layout semantics.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.22 07/23/04&#xA;" annotatedElement="231c68ec-aa06-4626-acc7-6fe0706d5054"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="7a981fe6-ee05-449a-8c81-3231e0b27f2b" name="BasicEditorKit" visibility="package">
                  <ownedComment xmi:id="d42aca7b-44c8-4696-acd2-3f2bbc9de543" body="The views produced for the ComponentUI implementations aren't&#xA;going to be edited and don't need full html support.  This kit&#xA;alters the HTMLEditorKit to try and trim things down a bit.&#xA;It does the following:&#xA;&lt;ul>&#xA;&lt;li>It doesn't produce Views for things like comments,&#xA;head, title, unknown tags, etc.&#xA;&lt;li>It installs a different set of css settings from the default&#xA;provided by HTMLEditorKit.&#xA;&lt;/ul>&#xA;" annotatedElement="7a981fe6-ee05-449a-8c81-3231e0b27f2b"/>
                  <generalization xmi:id="d9134fcf-7137-4c86-8674-42522b48bffa" isSubstitutable="true" general="78cf53c3-70f0-4515-963a-a9df4a0d5190"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="b94171cd-47e1-4a71-bb5f-2a17105e43cb" name="BasicHTMLViewFactory" visibility="package">
                  <ownedComment xmi:id="9c0530fb-ebc8-4614-ab38-98c384b8b902" body="BasicHTMLViewFactory extends HTMLFactory to force images to be loaded&#xA;synchronously.&#xA;" annotatedElement="b94171cd-47e1-4a71-bb5f-2a17105e43cb"/>
                  <generalization xmi:id="292c58a1-d5e4-42ab-827e-4c51a9a959bf" isSubstitutable="true" general="faf6ea46-bfcc-4e83-b4e0-b18e3f6e4c1e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c8881994-5f3a-4f53-a51e-da937603eded" name="BasicDocument" visibility="package">
                  <ownedComment xmi:id="0af5ed61-3da4-4726-a413-d0ec1b41f5eb" body="The subclass of HTMLDocument that is used as the model. getForeground&#xA;is overridden to return the foreground property from the Component this&#xA;was created for.&#xA;" annotatedElement="c8881994-5f3a-4f53-a51e-da937603eded"/>
                  <generalization xmi:id="64549baa-ca8a-48d9-85ca-2089b11cbfff" isSubstitutable="true" general="16f77695-2a09-4c30-ae96-a9818bf11e4d"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1899919c-f457-4077-ba71-df3e8366e2f2" name="Renderer" visibility="package">
                  <ownedComment xmi:id="c581d94b-4036-4473-95c3-8e9289d338e4" body="Root text view that acts as an HTML renderer.&#xA;" annotatedElement="1899919c-f457-4077-ba71-df3e8366e2f2"/>
                  <generalization xmi:id="a9addcd4-7b84-45f1-b866-61df4839658b" isSubstitutable="true" general="a12ab75d-4ae8-40c5-ac6c-848d1ef3f725"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="eaefd3b8-7d33-4fbd-889f-2f5fca71dcbe" name="BasicComboBoxUI">
                <ownedComment xmi:id="5eebda38-e458-41f0-9c95-3d49901d0640" body="Basic UI implementation for JComboBox.&#xA;&lt;p>&#xA;The combo box is a compound component which means that it is an agregate of&#xA;many simpler components. This class creates and manages the listeners&#xA;on the combo box and the combo box model. These listeners update the user&#xA;interface in response to changes in the properties and state of the combo box.&#xA;&lt;p>&#xA;All event handling is handled by listener classes created with the&#xA;&lt;code>createxxxListener()&lt;/code> methods and internal classes.&#xA;You can change the behavior of this class by overriding the&#xA;&lt;code>createxxxListener()&lt;/code> methods and supplying your own&#xA;event listeners or subclassing from the ones supplied in this class.&#xA;&lt;p>&#xA;For adding specific actions,&#xA;overide &lt;code>installKeyboardActions&lt;/code> to add actions in response to&#xA;KeyStroke bindings. See the article &lt;a href=&quot;http://java.sun.com/products/jfc/tsc/special_report/kestrel/keybindings.html&quot;>Keyboard Bindings in Swing&lt;/a>&#xA;at &lt;a href=&quot;http://java.sun.com/products/jfc/tsc&quot;>&lt;em>The Swing Connection&lt;/em>&lt;/a>.&#xA;&#xA;@version 1.170 12/19/03&#xA;@author Arnaud Weber&#xA;@author Tom Santos&#xA;@author Mark Davidson&#xA;" annotatedElement="eaefd3b8-7d33-4fbd-889f-2f5fca71dcbe"/>
                <generalization xmi:id="6b4f028d-ea85-4b14-a0f8-e2bf4a85542d" isSubstitutable="true" general="01b9ade1-e7a2-4e5a-b24c-f448898f3c54"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ebd0817b-515e-4b0e-bab0-c7f5383098a4" name="KeyHandler">
                  <ownedComment xmi:id="cfb96c9b-30b3-49dd-a2f0-6939d4b3dbf9" body="This listener checks to see if the key event isn't a navigation key.  If&#xA;it finds a key event that wasn't a navigation key it dispatches it to&#xA;JComboBox.selectWithKeyChar() so that it can do type-ahead.&#xA;&#xA;This public inner class should be treated as protected.&#xA;Instantiate it only within subclasses of&#xA;&lt;code>BasicComboBoxUI&lt;/code>.&#xA;" annotatedElement="ebd0817b-515e-4b0e-bab0-c7f5383098a4"/>
                  <generalization xmi:id="ce82c245-7b73-4f5c-adb8-a74af61fcece" isSubstitutable="true" general="4f4f75e7-42ae-4792-a8d3-efa24fbec1b6"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c21fc029-6d95-4a3a-907e-61d5accc339c" name="FocusHandler" clientDependency="153db5a8-dc67-44b9-9851-5af2f1a172b0">
                  <ownedComment xmi:id="f3a9b9c4-52af-403f-8953-345c0af0099d" body="This listener hides the popup when the focus is lost.  It also repaints&#xA;when focus is gained or lost.&#xA;&#xA;This public inner class should be treated as protected.&#xA;Instantiate it only within subclasses of&#xA;&lt;code>BasicComboBoxUI&lt;/code>.&#xA;" annotatedElement="c21fc029-6d95-4a3a-907e-61d5accc339c"/>
                  <interfaceRealization xmi:id="153db5a8-dc67-44b9-9851-5af2f1a172b0" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="c21fc029-6d95-4a3a-907e-61d5accc339c" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="bb4c7ad2-b839-4c93-b2ca-0cb23e9c2172" name="ListDataHandler" clientDependency="fc86f1dc-c490-410e-8585-81dd4aaf4ec5">
                  <ownedComment xmi:id="a7d2fa98-3c79-473d-80dc-d45ea7d99827" body="This listener watches for changes in the&#xA;&lt;code>ComboBoxModel&lt;/code>.&#xA;&lt;p>&#xA;This public inner class should be treated as protected.&#xA;Instantiate it only within subclasses of&#xA;&lt;code>BasicComboBoxUI&lt;/code>.&#xA;&#xA;@see #createListDataListener&#xA;" annotatedElement="bb4c7ad2-b839-4c93-b2ca-0cb23e9c2172"/>
                  <interfaceRealization xmi:id="fc86f1dc-c490-410e-8585-81dd4aaf4ec5" name="" supplier="bcdeadf8-6999-41e4-bdd9-4404260fdf22" client="bb4c7ad2-b839-4c93-b2ca-0cb23e9c2172" contract="bcdeadf8-6999-41e4-bdd9-4404260fdf22"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="8bb17e48-fbb5-47cf-aa3b-c7dc7320fed0" name="ItemHandler" clientDependency="b5724e0b-c62a-44d2-a9a0-9a2f1ba3fc65">
                  <ownedComment xmi:id="4e84cd17-6749-460e-b1a2-1b752028f858" body="This listener watches for changes to the selection in the&#xA;combo box.&#xA;&lt;p>&#xA;This public inner class should be treated as protected.&#xA;Instantiate it only within subclasses of&#xA;&lt;code>BasicComboBoxUI&lt;/code>.&#xA;&#xA;@see #createItemListener&#xA;" annotatedElement="8bb17e48-fbb5-47cf-aa3b-c7dc7320fed0"/>
                  <interfaceRealization xmi:id="b5724e0b-c62a-44d2-a9a0-9a2f1ba3fc65" name="" supplier="1dd642cc-ad4c-43b8-91c1-a201cb5d8292" client="8bb17e48-fbb5-47cf-aa3b-c7dc7320fed0" contract="1dd642cc-ad4c-43b8-91c1-a201cb5d8292"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="8c7ce169-21ca-4dee-9bde-459c976710d9" name="PropertyChangeHandler" clientDependency="20719f04-72dd-4e51-a511-d07f5a848996">
                  <ownedComment xmi:id="23f91a8b-9916-4d51-acf4-4ff9730b3451" body="This listener watches for bound properties that have changed in the&#xA;combo box.&#xA;&lt;p>&#xA;Subclasses which wish to listen to combo box property changes should&#xA;call the superclass methods to ensure that the combo box ui correctly&#xA;handles property changes.&#xA;&lt;p>&#xA;This public inner class should be treated as protected.&#xA;Instantiate it only within subclasses of&#xA;&lt;code>BasicComboBoxUI&lt;/code>.&#xA;&#xA;@see #createPropertyChangeListener&#xA;" annotatedElement="8c7ce169-21ca-4dee-9bde-459c976710d9"/>
                  <interfaceRealization xmi:id="20719f04-72dd-4e51-a511-d07f5a848996" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="8c7ce169-21ca-4dee-9bde-459c976710d9" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="252e831b-227d-4f97-bc49-24a7d210152f" name="ComboBoxLayoutManager" clientDependency="9b665f91-e64a-4c6a-8a81-bb4eb70af465">
                  <ownedComment xmi:id="c250899f-7182-4b4a-badd-d858bb72bc80" body="This layout manager handles the 'standard' layout of combo boxes.  It puts&#xA;the arrow button to the right and the editor to the left.  If there is no&#xA;editor it still keeps the arrow button to the right.&#xA;&#xA;This public inner class should be treated as protected.&#xA;Instantiate it only within subclasses of&#xA;&lt;code>BasicComboBoxUI&lt;/code>.&#xA;" annotatedElement="252e831b-227d-4f97-bc49-24a7d210152f"/>
                  <interfaceRealization xmi:id="9b665f91-e64a-4c6a-8a81-bb4eb70af465" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="252e831b-227d-4f97-bc49-24a7d210152f" contract="c3507179-c29c-40a9-8869-092757900e53"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="d1bc3a5e-8215-420e-92cd-5b898ef97dba" name="Actions" visibility="private"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="0e67fce7-fcb5-41a1-a5f3-e6c04f5f13b8" name="Handler" visibility="private" clientDependency="d6924340-52db-410b-b331-021f08a3522a 099426eb-390b-4750-a84a-66240aab8d60 ba214266-e9aa-479c-9806-3dafc2a2f53e 0df36fe1-65a3-44a1-bf6f-49b96e969f3c 48b03580-d2c5-43cc-be5a-6ed894284d55 8777e09d-846c-4ced-8726-63a615504ffd">
                  <interfaceRealization xmi:id="099426eb-390b-4750-a84a-66240aab8d60" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="0e67fce7-fcb5-41a1-a5f3-e6c04f5f13b8" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                  <interfaceRealization xmi:id="ba214266-e9aa-479c-9806-3dafc2a2f53e" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="0e67fce7-fcb5-41a1-a5f3-e6c04f5f13b8" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                  <interfaceRealization xmi:id="0df36fe1-65a3-44a1-bf6f-49b96e969f3c" name="" supplier="d0d97f9c-d8a0-4583-b30e-176f42c3f7e7" client="0e67fce7-fcb5-41a1-a5f3-e6c04f5f13b8" contract="d0d97f9c-d8a0-4583-b30e-176f42c3f7e7"/>
                  <interfaceRealization xmi:id="48b03580-d2c5-43cc-be5a-6ed894284d55" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="0e67fce7-fcb5-41a1-a5f3-e6c04f5f13b8" contract="c3507179-c29c-40a9-8869-092757900e53"/>
                  <interfaceRealization xmi:id="d6924340-52db-410b-b331-021f08a3522a" name="" supplier="bcdeadf8-6999-41e4-bdd9-4404260fdf22" client="0e67fce7-fcb5-41a1-a5f3-e6c04f5f13b8" contract="bcdeadf8-6999-41e4-bdd9-4404260fdf22"/>
                  <interfaceRealization xmi:id="8777e09d-846c-4ced-8726-63a615504ffd" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="0e67fce7-fcb5-41a1-a5f3-e6c04f5f13b8" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="0cf47d84-df0a-4423-a8e7-1b4c37d168b4" name="DefaultKeySelectionManager" visibility="package" clientDependency="2357c610-1333-4ae4-a9ed-c7b531ea6e2a 0c3f7560-7381-4efc-bf27-16ed32989ea1">
                  <interfaceRealization xmi:id="2357c610-1333-4ae4-a9ed-c7b531ea6e2a" name="" supplier="4a006521-db0a-495f-a224-da23f1c4721a" client="0cf47d84-df0a-4423-a8e7-1b4c37d168b4" contract="4a006521-db0a-495f-a224-da23f1c4721a"/>
                  <interfaceRealization xmi:id="0c3f7560-7381-4efc-bf27-16ed32989ea1" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="0cf47d84-df0a-4423-a8e7-1b4c37d168b4" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="55d64e34-c8d2-4314-9357-2eaef0cd1c76" name="BasicSliderUI">
                <ownedComment xmi:id="8309b99f-ebbe-4c87-9eec-e51c74d831ea" body="A Basic L&amp;F implementation of SliderUI.&#xA;&#xA;@version 1.100 12/19/03&#xA;@author Tom Santos&#xA;" annotatedElement="55d64e34-c8d2-4314-9357-2eaef0cd1c76"/>
                <generalization xmi:id="df6c0e97-b27e-4853-a2ee-a1417c34c7cc" isSubstitutable="true" general="6df8fb0d-68cf-4f85-8edc-043cc1d83d94"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="828dc8bc-6415-4595-ae6d-e30ade1a685c" name="PropertyChangeHandler" clientDependency="45cdc21d-1e3f-4654-8fed-3e72b64f25fd">
                  <interfaceRealization xmi:id="45cdc21d-1e3f-4654-8fed-3e72b64f25fd" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="828dc8bc-6415-4595-ae6d-e30ade1a685c" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1277d923-807e-4274-8137-9f49ce771ca6" name="ChangeHandler" clientDependency="250ee693-25cd-4d67-8e3b-39e33bc1db0a">
                  <ownedComment xmi:id="98e4c6d0-04a3-414e-b206-b68cccd40f41" body="Data model listener.&#xA;&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;Foo>.&#xA;" annotatedElement="1277d923-807e-4274-8137-9f49ce771ca6"/>
                  <interfaceRealization xmi:id="250ee693-25cd-4d67-8e3b-39e33bc1db0a" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="1277d923-807e-4274-8137-9f49ce771ca6" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c028f494-17f3-4760-a104-4fef1de95a75" name="TrackListener">
                  <ownedComment xmi:id="ed44867b-8115-4f12-8990-ea9d66c59564" body="Track mouse movements.&#xA;&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;Foo>.&#xA;" annotatedElement="c028f494-17f3-4760-a104-4fef1de95a75"/>
                  <generalization xmi:id="6c4ce8ba-e83a-4c1f-86d7-b80e88adf136" isSubstitutable="true" general="69130d3e-0795-4340-be55-cc2ce754646e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="19291c3d-a553-4cae-9bae-1d611ec0cc06" name="ScrollListener" clientDependency="5a19403e-3933-4745-92de-b12bb6e847fb">
                  <ownedComment xmi:id="192ef7ba-ad5e-4c84-a968-731826c1c497" body="Scroll-event listener.&#xA;&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;Foo>.&#xA;" annotatedElement="19291c3d-a553-4cae-9bae-1d611ec0cc06"/>
                  <interfaceRealization xmi:id="5a19403e-3933-4745-92de-b12bb6e847fb" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="19291c3d-a553-4cae-9bae-1d611ec0cc06" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="35119c83-5fcc-4a0c-8ea5-3e0940d2dc32" name="ComponentHandler">
                  <ownedComment xmi:id="d45d7a20-5882-4b07-b20b-c7f69595d9f9" body="Listener for resizing events.&#xA;&lt;p>&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;Foo>.&#xA;" annotatedElement="35119c83-5fcc-4a0c-8ea5-3e0940d2dc32"/>
                  <generalization xmi:id="8d0b093b-feca-4054-9dcc-db360e85c59d" isSubstitutable="true" general="8e908659-53e3-4daf-b1e1-dc64b00db367"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="8ed9cc27-ce2e-4465-8279-a12119a1c458" name="FocusHandler" clientDependency="40cad32c-d442-4b70-8816-f20705697374">
                  <ownedComment xmi:id="872d9d7f-dc54-43e9-8db3-c8b0e61a8653" body="Focus-change listener.&#xA;&lt;p>&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;Foo>.&#xA;" annotatedElement="8ed9cc27-ce2e-4465-8279-a12119a1c458"/>
                  <interfaceRealization xmi:id="40cad32c-d442-4b70-8816-f20705697374" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="8ed9cc27-ce2e-4465-8279-a12119a1c458" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="0200ad4d-a3af-41a4-b0e0-81da3bf96341" name="ActionScroller">
                  <ownedComment xmi:id="7960322c-86eb-4147-a88a-7af85ead11ad" body="As of Java 2 platform v1.3 this undocumented class is no longer used.&#xA;The recommended approach to creating bindings is to use a&#xA;combination of an &lt;code>ActionMap&lt;/code>, to contain the action,&#xA;and an &lt;code>InputMap&lt;/code> to contain the mapping from KeyStroke&#xA;to action description. The InputMap is is usually described in the&#xA;LookAndFeel tables.&#xA;&lt;p>&#xA;Please refer to the key bindings specification for further details.&#xA;&lt;p>&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;Foo>.&#xA;" annotatedElement="0200ad4d-a3af-41a4-b0e0-81da3bf96341"/>
                  <generalization xmi:id="778ce0af-4413-4399-a083-e2cb7312f0b7" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="907e728b-86bf-44c6-8fc4-4c74454ced23" name="SharedActionScroller" visibility="package">
                  <ownedComment xmi:id="e0a61fb0-1958-4ff7-8b98-c8e5d4e344ee" body="A static version of the above.&#xA;" annotatedElement="907e728b-86bf-44c6-8fc4-4c74454ced23"/>
                  <generalization xmi:id="b5123d26-1b99-4b4c-a0f8-579edd9aa813" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="d04631cb-6e7f-41cc-9797-7eb4ab71a6fa" name="Handler" visibility="private" clientDependency="428030c9-e5d1-4257-a2be-d5b28737693d 19b15cde-7907-4905-9b6d-1ed20fb4ce85 47926c49-6ee4-4392-8674-243463a08586 b8494cb3-4abe-4129-9a1f-dfab949c1f84">
                  <interfaceRealization xmi:id="47926c49-6ee4-4392-8674-243463a08586" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="d04631cb-6e7f-41cc-9797-7eb4ab71a6fa" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
                  <interfaceRealization xmi:id="428030c9-e5d1-4257-a2be-d5b28737693d" name="" supplier="476f85cb-73d6-493e-8dda-f7ed06712460" client="d04631cb-6e7f-41cc-9797-7eb4ab71a6fa" contract="476f85cb-73d6-493e-8dda-f7ed06712460"/>
                  <interfaceRealization xmi:id="b8494cb3-4abe-4129-9a1f-dfab949c1f84" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="d04631cb-6e7f-41cc-9797-7eb4ab71a6fa" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                  <interfaceRealization xmi:id="19b15cde-7907-4905-9b6d-1ed20fb4ce85" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="d04631cb-6e7f-41cc-9797-7eb4ab71a6fa" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c32ceb9f-06f7-47a9-b18b-88522e7fa0f3" name="Actions" visibility="private"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="eae58b78-886e-4dd6-8ec4-8b7e1c3572d9" name="BasicToggleButtonUI">
                <ownedComment xmi:id="56beea63-a5c9-44eb-885b-b6c65476dd7b" body="BasicToggleButton implementation&#xA;&lt;p>&#xA;&#xA;@version 1.58 12/19/03&#xA;@author Jeff Dinkins&#xA;" annotatedElement="eae58b78-886e-4dd6-8ec4-8b7e1c3572d9"/>
                <generalization xmi:id="560e9aa0-c0f5-4982-bd5b-60ed3d12ef1c" isSubstitutable="true" general="0cfb21d8-f918-4a7d-95e6-fb09f0d6f858"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="0d8e4a03-34db-4a92-89ea-38072ad3306e" name="BasicComboBoxRenderer" clientDependency="561ff7fa-95d4-4412-bed9-4e793b0a8938 8217f0b2-7d56-4b01-a100-e876fed8755d">
                <ownedComment xmi:id="ab6f7163-bbf9-4e13-bee8-2ce65aebf435" body="ComboBox renderer&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.20 12/19/03&#xA;@author Arnaud Weber&#xA;" annotatedElement="0d8e4a03-34db-4a92-89ea-38072ad3306e"/>
                <generalization xmi:id="67fe5a70-5dff-4236-8972-ee974a348e48" isSubstitutable="true" general="c9ab6369-faf9-4d4f-8a58-fa6a4a41feb0"/>
                <interfaceRealization xmi:id="8217f0b2-7d56-4b01-a100-e876fed8755d" name="" supplier="1a95f1ea-7980-4ae4-b14e-b495104a675d" client="0d8e4a03-34db-4a92-89ea-38072ad3306e" contract="1a95f1ea-7980-4ae4-b14e-b495104a675d"/>
                <interfaceRealization xmi:id="561ff7fa-95d4-4412-bed9-4e793b0a8938" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0d8e4a03-34db-4a92-89ea-38072ad3306e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6249d61c-62fc-4e65-9806-7e005c765814" name="UIResource" clientDependency="4ba7dd09-49eb-43c4-a9be-010e0129d6d2">
                  <ownedComment xmi:id="f9000e9a-386f-4980-b2bb-1d6eaceeff60" body="A subclass of BasicComboBoxRenderer that implements UIResource.&#xA;BasicComboBoxRenderer doesn't implement UIResource&#xA;directly so that applications can safely override the&#xA;cellRenderer property with BasicListCellRenderer subclasses.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="6249d61c-62fc-4e65-9806-7e005c765814"/>
                  <generalization xmi:id="f230a2bb-c766-42d3-bbcc-c0d99c82e8a9" isSubstitutable="true" general="0d8e4a03-34db-4a92-89ea-38072ad3306e"/>
                  <interfaceRealization xmi:id="4ba7dd09-49eb-43c4-a9be-010e0129d6d2" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="6249d61c-62fc-4e65-9806-7e005c765814" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="64e50b8d-755e-4c65-91e4-cc05443b70a0" name="BasicPopupMenuSeparatorUI">
                <ownedComment xmi:id="24af9d22-d03d-439e-845c-26a39026aab8" body="A Basic L&amp;F implementation of PopupMenuSeparatorUI.  This implementation&#xA;is a &quot;combined&quot; view/controller.&#xA;&#xA;@version 1.11 12/19/03&#xA;@author Jeff Shapiro&#xA;" annotatedElement="64e50b8d-755e-4c65-91e4-cc05443b70a0"/>
                <generalization xmi:id="c5427712-aa5e-4173-9dab-42675043a9af" isSubstitutable="true" general="da1903fc-5c38-4561-b2a9-cbcc9d6a6912"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4b94df5f-a9e3-466e-bcb7-7ab951d3253c" name="BasicTreeUI">
                <ownedComment xmi:id="42ec6b54-8ec6-4be9-9a65-ce6c79539f6a" body="The basic L&amp;F for a hierarchical data structure.&#xA;&lt;p>&#xA;&#xA;@version 1.172 05/27/04&#xA;@author Scott Violet&#xA;" annotatedElement="4b94df5f-a9e3-466e-bcb7-7ab951d3253c"/>
                <generalization xmi:id="7bdbd4dd-2bdd-4eb5-adfa-b395ebbc92bb" isSubstitutable="true" general="fd6be86a-b9b4-4e70-be64-5f9288521af7"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="004047da-4707-49e8-8014-2c400444ee7c" name="TreeExpansionHandler" clientDependency="a7b4de7b-f6dc-4378-8487-8df8eda914e2">
                  <ownedComment xmi:id="016c7541-e6dd-42e4-bb6c-ca3be5ba7a25" body="Updates the TreeState in response to nodes expanding/collapsing.&#xA;" annotatedElement="004047da-4707-49e8-8014-2c400444ee7c"/>
                  <interfaceRealization xmi:id="a7b4de7b-f6dc-4378-8487-8df8eda914e2" name="" supplier="ab6aa2df-5b08-47af-bc93-b63a9ca8b150" client="004047da-4707-49e8-8014-2c400444ee7c" contract="ab6aa2df-5b08-47af-bc93-b63a9ca8b150"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="81cb1a85-66aa-4118-9fe1-6a0586bc4342" name="ComponentHandler" clientDependency="400a6354-0aed-4620-9f6c-025706d86121">
                  <ownedComment xmi:id="7f49854d-c02a-404f-9675-19e6cc1518b0" body="Updates the preferred size when scrolling (if necessary).&#xA;" annotatedElement="81cb1a85-66aa-4118-9fe1-6a0586bc4342"/>
                  <generalization xmi:id="64138474-2ff4-4b12-aa8e-992591eaab4c" isSubstitutable="true" general="8e908659-53e3-4daf-b1e1-dc64b00db367"/>
                  <interfaceRealization xmi:id="400a6354-0aed-4620-9f6c-025706d86121" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="81cb1a85-66aa-4118-9fe1-6a0586bc4342" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="d5b7aad8-a103-43ba-8d97-eef039ca2f51" name="TreeModelHandler" clientDependency="f0cb4cf4-281c-4f50-9d17-b076e74f6ae5">
                  <ownedComment xmi:id="24f8e51b-7f3e-4d9f-bcee-48b2834ca251" body="Forwards all TreeModel events to the TreeState.&#xA;" annotatedElement="d5b7aad8-a103-43ba-8d97-eef039ca2f51"/>
                  <interfaceRealization xmi:id="f0cb4cf4-281c-4f50-9d17-b076e74f6ae5" name="" supplier="926679b4-597b-4f14-95c3-4956e7352241" client="d5b7aad8-a103-43ba-8d97-eef039ca2f51" contract="926679b4-597b-4f14-95c3-4956e7352241"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e1c0c61a-da21-4622-a4e4-681ee35a3227" name="TreeSelectionHandler" clientDependency="7f512607-cb1d-4a98-a6f5-9409026c5dee">
                  <ownedComment xmi:id="9ca16d8a-5607-40f2-a390-2cd7b05cb7dd" body="Listens for changes in the selection model and updates the display&#xA;accordingly.&#xA;" annotatedElement="e1c0c61a-da21-4622-a4e4-681ee35a3227"/>
                  <interfaceRealization xmi:id="7f512607-cb1d-4a98-a6f5-9409026c5dee" name="" supplier="173abbe6-9303-4b54-abf5-2c00ce8666cf" client="e1c0c61a-da21-4622-a4e4-681ee35a3227" contract="173abbe6-9303-4b54-abf5-2c00ce8666cf"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="f789444c-3457-47da-9b2f-66c57ca47ca9" name="CellEditorHandler" clientDependency="49400fd6-6b03-404e-80fd-0c1d515f98d6">
                  <ownedComment xmi:id="469cb01e-a648-41b0-8c5e-145be401ae81" body="Listener responsible for getting cell editing events and updating&#xA;the tree accordingly.&#xA;" annotatedElement="f789444c-3457-47da-9b2f-66c57ca47ca9"/>
                  <interfaceRealization xmi:id="49400fd6-6b03-404e-80fd-0c1d515f98d6" name="" supplier="e228038f-21ca-440d-a484-f2bec602ff9e" client="f789444c-3457-47da-9b2f-66c57ca47ca9" contract="e228038f-21ca-440d-a484-f2bec602ff9e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="d95fc255-2a0e-4d32-8d07-4bc633778df7" name="KeyHandler">
                  <ownedComment xmi:id="e5d78378-0924-4126-80d7-56550c0215b9" body="This is used to get mutliple key down events to appropriately generate&#xA;events.&#xA;" annotatedElement="d95fc255-2a0e-4d32-8d07-4bc633778df7"/>
                  <generalization xmi:id="73aae0c8-85e3-4de9-9f23-cded05e4cb2c" isSubstitutable="true" general="4f4f75e7-42ae-4792-a8d3-efa24fbec1b6"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="7aea9225-3ecd-4045-8c87-d60c94908ab0" name="FocusHandler" clientDependency="94fc7a11-92b8-4c46-81ca-5ed259f1c4a2">
                  <ownedComment xmi:id="b22402c4-5b55-4a9c-b053-b044476aac8d" body="Repaints the lead selection row when focus is lost/gained.&#xA;" annotatedElement="7aea9225-3ecd-4045-8c87-d60c94908ab0"/>
                  <interfaceRealization xmi:id="94fc7a11-92b8-4c46-81ca-5ed259f1c4a2" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="7aea9225-3ecd-4045-8c87-d60c94908ab0" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5ce6571f-cc87-4423-806d-7a95932d2fbf" name="NodeDimensionsHandler">
                  <ownedComment xmi:id="c1940e33-dd29-430a-b9f5-126e631b3d2c" body="Class responsible for getting size of node, method is forwarded&#xA;to BasicTreeUI method. X location does not include insets, that is&#xA;handled in getPathBounds.&#xA;" annotatedElement="5ce6571f-cc87-4423-806d-7a95932d2fbf"/>
                  <generalization xmi:id="bc4ff6f2-fe8e-4404-bc75-3e3a110f47b8" isSubstitutable="true" general="8d410720-ba18-4c13-b4f0-56905f5fbae5"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1c54c775-dc1c-465c-9c7d-0ddd5ea35bc4" name="MouseHandler" clientDependency="bc9fee81-9554-4e09-8662-972d5856cd60">
                  <ownedComment xmi:id="44c6a4f9-0ace-448f-9c6c-3bd806fbc3e3" body="TreeMouseListener is responsible for updating the selection&#xA;based on mouse events.&#xA;" annotatedElement="1c54c775-dc1c-465c-9c7d-0ddd5ea35bc4"/>
                  <generalization xmi:id="4dc0d513-5d08-4f81-877d-a9a704e3fc90" isSubstitutable="true" general="0db79cd4-0757-4282-b2c3-730fa54c5c55"/>
                  <interfaceRealization xmi:id="bc9fee81-9554-4e09-8662-972d5856cd60" name="" supplier="8747391f-bebd-47e3-888b-8e509ac223c9" client="1c54c775-dc1c-465c-9c7d-0ddd5ea35bc4" contract="8747391f-bebd-47e3-888b-8e509ac223c9"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="92cdd173-8eac-4c05-a50a-2cab07e0762a" name="PropertyChangeHandler" clientDependency="647460e4-699c-41d5-a4d7-7aef742c1c37">
                  <ownedComment xmi:id="a1a6bbfc-57a0-4ca0-b320-2d0b1ca5cce8" body="PropertyChangeListener for the tree. Updates the appropriate&#xA;varaible, or TreeState, based on what changes.&#xA;" annotatedElement="92cdd173-8eac-4c05-a50a-2cab07e0762a"/>
                  <interfaceRealization xmi:id="647460e4-699c-41d5-a4d7-7aef742c1c37" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="92cdd173-8eac-4c05-a50a-2cab07e0762a" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="bd78c4e9-975d-413b-a3db-2ef6bc1cc45a" name="SelectionModelPropertyChangeHandler" clientDependency="61a5d527-4c94-45ba-ad43-83f8c2be0255">
                  <ownedComment xmi:id="f7203825-b19c-4a2e-88ca-daf7221dcbc2" body="Listener on the TreeSelectionModel, resets the row selection if&#xA;any of the properties of the model change.&#xA;" annotatedElement="bd78c4e9-975d-413b-a3db-2ef6bc1cc45a"/>
                  <interfaceRealization xmi:id="61a5d527-4c94-45ba-ad43-83f8c2be0255" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="bd78c4e9-975d-413b-a3db-2ef6bc1cc45a" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="8130f270-bc2d-4461-b93d-eaf26b4cd117" name="TreeTraverseAction">
                  <ownedComment xmi:id="01cd0956-ddff-4f9c-80eb-ce8a8ea47b2d" body="&lt;code>TreeTraverseAction&lt;/code> is the action used for left/right keys.&#xA;Will toggle the expandedness of a node, as well as potentially&#xA;incrementing the selection.&#xA;" annotatedElement="8130f270-bc2d-4461-b93d-eaf26b4cd117"/>
                  <generalization xmi:id="e98778cc-f740-4ede-bcbb-a622c33a2d0b" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="d298b8f6-61c3-431e-ac3d-6e93598090d5" name="TreePageAction">
                  <ownedComment xmi:id="9dec0733-8029-422e-add2-4945c5552bea" body="TreePageAction handles page up and page down events.&#xA;" annotatedElement="d298b8f6-61c3-431e-ac3d-6e93598090d5"/>
                  <generalization xmi:id="62d9efe2-456f-4254-9229-de9b265db08a" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="240f9e0b-3c08-466d-ba3d-d06231bdbcbe" name="TreeIncrementAction">
                  <ownedComment xmi:id="7368ae1e-61a7-466f-a76e-8ded82d199c2" body="TreeIncrementAction is used to handle up/down actions.  Selection&#xA;is moved up or down based on direction.&#xA;" annotatedElement="240f9e0b-3c08-466d-ba3d-d06231bdbcbe"/>
                  <generalization xmi:id="5552abdb-5e67-4d13-ad57-631c368d2434" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="eb5298a8-7336-4b64-8d70-1208c63902aa" name="TreeHomeAction">
                  <ownedComment xmi:id="b821e4b6-07f0-466f-918c-16ee8d2fd557" body="TreeHomeAction is used to handle end/home actions.&#xA;Scrolls either the first or last cell to be visible based on&#xA;direction.&#xA;" annotatedElement="eb5298a8-7336-4b64-8d70-1208c63902aa"/>
                  <generalization xmi:id="cb2b270a-207c-42e4-8bee-b9bd4c81ba45" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c8826ed2-4ebe-46ae-a2a2-e925d6609061" name="TreeToggleAction">
                  <ownedComment xmi:id="87bfd00e-55af-48a9-bebc-cdb508409a16" body="For the first selected row expandedness will be toggled.&#xA;" annotatedElement="c8826ed2-4ebe-46ae-a2a2-e925d6609061"/>
                  <generalization xmi:id="d8ea725b-1a24-4562-8f85-42a1ae5be4bc" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="f18db895-0fd4-4c20-a340-750464042865" name="TreeCancelEditingAction">
                  <ownedComment xmi:id="9dbe9a3a-e302-4417-89fb-e38b2e80eb45" body="ActionListener that invokes cancelEditing when action performed.&#xA;" annotatedElement="f18db895-0fd4-4c20-a340-750464042865"/>
                  <generalization xmi:id="08138c82-9d07-45e2-a5b7-2a17b4c59c50" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="aff1d67d-b77f-47b3-9615-5f61a5c994f9" name="MouseInputHandler" clientDependency="47725e73-f703-4542-835e-e3315984c598">
                  <ownedComment xmi:id="7112f836-0ad4-4838-b1a8-6897164121b5" body="MouseInputHandler handles passing all mouse events,&#xA;including mouse motion events, until the mouse is released to&#xA;the destination it is constructed with. It is assumed all the&#xA;events are currently target at source.&#xA;" annotatedElement="aff1d67d-b77f-47b3-9615-5f61a5c994f9"/>
                  <generalization xmi:id="04e3add1-77ed-4dde-931b-d42fff735627" isSubstitutable="true" general="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
                  <interfaceRealization xmi:id="47725e73-f703-4542-835e-e3315984c598" name="" supplier="361ca981-29c8-430f-b1a4-fa3e692a1955" client="aff1d67d-b77f-47b3-9615-5f61a5c994f9" contract="361ca981-29c8-430f-b1a4-fa3e692a1955"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="7d169b40-87aa-4e16-a50d-6a85d769871c" name="TreeDragGestureRecognizer" visibility="package">
                  <ownedComment xmi:id="9d040772-3bda-45e8-8abd-6e4ec18d09c8" body="Drag gesture recognizer for JTree components&#xA;" annotatedElement="7d169b40-87aa-4e16-a50d-6a85d769871c"/>
                  <generalization xmi:id="2057692d-b8bb-4382-9179-973d66cb19a1" isSubstitutable="true" general="602f8cf7-2456-4c0f-adf7-4b948b620265"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a3a58179-033d-4577-8d8d-aa95c0cc337f" name="TreeDropTargetListener" visibility="package">
                  <ownedComment xmi:id="2775b816-2959-47a3-85c2-f7f927656555" body="A DropTargetListener to extend the default Swing handling of drop operations&#xA;by moving the tree selection to the nearest location to the mouse pointer.&#xA;Also adds autoscroll capability.&#xA;" annotatedElement="a3a58179-033d-4577-8d8d-aa95c0cc337f"/>
                  <generalization xmi:id="e2801fa7-e876-48e1-a394-96cdc3e22fc8" isSubstitutable="true" general="424a8ed1-20ee-48b8-b496-2d41d652479a"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="45117697-bfd8-4182-a43f-f9ad24cdab1f" name="TreeTransferHandler" visibility="package" clientDependency="c6af0503-5341-4eef-9c79-a6b6f5fbe77a c21e1aa7-2421-4b39-b38f-1fd357835797">
                  <generalization xmi:id="42d96b1e-a51e-4829-9676-ee7946d26e06" isSubstitutable="true" general="74564559-a512-4c82-bfcc-29769618ec6c"/>
                  <interfaceRealization xmi:id="c6af0503-5341-4eef-9c79-a6b6f5fbe77a" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="45117697-bfd8-4182-a43f-f9ad24cdab1f" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="c21e1aa7-2421-4b39-b38f-1fd357835797" name="" supplier="16208a27-5dc1-4bb6-8f33-2ff9d104bf1d" client="45117697-bfd8-4182-a43f-f9ad24cdab1f" contract="16208a27-5dc1-4bb6-8f33-2ff9d104bf1d"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="10dfdb01-9d0d-43d7-8f57-46f9d353ccf1" name="Handler" visibility="private" clientDependency="14ec4500-6c85-42eb-9f50-feb321476367 41bb35f9-4f2d-43ad-8f85-c889b86753a6 1ae5ddd4-57c1-43d1-bf3c-9c0008061927 17d540ba-77eb-4d02-b563-1a9d97e95bb9 ae7045ee-b3a4-4ffc-950f-928c6bb4bd9a 942e19ca-682e-407d-ab84-1280a7a68e86 d9bd6ec4-c9df-4eae-a14e-1519475fdb1f 0d4214e4-ba8f-4f37-b02f-72ba83daa823">
                  <interfaceRealization xmi:id="14ec4500-6c85-42eb-9f50-feb321476367" name="" supplier="e228038f-21ca-440d-a484-f2bec602ff9e" client="10dfdb01-9d0d-43d7-8f57-46f9d353ccf1" contract="e228038f-21ca-440d-a484-f2bec602ff9e"/>
                  <interfaceRealization xmi:id="1ae5ddd4-57c1-43d1-bf3c-9c0008061927" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="10dfdb01-9d0d-43d7-8f57-46f9d353ccf1" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                  <interfaceRealization xmi:id="17d540ba-77eb-4d02-b563-1a9d97e95bb9" name="" supplier="d0d97f9c-d8a0-4583-b30e-176f42c3f7e7" client="10dfdb01-9d0d-43d7-8f57-46f9d353ccf1" contract="d0d97f9c-d8a0-4583-b30e-176f42c3f7e7"/>
                  <interfaceRealization xmi:id="ae7045ee-b3a4-4ffc-950f-928c6bb4bd9a" name="" supplier="d2bfccf2-94c5-4882-8d84-613f4ad53195" client="10dfdb01-9d0d-43d7-8f57-46f9d353ccf1" contract="d2bfccf2-94c5-4882-8d84-613f4ad53195"/>
                  <interfaceRealization xmi:id="942e19ca-682e-407d-ab84-1280a7a68e86" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="10dfdb01-9d0d-43d7-8f57-46f9d353ccf1" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                  <interfaceRealization xmi:id="d9bd6ec4-c9df-4eae-a14e-1519475fdb1f" name="" supplier="ab6aa2df-5b08-47af-bc93-b63a9ca8b150" client="10dfdb01-9d0d-43d7-8f57-46f9d353ccf1" contract="ab6aa2df-5b08-47af-bc93-b63a9ca8b150"/>
                  <interfaceRealization xmi:id="41bb35f9-4f2d-43ad-8f85-c889b86753a6" name="" supplier="926679b4-597b-4f14-95c3-4956e7352241" client="10dfdb01-9d0d-43d7-8f57-46f9d353ccf1" contract="926679b4-597b-4f14-95c3-4956e7352241"/>
                  <interfaceRealization xmi:id="0d4214e4-ba8f-4f37-b02f-72ba83daa823" name="" supplier="173abbe6-9303-4b54-abf5-2c00ce8666cf" client="10dfdb01-9d0d-43d7-8f57-46f9d353ccf1" contract="173abbe6-9303-4b54-abf5-2c00ce8666cf"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="8985d43c-adbf-4c61-952a-74d2f015d9bd" name="Actions" visibility="private"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6ed37a04-178a-4ef2-a27a-13cdafe4905c" name="BasicBorders">
                <ownedComment xmi:id="eea0f1ae-568a-40fd-8f8f-478fd7679893" body="Factory object that can vend Borders appropriate for the basic L &amp; F.&#xA;@version 1.33 12/19/03&#xA;@author Georges Saab&#xA;@author Amy Fowler&#xA;" annotatedElement="6ed37a04-178a-4ef2-a27a-13cdafe4905c"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c97da018-52dd-49b3-92dd-d48f5ef7ad58" name="RolloverButtonBorder">
                  <ownedComment xmi:id="7289886e-bf00-4fee-bf90-f33805f2ca90" body="Special thin border for rollover toolbar buttons.&#xA;" annotatedElement="c97da018-52dd-49b3-92dd-d48f5ef7ad58"/>
                  <generalization xmi:id="3fe6e7df-1932-4e66-9945-7ac44aac6857" isSubstitutable="true" general="ba161620-bc6a-477c-8aff-9616576e932d"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="be9fbc4c-1793-4109-8cf9-5b61187ee55c" name="RolloverMarginBorder" visibility="package">
                  <ownedComment xmi:id="b1ebad74-05d9-489d-82fa-d551e0015249" body="A border which is like a Margin border but it will only honor the margin&#xA;if the margin has been explicitly set by the developer.&#xA;&#xA;Note: This is identical to the package private class&#xA;MetalBorders.RolloverMarginBorder and should probably be consolidated.&#xA;" annotatedElement="be9fbc4c-1793-4109-8cf9-5b61187ee55c"/>
                  <generalization xmi:id="40e79f54-de53-4d19-9d6e-6844103d4b5a" isSubstitutable="true" general="ba1d8083-a97f-4414-80bf-1b4e4b806277"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ba161620-bc6a-477c-8aff-9616576e932d" name="ButtonBorder" clientDependency="52dac37b-93b8-452f-b14e-7cf819c0ec8a">
                  <generalization xmi:id="cc177790-78bb-49a7-be63-2d5b55f07560" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                  <interfaceRealization xmi:id="52dac37b-93b8-452f-b14e-7cf819c0ec8a" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="ba161620-bc6a-477c-8aff-9616576e932d" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="84cc65e7-b6cb-4cbd-a2b4-7dbebd0b4a5d" name="ToggleButtonBorder">
                  <generalization xmi:id="5328f8c7-9a97-40bb-b16c-e2b191e3a109" isSubstitutable="true" general="ba161620-bc6a-477c-8aff-9616576e932d"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="88ff063d-635b-4661-ac55-6eab42e0e46e" name="RadioButtonBorder">
                  <generalization xmi:id="087db1f5-be0a-4656-9abd-5b63b005dab6" isSubstitutable="true" general="ba161620-bc6a-477c-8aff-9616576e932d"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="285e24b7-5c74-499c-9cd4-6bb865c94918" name="MenuBarBorder" clientDependency="4137fb73-bc14-474a-8c2f-a0d6d92bcff0">
                  <generalization xmi:id="db447ee7-9315-4184-8d59-8ad98ccec24c" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                  <interfaceRealization xmi:id="4137fb73-bc14-474a-8c2f-a0d6d92bcff0" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="285e24b7-5c74-499c-9cd4-6bb865c94918" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="af631878-6163-4786-9de7-24c7c01fa488" name="MarginBorder" clientDependency="79875388-e0e7-4da7-8c99-b01db6e8d243">
                  <generalization xmi:id="c9ab5beb-2af0-4165-914d-400783545b87" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                  <interfaceRealization xmi:id="79875388-e0e7-4da7-8c99-b01db6e8d243" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="af631878-6163-4786-9de7-24c7c01fa488" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="47ffe21f-97d7-468d-bda4-4e31618fd985" name="FieldBorder" clientDependency="95a42956-64e9-4cba-a59c-a344b25d7869">
                  <generalization xmi:id="81d54b78-cbdd-4b18-a102-38dd8e62676f" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                  <interfaceRealization xmi:id="95a42956-64e9-4cba-a59c-a344b25d7869" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="47ffe21f-97d7-468d-bda4-4e31618fd985" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="9e1a6c0b-abe4-4c01-acf2-2958f7082bf4" name="SplitPaneDividerBorder" visibility="package" clientDependency="58f4d3a8-b520-4c2c-ae8a-3ede56b12ef3 cf7b6f7c-c344-469a-b669-d6b56e45534e">
                  <ownedComment xmi:id="6c0eca0b-4726-4ec3-9c61-306dc35a56d6" body="Draws the border around the divider in a splitpane&#xA;(when BasicSplitPaneUI is used). To get the appropriate effect, this&#xA;needs to be used with a SplitPaneBorder.&#xA;" annotatedElement="9e1a6c0b-abe4-4c01-acf2-2958f7082bf4"/>
                  <interfaceRealization xmi:id="cf7b6f7c-c344-469a-b669-d6b56e45534e" name="" supplier="5cae9314-8ddc-4110-8183-02749e337ef8" client="9e1a6c0b-abe4-4c01-acf2-2958f7082bf4" contract="5cae9314-8ddc-4110-8183-02749e337ef8"/>
                  <interfaceRealization xmi:id="58f4d3a8-b520-4c2c-ae8a-3ede56b12ef3" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="9e1a6c0b-abe4-4c01-acf2-2958f7082bf4" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ba5bcc24-5ff3-466f-b55a-b9b04cc9c83a" name="SplitPaneBorder" clientDependency="a667fad5-84e8-4cfd-9838-baa18986244e b33e702b-2a5f-4086-85b9-ff444915d2c6">
                  <ownedComment xmi:id="d33089ff-8b43-4d2e-ae1f-f9af5e1fe01b" body="Draws the border around the splitpane. To work correctly you shoudl&#xA;also install a border on the divider (property SplitPaneDivider.border).&#xA;" annotatedElement="ba5bcc24-5ff3-466f-b55a-b9b04cc9c83a"/>
                  <interfaceRealization xmi:id="a667fad5-84e8-4cfd-9838-baa18986244e" name="" supplier="5cae9314-8ddc-4110-8183-02749e337ef8" client="ba5bcc24-5ff3-466f-b55a-b9b04cc9c83a" contract="5cae9314-8ddc-4110-8183-02749e337ef8"/>
                  <interfaceRealization xmi:id="b33e702b-2a5f-4086-85b9-ff444915d2c6" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="ba5bcc24-5ff3-466f-b55a-b9b04cc9c83a" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="b40f5b3c-0ff2-45dd-b2b7-9a64bf704473" name="BasicRootPaneUI" clientDependency="b0801b16-bd52-45a4-a5fd-6123ccf9c640">
                <ownedComment xmi:id="a3a5de21-571a-41f0-8df9-ecf92c171c0a" body="Basic implementation of RootPaneUI, there is one shared between all&#xA;JRootPane instances.&#xA;&#xA;@version 1.15 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="b40f5b3c-0ff2-45dd-b2b7-9a64bf704473"/>
                <generalization xmi:id="ef7d9b73-5731-4d6b-961b-aa60964dd595" isSubstitutable="true" general="bdf79edf-3407-4b65-bd77-31f9fba69d9d"/>
                <interfaceRealization xmi:id="b0801b16-bd52-45a4-a5fd-6123ccf9c640" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="b40f5b3c-0ff2-45dd-b2b7-9a64bf704473" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="441e99e7-6b36-415d-a4c2-ab3185168b49" name="RootPaneInputMap" visibility="private">
                  <generalization xmi:id="8347a438-1b36-42d9-ac25-d653d8200211" isSubstitutable="true" general="71bd1f78-baef-47f3-b2bd-c090b562439e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5a79088b-7dad-4998-8d32-03f75bc47bc8" name="Actions" visibility="package"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="40ff590a-0583-41cc-91dd-6c9739deefe2" name="BasicComboBoxEditor" clientDependency="7970dff0-2781-40e4-a3f8-c767613d160a f9cc31df-87e6-4857-a34e-6609348481fb">
                <ownedComment xmi:id="f5d69677-c8f4-47d4-9c78-e4e967cf6337" body="The default editor for editable combo boxes. The editor is implemented as a JTextField.&#xA;&#xA;@version 1.26 12/19/03&#xA;@author Arnaud Weber&#xA;@author Mark Davidson&#xA;" annotatedElement="40ff590a-0583-41cc-91dd-6c9739deefe2"/>
                <interfaceRealization xmi:id="f9cc31df-87e6-4857-a34e-6609348481fb" name="" supplier="103554e2-4cf7-4432-8d3b-ae5054ca05c4" client="40ff590a-0583-41cc-91dd-6c9739deefe2" contract="103554e2-4cf7-4432-8d3b-ae5054ca05c4"/>
                <interfaceRealization xmi:id="7970dff0-2781-40e4-a3f8-c767613d160a" name="" supplier="96291d1f-c8b1-4d93-be2c-623c9dbcb046" client="40ff590a-0583-41cc-91dd-6c9739deefe2" contract="96291d1f-c8b1-4d93-be2c-623c9dbcb046"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1c1c332b-4cf5-478f-9a47-3a2ff709216a" name="BorderlessTextField" visibility="package">
                  <generalization xmi:id="77c3846e-b584-42ed-9666-f53ae00fa86f" isSubstitutable="true" general="e8b3dc5a-f346-4fc4-b077-bbe69ee386a3"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="f317740f-2882-470a-953e-b09a42de3b93" name="UIResource" clientDependency="87c44af2-34e7-4866-80cf-804614023901">
                  <ownedComment xmi:id="2026dc87-dec0-404c-8744-3df3e4a5f6ba" body="A subclass of BasicComboBoxEditor that implements UIResource.&#xA;BasicComboBoxEditor doesn't implement UIResource&#xA;directly so that applications can safely override the&#xA;cellRenderer property with BasicListCellRenderer subclasses.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="f317740f-2882-470a-953e-b09a42de3b93"/>
                  <generalization xmi:id="1f64c1a3-81da-484e-b47b-3fa9d1e92f86" isSubstitutable="true" general="40ff590a-0583-41cc-91dd-6c9739deefe2"/>
                  <interfaceRealization xmi:id="87c44af2-34e7-4866-80cf-804614023901" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="f317740f-2882-470a-953e-b09a42de3b93" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="9d863b44-2b7a-4b4b-b4c5-98b9def4181f" name="BasicTableHeaderUI">
                <ownedComment xmi:id="7d71a29c-6f19-44fe-b4a8-3e6620abdaca" body="BasicTableHeaderUI implementation&#xA;&#xA;@version 1.63 12/19/03&#xA;@author Alan Chung&#xA;@author Philip Milne&#xA;" annotatedElement="9d863b44-2b7a-4b4b-b4c5-98b9def4181f"/>
                <generalization xmi:id="8d6459f9-9014-4d21-8073-3a007df4651b" isSubstitutable="true" general="314015f1-69fe-46d6-9f23-cdb0596c80ef"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="cb6d4aaf-fc8d-4748-99fb-d87cce25a575" name="MouseInputHandler" clientDependency="4cb7334d-333d-4ec1-b0dd-96a48f603a21">
                  <ownedComment xmi:id="747606cb-72c6-471b-93c8-7fdf8ec6791d" body="This inner class is marked &quot;public&quot; due to a compiler bug.&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of BasicTableUI.&#xA;" annotatedElement="cb6d4aaf-fc8d-4748-99fb-d87cce25a575"/>
                  <interfaceRealization xmi:id="4cb7334d-333d-4ec1-b0dd-96a48f603a21" name="" supplier="361ca981-29c8-430f-b1a4-fa3e692a1955" client="cb6d4aaf-fc8d-4748-99fb-d87cce25a575" contract="361ca981-29c8-430f-b1a4-fa3e692a1955"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="a53d87f5-c319-438a-af65-5c48b43ba961" name="BasicCheckBoxUI">
                <ownedComment xmi:id="24cb83e1-6389-4ec8-8091-9fbb697fa875" body="CheckboxUI implementation for BasicCheckboxUI&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.37 12/19/03&#xA;@author Jeff Dinkins&#xA;" annotatedElement="a53d87f5-c319-438a-af65-5c48b43ba961"/>
                <generalization xmi:id="d9025894-d075-4de9-b509-ec14ede0d6ad" isSubstitutable="true" general="fd184e4b-ee0a-4f4f-8b18-549734fc5190"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="257a74db-1c51-467f-a2f8-387635466189" name="BasicRadioButtonMenuItemUI">
                <ownedComment xmi:id="e1584125-de27-4cf7-aafc-3ab86a778b14" body="BasicRadioButtonMenuItem implementation&#xA;&#xA;@version 1.45 12/19/03&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;" annotatedElement="257a74db-1c51-467f-a2f8-387635466189"/>
                <generalization xmi:id="ea834f97-17ad-44b1-85ff-c6cd2f86cae4" isSubstitutable="true" general="b720308d-6638-4771-a9c2-a324cb24131f"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a55d53a0-4608-4efa-b95c-9d8cc41a353c" name="MenuBarUI" isAbstract="true">
              <ownedComment xmi:id="d19d5da6-6bb6-467c-bb4d-8a9d6337a35c" body="Pluggable look and feel interface for JMenuBar.&#xA;&#xA;@version 1.15 12/19/03&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;" annotatedElement="a55d53a0-4608-4efa-b95c-9d8cc41a353c"/>
              <generalization xmi:id="7334abb1-8dfd-4793-a4ed-49333e3d6063" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5c48dacc-c874-478d-9beb-e00967383408" name="FileChooserUI" isAbstract="true">
              <ownedComment xmi:id="f5cc6a99-3586-4c45-9238-65754b45f2e5" body="Pluggable look and feel interface for &lt;code>JFileChooser&lt;/code>.&#xA;&#xA;@version 1.19 12/19/03&#xA;@author Jeff Dinkins&#xA;" annotatedElement="5c48dacc-c874-478d-9beb-e00967383408"/>
              <generalization xmi:id="88d43599-3da9-433e-875d-abf83ee4ffef" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e86bfcae-6af7-459f-9e7b-b1bde0a3528a" name="SpinnerUI" isAbstract="true">
              <ownedComment xmi:id="4b7196a2-1dfa-4be7-b302-91d6725b210b" body="Pluggable look and feel interface for JSpinner&#xA;&#xA;@version 1.5 12/19/03&#xA;@author Hans Muller&#xA;@since 1.4&#xA;" annotatedElement="e86bfcae-6af7-459f-9e7b-b1bde0a3528a"/>
              <generalization xmi:id="3fc912bc-b5df-4646-81bc-5a193d8fa245" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="003dadb2-cab7-4cb1-a294-627cbefa8e20" name="ToolTipUI" isAbstract="true">
              <ownedComment xmi:id="cf518d78-b357-4645-9d3b-16e4b9518a49" body="Pluggable look and feel interface for JToolTip.&#xA;&#xA;@version 1.12 12/19/03&#xA;@author Dave Moore&#xA;" annotatedElement="003dadb2-cab7-4cb1-a294-627cbefa8e20"/>
              <generalization xmi:id="8d14ab32-85a5-4f5e-85bb-48061facd88b" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9a64d3c2-d2f6-4573-9d95-cf9f3ff86af5" name="OptionPaneUI" isAbstract="true">
              <ownedComment xmi:id="35b835cd-1eba-4d99-b7b4-203c569e0a25" body="Pluggable look and feel interface for JOptionPane.&#xA;&#xA;@version 1.12 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="9a64d3c2-d2f6-4573-9d95-cf9f3ff86af5"/>
              <generalization xmi:id="697d1e1f-7156-4dce-8e4e-7e4185f66e61" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="80ce906e-c485-4502-963b-6b02d46ebbc1" name="ScrollPaneUI" isAbstract="true">
              <ownedComment xmi:id="1aeec6bd-df60-47ac-9b71-7aff7c225900" body="Pluggable look and feel interface for JScrollPane.&#xA;&#xA;@version 1.17 12/19/03&#xA;@author Hans Muller&#xA;" annotatedElement="80ce906e-c485-4502-963b-6b02d46ebbc1"/>
              <generalization xmi:id="7b89865b-7e0a-42c3-ba9f-38827b096e6d" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="71bd1f78-baef-47f3-b2bd-c090b562439e" name="ComponentInputMapUIResource" clientDependency="c0483caa-a9ad-43f6-a897-93dccefe434d">
              <ownedComment xmi:id="1da6b03e-5e72-4c95-8e28-934c3157dbb9" body="A subclass of javax.swing.ComponentInputMap that implements UIResource.&#xA;UI classes which provide a ComponentInputMap should use this class.&#xA;&#xA;@version 1.6 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="71bd1f78-baef-47f3-b2bd-c090b562439e"/>
              <generalization xmi:id="c693634b-85a8-4ccf-aeef-301617c8afb8" isSubstitutable="true" general="49e616a3-ae12-450b-a151-207e17c439c2"/>
              <interfaceRealization xmi:id="c0483caa-a9ad-43f6-a897-93dccefe434d" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="71bd1f78-baef-47f3-b2bd-c090b562439e" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5fe00c40-33b1-4e8b-b7e9-a5767271fbc7" name="BorderUIResource" clientDependency="41f1de4b-a1f3-42ff-9178-ddacb81af92f dc1b2c5c-984e-4677-acbd-86854b2ba019 94b24afd-9058-4089-883b-a01c154342eb">
              <interfaceRealization xmi:id="41f1de4b-a1f3-42ff-9178-ddacb81af92f" name="" supplier="5cae9314-8ddc-4110-8183-02749e337ef8" client="5fe00c40-33b1-4e8b-b7e9-a5767271fbc7" contract="5cae9314-8ddc-4110-8183-02749e337ef8"/>
              <interfaceRealization xmi:id="dc1b2c5c-984e-4677-acbd-86854b2ba019" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="5fe00c40-33b1-4e8b-b7e9-a5767271fbc7" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
              <interfaceRealization xmi:id="94b24afd-9058-4089-883b-a01c154342eb" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="5fe00c40-33b1-4e8b-b7e9-a5767271fbc7" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="7cd6c6d4-46d3-4174-ae40-c54ae9b72e6e" name="CompoundBorderUIResource" clientDependency="e75f00ec-5be5-4204-9d36-3e9209085377">
                <generalization xmi:id="f3697b8a-c693-451a-a662-1bb0e63a6d31" isSubstitutable="true" general="d42f7e02-d576-42bd-80f4-467b0673d9b3"/>
                <interfaceRealization xmi:id="e75f00ec-5be5-4204-9d36-3e9209085377" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="7cd6c6d4-46d3-4174-ae40-c54ae9b72e6e" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="b7700e79-4f8f-4a54-ac9f-5ebecb7acb83" name="EmptyBorderUIResource" clientDependency="086e7202-5294-4234-b36b-5daff1661f4f">
                <generalization xmi:id="b32360cd-5158-4caa-8b1e-6917e9465ff3" isSubstitutable="true" general="ba1d8083-a97f-4414-80bf-1b4e4b806277"/>
                <interfaceRealization xmi:id="086e7202-5294-4234-b36b-5daff1661f4f" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="b7700e79-4f8f-4a54-ac9f-5ebecb7acb83" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="91acbd53-2331-4411-932d-5f229893935b" name="LineBorderUIResource" clientDependency="5d1a5103-20a4-439e-92a8-223f96e27946">
                <generalization xmi:id="48035a49-14f3-4b60-bba9-de969b80eef5" isSubstitutable="true" general="05de9e87-5ebf-43fd-8c26-85ddcb139ab6"/>
                <interfaceRealization xmi:id="5d1a5103-20a4-439e-92a8-223f96e27946" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="91acbd53-2331-4411-932d-5f229893935b" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="43c4efd6-b37e-4232-82aa-81695643156d" name="BevelBorderUIResource" clientDependency="d0e3afd0-648b-4ce6-8661-72d2037c3a67">
                <generalization xmi:id="f280b271-4e11-40d0-8227-831356d15698" isSubstitutable="true" general="0f617e9c-5a95-4f26-b557-cbdbd7cc98c2"/>
                <interfaceRealization xmi:id="d0e3afd0-648b-4ce6-8661-72d2037c3a67" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="43c4efd6-b37e-4232-82aa-81695643156d" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="8f88e707-3644-41a9-af37-2ed442551853" name="EtchedBorderUIResource" clientDependency="eaa89883-aa83-4868-a10b-a2113c3750df">
                <generalization xmi:id="ba1facfd-8d40-48d6-b7ad-5ab5ab96251c" isSubstitutable="true" general="a58674eb-dba4-425f-9845-128b99228447"/>
                <interfaceRealization xmi:id="eaa89883-aa83-4868-a10b-a2113c3750df" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="8f88e707-3644-41a9-af37-2ed442551853" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="ea2e9ad7-7653-4141-8410-1b9ebad5f317" name="MatteBorderUIResource" clientDependency="d4e4603e-48d7-4667-ae73-7c13adffc94a">
                <generalization xmi:id="f1657db0-8a02-46aa-b4bd-61b31b2c3f56" isSubstitutable="true" general="b5cc2773-d96e-42f9-b281-64db08986958"/>
                <interfaceRealization xmi:id="d4e4603e-48d7-4667-ae73-7c13adffc94a" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="ea2e9ad7-7653-4141-8410-1b9ebad5f317" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="884ef8ef-132b-4cd4-971a-365203b8e1b4" name="TitledBorderUIResource" clientDependency="0e2ce809-b640-491c-892d-3d8833400733">
                <generalization xmi:id="c0b5529a-ad45-4f00-b175-0c6e463ba77e" isSubstitutable="true" general="51ccc5da-5363-4eaa-b342-50df34ce0bcf"/>
                <interfaceRealization xmi:id="0e2ce809-b640-491c-892d-3d8833400733" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="884ef8ef-132b-4cd4-971a-365203b8e1b4" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0eebb1f7-e719-4743-a6fe-f20170d56229" name="ListUI" isAbstract="true">
              <ownedComment xmi:id="5d441d5f-0955-4609-b482-d58c2f0f011a" body="The JList pluggable look and feel delegate.  This interface adds&#xA;methods that allow the JList component to map locations, e.g. mouse&#xA;coordinates, to list cells and from cell indices to the bounds of&#xA;the cell.&#xA;&#xA;@version 1.12 12/19/03&#xA;@author Hans Muller&#xA;" annotatedElement="0eebb1f7-e719-4743-a6fe-f20170d56229"/>
              <generalization xmi:id="2999761c-8c5a-43c5-be6d-690b914d61db" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c85ac2f3-62f4-40f2-9ef5-b00225fdace6" name="ProgressBarUI" isAbstract="true">
              <ownedComment xmi:id="092f66e3-56b7-454c-859b-61c6cdfbe962" body="Pluggable look and feel interface for JProgressBar.&#xA;&#xA;@version 1.13 12/19/03&#xA;@author Rob Davis&#xA;" annotatedElement="c85ac2f3-62f4-40f2-9ef5-b00225fdace6"/>
              <generalization xmi:id="262508df-7ac4-409c-a188-3663dbc5c096" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="41c8caca-9409-4580-93a2-dae51b1e6d8c" name="DesktopIconUI" isAbstract="true">
              <ownedComment xmi:id="bbf154c9-0055-4968-887f-410a1950d16b" body="Pluggable look and feel interface for JDesktopIcon.&#xA;&#xA;@version 1.11 12/19/03&#xA;@author David Kloba&#xA;" annotatedElement="41c8caca-9409-4580-93a2-dae51b1e6d8c"/>
              <generalization xmi:id="d407ab7b-dd84-4e2f-9718-4dd12babcf95" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="d4e11eef-8153-4a0b-b421-945579f0be78" name="synth">
              <packagedElement xmi:type="uml:Class" xmi:id="d60de917-c3f8-49d5-a943-57b0da8ea80f" name="SynthSeparatorUI" visibility="package" clientDependency="3a61d99e-782e-4ab7-bb4a-e5255fffd06a">
                <ownedComment xmi:id="457fd730-ce1c-4e8d-9dff-d811d470ab05" body="A Synth L&amp;F implementation of SeparatorUI.  This implementation&#xA;is a &quot;combined&quot; view/controller.&#xA;&#xA;@version 1.14 12/19/03&#xA;@author Shannon Hickey&#xA;@author Joshua Outwater&#xA;" annotatedElement="d60de917-c3f8-49d5-a943-57b0da8ea80f"/>
                <generalization xmi:id="24e29e0a-1565-4f3b-bfa2-a1698aa8b168" isSubstitutable="true" general="63991190-1e8c-47b0-8acc-38ac2fcbc070"/>
                <interfaceRealization xmi:id="3a61d99e-782e-4ab7-bb4a-e5255fffd06a" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="d60de917-c3f8-49d5-a943-57b0da8ea80f" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="df203207-ae97-41cf-af07-2cecf5f6ffc9" name="SynthColorChooserUI" visibility="package" clientDependency="3c485e56-b930-441e-b48f-a07be52ef075">
                <ownedComment xmi:id="34b71c3a-1315-4d4b-a815-981b45e74eec" body="Synth's ColorChooserUI.&#xA;&#xA;@version 1.11, 12/19/03&#xA;@author Tom Santos&#xA;@author Steve Wilson&#xA;" annotatedElement="df203207-ae97-41cf-af07-2cecf5f6ffc9"/>
                <generalization xmi:id="2071fd25-7777-4e55-a05e-80566b7c4a6e" isSubstitutable="true" general="c4500e93-4fd5-47dd-8fb9-79f69c6be9a7"/>
                <interfaceRealization xmi:id="3c485e56-b930-441e-b48f-a07be52ef075" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="df203207-ae97-41cf-af07-2cecf5f6ffc9" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="cda62f84-aa12-4f2e-9c0a-b817cadb6b8f" name="SynthPasswordFieldUI" visibility="package">
                <ownedComment xmi:id="4671ba14-500b-4fb3-ab85-0630348a2b9d" body="Provides the Synth look and feel for a password field.&#xA;The only difference from the standard text field is that&#xA;the view of the text is simply a string of the echo&#xA;character as specified in JPasswordField, rather than the&#xA;real text contained in the field.&#xA;&#xA;@author  Shannon Hickey&#xA;@version 1.7 03/19/04&#xA;" annotatedElement="cda62f84-aa12-4f2e-9c0a-b817cadb6b8f"/>
                <generalization xmi:id="b1f90ed0-b1aa-4c87-a9d0-e8b603a41aca" isSubstitutable="true" general="6281b3b0-219e-438a-8dfb-055692a28953"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="29a852bf-91bf-4269-a3c5-84f1ccfafc47" name="ImagePainter" visibility="package">
                <ownedComment xmi:id="19b0269b-1ae5-47db-9b74-ebf2086782e1" body="ImagePainter fills in the specified region using an Image. The Image&#xA;is split into 9 segments: north, north east, east, south east, south,&#xA;south west, west, north west and the center. The corners are defined&#xA;by way of an insets, and the remaining regions are either tiled or&#xA;scaled to fit.&#xA;&#xA;@version 1.8, 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="29a852bf-91bf-4269-a3c5-84f1ccfafc47"/>
                <generalization xmi:id="893a4267-371d-47fe-ba43-548810786e0e" isSubstitutable="true" general="6bef832b-457c-41d8-961b-34aa05f5eec0"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6b4a9785-25db-4f5c-9ebf-26a19054e6b5" name="SynthScrollPaneUI" visibility="package" clientDependency="59e32455-28dd-4b16-87ab-dad568162f49">
                <ownedComment xmi:id="29ef59f9-669b-4f4a-b8f5-b91cd63407bd" body="Synth's ScrollPaneUI.&#xA;&#xA;@version 1.12, 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="6b4a9785-25db-4f5c-9ebf-26a19054e6b5"/>
                <generalization xmi:id="4a82d7a2-0a01-4395-b9af-960965c2c6a3" isSubstitutable="true" general="f17d9947-808a-4ef4-ae5f-c6b4ab225088"/>
                <interfaceRealization xmi:id="59e32455-28dd-4b16-87ab-dad568162f49" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="6b4a9785-25db-4f5c-9ebf-26a19054e6b5" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5dd737fa-bbf6-48ce-9cc4-e6bf4fe77787" name="ViewportBorder" visibility="private" clientDependency="99d612a5-ae05-4798-bf74-1c2cbd05ee19">
                  <generalization xmi:id="1bf163f1-e366-4171-b99d-46f8d42182f0" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                  <interfaceRealization xmi:id="99d612a5-ae05-4798-bf74-1c2cbd05ee19" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="5dd737fa-bbf6-48ce-9cc4-e6bf4fe77787" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="09ed1261-1c79-4dce-b580-09bfb60ef5b7" name="SynthDesktopIconUI" visibility="package" clientDependency="aeeb8f30-854d-4a4f-af6b-d5acb240dd07 9a4fb5ed-dd5d-4c87-a8d9-18ccfe9454e3">
                <ownedComment xmi:id="df25111f-5f27-448d-8a31-51ed7ac89792" body="Synth L&amp;F for a minimized window on a desktop.&#xA;&#xA;@version 1.13, 12/19/03&#xA;@author Joshua Outwater&#xA;" annotatedElement="09ed1261-1c79-4dce-b580-09bfb60ef5b7"/>
                <generalization xmi:id="5c669c7c-6411-44ac-9ac4-bfb9ec0ba0ef" isSubstitutable="true" general="e0d14b0e-c37c-46a0-a23a-6790de5717ee"/>
                <interfaceRealization xmi:id="aeeb8f30-854d-4a4f-af6b-d5acb240dd07" name="" supplier="881e1f63-ea05-4933-82ba-17d8d70f9be1" client="09ed1261-1c79-4dce-b580-09bfb60ef5b7" contract="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
                <interfaceRealization xmi:id="9a4fb5ed-dd5d-4c87-a8d9-18ccfe9454e3" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="09ed1261-1c79-4dce-b580-09bfb60ef5b7" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="e9cfa475-6500-4fc6-a2c3-a46d7cd6872b" name="DefaultSynthStyleFactory" visibility="package">
                <ownedComment xmi:id="68564049-ece2-452c-9e95-55f8d38e7712" body="Factory used for obtaining styles. Supports associating a style based on&#xA;the name of the component as returned by &lt;code>Component.getName()&lt;/code>,&#xA;and the &lt;code>Region&lt;/code> associated with the &lt;code>JComponent&lt;/code>.&#xA;Lookup is done using regular expressions.&#xA;&#xA;@version 1.6, 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="e9cfa475-6500-4fc6-a2c3-a46d7cd6872b"/>
                <generalization xmi:id="9f316966-427c-44a5-815e-8790f109a8ea" isSubstitutable="true" general="ac6149e9-0ba2-4902-a24b-91d2fa7ed0ab"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="9bb36407-fc71-404e-a8eb-a8d9d5e0a9b6" name="SynthSpinnerUI" visibility="package" clientDependency="1f6608d3-69c4-4bef-91bd-da1dd36406c5">
                <ownedComment xmi:id="6a95283b-2544-48af-a501-cd4deae952bf" body="Synth's SpinnerUI.&#xA;&#xA;@version 1.11, 12/19/03&#xA;@author Hans Muller&#xA;@author Joshua Outwater&#xA;" annotatedElement="9bb36407-fc71-404e-a8eb-a8d9d5e0a9b6"/>
                <generalization xmi:id="1374c650-edd7-4c97-80b0-a019a9160032" isSubstitutable="true" general="88ffccc0-e752-42aa-b44f-d923d12dffc8"/>
                <interfaceRealization xmi:id="1f6608d3-69c4-4bef-91bd-da1dd36406c5" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="9bb36407-fc71-404e-a8eb-a8d9d5e0a9b6" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="7bffad42-8052-404d-95d7-08708e253302" name="SpinnerLayout" visibility="private" clientDependency="d2c1c9bb-55a3-437f-8cec-04ab4f1d563a 17661149-83a4-4f2b-9194-246931b5bb93">
                  <ownedComment xmi:id="9eb9328c-2440-493c-9900-d278daad8fd2" body="A simple layout manager for the editor and the next/previous buttons.&#xA;See the SynthSpinnerUI javadoc for more information about exactly&#xA;how the components are arranged.&#xA;" annotatedElement="7bffad42-8052-404d-95d7-08708e253302"/>
                  <interfaceRealization xmi:id="d2c1c9bb-55a3-437f-8cec-04ab4f1d563a" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="7bffad42-8052-404d-95d7-08708e253302" contract="c3507179-c29c-40a9-8869-092757900e53"/>
                  <interfaceRealization xmi:id="17661149-83a4-4f2b-9194-246931b5bb93" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="7bffad42-8052-404d-95d7-08708e253302" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="06795486-3298-4ded-a168-220a91c7bd0e" name="SynthInternalFrameTitlePane" visibility="package" clientDependency="b5cdd6a2-10de-4531-bc1c-bfceac70f425">
                <ownedComment xmi:id="da18b4a0-b19c-4195-87df-215708363e0b" body="The class that manages a synth title bar&#xA;&#xA;@version 1.21 04/16/04&#xA;@author David Kloba&#xA;@author Joshua Outwater&#xA;@author Steve Wilson&#xA;" annotatedElement="06795486-3298-4ded-a168-220a91c7bd0e"/>
                <generalization xmi:id="4c50200b-3587-44dc-8a28-9dbc9cfd396f" isSubstitutable="true" general="d974ab89-5bca-46e6-9497-fa32549eecb0"/>
                <interfaceRealization xmi:id="b5cdd6a2-10de-4531-bc1c-bfceac70f425" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="06795486-3298-4ded-a168-220a91c7bd0e" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="00dbf119-7491-47a1-848f-2b721e3e7038" name="JPopupMenuUIResource" visibility="private" clientDependency="0af99630-9746-40f0-ae35-6f2230bfcd5e">
                  <generalization xmi:id="0efa63a4-cc9c-4169-9072-9d950877cf56" isSubstitutable="true" general="2cdf053a-2c3e-468c-b5e1-90d9541d3a65"/>
                  <interfaceRealization xmi:id="0af99630-9746-40f0-ae35-6f2230bfcd5e" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="00dbf119-7491-47a1-848f-2b721e3e7038" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="9a463e58-eef4-450d-84ca-225e51e90ff1" name="SynthTitlePaneLayout" visibility="package" clientDependency="9ac084a1-d679-41cc-8a35-2f0b380c60ed">
                  <interfaceRealization xmi:id="9ac084a1-d679-41cc-8a35-2f0b380c60ed" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="9a463e58-eef4-450d-84ca-225e51e90ff1" contract="c3507179-c29c-40a9-8869-092757900e53"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="37aaf4c2-1e1b-4351-bf23-f852836e6374" name="SynthTableHeaderUI" visibility="package" clientDependency="f9c811fb-c108-44d8-b78e-428798176850">
                <ownedComment xmi:id="efa87824-9a50-4b1c-a1e5-0a894456272c" body="SynthTableHeaderUI implementation&#xA;&#xA;@version 1.14, 12/19/03&#xA;@author Alan Chung&#xA;@author Philip Milne&#xA;" annotatedElement="37aaf4c2-1e1b-4351-bf23-f852836e6374"/>
                <generalization xmi:id="ae77cb5f-d6e9-48cd-a062-87f63208c6b8" isSubstitutable="true" general="9d863b44-2b7a-4b4b-b4c5-98b9def4181f"/>
                <interfaceRealization xmi:id="f9c811fb-c108-44d8-b78e-428798176850" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="37aaf4c2-1e1b-4351-bf23-f852836e6374" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="7d9ccc4b-0b85-4507-aef9-9d7f219be804" name="HeaderRenderer" visibility="private" clientDependency="a99f2095-7c9f-4cbe-9910-3da7568aa14d">
                  <generalization xmi:id="36ba7513-e9be-4997-a42a-c14400f2e255" isSubstitutable="true" general="b5b4054c-1a18-45b2-9a45-50414a92e4ea"/>
                  <interfaceRealization xmi:id="a99f2095-7c9f-4cbe-9910-3da7568aa14d" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="7d9ccc4b-0b85-4507-aef9-9d7f219be804" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="372b4f43-7903-472d-a93f-e2a49249911a" name="SynthSliderUI" visibility="package" clientDependency="6abc662d-de92-4f57-938a-f38ba3a726d0">
                <ownedComment xmi:id="1cb84873-6108-490a-97c1-93d19604fa49" body="Synth's SliderUI.&#xA;&#xA;@version 1.21, 12/19/03&#xA;@author Joshua Outwater&#xA;" annotatedElement="372b4f43-7903-472d-a93f-e2a49249911a"/>
                <generalization xmi:id="a088b4b6-96be-4d33-b173-d712955b68b3" isSubstitutable="true" general="55d64e34-c8d2-4314-9357-2eaef0cd1c76"/>
                <interfaceRealization xmi:id="6abc662d-de92-4f57-938a-f38ba3a726d0" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="372b4f43-7903-472d-a93f-e2a49249911a" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5a9e4eda-aa14-4b08-a3ff-ab1466ffd706" name="SynthTrackListener" visibility="protected">
                  <ownedComment xmi:id="da5be6ea-b279-48f2-a430-02bfce937d12" body="Track mouse movements.&#xA;" annotatedElement="5a9e4eda-aa14-4b08-a3ff-ab1466ffd706"/>
                  <generalization xmi:id="849b5f4c-dc74-4024-b91d-c5bb77270c55" isSubstitutable="true" general="c028f494-17f3-4760-a104-4fef1de95a75"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="204d9bfb-bba0-4471-b675-ce9187aa5fe9" name="SynthBorder" visibility="package" clientDependency="8fac5809-f8d7-49a4-b1dc-9a40ef31ef10">
                <ownedComment xmi:id="4491c5ec-2d02-4162-a27e-2a68d9c2ccc3" body="SynthBorder is a border that delegates to a Painter. The Insets&#xA;are determined at construction time.&#xA;&#xA;@version 1.12, 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="204d9bfb-bba0-4471-b675-ce9187aa5fe9"/>
                <generalization xmi:id="e99fca93-9892-4324-9741-0a65c62a910a" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                <interfaceRealization xmi:id="8fac5809-f8d7-49a4-b1dc-9a40ef31ef10" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="204d9bfb-bba0-4471-b675-ce9187aa5fe9" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="411feffb-b1e8-4e51-bb99-2597432fa280" name="SynthGraphicsUtils">
                <ownedComment xmi:id="8cf94a09-3d64-47d2-a2da-de4ee0c2fa5f" body="Wrapper for primitive graphics calls.&#xA;&#xA;@version 1.16, 12/19/03&#xA;@since 1.5&#xA;@author Scott Violet&#xA;" annotatedElement="411feffb-b1e8-4e51-bb99-2597432fa280"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="72198f79-3eb9-4d80-bc03-f3f1ff49ec8b" name="SynthIconWrapper" visibility="private" clientDependency="902b9822-7962-472d-995d-1a185cf73053">
                  <ownedComment xmi:id="e1568725-c937-47fa-9935-537ac4d2dc47" body="Wraps a SynthIcon around the Icon interface, forwarding calls to&#xA;the SynthIcon with a given SynthContext.&#xA;" annotatedElement="72198f79-3eb9-4d80-bc03-f3f1ff49ec8b"/>
                  <interfaceRealization xmi:id="902b9822-7962-472d-995d-1a185cf73053" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="72198f79-3eb9-4d80-bc03-f3f1ff49ec8b" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4463dc7e-d0bb-47a0-97c1-4cb513f83bbe" name="SynthTableUI" visibility="package" clientDependency="22b6aedf-f2a4-4b81-9163-10f78e8690bd">
                <ownedComment xmi:id="84e95628-5afa-4c9e-b85f-2d2d72f09e91" body="SynthTableUI implementation&#xA;&#xA;@version 1.17, 07/23/04&#xA;@author Philip Milne&#xA;" annotatedElement="4463dc7e-d0bb-47a0-97c1-4cb513f83bbe"/>
                <generalization xmi:id="a78a8783-6a00-4648-9566-514baacb2f5b" isSubstitutable="true" general="30d39fed-063e-4e0c-a8f7-983e168df979"/>
                <interfaceRealization xmi:id="22b6aedf-f2a4-4b81-9163-10f78e8690bd" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="4463dc7e-d0bb-47a0-97c1-4cb513f83bbe" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="f248fed2-9a75-40ee-9a3c-85034f6f04f9" name="SynthBooleanTableCellRenderer" visibility="private" clientDependency="d39b88be-3f74-4b3d-93b9-036a0fb989a5">
                  <generalization xmi:id="4499f37e-196a-4f2b-8cd6-7bdd88d4c153" isSubstitutable="true" general="2f41a22f-9c7b-4953-83d7-06951a32cde7"/>
                  <interfaceRealization xmi:id="d39b88be-3f74-4b3d-93b9-036a0fb989a5" name="" supplier="d4cf2dd7-d632-412b-8dbb-574691c4af5b" client="f248fed2-9a75-40ee-9a3c-85034f6f04f9" contract="d4cf2dd7-d632-412b-8dbb-574691c4af5b"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="2790b98b-7d6b-4e50-b1b3-4e0b40af43ba" name="SynthTableCellRenderer" visibility="private">
                  <generalization xmi:id="538d3d48-48ba-433f-8f4f-4481d79cd678" isSubstitutable="true" general="b5b4054c-1a18-45b2-9a45-50414a92e4ea"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="0443f8ac-5430-46a4-b00c-99233ed43319" name="SynthArrowButton" visibility="package" clientDependency="67601c2f-6da4-4eef-a9ae-cf378e0f94c2 40c51c03-fb70-4565-b48a-d8564af34df6">
                <ownedComment xmi:id="670c5c47-525b-4516-b6f7-28da341d70bd" body="JButton object that draws a scaled Arrow in one of the cardinal directions.&#xA;&#xA;@version 1.15, 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="0443f8ac-5430-46a4-b00c-99233ed43319"/>
                <generalization xmi:id="401ce65c-1f76-4c89-b5b3-b58ab11fc689" isSubstitutable="true" general="1c2f22f0-8bbd-4e4b-915e-ea57b72df83b"/>
                <interfaceRealization xmi:id="67601c2f-6da4-4eef-a9ae-cf378e0f94c2" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="0443f8ac-5430-46a4-b00c-99233ed43319" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
                <interfaceRealization xmi:id="40c51c03-fb70-4565-b48a-d8564af34df6" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="0443f8ac-5430-46a4-b00c-99233ed43319" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="7ca1f9db-4f84-4e41-9db9-0f049425f07d" name="SynthArrowButtonUI" visibility="private">
                  <generalization xmi:id="c81d0ef2-5820-45eb-8bab-31a5415d4ab6" isSubstitutable="true" general="efb8d1e7-164b-4ebb-826d-0daf49654905"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="645e3db2-ee58-483c-ac01-b1d82723840f" name="SynthToolTipUI" visibility="package" clientDependency="a945804c-0f74-40f2-89c2-359e7a0fecf7">
                <ownedComment xmi:id="1b527267-9869-4e10-818d-60fab6396412" body="Synth's ToolTipUI.&#xA;&#xA;@version 1.9, 12/19/03&#xA;@author Joshua Outwater&#xA;" annotatedElement="645e3db2-ee58-483c-ac01-b1d82723840f"/>
                <generalization xmi:id="12362090-64af-4fad-8c9d-95c70779c152" isSubstitutable="true" general="a8cce313-8f07-4d93-bfcf-c422d3492ec7"/>
                <interfaceRealization xmi:id="a945804c-0f74-40f2-89c2-359e7a0fecf7" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="645e3db2-ee58-483c-ac01-b1d82723840f" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="74a7a535-1e99-4862-bab4-49b5665f5eca" name="SynthSplitPaneDivider" visibility="package">
                <ownedComment xmi:id="e81f6d0f-b4b3-4f53-af72-fa2a964820d8" body="Synth's SplitPaneDivider.&#xA;&#xA;@version 1.7, 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="74a7a535-1e99-4862-bab4-49b5665f5eca"/>
                <generalization xmi:id="9792effb-1ace-495f-a515-3b21e42bf398" isSubstitutable="true" general="5b5de748-63dc-474c-9db9-da1539379d67"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6281b3b0-219e-438a-8dfb-055692a28953" name="SynthTextFieldUI" visibility="package">
                <ownedComment xmi:id="1d6c1320-9122-42ac-9ecd-8253b53fe39d" body="Basis of a look and feel for a JTextField in the Synth&#xA;look and feel.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author  Shannon Hickey&#xA;@version 1.10 06/24/04&#xA;" annotatedElement="6281b3b0-219e-438a-8dfb-055692a28953"/>
                <generalization xmi:id="05761764-70ce-456c-b5b9-81cf3e56ad96" isSubstitutable="true" general="289b701d-6a86-42ec-8cfb-29415722efca"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="0b07c8db-acff-416b-95c1-efa299381bfb" name="SynthProgressBarUI" visibility="package" clientDependency="afada1c5-336f-4eae-bd1c-552342995a67">
                <ownedComment xmi:id="61647727-a247-481b-975b-6d619cab20ad" body="Synth's ProgressBarUI.&#xA;&#xA;@version 1.23, 04/02/04&#xA;@author Joshua Outwater&#xA;" annotatedElement="0b07c8db-acff-416b-95c1-efa299381bfb"/>
                <generalization xmi:id="c5b42656-79bd-4423-8167-1b96a7d81ea5" isSubstitutable="true" general="e4c2ea1e-8721-4bb2-91e3-e5a626963837"/>
                <interfaceRealization xmi:id="afada1c5-336f-4eae-bd1c-552342995a67" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="0b07c8db-acff-416b-95c1-efa299381bfb" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="c1ceac78-cd46-4592-9467-c574c5a467cb" name="SynthViewportUI" visibility="package" clientDependency="499ce185-7140-45c3-8a49-6073bf3b6879">
                <ownedComment xmi:id="b9ba3e53-6839-47fd-b3d8-6a5430b07581" body="Synth's ViewportUI.&#xA;&#xA;@version 1.11, 12/19/03&#xA;" annotatedElement="c1ceac78-cd46-4592-9467-c574c5a467cb"/>
                <generalization xmi:id="7ef20a85-39e9-427b-8aa1-3011726c8068" isSubstitutable="true" general="0d32b011-12dd-4c8c-be95-aed4b08d5233"/>
                <interfaceRealization xmi:id="499ce185-7140-45c3-8a49-6073bf3b6879" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="c1ceac78-cd46-4592-9467-c574c5a467cb" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4451c18a-a028-4bf5-81cc-152b7c7c2325" name="SynthScrollBarUI" visibility="package" clientDependency="7f1ed416-b48e-4b2a-87a9-3ed447496340">
                <ownedComment xmi:id="9366801b-9948-4bce-b285-73caf77d40e8" body="Synth's ScrollBarUI.&#xA;&#xA;@version 1.28, 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="4451c18a-a028-4bf5-81cc-152b7c7c2325"/>
                <generalization xmi:id="36e72f65-1833-480b-a3f5-bb26379f092e" isSubstitutable="true" general="f53a63fa-b154-4792-97d7-8488efbcc67b"/>
                <interfaceRealization xmi:id="7f1ed416-b48e-4b2a-87a9-3ed447496340" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="4451c18a-a028-4bf5-81cc-152b7c7c2325" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="35514b51-7c14-4f70-ba7d-40fccac4fe8e" name="SynthComboPopup" visibility="package">
                <ownedComment xmi:id="676db549-2e1f-41a8-aa54-dbfea5aff04a" body="Synth's ComboPopup.&#xA;&#xA;@version 1.7, 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="35514b51-7c14-4f70-ba7d-40fccac4fe8e"/>
                <generalization xmi:id="26ada279-1789-4464-a10e-fccc60045b8f" isSubstitutable="true" general="1c152de9-ac4d-4410-8f85-138b2b0cb4ab"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="3f70e7d1-3441-4a39-b8ce-9a2408ac0054" name="SynthRadioButtonMenuItemUI" visibility="package">
                <ownedComment xmi:id="20f15a95-2342-4e8e-b2be-ff954c89ef99" body="Synth's RadioButtonMenuItemUI.&#xA;&#xA;@version 1.5, 12/19/03&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;" annotatedElement="3f70e7d1-3441-4a39-b8ce-9a2408ac0054"/>
                <generalization xmi:id="83742ea9-e3ae-4f5e-85b2-b34d9e11bee1" isSubstitutable="true" general="512975fa-1c9e-4537-a41c-0594f0b11a16"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="94b39e3c-d026-4e90-b5f0-c83d84fc24ab" name="SynthConstants" isAbstract="true">
                <ownedComment xmi:id="21fcc7bc-585a-4ccc-9642-7d682d18fadb" body="Constants used by Synth. Not all Components support all states. A&#xA;Component will at least be in one of the primary states. That is, the&#xA;return value from &lt;code>SynthContext.getComponentState()&lt;/code> will at&#xA;least be one of &lt;code>ENABLED&lt;/code>, &lt;code>MOUSE_OVER&lt;/code>,&#xA;&lt;code>PRESSED&lt;/code> or &lt;code>DISABLED&lt;/code>, and may also contain&#xA;&lt;code>FOCUSED&lt;/code>, &lt;code>SELECTED&lt;/code> or &lt;code>DEFAULT&lt;/code>.&#xA;&#xA;@version 1.7, 12/19/03&#xA;@since 1.5&#xA;" annotatedElement="94b39e3c-d026-4e90-b5f0-c83d84fc24ab"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="1685047d-7010-480c-9f41-a8df462f4f22" name="SynthOptionPaneUI" visibility="package" clientDependency="b4e38632-1067-43e6-ab56-f5dc49225d6b">
                <ownedComment xmi:id="742d49c7-140d-495a-acd0-692c06424169" body="Synth's OptionPaneUI.&#xA;&#xA;@version 1.14, 12/19/03&#xA;@author James Gosling&#xA;@author Scott Violet&#xA;@author Amy Fowler&#xA;" annotatedElement="1685047d-7010-480c-9f41-a8df462f4f22"/>
                <generalization xmi:id="90ed2f8b-737f-4e0c-9e9d-bbac1b3fa3eb" isSubstitutable="true" general="e30b7f0f-612d-4cf5-93ac-f3cc948333a6"/>
                <interfaceRealization xmi:id="b4e38632-1067-43e6-ab56-f5dc49225d6b" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="1685047d-7010-480c-9f41-a8df462f4f22" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="ced3ef73-2cc7-4470-9e9d-5de96f113be7" name="ColorType">
                <ownedComment xmi:id="17042ca2-f869-43f6-9e48-720feeb2a7de" body="A typesafe enumeration of colors that can be fetched from a style.&#xA;&lt;p>&#xA;Each &lt;code>SynthStyle&lt;/code> has a set of &lt;code>ColorType&lt;/code>s that&#xA;are accessed by way of the&#xA;{@link SynthStyle#getColor(SynthContext, ColorType)} method.&#xA;&lt;code>SynthStyle&lt;/code>'s &lt;code>installDefaults&lt;/code> will install&#xA;the &lt;code>FOREGROUND&lt;/code> color&#xA;as the foreground of&#xA;the Component, and the &lt;code>BACKGROUND&lt;/code> color to the background of&#xA;the component (assuming that you have not explicitly specified a&#xA;foreground and background color). Some components&#xA;support more color based properties, for&#xA;example &lt;code>JList&lt;/code> has the property&#xA;&lt;code>selectionForeground&lt;/code> which will be mapped to&#xA;&lt;code>FOREGROUND&lt;/code> with a component state of&#xA;&lt;code>SynthConstants.SELECTED&lt;/code>.&#xA;&lt;p>&#xA;The following example shows a custom &lt;code>SynthStyle&lt;/code> that returns&#xA;a red Color for the &lt;code>DISABLED&lt;/code> state, otherwise a black color.&#xA;&lt;pre>&#xA;class MyStyle extends SynthStyle {&#xA;private Color disabledColor = new ColorUIResource(Color.RED);&#xA;private Color color = new ColorUIResource(Color.BLACK);&#xA;protected Color getColorForState(SynthContext context, ColorType type){&#xA;if (context.getComponentState() == SynthConstants.DISABLED) {&#xA;return disabledColor;&#xA;}&#xA;return color;&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;@version 1.11, 12/19/03&#xA;@since 1.5&#xA;@author Scott Violet&#xA;" annotatedElement="ced3ef73-2cc7-4470-9e9d-5de96f113be7"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="cec42b1e-bb78-49b4-b758-b4fb599a032f" name="SynthToggleButtonUI" visibility="package">
                <ownedComment xmi:id="17bda145-cce5-4d6e-bab5-2cfdbde6977f" body="Synth's ToggleButtonUI.&#xA;&lt;p>&#xA;@version 1.6, 12/19/03&#xA;@author Jeff Dinkins&#xA;" annotatedElement="cec42b1e-bb78-49b4-b758-b4fb599a032f"/>
                <generalization xmi:id="a6ad6dc4-7c34-4451-ae65-50eaa5404920" isSubstitutable="true" general="efb8d1e7-164b-4ebb-826d-0daf49654905"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="08189968-ebc0-4d5d-866e-1b71699cc790" name="SynthContext">
                <ownedComment xmi:id="87364369-781b-4bd6-ae97-644d95d2cfbb" body="An immutable transient object containing contextual information about&#xA;a &lt;code>Region&lt;/code>. A &lt;code>SynthContext&lt;/code> should only be&#xA;considered valid for the duration&#xA;of the method it is passed to. In other words you should not cache&#xA;a &lt;code>SynthContext&lt;/code> that is passed to you and expect it to&#xA;remain valid.&#xA;&#xA;@version 1.9, 12/19/03&#xA;@since 1.5&#xA;@author Scott Violet&#xA;" annotatedElement="08189968-ebc0-4d5d-866e-1b71699cc790"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="5ac32ad3-9e0e-4fae-982b-57e9cdea732e" name="SynthCheckBoxUI" visibility="package">
                <ownedComment xmi:id="47f19e2e-efed-4a1e-aadf-bfd8b2b3fa93" body="Synth's CheckBoxUI.&#xA;&#xA;@version 1.6, 12/19/03&#xA;@author Jeff Dinkins&#xA;" annotatedElement="5ac32ad3-9e0e-4fae-982b-57e9cdea732e"/>
                <generalization xmi:id="18f14d7d-3621-4aa2-b86b-6cee9bc13188" isSubstitutable="true" general="d36b6eeb-d9f4-46bc-86b1-1e77ef11f12c"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="07b95c37-2b4d-4add-b24c-b2c53bbcabbe" name="Region">
                <ownedComment xmi:id="42ac9c02-d132-4002-b7cf-c44e2d15dc4c" body="A distinct rendering area of a Swing component.  A component may&#xA;support one or more regions.  Specific component regions are defined&#xA;by the typesafe enumeration in this class.&#xA;&lt;p>&#xA;Regions are typically used as a way to identify the &lt;code>Component&lt;/code>s&#xA;and areas a particular style is to apply to. Synth's file format allows you&#xA;to bind styles based on the name of a &lt;code>Region&lt;/code>.&#xA;The name is derived from the field name of the constant:&#xA;&lt;ol>&#xA;&lt;li>Map all characters to lowercase.&#xA;&lt;li>Map the first character to uppercase.&#xA;&lt;li>Map the first character after underscores to uppercase.&#xA;&lt;li>Remove all underscores.&#xA;&lt;/ol>&#xA;For example, to identify the &lt;code>SPLIT_PANE&lt;/code>&#xA;&lt;code>Region&lt;/code> you would use &lt;code>SplitPane&lt;/code>.&#xA;The following shows a custom &lt;code>SynthStyleFactory&lt;/code>&#xA;that returns a specific style for split panes:&#xA;&lt;pre>&#xA;public SynthStyle getStyle(JComponent c, Region id) {&#xA;if (id == Region.SPLIT_PANE) {&#xA;return splitPaneStyle;&#xA;}&#xA;...&#xA;}&#xA;&lt;/pre>&#xA;The following &lt;a href=&quot;doc-files/synthFileFormat.html&quot;>xml&lt;/a>&#xA;accomplishes the same thing:&#xA;&lt;pre>&#xA;&lt;style id=&quot;splitPaneStyle&quot;>&#xA;...&#xA;&lt;/style>&#xA;&lt;bind style=&quot;splitPaneStyle&quot; type=&quot;region&quot; key=&quot;SplitPane&quot;/>&#xA;&lt;/pre>&#xA;&#xA;@version 1.30, 02/19/04&#xA;@since 1.5&#xA;@author Scott Violet&#xA;" annotatedElement="07b95c37-2b4d-4add-b24c-b2c53bbcabbe"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="0a20bc20-38ab-4521-b7cf-31c35f813ba6" name="SynthPanelUI" visibility="package" clientDependency="75567ca6-970b-4944-b010-aff4621b8b4b">
                <ownedComment xmi:id="1003fb93-dbd6-4d0f-ad8d-ab688494363d" body="Synth's PanelUI.&#xA;&#xA;@version 1.12, 12/19/03&#xA;@author Steve Wilson&#xA;" annotatedElement="0a20bc20-38ab-4521-b7cf-31c35f813ba6"/>
                <generalization xmi:id="cd35e43e-3213-4e04-80e5-6af595132c64" isSubstitutable="true" general="ce986630-63e2-4d59-b74b-8d8821b02dbc"/>
                <interfaceRealization xmi:id="75567ca6-970b-4944-b010-aff4621b8b4b" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="0a20bc20-38ab-4521-b7cf-31c35f813ba6" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="71bf671b-4bee-416b-87d9-a8b9685fb994" name="SynthTextPaneUI" visibility="package">
                <ownedComment xmi:id="9e0648d8-59d5-41c4-89f1-b9cc288766af" body="Provides the look and feel for a styled text editor in the&#xA;Synth look and feel.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author  Shannon Hickey&#xA;@version 1.8 12/19/03&#xA;" annotatedElement="71bf671b-4bee-416b-87d9-a8b9685fb994"/>
                <generalization xmi:id="2dce7626-5e81-49f6-92e0-18c4a51defc4" isSubstitutable="true" general="6075d039-4e00-4696-84af-9d439fa76484"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="82b0fa24-5415-42cf-aa17-9ce730a5e14c" name="SynthStyle" isAbstract="true">
                <ownedComment xmi:id="a2644d22-daa4-467f-a8d4-d17b6c066d2a" body="&lt;code>SynthStyle&lt;/code> is a set of style properties.&#xA;Each &lt;code>SynthUI&lt;/code> references at least one&#xA;&lt;code>SynthStyle&lt;/code> that is obtained using a&#xA;&lt;code>SynthStyleFactory&lt;/code>. You typically don't need to interact with&#xA;this class directly, rather you will load a&#xA;&lt;a href=&quot;doc-files/synthFileFormat.html&quot;>Synth File Format file&lt;/a> into&#xA;&lt;code>SynthLookAndFeel&lt;/code> that will create a set of SynthStyles.&#xA;&#xA;@see SynthLookAndFeel&#xA;@see SynthStyleFactory&#xA;&#xA;@version 1.23, 12/19/03&#xA;@since 1.5&#xA;@author Scott Violet&#xA;" annotatedElement="82b0fa24-5415-42cf-aa17-9ce730a5e14c"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="7c97ecb9-1742-4b0e-859b-cecbaaa92033" name="SynthLookAndFeel">
                <ownedComment xmi:id="e12d77e8-682f-492a-b0f7-4f3f5ec9f669" body="SynthLookAndFeel provides the basis for creating a customized look and&#xA;feel. SynthLookAndFeel does not directly provide a look, all painting is&#xA;delegated.&#xA;You need to either provide a configuration file, by way of the&#xA;{@link #load} method, or provide your own {@link SynthStyleFactory}&#xA;to {@link #setStyleFactory}. Refer to the&#xA;&lt;a href=&quot;package-summary.html&quot;>package summary&lt;/a> for an example of&#xA;loading a file, and {@link javax.swing.plaf.synth.SynthStyleFactory} for&#xA;an example of providing your own &lt;code>SynthStyleFactory&lt;/code> to&#xA;&lt;code>setStyleFactory&lt;/code>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;This class implements {@link Serializable} as a side effect of it&#xA;extending {@link BasicLookAndFeel}. It is not intended to be serialized.&#xA;An attempt to serialize it will&#xA;result in {@link NotSerializableException}.&#xA;&#xA;@serial exclude&#xA;@version 1.45, 05/07/04&#xA;@since 1.5&#xA;@author Scott Violet&#xA;" annotatedElement="7c97ecb9-1742-4b0e-859b-cecbaaa92033"/>
                <generalization xmi:id="848b6770-95d3-47fa-ad64-6cdd401129d7" isSubstitutable="true" general="99358614-84fd-4231-afd2-c74334bb76ee"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4fb5dc40-b8d1-47e5-9426-69cc9ca8d46d" name="SynthToolBarUI" visibility="package" clientDependency="0cade113-22de-4949-af36-c97c67055819">
                <ownedComment xmi:id="ca6ae370-e018-4742-b0a3-f2cc715586f8" body="A Synth L&amp;F implementation of ToolBarUI.  This implementation&#xA;is a &quot;combined&quot; view/controller.&#xA;&lt;p>&#xA;&#xA;@version 1.10, 12/19/03&#xA;@author Georges Saab&#xA;@author Jeff Shapiro&#xA;" annotatedElement="4fb5dc40-b8d1-47e5-9426-69cc9ca8d46d"/>
                <generalization xmi:id="6eb93591-f552-4789-a2ec-cbac84aae99d" isSubstitutable="true" general="52ed3c1b-54fe-454b-b1b3-19ef6485c306"/>
                <interfaceRealization xmi:id="0cade113-22de-4949-af36-c97c67055819" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="4fb5dc40-b8d1-47e5-9426-69cc9ca8d46d" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="edb3877b-9c24-4314-a6fe-a2a6e404a772" name="SynthToolBarLayoutManager" visibility="package" clientDependency="61a231a9-f20e-4303-86c4-325cb0481f46">
                  <interfaceRealization xmi:id="61a231a9-f20e-4303-86c4-325cb0481f46" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="edb3877b-9c24-4314-a6fe-a2a6e404a772" contract="c3507179-c29c-40a9-8869-092757900e53"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="7756552c-9b53-4141-aa4a-7d2cd711dcc3" name="SynthFormattedTextFieldUI" visibility="package">
                <ownedComment xmi:id="d24bc85f-5be9-493a-acb8-6b4d83b0379c" body="Provides the look and feel implementation for&#xA;&lt;code>JFormattedTextField&lt;/code>.&#xA;&#xA;@version 1.5, 12/19/03&#xA;" annotatedElement="7756552c-9b53-4141-aa4a-7d2cd711dcc3"/>
                <generalization xmi:id="1427c312-fafa-4d4e-bbac-d395ddcb1147" isSubstitutable="true" general="6281b3b0-219e-438a-8dfb-055692a28953"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="0b13eb8d-ddd5-4910-be73-884799995df2" name="SynthComboBoxUI" visibility="package" clientDependency="d701e406-0ac8-4792-a0a7-15272b1e1a8c">
                <ownedComment xmi:id="f8f4d4b6-04ea-434a-a065-ddec8bbcd57f" body="Synth's ComboBoxUI.&#xA;&#xA;@version 1.15, 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="0b13eb8d-ddd5-4910-be73-884799995df2"/>
                <generalization xmi:id="7d37554c-6185-409f-b599-fef76dbbba4c" isSubstitutable="true" general="eaefd3b8-7d33-4fbd-889f-2f5fca71dcbe"/>
                <interfaceRealization xmi:id="d701e406-0ac8-4792-a0a7-15272b1e1a8c" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="0b13eb8d-ddd5-4910-be73-884799995df2" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="f237ad6d-aa6d-4d14-81b0-76adb2b1d419" name="SynthComboBoxRenderer" visibility="private" clientDependency="35b836d8-331f-4ac7-9e25-8f4d38eb89cc 6456f805-dd8f-4a74-b960-15e9f072e549">
                  <ownedComment xmi:id="6aacd31f-c2df-46ce-bda2-6bad6336648e" body="From BasicComboBoxRenderer v 1.18.&#xA;" annotatedElement="f237ad6d-aa6d-4d14-81b0-76adb2b1d419"/>
                  <generalization xmi:id="dff0b851-dada-42c0-ba92-b79cc7f628b8" isSubstitutable="true" general="c9ab6369-faf9-4d4f-8a58-fa6a4a41feb0"/>
                  <interfaceRealization xmi:id="6456f805-dd8f-4a74-b960-15e9f072e549" name="" supplier="1a95f1ea-7980-4ae4-b14e-b495104a675d" client="f237ad6d-aa6d-4d14-81b0-76adb2b1d419" contract="1a95f1ea-7980-4ae4-b14e-b495104a675d"/>
                  <interfaceRealization xmi:id="35b836d8-331f-4ac7-9e25-8f4d38eb89cc" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="f237ad6d-aa6d-4d14-81b0-76adb2b1d419" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="da7bd516-3f68-4e29-9698-a9c73ba16e87" name="SynthComboBoxEditor" visibility="private" clientDependency="1abcad9b-647a-408c-b63b-974018348a74 d9139412-dabe-49fa-81a4-04f2b754dc2f">
                  <ownedComment xmi:id="3abea8b8-e5ad-4df7-bf19-f318164a5aa3" body="From BasicCombBoxEditor v 1.24.&#xA;" annotatedElement="da7bd516-3f68-4e29-9698-a9c73ba16e87"/>
                  <interfaceRealization xmi:id="1abcad9b-647a-408c-b63b-974018348a74" name="" supplier="103554e2-4cf7-4432-8d3b-ae5054ca05c4" client="da7bd516-3f68-4e29-9698-a9c73ba16e87" contract="103554e2-4cf7-4432-8d3b-ae5054ca05c4"/>
                  <interfaceRealization xmi:id="d9139412-dabe-49fa-81a4-04f2b754dc2f" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="da7bd516-3f68-4e29-9698-a9c73ba16e87" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="512975fa-1c9e-4537-a41c-0594f0b11a16" name="SynthMenuItemUI" visibility="package" clientDependency="d054222e-a6de-437c-a25c-83e07a40204e">
                <ownedComment xmi:id="d6daa35a-8ce5-40f2-a594-1401edba7a76" body="Synth's MenuItemUI.&#xA;&#xA;@version 1.21, 06/24/04&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;@author Arnaud Weber&#xA;@author Fredrik Lagerblad&#xA;" annotatedElement="512975fa-1c9e-4537-a41c-0594f0b11a16"/>
                <generalization xmi:id="2ecf3fa6-a2ed-4566-87da-5e63a1ff3386" isSubstitutable="true" general="b720308d-6638-4771-a9c2-a324cb24131f"/>
                <interfaceRealization xmi:id="d054222e-a6de-437c-a25c-83e07a40204e" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="512975fa-1c9e-4537-a41c-0594f0b11a16" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="a8073054-9b21-4b34-88ec-2b5cbdaf9290" name="SynthDefaultLookup" visibility="package">
                <ownedComment xmi:id="f3b785de-1d43-4b95-956b-349cc4c0f362" body="SynthDefaultLookup redirects all lookup calls to the SynthContext.&#xA;&#xA;@version 1.4 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="a8073054-9b21-4b34-88ec-2b5cbdaf9290"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6075d039-4e00-4696-84af-9d439fa76484" name="SynthEditorPaneUI" visibility="package">
                <ownedComment xmi:id="ab259fa1-b35a-4814-880c-b4ed7c9ac9f5" body="Provides the look and feel for a JEditorPane in the&#xA;Synth look and feel.&#xA;&#xA;@author  Shannon Hickey&#xA;@version 1.8 07/23/04&#xA;" annotatedElement="6075d039-4e00-4696-84af-9d439fa76484"/>
                <generalization xmi:id="8ecca8be-5ce9-4b9e-892e-b2bfe98bf682" isSubstitutable="true" general="0d3d80b2-b0a6-4896-9560-78415ad5639b"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="dcd0bbcb-88bf-44ce-87ec-8e3674df36d7" name="SynthListUI" visibility="package" clientDependency="59e59c0f-6834-45b6-865d-658c0c049fae">
                <ownedComment xmi:id="a92f57b4-3eb2-4827-8e82-9192447731e2" body="Synth's ListUI.&#xA;&#xA;@version 1.11, 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="dcd0bbcb-88bf-44ce-87ec-8e3674df36d7"/>
                <generalization xmi:id="1d971dd7-6544-4bb4-920b-ba1589722d62" isSubstitutable="true" general="b4108404-9b3e-4324-81b0-a3f5814871a3"/>
                <interfaceRealization xmi:id="59e59c0f-6834-45b6-865d-658c0c049fae" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="dcd0bbcb-88bf-44ce-87ec-8e3674df36d7" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="4437c8a0-43ff-450c-aea4-a8c6d2a77e58" name="SynthListCellRenderer" visibility="private">
                  <generalization xmi:id="8a310546-00d8-4289-8450-ea1b0378c9c5" isSubstitutable="true" general="92b352db-49e4-4e17-89eb-ceb4d13f3a1b"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="52e6fccc-0c76-4505-b7b3-33622ad508fd" name="SynthSplitPaneUI" visibility="package" clientDependency="71724e2b-78f7-4e3f-b20c-87dfe3e3d462">
                <ownedComment xmi:id="a69dce9a-2f05-488e-ab91-9efd2bb6647b" body="Synth's SplitPaneUI.&#xA;&#xA;@version 1.15, 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="52e6fccc-0c76-4505-b7b3-33622ad508fd"/>
                <generalization xmi:id="c1a1a90a-641b-407a-852f-47cd3cb18ab7" isSubstitutable="true" general="885c095d-ae9f-442a-b0bc-449398bcfcb5"/>
                <interfaceRealization xmi:id="71724e2b-78f7-4e3f-b20c-87dfe3e3d462" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="52e6fccc-0c76-4505-b7b3-33622ad508fd" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6bef832b-457c-41d8-961b-34aa05f5eec0" name="SynthPainter" isAbstract="true">
                <ownedComment xmi:id="038f031b-28f6-418b-8a0a-0162da139584" body="&lt;code>SynthPainter&lt;/code> is used for painting portions of&#xA;&lt;code>JComponent&lt;/code>s. At a minimum each &lt;code>JComponent&lt;/code>&#xA;has two paint methods: one for the border and one for the background. Some&#xA;&lt;code>JComponent&lt;/code>s have more than one &lt;code>Region&lt;/code>, and as&#xA;a consequence more paint methods.&#xA;&lt;p>&#xA;Instances of &lt;code>SynthPainter&lt;/code> are obtained from the&#xA;{@link javax.swing.plaf.synth.SynthStyle#getPainter} method.&#xA;&lt;p>&#xA;You typically supply a &lt;code>SynthPainter&lt;/code> by way of Synth's&#xA;&lt;a href=&quot;doc-files/synthFileFormat.html&quot;>file&lt;/a> format. The following&#xA;example registers a painter for all &lt;code>JButton&lt;/code>s that will&#xA;render the image &lt;code>myImage.png&lt;/code>:&#xA;&lt;pre>&#xA;&lt;style id=&quot;buttonStyle&quot;>&#xA;&lt;imagePainter path=&quot;myImage.png&quot; sourceInsets=&quot;2 2 2 2&quot;&#xA;paintCenter=&quot;true&quot; stretch=&quot;true&quot;/>&#xA;&lt;insets top=&quot;2&quot; bottom=&quot;2&quot; left=&quot;2&quot; right=&quot;2&quot;/>&#xA;&lt;/style>&#xA;&lt;bind style=&quot;buttonStyle&quot; type=&quot;REGION&quot; key=&quot;button&quot;/>&#xA;&lt;/pre>&#xA;&lt;p>&#xA;&lt;code>SynthPainter&lt;/code> is abstract in so far as it does no painting,&#xA;all the methods&#xA;are empty. While none of these methods are typed to throw an exception,&#xA;subclasses can assume that valid arguments are passed in, and if not&#xA;they can throw a &lt;code>NullPointerException&lt;/code> or&#xA;&lt;code>IllegalArgumentException&lt;/code> in response to invalid arguments.&#xA;&#xA;@version 1.10, 12/19/03&#xA;@since 1.5&#xA;@author Scott Violet&#xA;" annotatedElement="6bef832b-457c-41d8-961b-34aa05f5eec0"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="afb9c522-1557-4ca8-a10a-73bfc199b117" name="SynthParser" visibility="package">
                <ownedComment xmi:id="ba4302d2-a174-4290-894f-943661c19de4" body="@version 1.15, 04/16/04&#xA;" annotatedElement="afb9c522-1557-4ca8-a10a-73bfc199b117"/>
                <generalization xmi:id="0be5ba29-05d7-46da-94fb-cd5db21c45c8" isSubstitutable="true" general="06ea97ec-420b-4f33-93a5-b4cec5d1eaf0"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5463b7b4-7cb5-438a-8797-1cbf39326da0" name="LazyImageIcon" visibility="private" clientDependency="0784acf2-83f4-4904-a2fb-65e0282b868c">
                  <ownedComment xmi:id="e90e01ea-47fb-47e8-9d4a-b7401799ab2b" body="ImageIcon that lazily loads the image until needed.&#xA;" annotatedElement="5463b7b4-7cb5-438a-8797-1cbf39326da0"/>
                  <generalization xmi:id="1acdea1b-a7ca-4208-99ec-ff31b3b2bc5a" isSubstitutable="true" general="74efbdc6-4052-40dc-8f11-976628f804ab"/>
                  <interfaceRealization xmi:id="0784acf2-83f4-4904-a2fb-65e0282b868c" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="5463b7b4-7cb5-438a-8797-1cbf39326da0" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="9994f0d2-4a46-4b82-bd63-5b1f47ca350c" name="SynthDesktopPaneUI" visibility="package" clientDependency="380ef730-9aea-4de3-8149-e0487e33f185">
                <ownedComment xmi:id="7056a3f5-da9c-4995-ac79-c930d82af5c5" body="Synth L&amp;F for a desktop.&#xA;&#xA;@version 1.18, 12/19/03&#xA;@author Joshua Outwater&#xA;@author Steve Wilson&#xA;" annotatedElement="9994f0d2-4a46-4b82-bd63-5b1f47ca350c"/>
                <generalization xmi:id="f30a3d98-edf4-4d40-8182-63430d2fcc8e" isSubstitutable="true" general="bf5639b3-ba65-4118-8f50-978fdbdc9937"/>
                <interfaceRealization xmi:id="380ef730-9aea-4de3-8149-e0487e33f185" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="9994f0d2-4a46-4b82-bd63-5b1f47ca350c" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="eebb8321-4415-4736-9105-5290c97d1453" name="TaskBar" visibility="package" clientDependency="95e29602-706a-4b79-9ac9-c35fa3692c88 7522ea80-cc45-442f-b777-b06ec61630e0">
                  <generalization xmi:id="029a841e-81e7-4238-875f-c2fca8b819bd" isSubstitutable="true" general="18cb35a3-9f9e-4251-ba29-48407f975f19"/>
                  <interfaceRealization xmi:id="95e29602-706a-4b79-9ac9-c35fa3692c88" name="" supplier="476f85cb-73d6-493e-8dda-f7ed06712460" client="eebb8321-4415-4736-9105-5290c97d1453" contract="476f85cb-73d6-493e-8dda-f7ed06712460"/>
                  <interfaceRealization xmi:id="7522ea80-cc45-442f-b777-b06ec61630e0" name="" supplier="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8" client="eebb8321-4415-4736-9105-5290c97d1453" contract="d4b15fc2-32ec-4d7c-a9f9-12ac999a0ee8"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6a35434a-4eeb-4a00-9f66-995e13542b12" name="SynthDesktopManager" visibility="package" clientDependency="5c522c9c-8ab0-452a-beb2-5834f3d6d56a">
                  <generalization xmi:id="d9dfbd11-696d-485a-b19c-4706149eac21" isSubstitutable="true" general="ca79776d-907f-4c42-b293-16d92d244c34"/>
                  <interfaceRealization xmi:id="5c522c9c-8ab0-452a-beb2-5834f3d6d56a" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="6a35434a-4eeb-4a00-9f66-995e13542b12" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="a703ac66-2b20-42f0-acda-2c3db8e1f61b" name="SynthTreeUI" visibility="package" clientDependency="3021d2a7-617b-4a92-aff5-0baff6e4862f">
                <ownedComment xmi:id="3e82b3a4-03f5-4055-a856-62a56cbc5783" body="Skinnable TreeUI.&#xA;&#xA;@version 1.23, 05/27/04&#xA;@author Scott Violet&#xA;" annotatedElement="a703ac66-2b20-42f0-acda-2c3db8e1f61b"/>
                <generalization xmi:id="4b0f62c7-57bd-4397-9317-f19b4ac438af" isSubstitutable="true" general="4b94df5f-a9e3-466e-bcb7-7ab951d3253c"/>
                <interfaceRealization xmi:id="3021d2a7-617b-4a92-aff5-0baff6e4862f" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="a703ac66-2b20-42f0-acda-2c3db8e1f61b" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="0603b833-3908-41f4-8beb-92b8693a7606" name="SynthTreeCellRenderer" visibility="private" clientDependency="3df5fa3b-f760-4341-83ef-a60c8c4bd9db">
                  <generalization xmi:id="8e6d3995-44fa-437c-85f6-dd60fdcf35bf" isSubstitutable="true" general="478ef400-83bd-4219-84f6-1c289af97c55"/>
                  <interfaceRealization xmi:id="3df5fa3b-f760-4341-83ef-a60c8c4bd9db" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="0603b833-3908-41f4-8beb-92b8693a7606" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="b9d07c3f-db1a-4adb-b4c4-a9a3b4f85141" name="SynthTreeCellEditor" visibility="private">
                  <generalization xmi:id="1f2afdef-5937-470c-a465-e684f128d7b1" isSubstitutable="true" general="2f71ae23-90f1-4645-a189-c85fb1493ff9"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5c0c1dc0-e74c-4759-a770-fbade5fa0d1c" name="ExpandedIconWrapper" visibility="private"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="0ea649fb-7d8b-4e66-b1f3-b45f67f38e8f" name="SynthRootPaneUI" visibility="package">
                <ownedComment xmi:id="569ae771-77be-4f06-90c0-88434049f740" body="Synth's RootPaneUI.&#xA;&#xA;@version 1.12, 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="0ea649fb-7d8b-4e66-b1f3-b45f67f38e8f"/>
                <generalization xmi:id="ac9f32b2-d57b-4a18-ad77-028d304b1a45" isSubstitutable="true" general="b40f5b3c-0ff2-45dd-b2b7-9a64bf704473"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="efb8d1e7-164b-4ebb-826d-0daf49654905" name="SynthButtonUI" visibility="package" clientDependency="1d719f6d-35d9-46dd-8863-b4aa60dabafa">
                <ownedComment xmi:id="36c8f177-6282-43d4-bcb0-5b690350f89b" body="Synth's ButtonUI implementation.&#xA;&#xA;@version 1.20, 04/16/04&#xA;@author Scott Violet&#xA;" annotatedElement="efb8d1e7-164b-4ebb-826d-0daf49654905"/>
                <generalization xmi:id="ab07e0e2-c9e2-4fd0-bb31-c7367285942f" isSubstitutable="true" general="0cfb21d8-f918-4a7d-95e6-fb09f0d6f858"/>
                <interfaceRealization xmi:id="1d719f6d-35d9-46dd-8863-b4aa60dabafa" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="efb8d1e7-164b-4ebb-826d-0daf49654905" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="c088cf09-69b1-48ad-9e73-ff8c5ec2ad17" name="SynthMenuUI" visibility="package" clientDependency="4ff8b12b-2d99-48be-9604-6179c79400b8">
                <ownedComment xmi:id="f6495466-945d-4766-ac03-0554e8bb3893" body="Synth's MenuUI.&#xA;&#xA;@version 1.11, 12/19/03&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;@author Arnaud Weber&#xA;" annotatedElement="c088cf09-69b1-48ad-9e73-ff8c5ec2ad17"/>
                <generalization xmi:id="cb410eb0-ff48-47e1-8b2b-5b36e3807976" isSubstitutable="true" general="e6d6a3ed-17b0-4971-b0ef-69d4af0c330e"/>
                <interfaceRealization xmi:id="4ff8b12b-2d99-48be-9604-6179c79400b8" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="c088cf09-69b1-48ad-9e73-ff8c5ec2ad17" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="af01144a-9688-4837-a7ac-2dde66bfd9f0" name="SynthTabbedPaneUI" visibility="package" clientDependency="0f9f82cb-7390-4efa-8a23-5ed2c6949995">
                <ownedComment xmi:id="a9c4103b-a698-46aa-a525-e94751aca598" body="Looks up 'selectedTabPadInsets' from the Style, which will be additional&#xA;insets for the selected tab.&#xA;" annotatedElement="af01144a-9688-4837-a7ac-2dde66bfd9f0"/>
                <generalization xmi:id="3f455554-b36d-40b6-a835-626f2f6d4dab" isSubstitutable="true" general="8b7b7f09-514c-45c3-8000-35e658d3a600"/>
                <interfaceRealization xmi:id="0f9f82cb-7390-4efa-8a23-5ed2c6949995" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="af01144a-9688-4837-a7ac-2dde66bfd9f0" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="2ee7f2c6-6a42-4c97-a96f-5d372c66588a" name="SynthScrollableTabButton" visibility="private" clientDependency="b3001d0f-acc6-4cf2-b3d8-492ee842462e">
                  <generalization xmi:id="51042514-8cc2-4ff8-9e82-a00b284ae575" isSubstitutable="true" general="0443f8ac-5430-46a4-b00c-99233ed43319"/>
                  <interfaceRealization xmi:id="b3001d0f-acc6-4cf2-b3d8-492ee842462e" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="2ee7f2c6-6a42-4c97-a96f-5d372c66588a" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="f23ae3c4-8d56-433c-8750-8cdcd1855d85" name="SynthInternalFrameUI" visibility="package" clientDependency="a1c7dd42-b2c3-4fa3-9b1d-5e9964c6910a">
                <ownedComment xmi:id="9ab43192-af9e-4dfd-82c1-551018162d6e" body="Synth's InternalFrameUI.&#xA;&#xA;@version 1.20 04/16/04&#xA;@author David Kloba&#xA;@author Joshua Outwater&#xA;@author Rich Schiavi&#xA;" annotatedElement="f23ae3c4-8d56-433c-8750-8cdcd1855d85"/>
                <generalization xmi:id="ee19cb0e-f53e-4312-922e-c14a18db70d6" isSubstitutable="true" general="b07677d9-84a3-40cc-8dd6-839e91b449b5"/>
                <interfaceRealization xmi:id="a1c7dd42-b2c3-4fa3-9b1d-5e9964c6910a" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="f23ae3c4-8d56-433c-8750-8cdcd1855d85" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="e94026ab-2c02-4fc6-ac72-e8fb1e4f9f32" name="ParsedSynthStyle" visibility="package">
                <ownedComment xmi:id="357df1e2-6a9e-453c-8db4-c21da8dfe59d" body="ParsedSynthStyle are the SynthStyle's that SynthParser creates.&#xA;&#xA;@version 1.3, 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="e94026ab-2c02-4fc6-ac72-e8fb1e4f9f32"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c8308c9e-a840-419a-91c5-490f12dfc0bd" name="StateInfo" visibility="package"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="83112ee2-196a-42b5-92fc-b41b96e62fe2" name="PainterInfo" visibility="package"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e913ed14-3595-4305-a2b2-4eb1b6954168" name="DelegatingPainter" visibility="private">
                  <generalization xmi:id="98136d9e-6c26-4e74-9881-cc897b4bc967" isSubstitutable="true" general="6bef832b-457c-41d8-961b-34aa05f5eec0"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="ac6149e9-0ba2-4902-a24b-91d2fa7ed0ab" name="SynthStyleFactory" isAbstract="true">
                <ownedComment xmi:id="fb0a1c27-12c7-4140-bbf5-5614c8873428" body="Factory used for obtaining &lt;code>SynthStyle&lt;/code>s.  Each of the&#xA;Synth &lt;code>ComponentUI&lt;/code>s will call into the current&#xA;&lt;code>SynthStyleFactory&lt;/code> to obtain a &lt;code>SynthStyle&lt;/code>&#xA;for each of the distinct regions they have.&#xA;&lt;p>&#xA;The following example creates a custom &lt;code>SynthStyleFactory&lt;/code>&#xA;that returns a different style based on the &lt;code>Region&lt;/code>:&#xA;&lt;pre>&#xA;class MyStyleFactory extends SynthStyleFactory {&#xA;public SynthStyle getStyle(JComponent c, Region id) {&#xA;if (id == Region.BUTTON) {&#xA;return buttonStyle;&#xA;}&#xA;else if (id == Region.TREE) {&#xA;return treeStyle;&#xA;}&#xA;return defaultStyle;&#xA;}&#xA;}&#xA;SynthLookAndFeel laf = new SynthLookAndFeel();&#xA;UIManager.setLookAndFeel(laf);&#xA;SynthLookAndFeel.setStyleFactory(new MyStyleFactory());&#xA;&lt;/pre>&#xA;&#xA;@see SynthStyleFactory&#xA;@see SynthStyle&#xA;&#xA;@version 1.8, 12/19/03&#xA;@since 1.5&#xA;@author Scott Violet&#xA;" annotatedElement="ac6149e9-0ba2-4902-a24b-91d2fa7ed0ab"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="2d0f45ae-6dfa-4649-9432-31a5f6e2127a" name="SynthPopupMenuUI" visibility="package" clientDependency="b94d0b54-a85a-48ec-a10c-9924c67da595">
                <ownedComment xmi:id="a5a596a1-96b5-4b9a-b018-c3a0d74372f2" body="Synth's PopupMenuUI.&#xA;&#xA;@version 1.21, 12/19/03&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;@author Arnaud Weber&#xA;" annotatedElement="2d0f45ae-6dfa-4649-9432-31a5f6e2127a"/>
                <generalization xmi:id="ceac4edb-433c-4d57-88e1-e01c893c7644" isSubstitutable="true" general="f73e743b-0a42-4b62-909c-f0b59c3abc8d"/>
                <interfaceRealization xmi:id="b94d0b54-a85a-48ec-a10c-9924c67da595" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="2d0f45ae-6dfa-4649-9432-31a5f6e2127a" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="68482390-3c85-4de7-aad0-51198e3e7dd6" name="SynthLabelUI" visibility="package">
                <ownedComment xmi:id="dbc740c6-5cc7-4dd5-885a-8e514ad56504" body="Synth's LabelUI.&#xA;&#xA;@version 1.18, 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="68482390-3c85-4de7-aad0-51198e3e7dd6"/>
                <generalization xmi:id="65d13f62-e748-4034-9c1b-50dd97fb94bd" isSubstitutable="true" general="58c4042d-5b6a-4562-933e-f16d310c42d8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="d36b6eeb-d9f4-46bc-86b1-1e77ef11f12c" name="SynthRadioButtonUI" visibility="package">
                <ownedComment xmi:id="ad10daf6-67f3-4a27-a9a3-f43fea4246f3" body="Synth's RadioButtonUI.&#xA;&#xA;@version 1.8, 04/16/04&#xA;@author Jeff Dinkins&#xA;" annotatedElement="d36b6eeb-d9f4-46bc-86b1-1e77ef11f12c"/>
                <generalization xmi:id="9651f4b2-c53f-4710-bd11-ef68cff59bf1" isSubstitutable="true" general="cec42b1e-bb78-49b4-b758-b4fb599a032f"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="67508bbf-2f46-471a-b0f0-379486d82045" name="SynthTextAreaUI" visibility="package">
                <ownedComment xmi:id="9343fd7e-e30f-4549-9b28-34118d96823b" body="Provides the look and feel for a plain text editor in the&#xA;Synth look and feel. In this implementation the default UI&#xA;is extended to act as a simple view factory.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author  Shannon Hickey&#xA;@version 1.8 06/24/04&#xA;" annotatedElement="67508bbf-2f46-471a-b0f0-379486d82045"/>
                <generalization xmi:id="0cb9ee51-99e9-4585-bda5-9072b3f01601" isSubstitutable="true" general="aca2de02-fc62-42cf-b4e9-1ca4896e245c"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4d7896e0-88c8-485a-8e4d-113d575b0354" name="SynthCheckBoxMenuItemUI" visibility="package">
                <ownedComment xmi:id="c802b6ce-376b-4bcc-ba4d-f3d221c76372" body="Synth's CheckBoxMenuItemUI.&#xA;&#xA;@version 1.7 12/19/03&#xA;@author Leif Samuelsson&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;@author Arnaud Weber&#xA;" annotatedElement="4d7896e0-88c8-485a-8e4d-113d575b0354"/>
                <generalization xmi:id="591ddd6f-84b5-44a9-aeb6-bcb9ffafb9e1" isSubstitutable="true" general="512975fa-1c9e-4537-a41c-0594f0b11a16"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="153fdd3f-51e6-41e0-a0b7-2a2350bf3b89" name="SynthMenuBarUI" visibility="package" clientDependency="c771507f-16cd-44ed-b624-e8627302b61c">
                <ownedComment xmi:id="fb222346-9da3-4467-b47c-af5509601651" body="Synth's MenuBarUI.&#xA;&#xA;@version 1.10, 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="153fdd3f-51e6-41e0-a0b7-2a2350bf3b89"/>
                <generalization xmi:id="6ac3c458-c302-473e-aaf3-39edb1036dcc" isSubstitutable="true" general="63e4e11a-495b-414f-9415-fdbd1112cec3"/>
                <interfaceRealization xmi:id="c771507f-16cd-44ed-b624-e8627302b61c" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="153fdd3f-51e6-41e0-a0b7-2a2350bf3b89" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="5db7b89e-135b-40aa-953e-8f8f31dac746" name="DefaultMenuLayout" visibility="package" clientDependency="2f64297b-5097-49db-8a89-a50150f9f6cb">
                <ownedComment xmi:id="86042995-a187-4a35-aa03-01c74196a67b" body="The default layout manager for Popup menus and menubars.  This&#xA;class is an extension of BoxLayout which adds the UIResource tag&#xA;so that plauggable L&amp;Fs can distinguish it from user-installed&#xA;layout managers on menus.&#xA;&#xA;Derived from javax.swing.plaf.basic.DefaultMenuLayout&#xA;&#xA;@version 1.7 12/19/03&#xA;@author Georges Saab&#xA;" annotatedElement="5db7b89e-135b-40aa-953e-8f8f31dac746"/>
                <generalization xmi:id="55e7a689-72d8-4dd2-b5dc-5142b0ba448c" isSubstitutable="true" general="86c89baf-20cc-4c7b-b1a3-adca313b8e2c"/>
                <interfaceRealization xmi:id="2f64297b-5097-49db-8a89-a50150f9f6cb" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="5db7b89e-135b-40aa-953e-8f8f31dac746" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="435a5f4f-ba86-4480-8710-e84fe2dba54d" name="InsetsUIResource" clientDependency="3e5f669e-c07a-4183-b354-606fc0e33a63">
              <generalization xmi:id="3ea8ec46-8196-4d9b-97c0-5140df810216" isSubstitutable="true" general="e3a74ec8-777d-4e5f-a182-464963236fdd"/>
              <interfaceRealization xmi:id="3e5f669e-c07a-4183-b354-606fc0e33a63" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="435a5f4f-ba86-4480-8710-e84fe2dba54d" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="bdf79edf-3407-4b65-bd77-31f9fba69d9d" name="RootPaneUI" isAbstract="true">
              <ownedComment xmi:id="fac14408-c5f2-4c9a-a605-d71689e21375" body="Pluggable look and feel interface for JRootPane.&#xA;&#xA;@version 1.6 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="bdf79edf-3407-4b65-bd77-31f9fba69d9d"/>
              <generalization xmi:id="6f2abd51-e3ff-4553-a314-e49fbdc69aa0" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="09f4aa71-eb70-48b3-8a99-d5fbeb4c2952" name="ToolBarUI" isAbstract="true">
              <ownedComment xmi:id="66b10717-9117-453b-9ed3-7baa9985fb74" body="Pluggable look and feel interface for JToolBar.&#xA;&#xA;@version 1.14 12/19/03&#xA;@author Georges Saab&#xA;" annotatedElement="09f4aa71-eb70-48b3-8a99-d5fbeb4c2952"/>
              <generalization xmi:id="e8ffd882-7949-4e01-8043-74f7b8b805c5" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9cea3ac4-54b1-4939-892d-f9a96f978c5c" name="DimensionUIResource" clientDependency="7edc1405-20eb-49de-9cad-1730242aa5e3">
              <generalization xmi:id="e7e25e70-1717-4712-ad4b-dcd6a22b1cf4" isSubstitutable="true" general="273f870e-0e27-411b-b2e3-ad946f5558ba"/>
              <interfaceRealization xmi:id="7edc1405-20eb-49de-9cad-1730242aa5e3" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="9cea3ac4-54b1-4939-892d-f9a96f978c5c" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="37ea7b3b-7a05-440e-b91c-3eec69d60728" name="UIResource" isAbstract="true">
              <ownedComment xmi:id="5ad65202-ab4f-4485-9b9d-7b2333cf51a7" body="This interface is used to mark objects created by ComponentUI delegates.&#xA;The &lt;code>ComponentUI.installUI()&lt;/code> and&#xA;&lt;code>ComponentUI.uninstallUI()&lt;/code> methods can use this interface&#xA;to decide if a properties value has been overridden.  For example, the&#xA;JList cellRenderer property is initialized by BasicListUI.installUI(),&#xA;only if it's initial value is null:&#xA;&lt;pre>&#xA;if (list.getCellRenderer() == null) {&#xA;list.setCellRenderer((ListCellRenderer)(UIManager.get(&quot;List.cellRenderer&quot;)));&#xA;}&#xA;&lt;/pre>&#xA;At uninstallUI() time we reset the property to null if its value&#xA;is an instance of UIResource:&#xA;&lt;pre>&#xA;if (list.getCellRenderer() instanceof UIResource) {&#xA;list.setCellRenderer(null);&#xA;}&#xA;&lt;/pre>&#xA;This pattern applies to all properties except the java.awt.Component&#xA;properties font, foreground, and background.  If one of these&#xA;properties isn't initialized, or is explicitly set to null,&#xA;its container provides the value.  For this reason the&#xA;&lt;code>&quot;== null&quot;&lt;/code> is unreliable when installUI() is called&#xA;to dynamically change a components look and feel.  So at installUI()&#xA;time we check to see if the current value is a UIResource:&#xA;&lt;pre>&#xA;if (!(list.getFont() instanceof UIResource)) {&#xA;list.setFont(UIManager.getFont(&quot;List.font&quot;));&#xA;}&#xA;&lt;/pre>&#xA;&#xA;@see ComponentUI&#xA;@version 1.10 12/19/03&#xA;@author Hans Muller&#xA;&#xA;" annotatedElement="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="d5767086-974e-4f8d-8cc2-5dd6dabab339" name="metal">
              <packagedElement xmi:type="uml:Class" xmi:id="339edf17-5292-4cd8-8f24-9e0f531ac809" name="BumpBuffer" visibility="package"/>
              <packagedElement xmi:type="uml:Class" xmi:id="7b12516b-d32d-433b-bbe5-8ed921656348" name="MetalScrollButton">
                <ownedComment xmi:id="670fb4e1-96fd-4cdf-a717-4eb6bf708c40" body="JButton object for Metal scrollbar arrows.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.15 08/28/98&#xA;@author Tom Santos&#xA;@author Steve Wilson&#xA;" annotatedElement="7b12516b-d32d-433b-bbe5-8ed921656348"/>
                <generalization xmi:id="9c061a06-e857-4b86-8ee2-71998ad8df92" isSubstitutable="true" general="64f9054d-9608-4032-9681-25f2405ebdfe"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="3c22cdb6-2838-4a71-bff9-53da563a862e" name="MetalPopupMenuSeparatorUI">
                <ownedComment xmi:id="f8aa271d-8604-40c1-88b5-671d67b89385" body="A Metal L&amp;F implementation of PopupMenuSeparatorUI.  This implementation&#xA;is a &quot;combined&quot; view/controller.&#xA;&#xA;@version 1.8 12/19/03&#xA;@author Jeff Shapiro&#xA;" annotatedElement="3c22cdb6-2838-4a71-bff9-53da563a862e"/>
                <generalization xmi:id="19cee213-05e2-485f-ba3a-f71e1d667a7b" isSubstitutable="true" general="39f416d2-5f27-427a-b554-6fc45e1639c5"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="83deffd7-d353-4553-80f1-b9b5877aadb4" name="MetalBumps" visibility="package" clientDependency="8cea777e-032f-423f-8767-b11d14d10521">
                <ownedComment xmi:id="d604328b-991c-4757-bb03-926164116968" body="Implements the bumps used throughout the Metal Look and Feel.&#xA;&#xA;@version 1.25 12/19/03&#xA;@author Tom Santos&#xA;@author Steve Wilson&#xA;" annotatedElement="83deffd7-d353-4553-80f1-b9b5877aadb4"/>
                <interfaceRealization xmi:id="8cea777e-032f-423f-8767-b11d14d10521" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="83deffd7-d353-4553-80f1-b9b5877aadb4" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="d7298004-2c06-4911-bf41-c0c2c523d0b6" name="MetalComboBoxEditor">
                <ownedComment xmi:id="ff24b271-4975-4f34-b2f5-d90f331874b9" body="The default editor for Metal editable combo boxes&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.23 12/19/03&#xA;@author Steve Wilson&#xA;" annotatedElement="d7298004-2c06-4911-bf41-c0c2c523d0b6"/>
                <generalization xmi:id="901c5cfb-cbdd-4627-b4d0-fd02e9492865" isSubstitutable="true" general="40ff590a-0583-41cc-91dd-6c9739deefe2"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="3fe18d9d-0b7b-4292-b50e-e3620f3b1184" name="EditorBorder" visibility="package">
                  <generalization xmi:id="21d577ca-743d-4ee9-a736-f06d548619d6" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="9d723e37-7d2f-48ce-bb10-db542047fd80" name="UIResource" clientDependency="800582ed-3184-4290-bf6c-da7d0d235ab1">
                  <ownedComment xmi:id="590018a1-5d1b-4dd4-9d7a-59ae4d5237b9" body="A subclass of BasicComboBoxEditor that implements UIResource.&#xA;BasicComboBoxEditor doesn't implement UIResource&#xA;directly so that applications can safely override the&#xA;cellRenderer property with BasicListCellRenderer subclasses.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="9d723e37-7d2f-48ce-bb10-db542047fd80"/>
                  <generalization xmi:id="7cb25f80-b950-473e-869a-bc3248443b8c" isSubstitutable="true" general="d7298004-2c06-4911-bf41-c0c2c523d0b6"/>
                  <interfaceRealization xmi:id="800582ed-3184-4290-bf6c-da7d0d235ab1" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="9d723e37-7d2f-48ce-bb10-db542047fd80" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6df18188-f6d5-4b56-8922-63aca160e977" name="MetalComboBoxButton">
                <ownedComment xmi:id="cad6b728-9ecf-4cda-8a21-4523b92fddf7" body="JButton subclass to help out MetalComboBoxUI&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see MetalComboBoxButton&#xA;@version 1.38 12/19/03&#xA;@author Tom Santos&#xA;" annotatedElement="6df18188-f6d5-4b56-8922-63aca160e977"/>
                <generalization xmi:id="d26245d8-508c-4e8a-bb6d-b14fa7caec1c" isSubstitutable="true" general="1c2f22f0-8bbd-4e4b-915e-ea57b72df83b"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="77abdadf-e8dc-4926-be1a-0d1d28b15fda" name="MetalTheme" isAbstract="true">
                <ownedComment xmi:id="4ad0e9c1-86ad-4099-abda-0a3006041750" body="This abstract class acts as a generic way to describe the colors&#xA;used by Metal.  Subclasses of &lt;code>MetalTheme&lt;/code> can&#xA;be used to swap the colors in a Metal application.&#xA;&#xA;@version 1.27 12/19/03&#xA;@author Steve Wilson&#xA;" annotatedElement="77abdadf-e8dc-4926-be1a-0d1d28b15fda"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6a20f978-c63a-47b1-b28b-a1f5217445b5" name="MetalProgressBarUI">
                <ownedComment xmi:id="43c17f0f-5a04-4406-8fa2-ada72cec1cca" body="The Metal implementation of ProgressBarUI.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.26 12/19/03&#xA;@author Michael C. Albers&#xA;" annotatedElement="6a20f978-c63a-47b1-b28b-a1f5217445b5"/>
                <generalization xmi:id="958494f6-2e03-493d-9983-048342d75e26" isSubstitutable="true" general="e4c2ea1e-8721-4bb2-91e3-e5a626963837"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="8bd3f1a9-7364-42e0-a7f4-437a612e57fc" name="MetalBorders">
                <ownedComment xmi:id="d5c289c5-ebb1-4b04-8d29-966b3932c61c" body="Factory object that can vend Borders appropriate for the metal L &amp; F.&#xA;@author Steve Wilson&#xA;@version 1.39 04/16/04&#xA;" annotatedElement="8bd3f1a9-7364-42e0-a7f4-437a612e57fc"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="b8d0105f-36f9-40da-9753-3a173932c046" name="Flush3DBorder" clientDependency="80cbbbb7-f643-493a-925e-582b448c1ed5">
                  <generalization xmi:id="064f78d2-6f60-41cc-a959-eb3aaba0f57f" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                  <interfaceRealization xmi:id="80cbbbb7-f643-493a-925e-582b448c1ed5" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="b8d0105f-36f9-40da-9753-3a173932c046" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="8c06bb87-ae0d-4155-812c-22808f7fda4a" name="ButtonBorder" clientDependency="4d4b58b3-b090-45fe-81ba-230c8b4ec4a5">
                  <generalization xmi:id="2e9acec4-b13d-4543-8499-fba9d1a03795" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                  <interfaceRealization xmi:id="4d4b58b3-b090-45fe-81ba-230c8b4ec4a5" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="8c06bb87-ae0d-4155-812c-22808f7fda4a" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="f836bfdb-2b98-4773-91d6-83325f212a19" name="InternalFrameBorder" clientDependency="2f2d9d40-7467-4252-9b41-c9b17464a3ed">
                  <generalization xmi:id="d569aa3c-295f-4dbe-8a47-3055d996bf16" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                  <interfaceRealization xmi:id="2f2d9d40-7467-4252-9b41-c9b17464a3ed" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="f836bfdb-2b98-4773-91d6-83325f212a19" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="adec36d7-6424-422c-8b85-e20960db2dcf" name="FrameBorder" visibility="package" clientDependency="fc3833dd-3aee-453e-ad0e-534a93ba7f50">
                  <ownedComment xmi:id="138ada0e-ea16-41c9-ab4a-e338aa8fc383" body="Border for a Frame.&#xA;@since 1.4&#xA;" annotatedElement="adec36d7-6424-422c-8b85-e20960db2dcf"/>
                  <generalization xmi:id="9fa1bd51-c45f-4e2a-9b5d-ac37c9615534" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                  <interfaceRealization xmi:id="fc3833dd-3aee-453e-ad0e-534a93ba7f50" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="adec36d7-6424-422c-8b85-e20960db2dcf" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="0eeeed0a-69f6-4398-90fd-4799d722ddb0" name="DialogBorder" visibility="package" clientDependency="79a0cb80-36a0-49d3-bb21-f086928a80ff">
                  <ownedComment xmi:id="79bb685c-84cd-49e5-9b71-6a02021dcf19" body="Border for a Frame.&#xA;@since 1.4&#xA;" annotatedElement="0eeeed0a-69f6-4398-90fd-4799d722ddb0"/>
                  <generalization xmi:id="f4d03222-167e-4227-a288-022f864985ae" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                  <interfaceRealization xmi:id="79a0cb80-36a0-49d3-bb21-f086928a80ff" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="0eeeed0a-69f6-4398-90fd-4799d722ddb0" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="933208f4-4115-4190-b85a-3ed2df7b0a2c" name="ErrorDialogBorder" visibility="package" clientDependency="a78eff98-7ee6-4e13-b5fa-bfa22c8b77bc">
                  <ownedComment xmi:id="929e9d70-feb1-4a8b-9396-4781a60dc4f2" body="Border for an Error Dialog.&#xA;@since 1.4&#xA;" annotatedElement="933208f4-4115-4190-b85a-3ed2df7b0a2c"/>
                  <generalization xmi:id="a6528fca-b979-4e48-84ae-163ecd8c7a4a" isSubstitutable="true" general="0eeeed0a-69f6-4398-90fd-4799d722ddb0"/>
                  <interfaceRealization xmi:id="a78eff98-7ee6-4e13-b5fa-bfa22c8b77bc" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="933208f4-4115-4190-b85a-3ed2df7b0a2c" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="9924a899-c021-4957-8589-c4354a7fbfed" name="QuestionDialogBorder" visibility="package" clientDependency="dd77d0f7-0f6e-4728-ac06-a3378a6f6ea8">
                  <ownedComment xmi:id="a69dad69-36fa-4bcb-8f5d-8eafa2e58a00" body="Border for a QuestionDialog.  Also used for a JFileChooser and a&#xA;JColorChooser..&#xA;@since 1.4&#xA;" annotatedElement="9924a899-c021-4957-8589-c4354a7fbfed"/>
                  <generalization xmi:id="ff2a1ad3-c2cf-4c9d-a92e-60958f1dce8d" isSubstitutable="true" general="0eeeed0a-69f6-4398-90fd-4799d722ddb0"/>
                  <interfaceRealization xmi:id="dd77d0f7-0f6e-4728-ac06-a3378a6f6ea8" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="9924a899-c021-4957-8589-c4354a7fbfed" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c8ad16ef-3211-4992-9683-8bc5d15da5cd" name="WarningDialogBorder" visibility="package" clientDependency="82ccc0aa-3fd7-481d-8887-6d970da40bf0">
                  <ownedComment xmi:id="3143a7a1-743e-4434-a6ae-cadd4fe3f200" body="Border for a Warning Dialog.&#xA;@since 1.4&#xA;" annotatedElement="c8ad16ef-3211-4992-9683-8bc5d15da5cd"/>
                  <generalization xmi:id="ee674002-5e78-406a-b42b-0419f6d4e2b3" isSubstitutable="true" general="0eeeed0a-69f6-4398-90fd-4799d722ddb0"/>
                  <interfaceRealization xmi:id="82ccc0aa-3fd7-481d-8887-6d970da40bf0" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="c8ad16ef-3211-4992-9683-8bc5d15da5cd" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="14913f0d-12b5-4fef-a3bd-ce2854d6c203" name="PaletteBorder" clientDependency="0fab55d4-c5cc-4280-9b5e-2727787ee40b">
                  <ownedComment xmi:id="ed86144a-594c-4a3e-ac32-4f4366590dba" body="Border for a Palette.&#xA;@since 1.3&#xA;" annotatedElement="14913f0d-12b5-4fef-a3bd-ce2854d6c203"/>
                  <generalization xmi:id="ffce1d38-b711-4bdb-b08c-fed647ce61da" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                  <interfaceRealization xmi:id="0fab55d4-c5cc-4280-9b5e-2727787ee40b" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="14913f0d-12b5-4fef-a3bd-ce2854d6c203" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e9b7c8c0-a879-439d-a69a-eab47f9782a3" name="OptionDialogBorder" clientDependency="640d459a-eb05-4b4a-a72c-09215b1b54a6">
                  <generalization xmi:id="620fa20a-377b-4337-b997-89b322a749b8" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                  <interfaceRealization xmi:id="640d459a-eb05-4b4a-a72c-09215b1b54a6" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="e9b7c8c0-a879-439d-a69a-eab47f9782a3" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="9acdf7d9-d657-4aa5-a678-bce9035c6f9d" name="MenuBarBorder" clientDependency="48a4a6d4-6922-45af-a1e1-28a29e349dbf">
                  <generalization xmi:id="4c75e39a-6469-400b-8cb4-e61549df4abb" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                  <interfaceRealization xmi:id="48a4a6d4-6922-45af-a1e1-28a29e349dbf" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="9acdf7d9-d657-4aa5-a678-bce9035c6f9d" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="23f6f650-6fd8-4852-8c03-72c21425c851" name="MenuItemBorder" clientDependency="ac75b0dc-3c55-4111-943f-cf23ae894ccf">
                  <generalization xmi:id="54253282-5916-45f6-9d09-99b7ed00ada0" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                  <interfaceRealization xmi:id="ac75b0dc-3c55-4111-943f-cf23ae894ccf" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="23f6f650-6fd8-4852-8c03-72c21425c851" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="308c8d55-07c9-4906-901f-2185c002e1f1" name="PopupMenuBorder" clientDependency="d17ad54c-2dfc-4e9b-b39e-40e7f0505bf5">
                  <generalization xmi:id="b87a8d87-a14b-4c9c-bff6-d796537398de" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                  <interfaceRealization xmi:id="d17ad54c-2dfc-4e9b-b39e-40e7f0505bf5" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="308c8d55-07c9-4906-901f-2185c002e1f1" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="0d42e8f7-5648-43a6-99ec-c88d3a2a029c" name="RolloverButtonBorder">
                  <generalization xmi:id="a91f1ed3-8d82-497e-8e48-edc3bb5d2094" isSubstitutable="true" general="8c06bb87-ae0d-4155-812c-22808f7fda4a"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="33a91615-c7e4-42fb-92de-227bf4d31afc" name="RolloverMarginBorder" visibility="package">
                  <ownedComment xmi:id="db8d5541-598e-45df-be2e-2928deb6ef3e" body="A border which is like a Margin border but it will only honor the margin&#xA;if the margin has been explicitly set by the developer.&#xA;&#xA;Note: This is identical to the package private class&#xA;BasicBorders.RolloverMarginBorder and should probably be consolidated.&#xA;" annotatedElement="33a91615-c7e4-42fb-92de-227bf4d31afc"/>
                  <generalization xmi:id="0f2d4109-28b1-4e4e-be71-99ec7a41ad45" isSubstitutable="true" general="ba1d8083-a97f-4414-80bf-1b4e4b806277"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="0bebec67-2f7d-454b-8568-a2f83d440d5d" name="ToolBarBorder" clientDependency="8004deba-cafa-418a-8b2c-bcbd15c9315f eecede40-2f21-411a-9b32-e73dc8585cc8">
                  <generalization xmi:id="077da5ee-c0cd-410c-a090-c2a506052d87" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                  <interfaceRealization xmi:id="8004deba-cafa-418a-8b2c-bcbd15c9315f" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="0bebec67-2f7d-454b-8568-a2f83d440d5d" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="eecede40-2f21-411a-9b32-e73dc8585cc8" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="0bebec67-2f7d-454b-8568-a2f83d440d5d" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a824b408-5a27-49f2-828d-36f5d64efffd" name="TextFieldBorder">
                  <generalization xmi:id="7a0afd4e-3a5e-4959-8995-842f0debc1da" isSubstitutable="true" general="b8d0105f-36f9-40da-9753-3a173932c046"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="aafe5a50-b12d-4546-8d58-6df55778902f" name="ScrollPaneBorder" clientDependency="b4a4bfd7-7bc5-4173-9d04-f678ec5ab354">
                  <generalization xmi:id="9257390e-ad0e-46f9-b1c8-135f78cd9985" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                  <interfaceRealization xmi:id="b4a4bfd7-7bc5-4173-9d04-f678ec5ab354" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="aafe5a50-b12d-4546-8d58-6df55778902f" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1a558d6e-573c-4fbf-92b9-8c376be0337a" name="ToggleButtonBorder">
                  <ownedComment xmi:id="05d8edab-77ba-4236-9032-0f04c7c41575" body="@since 1.3&#xA;" annotatedElement="1a558d6e-573c-4fbf-92b9-8c376be0337a"/>
                  <generalization xmi:id="3dfcc595-0045-4142-b69e-fc87eac3d7cd" isSubstitutable="true" general="8c06bb87-ae0d-4155-812c-22808f7fda4a"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="482f1fbf-880b-4408-ba6c-d391bba3a9be" name="TableHeaderBorder">
                  <ownedComment xmi:id="7c46f1c7-44e6-4483-ada2-2a13b3b2076a" body="Border for a Table Header&#xA;@since 1.3&#xA;" annotatedElement="482f1fbf-880b-4408-ba6c-d391bba3a9be"/>
                  <generalization xmi:id="4e93d2fe-347f-4f87-9b0a-a4098e39264a" isSubstitutable="true" general="3dc01fa3-d79e-404b-a1b0-7c03864f4204"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="fd7e9104-eda5-49c0-ae57-06fb888f314a" name="MetalScrollBarUI">
                <ownedComment xmi:id="60657396-e82d-4d0a-a624-4b4915176fa1" body="Implementation of ScrollBarUI for the Metal Look and Feel&#xA;&lt;p>&#xA;&#xA;@version 1.21 08/26/98&#xA;@author Tom Santos&#xA;@author Steve Wilson&#xA;" annotatedElement="fd7e9104-eda5-49c0-ae57-06fb888f314a"/>
                <generalization xmi:id="b9841a6e-741a-478d-b68d-41e0e420d92b" isSubstitutable="true" general="f53a63fa-b154-4792-97d7-8488efbcc67b"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="7164e9a4-71d5-4fea-9f2a-ac246b204a0e" name="ScrollBarListener" visibility="package">
                  <generalization xmi:id="d0f39a5d-bbe1-4d63-bef7-2b75275a6103" isSubstitutable="true" general="a16d6321-8c60-4ccc-8c2f-2246937840d0"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="09df1d01-88e3-4630-be15-4cfc1f7dc252" name="MetalRootPaneUI">
                <ownedComment xmi:id="a4351b4b-5259-47b3-885a-01e440204a9d" body="Provides the metal look and feel implementation of &lt;code>RootPaneUI&lt;/code>.&#xA;&lt;p>&#xA;&lt;code>MetalRootPaneUI&lt;/code> provides support for the&#xA;&lt;code>windowDecorationStyle&lt;/code> property of &lt;code>JRootPane&lt;/code>.&#xA;&lt;code>MetalRootPaneUI&lt;/code> does this by way of installing a custom&#xA;&lt;code>LayoutManager&lt;/code>, a private &lt;code>Component&lt;/code> to render&#xA;the appropriate widgets, and a private &lt;code>Border&lt;/code>. The&#xA;&lt;code>LayoutManager&lt;/code> is always installed, regardless of the value of&#xA;the &lt;code>windowDecorationStyle&lt;/code> property, but the&#xA;&lt;code>Border&lt;/code> and &lt;code>Component&lt;/code> are only installed/added if&#xA;the &lt;code>windowDecorationStyle&lt;/code> is other than&#xA;&lt;code>JRootPane.NONE&lt;/code>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.20 04/27/04&#xA;@author Terry Kellerman&#xA;@since 1.4&#xA;" annotatedElement="09df1d01-88e3-4630-be15-4cfc1f7dc252"/>
                <generalization xmi:id="cdc5c321-c444-4eae-b21c-bb0f8300a87f" isSubstitutable="true" general="b40f5b3c-0ff2-45dd-b2b7-9a64bf704473"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="062e5a00-a0b8-4f1d-9f47-d563ee86f61c" name="MetalRootLayout" visibility="private" clientDependency="1daef133-8c3b-4858-bf76-7f9d3cc2c178">
                  <ownedComment xmi:id="13afc4c6-f3ad-482e-b31a-67ac43657513" body="A custom layout manager that is responsible for the layout of&#xA;layeredPane, glassPane, menuBar and titlePane, if one has been&#xA;installed.&#xA;" annotatedElement="062e5a00-a0b8-4f1d-9f47-d563ee86f61c"/>
                  <interfaceRealization xmi:id="1daef133-8c3b-4858-bf76-7f9d3cc2c178" name="" supplier="a42fe497-3d64-40e3-8aae-e48bec8b7d93" client="062e5a00-a0b8-4f1d-9f47-d563ee86f61c" contract="a42fe497-3d64-40e3-8aae-e48bec8b7d93"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="b6402dbf-e716-4974-aacb-71f0554bcbda" name="MouseInputHandler" visibility="private" clientDependency="08c67dbe-9002-4d71-8e9c-a3765848920a">
                  <ownedComment xmi:id="c968343b-4e0c-45ee-890c-6cfb85fe2f36" body="MouseInputHandler is responsible for handling resize/moving of&#xA;the Window. It sets the cursor directly on the Window when then&#xA;mouse moves over a hot spot.&#xA;" annotatedElement="b6402dbf-e716-4974-aacb-71f0554bcbda"/>
                  <interfaceRealization xmi:id="08c67dbe-9002-4d71-8e9c-a3765848920a" name="" supplier="361ca981-29c8-430f-b1a4-fa3e692a1955" client="b6402dbf-e716-4974-aacb-71f0554bcbda" contract="361ca981-29c8-430f-b1a4-fa3e692a1955"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="796b7552-1edf-4b12-9a34-8a50bc92746b" name="MetalHighContrastTheme" visibility="package">
                <ownedComment xmi:id="86b0cd80-f3b5-4173-9332-fac578116fcd" body="A high contrast theme. This is used on Windows if the system property&#xA;awt.highContrast.on is true.&#xA;&#xA;@version @(#)MetalHighContrastTheme.java&#x9;1.4 03/12/19&#xA;@author Michael C. Albers&#xA;" annotatedElement="796b7552-1edf-4b12-9a34-8a50bc92746b"/>
                <generalization xmi:id="f331c1e1-1da3-4f05-9b72-ac51cd2524a8" isSubstitutable="true" general="6a4ce456-686d-4596-b18b-33cbe69c70aa"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="95053829-294e-4225-b7c5-8818adc4076e" name="MetalToolBarUI">
                <ownedComment xmi:id="cf7e6e80-960a-4656-b496-8de63bd85661" body="A Metal Look and Feel implementation of ToolBarUI.  This implementation&#xA;is a &quot;combined&quot; view/controller.&#xA;&lt;p>&#xA;&#xA;@version 1.39 12/19/03&#xA;@author Jeff Shapiro&#xA;" annotatedElement="95053829-294e-4225-b7c5-8818adc4076e"/>
                <generalization xmi:id="396a3966-1824-4b5d-b2c5-408dd25db072" isSubstitutable="true" general="52ed3c1b-54fe-454b-b1b3-19ef6485c306"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="4192cd3d-2ee5-4119-b85d-fc4a5d52b1ed" name="MetalContainerListener" visibility="protected">
                  <generalization xmi:id="9e565d3f-8133-4c8b-ac3f-fe4366eaf48f" isSubstitutable="true" general="c8cfad4e-5ac4-4dae-ab43-44b5a18a1c79"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="2d49d6f3-6411-4493-823c-e42273667db6" name="MetalRolloverListener" visibility="protected">
                  <generalization xmi:id="2a78be82-dc0e-45c8-b05a-a2d9a1a25d5e" isSubstitutable="true" general="4a41ea30-f34b-45fb-84b8-7cbe47106af0"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="50399a28-f32b-4076-9774-7b0c2e9e2fe7" name="MetalDockingListener" visibility="protected">
                  <generalization xmi:id="e566777d-1139-40e2-9818-f176d3df1dcc" isSubstitutable="true" general="ad765476-ba03-4a59-8e61-a1b04d50859a"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="370a3cd4-ce23-4276-a8db-c8ef5f6e48ea" name="MetalCheckBoxUI">
                <ownedComment xmi:id="3f4ecc6f-4c5e-485a-bad0-07dcebb73bb2" body="CheckboxUI implementation for MetalCheckboxUI&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.18 12/19/03&#xA;@author Michael C. Albers&#xA;&#xA;" annotatedElement="370a3cd4-ce23-4276-a8db-c8ef5f6e48ea"/>
                <generalization xmi:id="a0349ba7-b921-4c18-b6e4-3546d5cecd3c" isSubstitutable="true" general="6c85645a-9b5a-4518-abda-eb4d83bcdd51"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="1fc93977-df4c-49a5-a09d-9ff9df705b68" name="MetalDesktopIconUI">
                <ownedComment xmi:id="050ca74b-03f5-4f47-a731-e4609b155561" body="Metal desktop icon.&#xA;&#xA;@version 1.21 12/19/03&#xA;@author Steve Wilson&#xA;" annotatedElement="1fc93977-df4c-49a5-a09d-9ff9df705b68"/>
                <generalization xmi:id="b79770dc-1c8f-4226-894e-bddc05a40276" isSubstitutable="true" general="e0d14b0e-c37c-46a0-a23a-6790de5717ee"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6fc68731-f1cb-44a4-89b3-ff4e83cbaa57" name="TitleListener" visibility="package" clientDependency="1953c201-aa51-44bc-8c59-fc2cfc77ea71">
                  <interfaceRealization xmi:id="1953c201-aa51-44bc-8c59-fc2cfc77ea71" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="6fc68731-f1cb-44a4-89b3-ff4e83cbaa57" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="4311f6f5-bdac-472c-93d7-dcd9603b8ea5" name="MetalInternalFrameUI">
                <ownedComment xmi:id="2884fa45-b9c9-435f-8331-a4c0baacade3" body="Metal implementation of JInternalFrame.&#xA;&lt;p>&#xA;&#xA;@version 1.30 12/19/03&#xA;@author Steve Wilson&#xA;" annotatedElement="4311f6f5-bdac-472c-93d7-dcd9603b8ea5"/>
                <generalization xmi:id="20beca4f-fa03-4e9e-b4bf-5e0f5851158f" isSubstitutable="true" general="b07677d9-84a3-40cc-8dd6-839e91b449b5"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="4605e3a4-f2b7-49eb-9960-e12fd6e5def5" name="MetalPropertyChangeHandler" visibility="private" clientDependency="52bc4c6a-d656-4e11-9594-2ad94576bf5c">
                  <interfaceRealization xmi:id="52bc4c6a-d656-4e11-9594-2ad94576bf5c" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="4605e3a4-f2b7-49eb-9960-e12fd6e5def5" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="44bc8172-a066-4952-ab17-c66fbee9a817" name="MetalCheckBoxIcon" clientDependency="df9ff818-f9ae-48a9-afbf-3377ff7e1578 1bdd8615-6d68-4098-a492-a4321626124e 31f51d3e-73d5-4cc6-aadc-8a51a932d814">
                <ownedComment xmi:id="a438f4dc-bbad-45cd-a77a-effad04e93e0" body="CheckboxIcon implementation for OrganicCheckBoxUI&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.17 12/19/03&#xA;@author Steve Wilson&#xA;" annotatedElement="44bc8172-a066-4952-ab17-c66fbee9a817"/>
                <interfaceRealization xmi:id="df9ff818-f9ae-48a9-afbf-3377ff7e1578" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="44bc8172-a066-4952-ab17-c66fbee9a817" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                <interfaceRealization xmi:id="1bdd8615-6d68-4098-a492-a4321626124e" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="44bc8172-a066-4952-ab17-c66fbee9a817" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                <interfaceRealization xmi:id="31f51d3e-73d5-4cc6-aadc-8a51a932d814" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="44bc8172-a066-4952-ab17-c66fbee9a817" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="a6460f8a-3254-4e8e-8b1e-a654c6fad3fb" name="CachedPainter" visibility="package" isAbstract="true">
                <ownedComment xmi:id="771330cf-0044-466a-860a-fbca3ee66292" body="A base class used for icons or images that are expensive to paint.&#xA;A subclass will do the following:&#xA;&lt;ol>&#xA;&lt;li>Invoke &lt;code>paint&lt;/code> when you want to paint the image,&#xA;if you are implementing &lt;code>Icon&lt;/code> you'll invoke this from&#xA;&lt;code>paintIcon&lt;/code>.&#xA;The args argument is useful when additional state is needed.&#xA;&lt;li>Override &lt;code>paintToImage&lt;/code> to render the image.  The code that&#xA;lives here is equivalent to what previously would go in&#xA;&lt;code>paintIcon&lt;/code>, for an &lt;code>Icon&lt;/code>.&#xA;&lt;/ol>&#xA;&#xA;@version @(#)CachedPainter.java&#x9;1.2 04/02/15&#xA;" annotatedElement="a6460f8a-3254-4e8e-8b1e-a654c6fad3fb"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1bd5039b-2d0c-45ed-a8f1-49dc82525487" name="Cache" visibility="private">
                  <ownedComment xmi:id="abd8ed58-6827-4cc7-acd1-db4cb7ab61d8" body="Cache is used to cache an image based on a set of arguments.&#xA;" annotatedElement="1bd5039b-2d0c-45ed-a8f1-49dc82525487"/>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="efd7e9cd-3e61-4a40-b817-c3a3f5fdc146" name="Entry" visibility="private">
                    <ownedComment xmi:id="2e33ffe3-ae32-4c0d-afce-9b4b6c3e9e16" body="Caches set of arguments and Image.&#xA;" annotatedElement="efd7e9cd-3e61-4a40-b817-c3a3f5fdc146"/>
                  </nestedClassifier>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="fe8eb35f-f0c8-40c6-8a72-0ff6a828bc5f" name="MetalButtonUI">
                <ownedComment xmi:id="72e6d455-3938-41ff-b775-4f5d2704965c" body="MetalButtonUI implementation&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.37 04/02/04&#xA;@author Tom Santos&#xA;" annotatedElement="fe8eb35f-f0c8-40c6-8a72-0ff6a828bc5f"/>
                <generalization xmi:id="7184a059-87c3-4e3a-8667-ce83682edec2" isSubstitutable="true" general="0cfb21d8-f918-4a7d-95e6-fb09f0d6f858"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="799bf667-c656-43a3-b8f0-2f0cebcccc6d" name="MetalToggleButtonUI">
                <ownedComment xmi:id="d811e7b5-9507-424d-a5f9-2ab11109bbee" body="MetalToggleButton implementation&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.28 04/02/04&#xA;@author Tom Santos&#xA;" annotatedElement="799bf667-c656-43a3-b8f0-2f0cebcccc6d"/>
                <generalization xmi:id="9b469d58-b622-4429-920f-8eda87585cd6" isSubstitutable="true" general="eae58b78-886e-4dd6-8ec4-8b7e1c3572d9"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="a87e3e32-b61c-49ab-a90e-799d51cfbdf2" name="MetalLabelUI">
                <ownedComment xmi:id="9253a796-51d0-49c8-ba8f-cc85a6599e49" body="A Windows L&amp;F implementation of LabelUI.  This implementation&#xA;is completely static, i.e. there's only one UIView implementation&#xA;that's shared by all JLabel objects.&#xA;&#xA;@version 1.12 12/19/03&#xA;@author Hans Muller&#xA;" annotatedElement="a87e3e32-b61c-49ab-a90e-799d51cfbdf2"/>
                <generalization xmi:id="9dc027b7-4125-48dd-8145-7e745d9b6b6b" isSubstitutable="true" general="58c4042d-5b6a-4562-933e-f16d310c42d8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="ce2eca74-5a7e-49be-b129-ebdbddac0c0c" name="OceanTheme">
                <ownedComment xmi:id="29e12ab2-3f6a-4ef8-ad8b-88cfa96d8d28" body="This class provides an updated look for applications using&#xA;&lt;code>MetalLookAndFeel&lt;code>. The designers of the Metal&#xA;Look and Feel strive to keep the default look up to date,&#xA;possibly through the use of new themes in the future.&#xA;Therefore, developers should only use this class directly&#xA;when they wish to customize the &quot;Ocean&quot; look, or force&#xA;it to be the current theme, regardless of future updates.&#xA;&#xA;@version 1.13 03/17/04&#xA;@since 1.5&#xA;@see MetalLookAndFeel#setCurrentTheme&#xA;" annotatedElement="ce2eca74-5a7e-49be-b129-ebdbddac0c0c"/>
                <generalization xmi:id="139233dd-df39-4d64-820e-9ebb36490608" isSubstitutable="true" general="6a4ce456-686d-4596-b18b-33cbe69c70aa"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="72c35497-2da4-4e5c-8600-c9ad57fbf9b1" name="COIcon" visibility="private">
                  <generalization xmi:id="6f7fef0a-4561-43aa-a9ab-0cd04ad73b9b" isSubstitutable="true" general="03158fac-4f1c-4c62-b0ac-0ba2f4963a85"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="eb2b3eaa-6e9e-4328-bae1-c70ba67382df" name="IFIcon" visibility="private">
                  <generalization xmi:id="22c27762-5035-4f98-8b69-a5be31f4ddc7" isSubstitutable="true" general="03158fac-4f1c-4c62-b0ac-0ba2f4963a85"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="5e6b8f4e-e988-4f47-9049-46bbfcebb413" name="MetalTextFieldUI">
                <ownedComment xmi:id="6845f0a9-ba4f-4ee9-b5df-9853514b6199" body="Basis of a look and feel for a JTextField.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author  Steve Wilson&#xA;@version 1.15 12/19/03&#xA;" annotatedElement="5e6b8f4e-e988-4f47-9049-46bbfcebb413"/>
                <generalization xmi:id="d784ccb5-40b6-4ca9-849f-2ca321153b1f" isSubstitutable="true" general="289b701d-6a86-42ec-8cfb-29415722efca"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="b5b45501-ac97-4e7e-8d4e-b8ce90d8575d" name="MetalFontDesktopProperty" visibility="package">
                <ownedComment xmi:id="8d753cfc-a254-455a-80f3-210e3bcb1144" body="DesktopProperty that only uses font height in configuring font. This&#xA;is only used on Windows.&#xA;&#xA;@version @(#)MetalFontDesktopProperty.java&#x9;1.4 03/12/19&#xA;" annotatedElement="b5b45501-ac97-4e7e-8d4e-b8ce90d8575d"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="1338804c-a72f-4dda-9740-340d046040b6" name="MetalScrollPaneUI">
                <ownedComment xmi:id="49a8c326-820d-4df1-b932-fc125d999be5" body="A Metal L&amp;F implementation of ScrollPaneUI.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.19 12/19/03&#xA;@author Steve Wilson&#xA;" annotatedElement="1338804c-a72f-4dda-9740-340d046040b6"/>
                <generalization xmi:id="ca1a5450-bf9c-4347-aba1-332622b40178" isSubstitutable="true" general="f17d9947-808a-4ef4-ae5f-c6b4ab225088"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="a8237271-a3dc-4a95-a7a8-53630c5f5bc7" name="MetalTabbedPaneUI">
                <ownedComment xmi:id="18d28793-18ff-4276-b988-36ab62436a22" body="The Metal subclass of BasicTabbedPaneUI.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.19 08/28/98&#xA;@author Tom Santos&#xA;" annotatedElement="a8237271-a3dc-4a95-a7a8-53630c5f5bc7"/>
                <generalization xmi:id="6b007fd1-8816-4373-b408-217cca69e2a7" isSubstitutable="true" general="8b7b7f09-514c-45c3-8000-35e658d3a600"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="42e817b6-8ecc-4204-9b23-bbd37d29f5ee" name="TabbedPaneLayout">
                  <ownedComment xmi:id="33281aa1-6971-42b8-9e9e-e696fd8a4a5e" body="This inner class is marked &quot;public&quot; due to a compiler bug.&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of MetalTabbedPaneUI.&#xA;" annotatedElement="42e817b6-8ecc-4204-9b23-bbd37d29f5ee"/>
                  <generalization xmi:id="d03e2757-602c-4b7e-9e38-a569302d01b9" isSubstitutable="true" general="63ec4de8-7ef6-4823-9b62-ddcc4691f63e"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="de777a2c-498a-41ab-aa5a-c313183394e4" name="MetalSliderUI">
                <ownedComment xmi:id="1e5cdc44-b32a-437c-ac4a-1a7265a3a0ab" body="A Java L&amp;F implementation of SliderUI.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.34 12/19/03&#xA;@author Tom Santos&#xA;" annotatedElement="de777a2c-498a-41ab-aa5a-c313183394e4"/>
                <generalization xmi:id="1c7f9be7-f650-43f1-a78e-6b91c31ae206" isSubstitutable="true" general="55d64e34-c8d2-4314-9357-2eaef0cd1c76"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="d37b3f96-692f-4a58-96d3-aa9f60ddf926" name="MetalPropertyListener" visibility="protected">
                  <generalization xmi:id="db4389c6-46d0-4184-b4a6-6332d27673b5" isSubstitutable="true" general="828dc8bc-6415-4595-ae6d-e30ade1a685c"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="b6038ff3-cf1d-465d-9e64-8ca72904a03e" name="MetalComboBoxIcon" clientDependency="cc999be6-5a3e-40fd-9592-b138d95d6350 69fff867-d32f-4b1e-873a-fcdda551854b">
                <ownedComment xmi:id="20898b89-4ae0-42b8-af94-77e61b24b847" body="This utility class draws the horizontal bars which indicate a MetalComboBox&#xA;&#xA;@see MetalComboBoxUI&#xA;@version 1.13 12/19/03&#xA;@author Tom Santos&#xA;" annotatedElement="b6038ff3-cf1d-465d-9e64-8ca72904a03e"/>
                <interfaceRealization xmi:id="cc999be6-5a3e-40fd-9592-b138d95d6350" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="b6038ff3-cf1d-465d-9e64-8ca72904a03e" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                <interfaceRealization xmi:id="69fff867-d32f-4b1e-873a-fcdda551854b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="b6038ff3-cf1d-465d-9e64-8ca72904a03e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="532fe5e2-d468-4f02-80fe-1b190b397f0a" name="MetalTreeUI">
                <ownedComment xmi:id="58d604a4-49f0-4dcb-a4c2-431c8c1b4825" body="The metal look and feel implementation of &lt;code>TreeUI&lt;/code>.&#xA;&lt;p>&#xA;&lt;code>MetalTreeUI&lt;/code> allows for configuring how to&#xA;visually render the spacing and delineation between nodes. The following&#xA;hints are supported:&#xA;&#xA;&lt;table summary=&quot;Descriptions of supported hints: Angled, Horizontal, and None&quot;>&#xA;&lt;tr>&#xA;&lt;th>&lt;p align=&quot;left&quot;>Angled&lt;/p>&lt;/th>&#xA;&lt;td>A line is drawn connecting the child to the parent. For handling&#xA;of the root node refer to&#xA;{@link javax.swing.JTree#setRootVisible} and&#xA;{@link javax.swing.JTree#setShowsRootHandles}.&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;th>&lt;p align=&quot;left&quot;>Horizontal&lt;/p>&lt;/th>&#xA;&lt;td>A horizontal line is drawn dividing the children of the root node.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;th>&lt;p align=&quot;left&quot;>None&lt;/p>&lt;/th>&#xA;&lt;td>Do not draw any visual indication between nodes.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&#xA;&lt;p>&#xA;As it is typically impratical to obtain the &lt;code>TreeUI&lt;/code> from&#xA;the &lt;code>JTree&lt;/code> and cast to an instance of &lt;code>MetalTreeUI&lt;/code>&#xA;you enable this property via the client property&#xA;&lt;code>JTree.lineStyle&lt;/code>. For example, to switch to&#xA;&lt;code>Horizontal&lt;/code> style you would do:&#xA;&lt;code>tree.putClientProperty(&quot;JTree.lineStyle&quot;, &quot;Horizontal&quot;);&lt;/code>&#xA;&lt;p>&#xA;The default is &lt;code>Angled&lt;/code>.&#xA;&#xA;@version 1.23 12/19/03&#xA;@author Tom Santos&#xA;@author Steve Wilson (value add stuff)&#xA;" annotatedElement="532fe5e2-d468-4f02-80fe-1b190b397f0a"/>
                <generalization xmi:id="6491f045-c110-4668-8a2b-4f47aec3a63f" isSubstitutable="true" general="4b94df5f-a9e3-466e-bcb7-7ab951d3253c"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="72683b13-06fb-4334-870d-883116fd0842" name="LineListener" visibility="package" clientDependency="b8355632-5dbc-4e7a-aa51-45709ff0ff14">
                  <ownedComment xmi:id="60515c2b-10ac-4fea-81f0-fcd1b987f60d" body="This class listens for changes in line style" annotatedElement="72683b13-06fb-4334-870d-883116fd0842"/>
                  <interfaceRealization xmi:id="b8355632-5dbc-4e7a-aa51-45709ff0ff14" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="72683b13-06fb-4334-870d-883116fd0842" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="27d77f94-58b1-4e25-988c-c122354d9177" name="MetalButtonListener" visibility="package"/>
              <packagedElement xmi:type="uml:Class" xmi:id="e3afe412-a9a0-4f79-9158-644cae13c0c4" name="MetalMenuBarUI">
                <ownedComment xmi:id="6fbd44c5-eb96-4c47-9a66-ed7fd78e5639" body="Metal implementation of &lt;code>MenuBarUI&lt;/code>. This class is responsible&#xA;for providing the metal look and feel for &lt;code>JMenuBar&lt;/code>s.&#xA;&#xA;@version 1.5 12/19/03&#xA;@see javax.swing.plaf.MenuBarUI&#xA;@since 1.5&#xA;" annotatedElement="e3afe412-a9a0-4f79-9158-644cae13c0c4"/>
                <generalization xmi:id="16556d27-cbf1-42ac-bec7-a66fa5b63048" isSubstitutable="true" general="63e4e11a-495b-414f-9415-fdbd1112cec3"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="33d7535f-12bc-4ea0-bc57-49a61b6b4df1" name="MetalSplitPaneUI">
                <ownedComment xmi:id="de1db63e-b69b-42b5-a71a-67c9adf2830b" body="Metal split pane.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.10 12/19/03&#xA;@author Steve Wilson&#xA;" annotatedElement="33d7535f-12bc-4ea0-bc57-49a61b6b4df1"/>
                <generalization xmi:id="c368f969-5812-470a-be00-d32bfdd57ef3" isSubstitutable="true" general="885c095d-ae9f-442a-b0bc-449398bcfcb5"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="12598745-4e63-4ff0-a3e0-dd61112654ce" name="MetalComboBoxUI">
                <ownedComment xmi:id="f2fb188f-3f12-423f-9396-6f51e59c8833" body="Metal UI for JComboBox&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see MetalComboBoxEditor&#xA;@see MetalComboBoxButton&#xA;@version 1.49 05/18/04&#xA;@author Tom Santos&#xA;" annotatedElement="12598745-4e63-4ff0-a3e0-dd61112654ce"/>
                <generalization xmi:id="06df9274-d627-4de2-ad71-28f78fc504e0" isSubstitutable="true" general="eaefd3b8-7d33-4fbd-889f-2f5fca71dcbe"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c7ce568c-7e60-4e55-899e-20c90d6f5aca" name="MetalPropertyChangeListener">
                  <ownedComment xmi:id="9dd004d1-37f6-4350-95fd-e18b3d0c6877" body="This inner class is marked &quot;public&quot; due to a compiler bug.&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;FooUI>.&#xA;" annotatedElement="c7ce568c-7e60-4e55-899e-20c90d6f5aca"/>
                  <generalization xmi:id="80fa1da6-693e-41df-8aac-f2248a28d9d3" isSubstitutable="true" general="8c7ce169-21ca-4dee-9bde-459c976710d9"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="9d598fbf-1bf9-4970-a15a-bca43f6a3f44" name="MetalComboBoxLayoutManager">
                  <ownedComment xmi:id="143337d1-1f9f-43e5-93db-5f70f2c9de34" body="This inner class is marked &quot;public&quot; due to a compiler bug.&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;FooUI>.&#xA;" annotatedElement="9d598fbf-1bf9-4970-a15a-bca43f6a3f44"/>
                  <generalization xmi:id="1d870dbe-0f73-45f8-9953-a2b713b8f9f9" isSubstitutable="true" general="252e831b-227d-4f97-bc49-24a7d210152f"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e3cdefce-7688-45c9-b320-d5c98922a15a" name="MetalComboPopup">
                  <ownedComment xmi:id="7fa088a8-d186-4eb6-88aa-73b7787ac931" body="This inner class is marked &quot;public&quot; due to a compiler bug.&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of &lt;FooUI>.&#xA;&#xA;This class is now obsolete and doesn't do anything and&#xA;is only included for backwards API compatibility. Do not call or&#xA;override.&#xA;&#xA;@deprecated As of Java 2 platform v1.4.&#xA;" annotatedElement="e3cdefce-7688-45c9-b320-d5c98922a15a"/>
                  <generalization xmi:id="c4e93ee7-d346-4bcf-bb40-67fbafbbd863" isSubstitutable="true" general="1c152de9-ac4d-4410-8f85-138b2b0cb4ab"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6a4ce456-686d-4596-b18b-33cbe69c70aa" name="DefaultMetalTheme">
                <ownedComment xmi:id="58d33860-8702-47b8-902d-7cb20225653b" body="This class describes the default Metal Theme.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.27 03/03/04&#xA;@author Steve Wilson&#xA;" annotatedElement="6a4ce456-686d-4596-b18b-33cbe69c70aa"/>
                <generalization xmi:id="3d8ab9f0-2131-4589-b964-dc7387fa1040" isSubstitutable="true" general="77abdadf-e8dc-4926-be1a-0d1d28b15fda"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="71bb6905-4021-4584-905f-268520dd4799" name="FontDelegate" visibility="private">
                  <ownedComment xmi:id="400b68d9-be62-47c6-865a-b925e2e7fc26" body="FontDelegates add an extra level of indirection to obtaining fonts.&#xA;" annotatedElement="71bb6905-4021-4584-905f-268520dd4799"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5e58a524-48c9-44d9-9879-2024dbd1c08a" name="WindowsFontDelegate" visibility="private">
                  <ownedComment xmi:id="0796ee8c-81b7-4122-8bc4-45034185e0de" body="The WindowsFontDelegate uses DesktopProperties to obtain fonts.&#xA;" annotatedElement="5e58a524-48c9-44d9-9879-2024dbd1c08a"/>
                  <generalization xmi:id="aae771b3-38fb-4b6c-bca0-d5b60be30550" isSubstitutable="true" general="71bb6905-4021-4584-905f-268520dd4799"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="573f83a4-52d8-4ed1-9a75-23f4c028471e" name="MetalLookAndFeel">
                <ownedComment xmi:id="fb514f43-79a4-4047-92dc-95a34df275f9" body="Implements the Java look and feel (codename: Metal).&#xA;&lt;p>&#xA;By default metal uses bold fonts for many controls.  To make all&#xA;controls (with the exception of the internal frame title bars and&#xA;client decorated frame title bars) use plain fonts you can do either of&#xA;the following:&#xA;&lt;ul>&#xA;&lt;li>Set the system property &lt;code>swing.boldMetal&lt;/code> to&#xA;&lt;code>false&lt;/code>.  For example,&#xA;&lt;code>java&amp;nbsp;-Dswing.boldMetal=false&amp;nbsp;MyApp&lt;/code>.&#xA;&lt;li>Set the defaults property &lt;code>swing.boldMetal&lt;/code> to&#xA;&lt;code>Boolean.FALSE&lt;/code>.  For example:&#xA;&lt;code>UIManager.put(&quot;swing.boldMetal&quot;,&amp;nbsp;Boolean.FALSE);&lt;/code>&#xA;&lt;/ul>&#xA;The defaults property &lt;code>swing.boldMetal&lt;/code>, if set,&#xA;takes precendence over the system property of the same name. After&#xA;setting this defaults property you need to re-install the&#xA;&lt;code>MetalLookAndFeel&lt;/code>, as well as update the UI&#xA;of any previously created widgets. Otherwise the results are undefined.&#xA;These lines of code show you how to accomplish this:&#xA;&lt;pre>&#xA;turn off bold fonts&#xA;UIManager.put(&quot;swing.boldMetal&quot;, Boolean.FALSE);&#xA;&#xA;re-install the Metal Look and Feel&#xA;UIManager.setLookAndFeel(new MetalLookAndFeel());&#xA;&#xA;only needed to update existing widgets&#xA;SwingUtilities.updateComponentTreeUI(rootComponent);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version @(#)MetalLookAndFeel.java&#x9;1.182 04/04/02&#xA;@author Steve Wilson&#xA;" annotatedElement="573f83a4-52d8-4ed1-9a75-23f4c028471e"/>
                <generalization xmi:id="66b8e081-0f04-4c93-b957-138472b4b39a" isSubstitutable="true" general="99358614-84fd-4231-afd2-c74334bb76ee"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="8449c903-e275-4c3a-b8c5-1367922f274c" name="MetalLazyValue" visibility="private" clientDependency="6ecc5daa-a3c8-46d0-a7ec-ce8654f378a0">
                  <ownedComment xmi:id="3ead17c2-4dd4-4db6-83a9-c81132547a4b" body="MetalLazyValue is a slimmed down version of &lt;code>ProxyLaxyValue&lt;/code>.&#xA;The code is duplicate so that it can get at the package private&#xA;classes in metal.&#xA;" annotatedElement="8449c903-e275-4c3a-b8c5-1367922f274c"/>
                  <interfaceRealization xmi:id="6ecc5daa-a3c8-46d0-a7ec-ce8654f378a0" name="" supplier="e025314b-92f1-4a6b-9920-077d66f31010" client="8449c903-e275-4c3a-b8c5-1367922f274c" contract="e025314b-92f1-4a6b-9920-077d66f31010"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ecf9aafd-c91c-4f20-adca-67698535a636" name="FontActiveValue" visibility="private" clientDependency="cbdbdd4f-084f-4ffe-87f3-4ea9b32babdb">
                  <ownedComment xmi:id="b863b4be-5d14-496e-8551-32a325f357e2" body="FontActiveValue redirects to the appropriate metal theme method.&#xA;" annotatedElement="ecf9aafd-c91c-4f20-adca-67698535a636"/>
                  <interfaceRealization xmi:id="cbdbdd4f-084f-4ffe-87f3-4ea9b32babdb" name="" supplier="18e3140f-3158-4da9-8be8-5641a2ce9e20" client="ecf9aafd-c91c-4f20-adca-67698535a636" contract="18e3140f-3158-4da9-8be8-5641a2ce9e20"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="cf55c368-a796-4260-8f64-cdb6573319f3" name="MetalToolTipUI">
                <ownedComment xmi:id="cf44022b-a4d9-495b-9e14-652c633759b6" body="A Metal L&amp;F extension of BasicToolTipUI.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.28 12/19/03&#xA;@author Steve Wilson&#xA;" annotatedElement="cf55c368-a796-4260-8f64-cdb6573319f3"/>
                <generalization xmi:id="ab76acbb-1b9d-49d4-9c8c-e3056aabeca8" isSubstitutable="true" general="a8cce313-8f07-4d93-bfcf-c422d3492ec7"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="77bc8374-7346-4363-8cf6-308e7ee71711" name="MetalInternalFrameTitlePane">
                <ownedComment xmi:id="d6a2b064-245d-415c-b4a1-33cd8ddc091c" body="Class that manages a JLF title bar&#xA;@version 1.57 03/17/04&#xA;@author Steve Wilson&#xA;@author Brian Beck&#xA;@since 1.3&#xA;" annotatedElement="77bc8374-7346-4363-8cf6-308e7ee71711"/>
                <generalization xmi:id="e9d89686-5103-42b1-9922-7ef6e724fbd4" isSubstitutable="true" general="d974ab89-5bca-46e6-9497-fa32549eecb0"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c361d22f-70ba-40ba-aea2-fd5ef7e985c7" name="MetalPropertyChangeHandler" visibility="package">
                  <generalization xmi:id="8edf81c8-af1a-4f40-b6e6-4a5eee79a32d" isSubstitutable="true" general="c0e3b898-4900-42b1-8984-3e1dd4111b19"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c31d357b-c3a4-4ed9-9515-4b92eb56841c" name="MetalTitlePaneLayout" visibility="package">
                  <generalization xmi:id="aba681a0-1d50-4dbd-b00e-6d814b4d15ca" isSubstitutable="true" general="8f3d4ba2-13c5-4baa-a4d0-9f49107fa3eb"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="1723d39d-ce07-4540-8cdf-9b5109b12f12" name="MetalTitlePane" visibility="package">
                <ownedComment xmi:id="00b3bc43-31a2-4bc6-b2ed-e3ffa172bc17" body="Class that manages a JLF awt.Window-descendant class's title bar.&#xA;&lt;p>&#xA;This class assumes it will be created with a particular window&#xA;decoration style, and that if the style changes, a new one will&#xA;be created.&#xA;&#xA;@version 1.17 12/19/03&#xA;@author Terry Kellerman&#xA;@since 1.4&#xA;" annotatedElement="1723d39d-ce07-4540-8cdf-9b5109b12f12"/>
                <generalization xmi:id="dfc28c47-f1aa-44a6-ab74-1a2c1cd05c5c" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="9313ec60-30e8-451e-a383-50657caa475f" name="CloseAction" visibility="private">
                  <ownedComment xmi:id="c3d1c5bb-7a52-402b-b5d4-52157dce3495" body="Actions used to &lt;code>close&lt;/code> the &lt;code>Window&lt;/code>.&#xA;" annotatedElement="9313ec60-30e8-451e-a383-50657caa475f"/>
                  <generalization xmi:id="5c4e7fb2-6c0e-43e2-b9c3-08865020d196" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="df21940f-2e16-4a7f-95c0-936625f9b697" name="IconifyAction" visibility="private">
                  <ownedComment xmi:id="96aa1a29-da58-43c7-8f2b-65cb2ce9e3f7" body="Actions used to &lt;code>iconfiy&lt;/code> the &lt;code>Frame&lt;/code>.&#xA;" annotatedElement="df21940f-2e16-4a7f-95c0-936625f9b697"/>
                  <generalization xmi:id="416a590e-b333-4657-9369-bec88a32ebab" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="f1813f73-b8d2-42e0-b8e7-71beab2ab18b" name="RestoreAction" visibility="private">
                  <ownedComment xmi:id="933b76b8-8883-4d69-b144-5621aa9581bb" body="Actions used to &lt;code>restore&lt;/code> the &lt;code>Frame&lt;/code>.&#xA;" annotatedElement="f1813f73-b8d2-42e0-b8e7-71beab2ab18b"/>
                  <generalization xmi:id="633fd719-0c8d-41ca-b082-9a05b55a1053" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="00f489c7-b60a-4f26-836c-bdb92bde1029" name="MaximizeAction" visibility="private">
                  <ownedComment xmi:id="03e69a81-120d-431c-95b7-e114f734d116" body="Actions used to &lt;code>restore&lt;/code> the &lt;code>Frame&lt;/code>.&#xA;" annotatedElement="00f489c7-b60a-4f26-836c-bdb92bde1029"/>
                  <generalization xmi:id="39b00810-bd27-4840-8c3b-89fa8f9e1ec8" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="3ff38b75-d41b-4128-90ff-9e5a2c876d5e" name="SystemMenuBar" visibility="private">
                  <ownedComment xmi:id="57613f33-f67f-433c-83a9-8a89e193bf32" body="Class responsible for drawing the system menu. Looks up the&#xA;image to draw from the Frame associated with the&#xA;&lt;code>JRootPane&lt;/code>.&#xA;" annotatedElement="3ff38b75-d41b-4128-90ff-9e5a2c876d5e"/>
                  <generalization xmi:id="a2d510f0-e4ae-429a-a572-47b6f3890fe2" isSubstitutable="true" general="000640fb-2ecf-4576-91aa-37c2286ba74a"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="3b69d09e-2265-4d74-af81-b4dc6ceeb43d" name="TitlePaneLayout" visibility="private" clientDependency="c7c98221-98fc-47ec-97ca-519a63288fdf">
                  <interfaceRealization xmi:id="c7c98221-98fc-47ec-97ca-519a63288fdf" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="3b69d09e-2265-4d74-af81-b4dc6ceeb43d" contract="c3507179-c29c-40a9-8869-092757900e53"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="183920f5-0fa9-4b38-a4ee-6c030d92bc7b" name="PropertyChangeHandler" visibility="private" clientDependency="7ee45fec-f2ea-43d1-b51f-99c73ba8e309">
                  <ownedComment xmi:id="2e2eca98-034a-4225-97df-9a55fc9d35ca" body="PropertyChangeListener installed on the Window. Updates the necessary&#xA;state as the state of the Window changes.&#xA;" annotatedElement="183920f5-0fa9-4b38-a4ee-6c030d92bc7b"/>
                  <interfaceRealization xmi:id="7ee45fec-f2ea-43d1-b51f-99c73ba8e309" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="183920f5-0fa9-4b38-a4ee-6c030d92bc7b" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="47751fb9-7bb1-455e-b88a-ace8298fee95" name="WindowHandler" visibility="private">
                  <ownedComment xmi:id="dd99b7b4-b980-4a2a-9da9-ffc5703f0239" body="WindowListener installed on the Window, updates the state as necessary.&#xA;" annotatedElement="47751fb9-7bb1-455e-b88a-ace8298fee95"/>
                  <generalization xmi:id="0f2d2fe6-7475-40e1-ab77-114bb22140cb" isSubstitutable="true" general="569edcca-f9c2-4c19-854b-a7ea38aaff69"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="6c85645a-9b5a-4518-abda-eb4d83bcdd51" name="MetalRadioButtonUI">
                <ownedComment xmi:id="9f0c4f59-9668-462b-b497-eac1c1da4954" body="RadioButtonUI implementation for MetalRadioButtonUI&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.29 12/19/03&#xA;@author Michael C. Albers (Metal modifications)&#xA;@author Jeff Dinkins (original BasicRadioButtonCode)&#xA;" annotatedElement="6c85645a-9b5a-4518-abda-eb4d83bcdd51"/>
                <generalization xmi:id="fdc3e29e-a39e-4593-b780-4c9f7270be02" isSubstitutable="true" general="fd184e4b-ee0a-4f4f-8b18-549734fc5190"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="7ae3a46a-67e7-4219-aa1b-6d23cae010a3" name="MetalIconFactory" clientDependency="577e514a-9593-429c-a394-d2df722dcd6c">
                <ownedComment xmi:id="b3b660fa-a4cf-4719-bdb1-9e83e3013b99" body="Factory object that vends &lt;code>Icon&lt;/code>s for&#xA;the Java&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup> look and feel (Metal).&#xA;These icons are used extensively in Metal via the defaults mechanism.&#xA;While other look and feels often use GIFs for icons, creating icons&#xA;in code facilitates switching to other themes.&#xA;&#xA;&lt;p>&#xA;Each method in this class returns&#xA;either an &lt;code>Icon&lt;/code> or &lt;code>null&lt;/code>,&#xA;where &lt;code>null&lt;/code> implies that there is no default icon.&#xA;&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.60 02/15/04&#xA;@author Michael C. Albers&#xA;" annotatedElement="7ae3a46a-67e7-4219-aa1b-6d23cae010a3"/>
                <interfaceRealization xmi:id="577e514a-9593-429c-a394-d2df722dcd6c" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="7ae3a46a-67e7-4219-aa1b-6d23cae010a3" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="661d7f33-051a-4a8a-95e3-8c798861f814" name="FileChooserDetailViewIcon" visibility="private" clientDependency="c6e9b89a-49f2-4e4c-9f35-ae807c4f6f80 da67abab-510a-442f-8569-ca979305beee 3207a749-34c2-4473-b6c5-65f225f65d26">
                  <interfaceRealization xmi:id="c6e9b89a-49f2-4e4c-9f35-ae807c4f6f80" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="661d7f33-051a-4a8a-95e3-8c798861f814" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="da67abab-510a-442f-8569-ca979305beee" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="661d7f33-051a-4a8a-95e3-8c798861f814" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="3207a749-34c2-4473-b6c5-65f225f65d26" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="661d7f33-051a-4a8a-95e3-8c798861f814" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e0f53c50-7902-4b5f-9996-ecedfd4319fe" name="FileChooserHomeFolderIcon" visibility="private" clientDependency="bfc5b7c8-33d3-4110-b22e-cae0ca429686 d13e31d1-6a0a-4e36-92c8-12ba9a97b3f6 cad59124-5cab-4b92-bb23-fa148853dc81">
                  <interfaceRealization xmi:id="d13e31d1-6a0a-4e36-92c8-12ba9a97b3f6" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="e0f53c50-7902-4b5f-9996-ecedfd4319fe" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="bfc5b7c8-33d3-4110-b22e-cae0ca429686" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="e0f53c50-7902-4b5f-9996-ecedfd4319fe" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="cad59124-5cab-4b92-bb23-fa148853dc81" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="e0f53c50-7902-4b5f-9996-ecedfd4319fe" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5f245c2e-df6c-42ce-a10f-5b819fedc930" name="FileChooserListViewIcon" visibility="private" clientDependency="80b17063-0b63-4e14-aa2c-8da13d5369ed 85f281ae-3493-4faa-8401-1c4e05e23bc1 80c964a2-6d57-4c40-a83a-894b2ff1253b">
                  <interfaceRealization xmi:id="80c964a2-6d57-4c40-a83a-894b2ff1253b" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="5f245c2e-df6c-42ce-a10f-5b819fedc930" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="85f281ae-3493-4faa-8401-1c4e05e23bc1" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="5f245c2e-df6c-42ce-a10f-5b819fedc930" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="80b17063-0b63-4e14-aa2c-8da13d5369ed" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="5f245c2e-df6c-42ce-a10f-5b819fedc930" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="fc892c5e-291a-4af8-9c36-137f26abab78" name="FileChooserNewFolderIcon" visibility="private" clientDependency="80296285-8a3c-4890-810d-e90232024f3e 3d545d30-c99a-4891-9291-09b0f5565cfd d03d613f-2ab1-4904-ab06-3163a8164011">
                  <interfaceRealization xmi:id="3d545d30-c99a-4891-9291-09b0f5565cfd" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="fc892c5e-291a-4af8-9c36-137f26abab78" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="80296285-8a3c-4890-810d-e90232024f3e" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="fc892c5e-291a-4af8-9c36-137f26abab78" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="d03d613f-2ab1-4904-ab06-3163a8164011" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="fc892c5e-291a-4af8-9c36-137f26abab78" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6fef0b93-37f5-4fe9-a08e-4c165624e790" name="FileChooserUpFolderIcon" visibility="private" clientDependency="0c815413-4c87-4aff-acd8-c17c07bd9b49 1c181026-8fcc-4353-b2d5-c0a56d2ff19d 37417210-b627-4022-add3-a70152b3dea5">
                  <interfaceRealization xmi:id="1c181026-8fcc-4353-b2d5-c0a56d2ff19d" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="6fef0b93-37f5-4fe9-a08e-4c165624e790" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="0c815413-4c87-4aff-acd8-c17c07bd9b49" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="6fef0b93-37f5-4fe9-a08e-4c165624e790" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="37417210-b627-4022-add3-a70152b3dea5" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="6fef0b93-37f5-4fe9-a08e-4c165624e790" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="dbfd62a5-ba79-46c8-8d44-3ea5531c1bf0" name="PaletteCloseIcon" clientDependency="920d7c0a-1894-496d-8bd2-ddec237055e0 8db80ed4-a82d-483f-9332-6f9cba8f2265 7399f51c-8075-4e2d-8490-cc2e35c33730">
                  <ownedComment xmi:id="da20e777-5a0d-4e99-b4d6-c6a098f5ff11" body="Defines an icon for Palette close&#xA;@since 1.3&#xA;" annotatedElement="dbfd62a5-ba79-46c8-8d44-3ea5531c1bf0"/>
                  <interfaceRealization xmi:id="920d7c0a-1894-496d-8bd2-ddec237055e0" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="dbfd62a5-ba79-46c8-8d44-3ea5531c1bf0" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="8db80ed4-a82d-483f-9332-6f9cba8f2265" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="dbfd62a5-ba79-46c8-8d44-3ea5531c1bf0" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="7399f51c-8075-4e2d-8490-cc2e35c33730" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="dbfd62a5-ba79-46c8-8d44-3ea5531c1bf0" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6b31162c-fc2d-4a23-ab45-dd5670710dfe" name="InternalFrameCloseIcon" visibility="private" clientDependency="dd92693d-53a6-45d6-afdd-3550caa62008 7ae1962d-2ca5-430a-bb8e-a06b7e3b1de0 74058c9e-e0d4-49f9-8856-d1e952af7177">
                  <interfaceRealization xmi:id="7ae1962d-2ca5-430a-bb8e-a06b7e3b1de0" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="6b31162c-fc2d-4a23-ab45-dd5670710dfe" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="74058c9e-e0d4-49f9-8856-d1e952af7177" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="6b31162c-fc2d-4a23-ab45-dd5670710dfe" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="dd92693d-53a6-45d6-afdd-3550caa62008" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="6b31162c-fc2d-4a23-ab45-dd5670710dfe" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="459b8b8d-55bf-4116-bc84-ca0c1ad861d7" name="InternalFrameAltMaximizeIcon" visibility="private" clientDependency="0fdeae54-a9be-45b0-b8c0-a13eb2f2d311 d5cdf484-9db9-48a0-9c76-d190c00084ae 6f6fd9dc-6e7d-4a13-b039-b1c336062e78">
                  <interfaceRealization xmi:id="d5cdf484-9db9-48a0-9c76-d190c00084ae" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="459b8b8d-55bf-4116-bc84-ca0c1ad861d7" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="0fdeae54-a9be-45b0-b8c0-a13eb2f2d311" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="459b8b8d-55bf-4116-bc84-ca0c1ad861d7" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="6f6fd9dc-6e7d-4a13-b039-b1c336062e78" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="459b8b8d-55bf-4116-bc84-ca0c1ad861d7" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a16672e7-065c-49d3-a3f0-0bf0d282cbd6" name="InternalFrameDefaultMenuIcon" visibility="private" clientDependency="67a92760-04af-430d-bb40-46f431728e3d 0e3eec1e-4000-477f-8d83-9b753d28e715 7a41ba25-713c-424e-9383-aa8580ee7d96">
                  <interfaceRealization xmi:id="67a92760-04af-430d-bb40-46f431728e3d" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="a16672e7-065c-49d3-a3f0-0bf0d282cbd6" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="0e3eec1e-4000-477f-8d83-9b753d28e715" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="a16672e7-065c-49d3-a3f0-0bf0d282cbd6" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="7a41ba25-713c-424e-9383-aa8580ee7d96" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="a16672e7-065c-49d3-a3f0-0bf0d282cbd6" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="fd55bbe4-3e41-4c5a-afd5-2b2cf10d8b6c" name="InternalFrameMaximizeIcon" visibility="private" clientDependency="3f1a88ef-4805-463c-b752-19fd13ac55f4 a9aa4f89-d0d0-4c50-b656-cfa06133752f 72dbdeb7-4d94-4293-90fa-96ac147643a2">
                  <interfaceRealization xmi:id="a9aa4f89-d0d0-4c50-b656-cfa06133752f" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="fd55bbe4-3e41-4c5a-afd5-2b2cf10d8b6c" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="72dbdeb7-4d94-4293-90fa-96ac147643a2" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="fd55bbe4-3e41-4c5a-afd5-2b2cf10d8b6c" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="3f1a88ef-4805-463c-b752-19fd13ac55f4" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="fd55bbe4-3e41-4c5a-afd5-2b2cf10d8b6c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e02a34d3-ac5e-4d2e-8970-62b3234eb324" name="InternalFrameMinimizeIcon" visibility="private" clientDependency="cb74fc01-dbb5-485e-bd4d-a65ca862eea5 948a738e-059f-4a42-8a81-87c0bf1f733b 96236726-7240-49cf-b8a1-0cd835d43fdf">
                  <interfaceRealization xmi:id="96236726-7240-49cf-b8a1-0cd835d43fdf" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="e02a34d3-ac5e-4d2e-8970-62b3234eb324" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="948a738e-059f-4a42-8a81-87c0bf1f733b" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="e02a34d3-ac5e-4d2e-8970-62b3234eb324" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="cb74fc01-dbb5-485e-bd4d-a65ca862eea5" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="e02a34d3-ac5e-4d2e-8970-62b3234eb324" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5835d18c-e4b5-4629-a0a2-18029186eb9d" name="CheckBoxIcon" visibility="private" clientDependency="21d4cf2a-0277-410c-932b-500a98037c64 109d63ef-e3ed-4119-bcf7-b018b649ff76 382ab848-afb0-4f6b-8021-9b3d542391d1">
                  <interfaceRealization xmi:id="21d4cf2a-0277-410c-932b-500a98037c64" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="5835d18c-e4b5-4629-a0a2-18029186eb9d" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="109d63ef-e3ed-4119-bcf7-b018b649ff76" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="5835d18c-e4b5-4629-a0a2-18029186eb9d" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="382ab848-afb0-4f6b-8021-9b3d542391d1" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="5835d18c-e4b5-4629-a0a2-18029186eb9d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="e1b35164-002c-4645-b93b-7473aa97d5fa" name="RadioButtonIcon" visibility="private" clientDependency="e181b76c-3a38-46de-84ca-51dc43229adb 2f5b838b-15b5-4aee-8d03-f41221969dd9 219fb803-71e8-4129-b7ca-b1988c4aa7a8">
                  <interfaceRealization xmi:id="e181b76c-3a38-46de-84ca-51dc43229adb" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="e1b35164-002c-4645-b93b-7473aa97d5fa" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="2f5b838b-15b5-4aee-8d03-f41221969dd9" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="e1b35164-002c-4645-b93b-7473aa97d5fa" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="219fb803-71e8-4129-b7ca-b1988c4aa7a8" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="e1b35164-002c-4645-b93b-7473aa97d5fa" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="a6d1ffba-98b0-4ae8-a7a7-66073fceff9e" name="TreeComputerIcon" visibility="private" clientDependency="2753dca5-4e5e-4503-ad06-2d353b167589 c146d772-59d0-446a-9070-23a76a26b8f3 7a2bb700-65f5-4ae2-84bc-675b10fb94db">
                  <interfaceRealization xmi:id="7a2bb700-65f5-4ae2-84bc-675b10fb94db" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="a6d1ffba-98b0-4ae8-a7a7-66073fceff9e" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="2753dca5-4e5e-4503-ad06-2d353b167589" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="a6d1ffba-98b0-4ae8-a7a7-66073fceff9e" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="c146d772-59d0-446a-9070-23a76a26b8f3" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="a6d1ffba-98b0-4ae8-a7a7-66073fceff9e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="6de6a7c7-e8fc-4c1c-893f-04f6f0aad65e" name="TreeHardDriveIcon" visibility="private" clientDependency="0e6a3e29-6c7b-4296-b961-928284b7d29d cac8b00b-cadd-4e2d-aa18-a8db4aaa2ff0 5173e674-dcec-4b79-a190-aaa69b92d907">
                  <interfaceRealization xmi:id="cac8b00b-cadd-4e2d-aa18-a8db4aaa2ff0" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="6de6a7c7-e8fc-4c1c-893f-04f6f0aad65e" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="0e6a3e29-6c7b-4296-b961-928284b7d29d" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="6de6a7c7-e8fc-4c1c-893f-04f6f0aad65e" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="5173e674-dcec-4b79-a190-aaa69b92d907" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="6de6a7c7-e8fc-4c1c-893f-04f6f0aad65e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="68c5eeae-c1da-42f4-a77c-e2fdc0eae9d0" name="TreeFloppyDriveIcon" visibility="private" clientDependency="ef6377c0-af29-4daf-ad3c-0cb5ef0c0c3c 75847c45-6961-4e2a-9533-8750de66e7e7 a661f271-f2f8-4d08-b193-b9e8f864bfae">
                  <interfaceRealization xmi:id="a661f271-f2f8-4d08-b193-b9e8f864bfae" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="68c5eeae-c1da-42f4-a77c-e2fdc0eae9d0" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="ef6377c0-af29-4daf-ad3c-0cb5ef0c0c3c" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="68c5eeae-c1da-42f4-a77c-e2fdc0eae9d0" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="75847c45-6961-4e2a-9533-8750de66e7e7" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="68c5eeae-c1da-42f4-a77c-e2fdc0eae9d0" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="2dc90b33-68c0-4471-ada3-473ff71011e9" name="ImageCacher" visibility="package">
                  <ownedComment xmi:id="5f8343f8-b408-4973-bf2c-cc35016ec86e" body="Utility class for caching icon images.  This is necessary because&#xA;we need a new image whenever we are rendering into a new&#xA;GraphicsConfiguration, but we do not want to keep recreating icon&#xA;images for GC's that we have already seen (for example,&#xA;dragging a window back and forth between monitors on a multimon&#xA;system, or drawing an icon to different Components that have different&#xA;GC's).&#xA;So now whenever we create a new icon image for a given GC, we&#xA;cache that image with the GC for later retrieval.&#xA;" annotatedElement="2dc90b33-68c0-4471-ada3-473ff71011e9"/>
                  <nestedClassifier xmi:type="uml:Class" xmi:id="2de648b5-343c-48f7-a543-764620e44981" name="ImageGcPair" visibility="package"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5d11cf9c-9dce-4163-ae4d-808b8eedbbdd" name="FolderIcon16" clientDependency="e2856e62-2207-44f1-b0f0-a6080f4a4408 8cec9a6a-8213-45d4-924f-dd7879919b8a">
                  <ownedComment xmi:id="6b6287bd-9674-44e6-a172-82dbc338d15f" body="&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="5d11cf9c-9dce-4163-ae4d-808b8eedbbdd"/>
                  <interfaceRealization xmi:id="e2856e62-2207-44f1-b0f0-a6080f4a4408" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="5d11cf9c-9dce-4163-ae4d-808b8eedbbdd" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="8cec9a6a-8213-45d4-924f-dd7879919b8a" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="5d11cf9c-9dce-4163-ae4d-808b8eedbbdd" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="99fc11c5-baef-4210-b5d3-bc4d8bc9cf40" name="TreeFolderIcon">
                  <ownedComment xmi:id="ffc9f2e0-89d5-4d75-b9f5-48c3a7549642" body="&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="99fc11c5-baef-4210-b5d3-bc4d8bc9cf40"/>
                  <generalization xmi:id="08db3524-788b-4c1d-ade9-4d99fc30d1d5" isSubstitutable="true" general="5d11cf9c-9dce-4163-ae4d-808b8eedbbdd"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="7c1ce596-18f2-4d26-a801-26589e1e8d9e" name="FileIcon16" clientDependency="09d17cd0-c594-4406-8137-5b3fc8a39a5a 99043f8d-81ea-4b7b-8e02-8ea6afe782cf">
                  <ownedComment xmi:id="30c6b632-be41-450a-a358-6f3f26055723" body="&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="7c1ce596-18f2-4d26-a801-26589e1e8d9e"/>
                  <interfaceRealization xmi:id="09d17cd0-c594-4406-8137-5b3fc8a39a5a" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="7c1ce596-18f2-4d26-a801-26589e1e8d9e" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="99043f8d-81ea-4b7b-8e02-8ea6afe782cf" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="7c1ce596-18f2-4d26-a801-26589e1e8d9e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="fab8803b-433f-4e69-a9a0-abb11d1f460e" name="TreeLeafIcon">
                  <generalization xmi:id="2837444e-34d2-4974-86b7-413bdace51ad" isSubstitutable="true" general="7c1ce596-18f2-4d26-a801-26589e1e8d9e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="41d4dbee-56ec-4278-a11a-e316dd686360" name="TreeControlIcon" clientDependency="d6682748-4aa6-4188-98e0-7586879cb4ba f92c263f-43e4-44a1-8a08-eb36368ec4d8">
                  <ownedComment xmi:id="d0a00870-31da-43e1-a5ed-439dfb50079e" body="&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="41d4dbee-56ec-4278-a11a-e316dd686360"/>
                  <interfaceRealization xmi:id="d6682748-4aa6-4188-98e0-7586879cb4ba" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="41d4dbee-56ec-4278-a11a-e316dd686360" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="f92c263f-43e4-44a1-8a08-eb36368ec4d8" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="41d4dbee-56ec-4278-a11a-e316dd686360" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="b4c3b6c7-f94f-489e-ab3e-bc2ce899f5b8" name="MenuArrowIcon" visibility="private" clientDependency="0366b0c0-5496-432c-8432-9c924a33731b b608a1e9-c4e6-4a24-b43a-2e26ad029112 0aecca60-2f6b-4e06-9375-7bf606419e69">
                  <interfaceRealization xmi:id="0aecca60-2f6b-4e06-9375-7bf606419e69" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="b4c3b6c7-f94f-489e-ab3e-bc2ce899f5b8" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="b608a1e9-c4e6-4a24-b43a-2e26ad029112" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="b4c3b6c7-f94f-489e-ab3e-bc2ce899f5b8" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="0366b0c0-5496-432c-8432-9c924a33731b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="b4c3b6c7-f94f-489e-ab3e-bc2ce899f5b8" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="8885d50f-b35a-4655-bb30-68d9a7f907cb" name="MenuItemArrowIcon" visibility="private" clientDependency="f4e60884-7b36-4587-869a-545f2a48ae0d 674b066f-9b8a-4127-84ab-42a219cbf3b3 f9fa9c5c-2a8b-4875-9201-b9e2bee1ec5b">
                  <interfaceRealization xmi:id="f4e60884-7b36-4587-869a-545f2a48ae0d" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="8885d50f-b35a-4655-bb30-68d9a7f907cb" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="674b066f-9b8a-4127-84ab-42a219cbf3b3" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="8885d50f-b35a-4655-bb30-68d9a7f907cb" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="f9fa9c5c-2a8b-4875-9201-b9e2bee1ec5b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="8885d50f-b35a-4655-bb30-68d9a7f907cb" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="0bce9246-4286-4ae0-9f15-d19c8a6fed7d" name="CheckBoxMenuItemIcon" visibility="private" clientDependency="6171188b-a09d-41ae-bea9-aa363b8b0b94 a8bae59e-defb-4384-8e45-4a88a2d32d0e 6ec8fc8a-0513-49a3-b184-ee70eb7365f2">
                  <interfaceRealization xmi:id="6171188b-a09d-41ae-bea9-aa363b8b0b94" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="0bce9246-4286-4ae0-9f15-d19c8a6fed7d" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="6ec8fc8a-0513-49a3-b184-ee70eb7365f2" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="0bce9246-4286-4ae0-9f15-d19c8a6fed7d" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="a8bae59e-defb-4384-8e45-4a88a2d32d0e" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0bce9246-4286-4ae0-9f15-d19c8a6fed7d" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="60fd539f-fff1-4034-b6a4-3f39620ac228" name="RadioButtonMenuItemIcon" visibility="private" clientDependency="b428f407-8e18-4a8d-83d4-b9d70822036e 782c0c75-00ab-4b3b-87cf-2065126d64a5 94619592-8b28-46ec-a085-d76b5fa2107b">
                  <interfaceRealization xmi:id="b428f407-8e18-4a8d-83d4-b9d70822036e" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="60fd539f-fff1-4034-b6a4-3f39620ac228" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="782c0c75-00ab-4b3b-87cf-2065126d64a5" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="60fd539f-fff1-4034-b6a4-3f39620ac228" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                  <interfaceRealization xmi:id="94619592-8b28-46ec-a085-d76b5fa2107b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="60fd539f-fff1-4034-b6a4-3f39620ac228" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="d734a20e-8d14-4eae-8fa4-5efff315b341" name="VerticalSliderThumbIcon" visibility="private" clientDependency="7c66d392-6b6b-4ea9-9231-0487c3f60640 3d526c7e-39ae-44dd-a9a8-3af1e53870d4 9db1220a-11a6-4151-9f1e-6f10a207a8eb">
                  <interfaceRealization xmi:id="7c66d392-6b6b-4ea9-9231-0487c3f60640" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="d734a20e-8d14-4eae-8fa4-5efff315b341" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="3d526c7e-39ae-44dd-a9a8-3af1e53870d4" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="d734a20e-8d14-4eae-8fa4-5efff315b341" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                  <interfaceRealization xmi:id="9db1220a-11a6-4151-9f1e-6f10a207a8eb" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="d734a20e-8d14-4eae-8fa4-5efff315b341" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c34a3cc7-5698-40dc-b475-9ae233af2760" name="HorizontalSliderThumbIcon" visibility="private" clientDependency="b8300f79-a4a7-4a01-b5c0-f20ea84154e0 15268a40-f58b-4baa-890f-af2bd9338afb 772c8874-83e2-41d8-a530-6299ad1da885">
                  <interfaceRealization xmi:id="b8300f79-a4a7-4a01-b5c0-f20ea84154e0" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="c34a3cc7-5698-40dc-b475-9ae233af2760" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="772c8874-83e2-41d8-a530-6299ad1da885" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="c34a3cc7-5698-40dc-b475-9ae233af2760" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                  <interfaceRealization xmi:id="15268a40-f58b-4baa-890f-af2bd9338afb" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="c34a3cc7-5698-40dc-b475-9ae233af2760" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="493ed0ae-d131-4599-a4ce-678b82bf8174" name="OceanVerticalSliderThumbIcon" visibility="private" clientDependency="f59a0511-4a42-4361-9693-b842d28e374d f1071502-3762-4fba-9258-66f1622bbec2 f1368372-0511-4459-b858-06658c7c3f54">
                  <generalization xmi:id="3e565998-3b6f-49bf-acc0-735cbe569522" isSubstitutable="true" general="a6460f8a-3254-4e8e-8b1e-a654c6fad3fb"/>
                  <interfaceRealization xmi:id="f59a0511-4a42-4361-9693-b842d28e374d" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="493ed0ae-d131-4599-a4ce-678b82bf8174" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="f1071502-3762-4fba-9258-66f1622bbec2" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="493ed0ae-d131-4599-a4ce-678b82bf8174" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                  <interfaceRealization xmi:id="f1368372-0511-4459-b858-06658c7c3f54" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="493ed0ae-d131-4599-a4ce-678b82bf8174" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="612e53c7-3bc1-4847-91c5-1340f88c829e" name="OceanHorizontalSliderThumbIcon" visibility="private" clientDependency="02f9d1dc-f414-42b8-ab3a-abf28eddd94e d49b6826-0902-4edc-9973-a0c54939423b b6b5d6ea-8b44-4bc1-b4b8-5c8ca61740f6">
                  <generalization xmi:id="d1d3787d-987f-4cbf-b216-1092c2fe28a5" isSubstitutable="true" general="a6460f8a-3254-4e8e-8b1e-a654c6fad3fb"/>
                  <interfaceRealization xmi:id="d49b6826-0902-4edc-9973-a0c54939423b" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="612e53c7-3bc1-4847-91c5-1340f88c829e" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                  <interfaceRealization xmi:id="b6b5d6ea-8b44-4bc1-b4b8-5c8ca61740f6" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="612e53c7-3bc1-4847-91c5-1340f88c829e" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
                  <interfaceRealization xmi:id="02f9d1dc-f414-42b8-ab3a-abf28eddd94e" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="612e53c7-3bc1-4847-91c5-1340f88c829e" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="34e00ee6-4c5b-4227-8bb5-f9e79199d17e" name="MetalSplitPaneDivider" visibility="package">
                <ownedComment xmi:id="baffe6a8-5775-4e95-bf18-2db9c6e571df" body="Metal's split pane divider&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.21 12/19/03&#xA;@author Steve Wilson&#xA;@author Ralph kar&#xA;" annotatedElement="34e00ee6-4c5b-4227-8bb5-f9e79199d17e"/>
                <generalization xmi:id="381f0c1a-dbad-4649-9f74-99b108efa553" isSubstitutable="true" general="5b5de748-63dc-474c-9db9-da1539379d67"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="185938d5-00dc-4060-8246-d89fe1fd66c9" name="MetalDividerLayout" clientDependency="ffcde523-ded6-4fe6-95c3-315313d12ab4">
                  <ownedComment xmi:id="eb06534b-5d61-425b-8fb7-a5a161b0eb94" body="Used to layout a MetalSplitPaneDivider. Layout for the divider&#xA;involves appropriately moving the left/right buttons around.&#xA;&lt;p>&#xA;This class should be treated as a &quot;protected&quot; inner class.&#xA;Instantiate it only within subclasses of MetalSplitPaneDivider.&#xA;" annotatedElement="185938d5-00dc-4060-8246-d89fe1fd66c9"/>
                  <interfaceRealization xmi:id="ffcde523-ded6-4fe6-95c3-315313d12ab4" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="185938d5-00dc-4060-8246-d89fe1fd66c9" contract="c3507179-c29c-40a9-8869-092757900e53"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="2cd51b8c-2c59-494f-b5ee-4cb19cb08121" name="MetalFileChooserUI">
                <ownedComment xmi:id="99beb56d-7e37-4460-bd58-2e9b18080d04" body="Metal L&amp;F implementation of a FileChooser.&#xA;&#xA;@version 1.83 03/30/04&#xA;@author Jeff Dinkins&#xA;" annotatedElement="2cd51b8c-2c59-494f-b5ee-4cb19cb08121"/>
                <generalization xmi:id="fd12e4bc-ea15-41e2-a6f2-c1becb3cc657" isSubstitutable="true" general="813e831f-c07f-4ddb-bc14-959e1b6d7ff5"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="39b619f2-660f-4a3e-8350-31a7780c830c" name="SingleClickListener" visibility="protected">
                  <generalization xmi:id="8b51f6b2-6e79-4278-bca0-eb757f9e9888" isSubstitutable="true" general="0db79cd4-0757-4282-b2c3-730fa54c5c55"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="152c696a-f8ac-4ed9-8ae5-b31e79326551" name="FileRenderer" visibility="protected">
                  <generalization xmi:id="89e728fe-e7fb-40b2-abba-aaaac75afa61" isSubstitutable="true" general="b9c1325c-0ef8-43c1-a768-dee6cf242f0d"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="1adfca41-3d6f-4658-b325-1d3078208d0a" name="DirectoryComboBoxRenderer" visibility="package">
                  <generalization xmi:id="559fe3c7-1b7f-47a9-8987-1e16cd41a27f" isSubstitutable="true" general="b9c1325c-0ef8-43c1-a768-dee6cf242f0d"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="5c270c08-85a4-4ab6-bf3c-02676379d14a" name="IndentIcon" visibility="package" clientDependency="94886f20-7a56-407b-8d15-8eefe47e4dd7">
                  <interfaceRealization xmi:id="94886f20-7a56-407b-8d15-8eefe47e4dd7" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="5c270c08-85a4-4ab6-bf3c-02676379d14a" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="d27aae58-ba7e-460b-a765-b5c9941db06c" name="DirectoryComboBoxModel" visibility="protected" clientDependency="b4c9b9cf-4586-4a0b-81ff-bb4bd7794036">
                  <ownedComment xmi:id="1ebf2bb6-8390-4a67-bdc1-bd7175f98aad" body="Data model for a type-face selection combo-box.&#xA;" annotatedElement="d27aae58-ba7e-460b-a765-b5c9941db06c"/>
                  <generalization xmi:id="5da0cf10-c3c7-46af-8f9d-d0e7b9ceced5" isSubstitutable="true" general="8cf5bc32-a3b1-4981-bc71-7af4f2144124"/>
                  <interfaceRealization xmi:id="b4c9b9cf-4586-4a0b-81ff-bb4bd7794036" name="" supplier="97e663de-bcd4-4b75-a4ee-664a63a2c272" client="d27aae58-ba7e-460b-a765-b5c9941db06c" contract="97e663de-bcd4-4b75-a4ee-664a63a2c272"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="bebeca92-6703-47c7-aef2-3d0cf8671e7d" name="FilterComboBoxRenderer">
                  <ownedComment xmi:id="35afccee-6473-4236-be32-dba1e36b9d38" body="Render different type sizes and styles.&#xA;" annotatedElement="bebeca92-6703-47c7-aef2-3d0cf8671e7d"/>
                  <generalization xmi:id="8c25ced1-9c49-488e-bd19-4f9db508de2b" isSubstitutable="true" general="b9c1325c-0ef8-43c1-a768-dee6cf242f0d"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="14a621a8-667c-4eaf-a256-9bbe77e262d1" name="FilterComboBoxModel" visibility="protected" clientDependency="51a2918f-d51b-43d9-8ac1-a667c5f7bfab 82697d9e-90e1-41f1-a835-0739ed7c2199">
                  <ownedComment xmi:id="8027ddfc-b0d0-495f-8a1f-7acb4803bd46" body="Data model for a type-face selection combo-box.&#xA;" annotatedElement="14a621a8-667c-4eaf-a256-9bbe77e262d1"/>
                  <generalization xmi:id="1c399bf5-91fa-4485-b2d3-422067aefc24" isSubstitutable="true" general="8cf5bc32-a3b1-4981-bc71-7af4f2144124"/>
                  <interfaceRealization xmi:id="51a2918f-d51b-43d9-8ac1-a667c5f7bfab" name="" supplier="97e663de-bcd4-4b75-a4ee-664a63a2c272" client="14a621a8-667c-4eaf-a256-9bbe77e262d1" contract="97e663de-bcd4-4b75-a4ee-664a63a2c272"/>
                  <interfaceRealization xmi:id="82697d9e-90e1-41f1-a835-0739ed7c2199" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="14a621a8-667c-4eaf-a256-9bbe77e262d1" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="fe6ddb83-e689-4a7e-8d33-c7339487d5e3" name="DirectoryComboBoxAction" visibility="protected">
                  <ownedComment xmi:id="f87e5e8c-ddc8-484b-b691-fee06d6a1072" body="Acts when DirectoryComboBox has changed the selected item.&#xA;" annotatedElement="fe6ddb83-e689-4a7e-8d33-c7339487d5e3"/>
                  <generalization xmi:id="1c1c72db-5c6b-4b7a-839b-c49f07f2f3dd" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="39d26ac5-cdd5-48a2-85aa-1616f5d89b9a" name="ButtonAreaLayout" visibility="private" clientDependency="0d7eb7cd-7b91-483c-8413-33eaa7b45684">
                  <ownedComment xmi:id="1dd2c4a2-af11-4eea-b380-7314f6937032" body="&lt;code>ButtonAreaLayout&lt;/code> behaves in a similar manner to&#xA;&lt;code>FlowLayout&lt;/code>. It lays out all components from left to&#xA;right, flushed right. The widths of all components will be set&#xA;to the largest preferred size width.&#xA;" annotatedElement="39d26ac5-cdd5-48a2-85aa-1616f5d89b9a"/>
                  <interfaceRealization xmi:id="0d7eb7cd-7b91-483c-8413-33eaa7b45684" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="39d26ac5-cdd5-48a2-85aa-1616f5d89b9a" contract="c3507179-c29c-40a9-8869-092757900e53"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="135371d2-9670-4a3c-9dde-a215b21fe8f9" name="AlignedLabel" visibility="private">
                  <generalization xmi:id="44292f83-c681-4dbc-bf64-e0c344aeba69" isSubstitutable="true" general="c9ab6369-faf9-4d4f-8a58-fa6a4a41feb0"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="581a04a7-31ce-4b04-bd38-5d64b979244c" name="MetalFileChooserUIAccessor" visibility="private"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="bf7e17e3-a7d7-490d-90c6-1b146cd5e8ba" name="MetalUtils" visibility="package">
                <ownedComment xmi:id="7c916ea1-6d03-4eb1-a229-ccf1bde0c66e" body="This is a dumping ground for random stuff we want to use in several places.&#xA;&#xA;@version 1.35 02/15/04&#xA;@author Steve Wilson&#xA;" annotatedElement="bf7e17e3-a7d7-490d-90c6-1b146cd5e8ba"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="ae1ac247-2ce9-4190-875e-9cfa252193a5" name="GradientPainter" visibility="private">
                  <generalization xmi:id="87f87376-1a3f-46f9-bda4-d25144af39a2" isSubstitutable="true" general="a6460f8a-3254-4e8e-8b1e-a654c6fad3fb"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="80b274cc-bad0-45b8-9f35-a8127cdc1da3" name="OceanDisabledButtonImageFilter" visibility="private">
                  <ownedComment xmi:id="1fa00304-8e72-446f-a735-842feaeb1d77" body="Used to create a disabled Icon with the ocean look.&#xA;" annotatedElement="80b274cc-bad0-45b8-9f35-a8127cdc1da3"/>
                  <generalization xmi:id="d76297d3-efc1-4964-9b93-0966ada3fc7e" isSubstitutable="true" general="b54e2b90-aa85-42d7-8719-27d07a7e8e3c"/>
                </nestedClassifier>
                <nestedClassifier xmi:type="uml:Class" xmi:id="9c47dc34-5115-4ae5-9972-f138fde918b0" name="OceanToolBarImageFilter" visibility="private">
                  <ownedComment xmi:id="10a401bf-fd4d-4801-83c3-ca8f0642c1f3" body="Used to create the rollover icons with the ocean look.&#xA;" annotatedElement="9c47dc34-5115-4ae5-9972-f138fde918b0"/>
                  <generalization xmi:id="43c0fefc-5d6a-4c9f-8ef0-6645dbfb1bae" isSubstitutable="true" general="b54e2b90-aa85-42d7-8719-27d07a7e8e3c"/>
                </nestedClassifier>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="39f416d2-5f27-427a-b554-6fc45e1639c5" name="MetalSeparatorUI">
                <ownedComment xmi:id="94ad798a-413e-4366-b16c-fe852310fba4" body="A Metal L&amp;F implementation of SeparatorUI.  This implementation&#xA;is a &quot;combined&quot; view/controller.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.16 12/19/03&#xA;@author Jeff Shapiro&#xA;" annotatedElement="39f416d2-5f27-427a-b554-6fc45e1639c5"/>
                <generalization xmi:id="fcf748b1-3ae8-4d9e-a310-c3a16aba2bbc" isSubstitutable="true" general="da1903fc-5c38-4561-b2a9-cbcc9d6a6912"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e82ee414-396d-4b01-8407-fd9e874e0a14" name="ColorUIResource" clientDependency="6ce87fcc-0318-4d78-b1eb-6efef6b66902">
              <generalization xmi:id="f9e5a66b-aadb-4924-9183-ab7f58cc23a9" isSubstitutable="true" general="7f957e06-ec60-4ae2-9f8c-3d5270acb04a"/>
              <interfaceRealization xmi:id="6ce87fcc-0318-4d78-b1eb-6efef6b66902" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="e82ee414-396d-4b01-8407-fd9e874e0a14" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0f3f3f3b-490e-47da-9080-5458d19139c4" name="DesktopPaneUI" isAbstract="true">
              <ownedComment xmi:id="9bb8fd00-e2fc-4f36-9c10-b859f7088d6d" body="Pluggable look and feel interface for JDesktopPane.&#xA;&#xA;@version 1.11 12/19/03&#xA;@author David Kloba&#xA;" annotatedElement="0f3f3f3b-490e-47da-9080-5458d19139c4"/>
              <generalization xmi:id="59ff344c-49bb-4f0e-b59d-c4109973e4b0" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="3db64f1a-7e6e-4546-ac1e-39b528d73ea0" name="ColorChooserUI" isAbstract="true">
              <ownedComment xmi:id="1e2e67fd-bb49-494d-828c-fcd50b05c0a0" body="Pluggable look and feel interface for JColorChooser.&#xA;&#xA;@version 1.12 12/19/03&#xA;@author Amy Fowler&#xA;@author Steve Wilson&#xA;" annotatedElement="3db64f1a-7e6e-4546-ac1e-39b528d73ea0"/>
              <generalization xmi:id="f03aa761-2edd-4b4d-9eaa-7f88c4773778" isSubstitutable="true" general="7c404ad3-84a3-45b2-94c7-0afd00ce5fcd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="3b8478ad-7373-483e-94b4-d41d497ca20a" name="InputMapUIResource" clientDependency="19de4bb6-ac06-40f3-b09a-b37ca39b85c0">
              <ownedComment xmi:id="4b8864db-a9f5-4565-b0c7-a6859f19d7b3" body="A subclass of javax.swing.InputMap that implements UIResource.&#xA;UI classes which provide a InputMap should use this class.&#xA;&#xA;@version 1.6 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="3b8478ad-7373-483e-94b4-d41d497ca20a"/>
              <generalization xmi:id="41a2d694-778b-4fcc-bd57-d90e29ef4fb2" isSubstitutable="true" general="56079c23-87ef-4dab-9d4a-5a45870515b9"/>
              <interfaceRealization xmi:id="19de4bb6-ac06-40f3-b09a-b37ca39b85c0" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="3b8478ad-7373-483e-94b4-d41d497ca20a" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8f455e8e-6031-474d-ba6a-a14b273a1f69" name="LegacyGlueFocusTraversalPolicy" visibility="package" clientDependency="dda65979-294b-4093-bb13-8e52b83a1b5d" isLeaf="true">
            <ownedComment xmi:id="b2b74062-7c4c-4ff7-bd76-df21031cbbd7" body="A FocusTraversalPolicy which provides support for legacy applications which&#xA;handle focus traversal via JComponent.setNextFocusableComponent or by&#xA;installing a custom DefaultFocusManager. If a specific traversal has not&#xA;been hard coded, then that traversal is provided either by the custom&#xA;DefaultFocusManager, or by a wrapped FocusTraversalPolicy instance.&#xA;&#xA;@version 1.6, 12/19/03&#xA;@author David Mendenhall&#xA;" annotatedElement="8f455e8e-6031-474d-ba6a-a14b273a1f69"/>
            <generalization xmi:id="c822eee2-8ca3-41c5-a2e4-db240b971ca9" isSubstitutable="true" general="df62e602-f506-498f-9270-a657feeffa38"/>
            <interfaceRealization xmi:id="dda65979-294b-4093-bb13-8e52b83a1b5d" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="8f455e8e-6031-474d-ba6a-a14b273a1f69" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e74961d6-232c-4520-8292-e13d41026b86" name="AbstractAction" clientDependency="466352bc-3cb6-4715-9e08-ab98cde0681a 8cc28f2d-c352-4da7-84f2-818835b46763 c2e94232-0d96-4fb4-abdf-cab04d5c8875" isAbstract="true">
            <ownedComment xmi:id="ccbae165-5883-4ea8-a5b4-20bbaea5ee1d" body="This class provides default implementations for the JFC &lt;code>Action&lt;/code>&#xA;interface. Standard behaviors like the get and set methods for&#xA;&lt;code>Action&lt;/code> object properties (icon, text, and enabled) are defined&#xA;here. The developer need only subclass this abstract class and&#xA;define the &lt;code>actionPerformed&lt;/code> method.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.51 12/19/03&#xA;@author Georges Saab&#xA;@see Action&#xA;" annotatedElement="e74961d6-232c-4520-8292-e13d41026b86"/>
            <interfaceRealization xmi:id="466352bc-3cb6-4715-9e08-ab98cde0681a" name="" supplier="463f6495-d475-4ff3-9983-0e53f95e8741" client="e74961d6-232c-4520-8292-e13d41026b86" contract="463f6495-d475-4ff3-9983-0e53f95e8741"/>
            <interfaceRealization xmi:id="8cc28f2d-c352-4da7-84f2-818835b46763" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="e74961d6-232c-4520-8292-e13d41026b86" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            <interfaceRealization xmi:id="c2e94232-0d96-4fb4-abdf-cab04d5c8875" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="e74961d6-232c-4520-8292-e13d41026b86" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3dc22db1-12aa-4c83-bb48-13d90d3b814f" name="JTextArea">
            <ownedComment xmi:id="ad7afdfa-8004-498b-8609-d102249bc589" body="A &lt;code>JTextArea&lt;/code> is a multi-line area that displays plain text.&#xA;It is intended to be a lightweight component that provides source&#xA;compatibility with the &lt;code>java.awt.TextArea&lt;/code> class where it can&#xA;reasonably do so.&#xA;You can find information and examples of using all the text components in&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/text.html&quot;>Using Text Components&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&#xA;&lt;p>&#xA;This component has capabilities not found in the&#xA;&lt;code>java.awt.TextArea&lt;/code> class.  The superclass should be&#xA;consulted for additional capabilities.&#xA;Alternative multi-line text classes with&#xA;more capabilities are &lt;code>JTextPane&lt;/code> and &lt;code>JEditorPane&lt;/code>.&#xA;&lt;p>&#xA;The &lt;code>java.awt.TextArea&lt;/code> internally handles scrolling.&#xA;&lt;code>JTextArea&lt;/code> is different in that it doesn't manage scrolling,&#xA;but implements the swing &lt;code>Scrollable&lt;/code> interface.  This allows it&#xA;to be placed inside a &lt;code>JScrollPane&lt;/code> if scrolling&#xA;behavior is desired, and used directly if scrolling is not desired.&#xA;&lt;p>&#xA;The &lt;code>java.awt.TextArea&lt;/code> has the ability to do line wrapping.&#xA;This was controlled by the horizontal scrolling policy.  Since&#xA;scrolling is not done by &lt;code>JTextArea&lt;/code> directly, backward&#xA;compatibility must be provided another way.  &lt;code>JTextArea&lt;/code> has&#xA;a bound property for line wrapping that controls whether or&#xA;not it will wrap lines.  By default, the line wrapping property&#xA;is set to false (not wrapped).&#xA;&lt;p>&#xA;&lt;code>java.awt.TextArea&lt;/code> has two properties &lt;code>rows&lt;/code>&#xA;and &lt;code>columns&lt;/code> that are used to determine the preferred size.&#xA;&lt;code>JTextArea&lt;/code> uses these properties to indicate the&#xA;preferred size of the viewport when placed inside a &lt;code>JScrollPane&lt;/code>&#xA;to match the functionality provided by &lt;code>java.awt.TextArea&lt;/code>.&#xA;&lt;code>JTextArea&lt;/code> has a preferred size of what is needed to&#xA;display all of the text, so that it functions properly inside of&#xA;a &lt;code>JScrollPane&lt;/code>.  If the value for &lt;code>rows&lt;/code>&#xA;or &lt;code>columns&lt;/code> is equal to zero,&#xA;the preferred size along that axis is used for&#xA;the viewport preferred size along the same axis.&#xA;&lt;p>&#xA;The &lt;code>java.awt.TextArea&lt;/code> could be monitored for changes by adding&#xA;a &lt;code>TextListener&lt;/code> for &lt;code>TextEvent&lt;/code>s.&#xA;In the &lt;code>JTextComponent&lt;/code> based&#xA;components, changes are broadcasted from the model via a&#xA;&lt;code>DocumentEvent&lt;/code> to &lt;code>DocumentListeners&lt;/code>.&#xA;The &lt;code>DocumentEvent&lt;/code> gives&#xA;the location of the change and the kind of change if desired.&#xA;The code fragment might look something like:&#xA;&lt;pre>&#xA;DocumentListener myListener = ??;&#xA;JTextArea myArea = ??;&#xA;myArea.getDocument().addDocumentListener(myListener);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;&lt;dt>&lt;b>&lt;font size=+1>Newlines&lt;/font>&lt;/b>&#xA;&lt;dd>&#xA;For a discussion on how newlines are handled, see&#xA;&lt;a href=&quot;text/DefaultEditorKit.html&quot;>DefaultEditorKit&lt;/a>.&#xA;&lt;/dl>&#xA;&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A multi-line area that displays plain text.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.92 12/19/03&#xA;@see JTextPane&#xA;@see JEditorPane&#xA;" annotatedElement="3dc22db1-12aa-4c83-bb48-13d90d3b814f"/>
            <generalization xmi:id="21994efa-2ead-41c4-a2ec-1e63818d13ce" isSubstitutable="true" general="ff3cbbfc-9ddc-468b-be89-f7c80430097b"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="49d96819-81ce-421d-bfb0-01c6dbefa2f1" name="AccessibleJTextArea" visibility="protected">
              <ownedComment xmi:id="615fc2a3-e50d-4e8b-9fa4-8c4f5aafb930" body="This class implements accessibility support for the&#xA;&lt;code>JTextArea&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to text area user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="49d96819-81ce-421d-bfb0-01c6dbefa2f1"/>
              <generalization xmi:id="78281fab-e2c2-4357-a678-acab60c9e00c" isSubstitutable="true" general="ac9a36b2-925c-417c-900c-979e705e9cba"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="0db8e5ec-360e-474b-92a8-3d683cbb4c17" name="table">
            <packagedElement xmi:type="uml:Class" xmi:id="644df027-8d1f-4d06-a931-6d486c2f09c6" name="JTableHeader" clientDependency="5b91088f-0ed4-4069-9b47-e54f80898021 f5741a97-140b-4cf8-b63f-5c09eefed268">
              <ownedComment xmi:id="879e6c12-25aa-4f75-83f9-a6f1646daa3a" body="This is the object which manages the header of the &lt;code>JTable&lt;/code>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.66 12/19/03&#xA;@author Alan Chung&#xA;@author Philip Milne&#xA;@see javax.swing.JTable&#xA;" annotatedElement="644df027-8d1f-4d06-a931-6d486c2f09c6"/>
              <generalization xmi:id="6604d27a-e753-4a08-94f5-c605fc2446ba" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
              <interfaceRealization xmi:id="5b91088f-0ed4-4069-9b47-e54f80898021" name="" supplier="f9333e5d-3556-4b2e-93d6-4e5f29f721e9" client="644df027-8d1f-4d06-a931-6d486c2f09c6" contract="f9333e5d-3556-4b2e-93d6-4e5f29f721e9"/>
              <interfaceRealization xmi:id="f5741a97-140b-4cf8-b63f-5c09eefed268" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="644df027-8d1f-4d06-a931-6d486c2f09c6" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="886d3559-d4a6-48b6-895b-8ee35a4d8655" name="UIResourceTableCellRenderer" visibility="private" clientDependency="3d1524cc-1251-4112-be02-edce69811a42">
                <generalization xmi:id="507991b0-7f0b-4045-a0cb-5d2b905c2b3c" isSubstitutable="true" general="b5b4054c-1a18-45b2-9a45-50414a92e4ea"/>
                <interfaceRealization xmi:id="3d1524cc-1251-4112-be02-edce69811a42" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="886d3559-d4a6-48b6-895b-8ee35a4d8655" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="9f0e4370-490d-412d-a571-bac51f092aa5" name="AccessibleJTableHeader" visibility="protected">
                <ownedComment xmi:id="304d8219-6f38-4147-b934-0929b447bfa1" body="This class implements accessibility support for the&#xA;&lt;code>JTableHeader&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to table header user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="9f0e4370-490d-412d-a571-bac51f092aa5"/>
                <generalization xmi:id="660e46dc-08de-4b22-97f0-f0550d0a2e2d" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="9ef29696-db1b-4ed1-b737-a3cdb6dbe22c" name="AccessibleJTableHeaderEntry" visibility="protected" clientDependency="00c1e61e-b4a2-47c0-9ae2-d5b52540909c 8507199d-5318-45b9-a501-33c5a4c3169a">
                  <ownedComment xmi:id="42b9143e-af4b-4947-a549-6c05d455c4b2" body="This class provides an implementation of the Java Accessibility&#xA;API appropropriate for JTableHeader entries.&#xA;" annotatedElement="9ef29696-db1b-4ed1-b737-a3cdb6dbe22c"/>
                  <generalization xmi:id="5770ea61-81d7-467c-a77a-86428665b701" isSubstitutable="true" general="5e5fecb3-251d-4b0e-b142-9f3aac1d4c57"/>
                  <interfaceRealization xmi:id="8507199d-5318-45b9-a501-33c5a4c3169a" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="9ef29696-db1b-4ed1-b737-a3cdb6dbe22c" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
                  <interfaceRealization xmi:id="00c1e61e-b4a2-47c0-9ae2-d5b52540909c" name="" supplier="a13045dc-df1a-4751-8aff-9b7e320e05bf" client="9ef29696-db1b-4ed1-b737-a3cdb6dbe22c" contract="a13045dc-df1a-4751-8aff-9b7e320e05bf"/>
                </nestedClassifier>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b5b4054c-1a18-45b2-9a45-50414a92e4ea" name="DefaultTableCellRenderer" clientDependency="a2dd6ee8-feae-4c7d-8087-7b7a124d7312 1be73e5a-9dc1-46fc-81a5-78625801ddc8">
              <ownedComment xmi:id="4a6d4838-adba-4566-aef2-bc2d9711f92b" body="The standard class for rendering (displaying) individual cells&#xA;in a &lt;code>JTable&lt;/code>.&#xA;&lt;p>&#xA;&#xA;&lt;strong>&lt;a name=&quot;override&quot;>Implementation Note:&lt;/a>&lt;/strong>&#xA;This class inherits from &lt;code>JLabel&lt;/code>, a standard component class.&#xA;However &lt;code>JTable&lt;/code> employs a unique mechanism for rendering&#xA;its cells and therefore requires some slightly modified behavior&#xA;from its cell renderer.&#xA;The table class defines a single cell renderer and uses it as a&#xA;as a rubber-stamp for rendering all cells in the table;&#xA;it renders the first cell,&#xA;changes the contents of that cell renderer,&#xA;shifts the origin to the new location, re-draws it, and so on.&#xA;The standard &lt;code>JLabel&lt;/code> component was not&#xA;designed to be used this way and we want to avoid&#xA;triggering a &lt;code>revalidate&lt;/code> each time the&#xA;cell is drawn. This would greatly decrease performance because the&#xA;&lt;code>revalidate&lt;/code> message would be&#xA;passed up the hierarchy of the container to determine whether any other&#xA;components would be affected.&#xA;As the renderer is only parented for the lifetime of a painting operation&#xA;we similarly want to avoid the overhead associated with walking the&#xA;hierarchy for painting operations.&#xA;So this class&#xA;overrides the &lt;code>validate&lt;/code>, &lt;code>invalidate&lt;/code>,&#xA;&lt;code>revalidate&lt;/code>, &lt;code>repaint&lt;/code>, and&#xA;&lt;code>firePropertyChange&lt;/code> methods to be&#xA;no-ops and override the &lt;code>isOpaque&lt;/code> method solely to improve&#xA;performance.  If you write your own renderer,&#xA;please keep this performance consideration in mind.&#xA;&lt;p>&#xA;&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.38 03/05/04&#xA;@author Philip Milne&#xA;@see JTable&#xA;" annotatedElement="b5b4054c-1a18-45b2-9a45-50414a92e4ea"/>
              <generalization xmi:id="c284d6a0-166e-4210-99e4-9cb35a5e488f" isSubstitutable="true" general="c9ab6369-faf9-4d4f-8a58-fa6a4a41feb0"/>
              <interfaceRealization xmi:id="a2dd6ee8-feae-4c7d-8087-7b7a124d7312" name="" supplier="d4cf2dd7-d632-412b-8dbb-574691c4af5b" client="b5b4054c-1a18-45b2-9a45-50414a92e4ea" contract="d4cf2dd7-d632-412b-8dbb-574691c4af5b"/>
              <interfaceRealization xmi:id="1be73e5a-9dc1-46fc-81a5-78625801ddc8" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="b5b4054c-1a18-45b2-9a45-50414a92e4ea" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="9b192524-8c2c-4690-b989-6032ffb8bb39" name="UIResource" clientDependency="532cbc09-ccd4-4b49-a560-873d9f7279f2">
                <ownedComment xmi:id="c54809d9-2e30-4b91-8b5b-400f5ee111ff" body="A subclass of &lt;code>DefaultTableCellRenderer&lt;/code> that&#xA;implements &lt;code>UIResource&lt;/code>.&#xA;&lt;code>DefaultTableCellRenderer&lt;/code> doesn't implement&#xA;&lt;code>UIResource&lt;/code>&#xA;directly so that applications can safely override the&#xA;&lt;code>cellRenderer&lt;/code> property with&#xA;&lt;code>DefaultTableCellRenderer&lt;/code> subclasses.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="9b192524-8c2c-4690-b989-6032ffb8bb39"/>
                <generalization xmi:id="ba1f5bdd-d9b2-4abd-9a35-1fd8fb4f547b" isSubstitutable="true" general="b5b4054c-1a18-45b2-9a45-50414a92e4ea"/>
                <interfaceRealization xmi:id="532cbc09-ccd4-4b49-a560-873d9f7279f2" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="9b192524-8c2c-4690-b989-6032ffb8bb39" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ce9e8ece-d47b-476a-b159-6cdfc480830c" name="TableColumn" clientDependency="0e15b1f6-d27b-4d5c-8141-9fa6b796d3bd">
              <ownedComment xmi:id="721102c9-6f88-4fea-a7f5-b3e254a40729" body="A &lt;code>TableColumn&lt;/code> represents all the attributes of a column in a&#xA;&lt;code>JTable&lt;/code>, such as width, resizibility, minimum and maximum width.&#xA;In addition, the &lt;code>TableColumn&lt;/code> provides slots for a renderer and&#xA;an editor that can be used to display and edit the values in this column.&#xA;&lt;p>&#xA;It is also possible to specify renderers and editors on a per type basis&#xA;rather than a per column basis - see the&#xA;&lt;code>setDefaultRenderer&lt;/code> method in the &lt;code>JTable&lt;/code> class.&#xA;This default mechanism is only used when the renderer (or&#xA;editor) in the &lt;code>TableColumn&lt;/code> is &lt;code>null&lt;/code>.&#xA;&lt;p>&#xA;The &lt;code>TableColumn&lt;/code> stores the link between the columns in the&#xA;&lt;code>JTable&lt;/code> and the columns in the &lt;code>TableModel&lt;/code>.&#xA;The &lt;code>modelIndex&lt;/code> is the column in the&#xA;&lt;code>TableModel&lt;/code>, which will be queried for the data values for the&#xA;cells in this column. As the column moves around in the view this&#xA;&lt;code>modelIndex&lt;/code> does not change.&#xA;&lt;p>&#xA;&lt;b>Note:&lt;/b> Some implementations may assume that all&#xA;&lt;code>TableColumnModel&lt;/code>s are unique, therefore we would&#xA;recommend that the same &lt;code>TableColumn&lt;/code> instance&#xA;not be added more than once to a &lt;code>TableColumnModel&lt;/code>.&#xA;To show &lt;code>TableColumn&lt;/code>s with the same column of&#xA;data from the model, create a new instance with the same&#xA;&lt;code>modelIndex&lt;/code>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.60 05/18/04&#xA;@author Alan Chung&#xA;@author Philip Milne&#xA;@see javax.swing.table.TableColumnModel&#xA;&#xA;@see javax.swing.table.DefaultTableColumnModel&#xA;@see javax.swing.table.JTableHeader#getDefaultRenderer()&#xA;@see JTable#getDefaultRenderer(Class)&#xA;@see JTable#getDefaultEditor(Class)&#xA;@see JTable#getCellRenderer(int, int)&#xA;@see JTable#getCellEditor(int, int)&#xA;" annotatedElement="ce9e8ece-d47b-476a-b159-6cdfc480830c"/>
              <generalization xmi:id="28e19702-687d-4df0-9ad7-fd88a1ae34f0" isSubstitutable="true" general="c09bb221-d452-4028-bafa-704d1c26f6ba"/>
              <interfaceRealization xmi:id="0e15b1f6-d27b-4d5c-8141-9fa6b796d3bd" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ce9e8ece-d47b-476a-b159-6cdfc480830c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a67fd94c-553a-4c10-b7f9-8685fca31e7c" name="DefaultTableModel" clientDependency="3b846d2c-1096-4d0a-a4fd-5a2c1eb5f71b">
              <ownedComment xmi:id="aba7a579-bc9a-40f3-9284-d87d2184da21" body="This is an implementation of &lt;code>TableModel&lt;/code> that&#xA;uses a &lt;code>Vector&lt;/code> of &lt;code>Vectors&lt;/code> to store the&#xA;cell value objects.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.39 12/19/03&#xA;@author Philip Milne&#xA;&#xA;@see TableModel&#xA;@see #getDataVector&#xA;" annotatedElement="a67fd94c-553a-4c10-b7f9-8685fca31e7c"/>
              <generalization xmi:id="a7b916c3-0ac8-43ab-bbc9-41e3ec1c4367" isSubstitutable="true" general="090a6639-0d7e-4c2f-86e2-7146ecec180c"/>
              <interfaceRealization xmi:id="3b846d2c-1096-4d0a-a4fd-5a2c1eb5f71b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="a67fd94c-553a-4c10-b7f9-8685fca31e7c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="5575d96f-9252-46f2-8be1-e5d0d692a14e" name="TableCellEditor" isAbstract="true">
              <ownedComment xmi:id="91a2fac8-fafd-4f36-a296-785e02365de0" body="This interface defines the method any object that would like to be&#xA;an editor of values for components such as &lt;code>JListBox&lt;/code>,&#xA;&lt;code>JComboBox&lt;/code>, &lt;code>JTree&lt;/code>, or &lt;code>JTable&lt;/code>&#xA;needs to implement.&#xA;&#xA;@version 1.16 12/19/03&#xA;@author Alan Chung&#xA;" annotatedElement="5575d96f-9252-46f2-8be1-e5d0d692a14e"/>
              <generalization xmi:id="1825227f-dcb5-403a-93d6-b715199d9ce0" isSubstitutable="true" general="8cf3a8f2-ac94-4aea-8cf2-9fc323d23b85"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="4b411128-1659-4243-9981-f1bd9a3276cf" name="TableColumnModel" isAbstract="true">
              <ownedComment xmi:id="08dd0051-77aa-4039-9c74-26dcbef34dc1" body="Defines the requirements for a table column model object suitable for&#xA;use with &lt;code>JTable&lt;/code>.&#xA;&#xA;@version 1.25 05/05/04&#xA;@author Alan Chung&#xA;@author Philip Milne&#xA;@see DefaultTableColumnModel&#xA;" annotatedElement="4b411128-1659-4243-9981-f1bd9a3276cf"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0b1f6063-47e7-472e-a094-19a659779a63" name="DefaultTableColumnModel" clientDependency="04f97f3e-52a6-40de-a931-6e5323670573 379fdf48-9d8a-4465-981d-cca5a7a6e28c ab04e82a-ea24-40c1-a7bb-15c77bbacd0f 56d7431e-3af7-484e-87a3-37f35b3c9e33">
              <ownedComment xmi:id="fe92813a-c091-4783-b972-2386657b994f" body="The standard column-handler for a &lt;code>JTable&lt;/code>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.48 05/05/04&#xA;@author Alan Chung&#xA;@author Philip Milne&#xA;@see JTable&#xA;" annotatedElement="0b1f6063-47e7-472e-a094-19a659779a63"/>
              <interfaceRealization xmi:id="56d7431e-3af7-484e-87a3-37f35b3c9e33" name="" supplier="4b411128-1659-4243-9981-f1bd9a3276cf" client="0b1f6063-47e7-472e-a094-19a659779a63" contract="4b411128-1659-4243-9981-f1bd9a3276cf"/>
              <interfaceRealization xmi:id="ab04e82a-ea24-40c1-a7bb-15c77bbacd0f" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="0b1f6063-47e7-472e-a094-19a659779a63" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
              <interfaceRealization xmi:id="04f97f3e-52a6-40de-a931-6e5323670573" name="" supplier="077ca4fe-3afb-4e22-bed0-5cc47445acf4" client="0b1f6063-47e7-472e-a094-19a659779a63" contract="077ca4fe-3afb-4e22-bed0-5cc47445acf4"/>
              <interfaceRealization xmi:id="379fdf48-9d8a-4465-981d-cca5a7a6e28c" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0b1f6063-47e7-472e-a094-19a659779a63" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="33d0a406-7cb1-4c0b-8b45-08b304ca4f86" name="TableModel" isAbstract="true">
              <ownedComment xmi:id="5eb051d0-8842-4589-b4c7-d821a0647c70" body="The &lt;code>TableModel&lt;/code> interface specifies the methods the&#xA;&lt;code>JTable&lt;/code> will use to interrogate a tabular data model. &lt;p>&#xA;&#xA;The &lt;code>JTable&lt;/code> can be set up to display any data&#xA;model which implements the&#xA;&lt;code>TableModel&lt;/code> interface with a couple of lines of code:  &lt;p>&#xA;&lt;pre>&#xA;TableModel myData = new MyTableModel();&#xA;JTable table = new JTable(myData);&#xA;&lt;/pre>&lt;p>&#xA;&#xA;For further documentation, see &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#data&quot;>Creating a Table Model&lt;/a>&#xA;in &lt;em>The Java Tutorial&lt;/em>.&#xA;&lt;p>&#xA;@version 1.26 05/05/04&#xA;@author Philip Milne&#xA;@see JTable&#xA;" annotatedElement="33d0a406-7cb1-4c0b-8b45-08b304ca4f86"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d4cf2dd7-d632-412b-8dbb-574691c4af5b" name="TableCellRenderer" isAbstract="true">
              <ownedComment xmi:id="c0710dbe-4b9a-4921-8b4a-73d1a4a82011" body="This interface defines the method required by any object that&#xA;would like to be a renderer for cells in a &lt;code>JTable&lt;/code>.&#xA;&#xA;@version 1.18 12/19/03&#xA;@author Alan Chung&#xA;" annotatedElement="d4cf2dd7-d632-412b-8dbb-574691c4af5b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="090a6639-0d7e-4c2f-86e2-7146ecec180c" name="AbstractTableModel" clientDependency="5ac7ef79-70c2-4e09-abe0-dd6a8120e4d8 01412099-7940-40f2-a17d-abefcce1829d" isAbstract="true">
              <ownedComment xmi:id="b4773a2b-3aa0-4589-98e4-8fd879fa4720" body="This abstract class provides default implementations for most of&#xA;the methods in the &lt;code>TableModel&lt;/code> interface. It takes care of&#xA;the management of listeners and provides some conveniences for generating&#xA;&lt;code>TableModelEvents&lt;/code> and dispatching them to the listeners.&#xA;To create a concrete &lt;code>TableModel&lt;/code> as a subclass of&#xA;&lt;code>AbstractTableModel&lt;/code> you need only provide implementations&#xA;for the following three methods:&#xA;&#xA;&lt;pre>&#xA;public int getRowCount();&#xA;public int getColumnCount();&#xA;public Object getValueAt(int row, int column);&#xA;&lt;/pre>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.41 05/05/04&#xA;@author Alan Chung&#xA;@author Philip Milne&#xA;" annotatedElement="090a6639-0d7e-4c2f-86e2-7146ecec180c"/>
              <interfaceRealization xmi:id="01412099-7940-40f2-a17d-abefcce1829d" name="" supplier="33d0a406-7cb1-4c0b-8b45-08b304ca4f86" client="090a6639-0d7e-4c2f-86e2-7146ecec180c" contract="33d0a406-7cb1-4c0b-8b45-08b304ca4f86"/>
              <interfaceRealization xmi:id="5ac7ef79-70c2-4e09-abe0-dd6a8120e4d8" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="090a6639-0d7e-4c2f-86e2-7146ecec180c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="1a95f1ea-7980-4ae4-b14e-b495104a675d" name="ListCellRenderer" isAbstract="true">
            <ownedComment xmi:id="1a1c1cc3-57b3-444d-8ddb-3b49277bd928" body="Identifies components that can be used as &quot;rubber stamps&quot; to paint&#xA;the cells in a JList.  For example, to use a JLabel as a&#xA;ListCellRenderer, you would write something like this:&#xA;&lt;pre>&#xA;class MyCellRenderer extends JLabel implements ListCellRenderer {&#xA;public MyCellRenderer() {&#xA;setOpaque(true);&#xA;}&#xA;public Component getListCellRendererComponent(&#xA;JList list,&#xA;Object value,&#xA;int index,&#xA;boolean isSelected,&#xA;boolean cellHasFocus)&#xA;{&#xA;setText(value.toString());&#xA;setBackground(isSelected ? Color.red : Color.white);&#xA;setForeground(isSelected ? Color.white : Color.black);&#xA;return this;&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&#xA;@see JList&#xA;@see DefaultListCellRenderer&#xA;&#xA;@version 1.17 12/19/03&#xA;@author Hans Muller&#xA;" annotatedElement="1a95f1ea-7980-4ae4-b14e-b495104a675d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="11b4f91d-3148-4ea2-9a60-333c554cc0ec" name="JMenu" clientDependency="5e04fbb1-40f0-4a49-ac46-724d590ccf96 d3a07f10-fd67-4a56-8884-941007abb9f0">
            <ownedComment xmi:id="cfbdc956-8fae-4443-990e-ff0ae6c57b50" body="An implementation of a menu -- a popup window containing&#xA;&lt;code>JMenuItem&lt;/code>s that&#xA;is displayed when the user selects an item on the &lt;code>JMenuBar&lt;/code>.&#xA;In addition to &lt;code>JMenuItem&lt;/code>s, a &lt;code>JMenu&lt;/code> can&#xA;also contain &lt;code>JSeparator&lt;/code>s.&#xA;&lt;p>&#xA;In essence, a menu is a button with an associated &lt;code>JPopupMenu&lt;/code>.&#xA;When the &quot;button&quot; is pressed, the &lt;code>JPopupMenu&lt;/code> appears. If the&#xA;&quot;button&quot; is on the &lt;code>JMenuBar&lt;/code>, the menu is a top-level window.&#xA;If the &quot;button&quot; is another menu item, then the &lt;code>JPopupMenu&lt;/code> is&#xA;&quot;pull-right&quot; menu.&#xA;&lt;p>&#xA;For information and examples of using menus see&#xA;&lt;a href=&quot;http://java.sun.com/doc/books/tutorial/uiswing/components/menu.html&quot;>How to Use Menus&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer true&#xA;description: A popup window containing menu items displayed in a menu bar.&#xA;&#xA;@version 1.172 12/19/03&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;@author Arnaud Weber&#xA;@see JMenuItem&#xA;@see JSeparator&#xA;@see JMenuBar&#xA;@see JPopupMenu&#xA;" annotatedElement="11b4f91d-3148-4ea2-9a60-333c554cc0ec"/>
            <generalization xmi:id="6b294463-d99d-4a96-897b-8d83870ebfcf" isSubstitutable="true" general="bef91138-6780-4c26-8173-782522359953"/>
            <interfaceRealization xmi:id="5e04fbb1-40f0-4a49-ac46-724d590ccf96" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="11b4f91d-3148-4ea2-9a60-333c554cc0ec" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <interfaceRealization xmi:id="d3a07f10-fd67-4a56-8884-941007abb9f0" name="" supplier="de6cdb33-0a16-47b4-939d-325aedf18238" client="11b4f91d-3148-4ea2-9a60-333c554cc0ec" contract="de6cdb33-0a16-47b4-939d-325aedf18238"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="23d65fea-2a70-4d48-bd24-718823cc187b" name="ActionChangedListener" visibility="private" clientDependency="b33be9c0-552e-4d85-9bee-348bf7a009d0">
              <interfaceRealization xmi:id="b33be9c0-552e-4d85-9bee-348bf7a009d0" name="" supplier="b548bd16-341a-4f73-88bd-d65014ec5997" client="23d65fea-2a70-4d48-bd24-718823cc187b" contract="b548bd16-341a-4f73-88bd-d65014ec5997"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="302ac253-efcf-41ec-a043-f2c47fd6dc0f" name="MenuChangeListener" visibility="package" clientDependency="6d83247c-ec67-4cf3-8350-716da4d739ff 36ca8431-d6f7-44e3-a83b-148b4ac98cbc">
              <interfaceRealization xmi:id="36ca8431-d6f7-44e3-a83b-148b4ac98cbc" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="302ac253-efcf-41ec-a043-f2c47fd6dc0f" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
              <interfaceRealization xmi:id="6d83247c-ec67-4cf3-8350-716da4d739ff" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="302ac253-efcf-41ec-a043-f2c47fd6dc0f" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="871b486a-2ff4-4713-bcf7-85d1da13ff93" name="WinListener" visibility="protected" clientDependency="c4434d77-c38b-4b5c-8439-bbf086d38d0b">
              <ownedComment xmi:id="27a311a3-a967-43c2-86b9-f8921c1e5dee" body="A listener class that watches for a popup window closing.&#xA;When the popup is closing, the listener deselects the menu.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="871b486a-2ff4-4713-bcf7-85d1da13ff93"/>
              <generalization xmi:id="cb950087-52c9-48b9-9422-6119430121e0" isSubstitutable="true" general="569edcca-f9c2-4c19-854b-a7ea38aaff69"/>
              <interfaceRealization xmi:id="c4434d77-c38b-4b5c-8439-bbf086d38d0b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="871b486a-2ff4-4713-bcf7-85d1da13ff93" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c7335470-f19c-4212-9bd5-57931b0d07b5" name="AccessibleJMenu" visibility="protected" clientDependency="c89d6e78-efac-4ba0-b52e-19fd7bbf4372">
              <ownedComment xmi:id="0351f8c3-6300-4bf2-9b2d-9ad53c18b390" body="This class implements accessibility support for the&#xA;&lt;code>JMenu&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to menu user-interface elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="c7335470-f19c-4212-9bd5-57931b0d07b5"/>
              <generalization xmi:id="09cc1712-80d0-4f59-bc8b-bba5a4334fbc" isSubstitutable="true" general="8b8029ee-6702-46f4-8721-7eb5a2c36ae0"/>
              <interfaceRealization xmi:id="c89d6e78-efac-4ba0-b52e-19fd7bbf4372" name="" supplier="0dbef058-3ccc-4038-b98f-eea279be3f13" client="c7335470-f19c-4212-9bd5-57931b0d07b5" contract="0dbef058-3ccc-4038-b98f-eea279be3f13"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="caec98d6-636e-475b-89de-108d71af705a" name="SpinnerModel" isAbstract="true">
            <ownedComment xmi:id="2f4f9ea3-e398-45d2-a71d-136f1d792336" body="A model for a potentially unbounded sequence of object values.  This model&#xA;is similar to &lt;code>ListModel&lt;/code> however there are some important differences:&#xA;&lt;ul>&#xA;&lt;li> The number of sequence elements isn't neccessarily bounded.&#xA;&lt;li> The model doesn't support indexed random access to sequence elements.&#xA;Only three sequence values are accessible at a time: current, next and&#xA;previous.&#xA;&lt;li> The current sequence element, can be set.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;A &lt;code>SpinnerModel&lt;/code> has three properties, only the first is read/write.&#xA;&lt;dl>&#xA;&lt;dt>&lt;code>value&lt;/code>&#xA;&lt;dd>The current element of the sequence.&#xA;&#xA;&lt;dt>&lt;code>nextValue&lt;/code>&#xA;&lt;dd>The following element or null if &lt;code>value&lt;/code> is the&#xA;last element of the sequence.&#xA;&#xA;&lt;dt>&lt;code>previousValue&lt;/code>&#xA;&lt;dd>The preceeding element or null if &lt;code>value&lt;/code> is the&#xA;first element of the sequence.&#xA;&lt;/dl>&#xA;When the the &lt;code>value&lt;/code> property changes,&#xA;&lt;code>ChangeListeners&lt;/code> are notified.  &lt;code>SpinnerModel&lt;/code> may&#xA;choose to notify the &lt;code>ChangeListeners&lt;/code> under other circumstances.&#xA;&#xA;@see JSpinner&#xA;@see AbstractSpinnerModel&#xA;@see SpinnerListModel&#xA;@see SpinnerNumberModel&#xA;@see SpinnerDateModel&#xA;&#xA;@version 1.6 12/19/03&#xA;@author Hans Muller&#xA;@since 1.4&#xA;" annotatedElement="caec98d6-636e-475b-89de-108d71af705a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="77b4f06d-b159-48b3-a5d9-ce3672958af8" name="SwingGraphics" visibility="package"/>
          <packagedElement xmi:type="uml:Class" xmi:id="70d61a79-48f1-4455-8f5c-ba971535b3f9" name="Timer" clientDependency="dbd2a7bc-163f-41ff-8575-43740b92abc5">
            <ownedComment xmi:id="4c42c5ff-ba81-4ef8-96cd-12c3d31d7bd6" body="Fires one or more action events after a specified delay.&#xA;For example, an animation object can use a &lt;code>Timer&lt;/code>&#xA;as the trigger for drawing its frames.&#xA;&#xA;&lt;p>&#xA;&#xA;Setting up a timer&#xA;involves creating a &lt;code>Timer&lt;/code> object,&#xA;registering one or more action listeners on it,&#xA;and starting the timer using&#xA;the &lt;code>start&lt;/code> method.&#xA;For example,&#xA;the following code creates and starts a timer&#xA;that fires an action event once per second&#xA;(as specified by the first argument to the &lt;code>Timer&lt;/code> constructor).&#xA;The second argument to the &lt;code>Timer&lt;/code> constructor&#xA;specifies a listener to receive the timer's action events.&#xA;&#xA;&lt;pre>&#xA;int delay = 1000; //milliseconds&#xA;ActionListener taskPerformer = new ActionListener() {&#xA;public void actionPerformed(ActionEvent evt) {&#xA;&lt;em>//...Perform a task...&lt;/em>&#xA;}&#xA;};&#xA;new Timer(delay, taskPerformer).start();&lt;/pre>&#xA;&#xA;&lt;p>&#xA;Each &lt;code>Timer&lt;/code>&#xA;has one or more action listeners&#xA;and a &lt;em>delay&lt;/em>&#xA;(the time between action events).&#xA;When&#xA;&lt;em>delay&lt;/em> milliseconds have passed, the &lt;code>Timer&lt;/code>&#xA;fires an action event to its listeners.&#xA;By default, this cycle repeats until&#xA;the &lt;code>stop&lt;/code> method is called.&#xA;If you want the timer to fire only once,&#xA;invoke &lt;code>setRepeats(false)&lt;/code> on the timer.&#xA;To make the delay before the first action event&#xA;different from the delay between events,&#xA;use the &lt;code>setInitialDelay&lt;/code> method.&#xA;&#xA;&lt;p>&#xA;Although all &lt;code>Timer&lt;/code>s perform their waiting&#xA;using a single, shared thread&#xA;(created by the first &lt;code>Timer&lt;/code> object that executes),&#xA;the action event handlers for &lt;code>Timer&lt;/code>s&#xA;execute on another thread -- the event-dispatching thread.&#xA;This means that the action handlers for &lt;code>Timer&lt;/code>s&#xA;can safely perform operations on Swing components.&#xA;However, it also means that the handlers must execute quickly&#xA;to keep the GUI responsive.&#xA;&#xA;&lt;p>&#xA;In v 1.3, another &lt;code>Timer&lt;/code> class was added&#xA;to the Java platform: &lt;code>java.util.Timer&lt;/code>.&#xA;Both it and &lt;code>javax.swing.Timer&lt;/code>&#xA;provide the same basic functionality,&#xA;but &lt;code>java.util.Timer&lt;/code>&#xA;is more general and has more features.&#xA;The &lt;code>javax.swing.Timer&lt;/code> has two features&#xA;that can make it a little easier to use with GUIs.&#xA;First, its event handling metaphor is familiar to GUI programmers&#xA;and can make dealing with the event-dispatching thread&#xA;a bit simpler.&#xA;Second, its&#xA;automatic thread sharing means that you don't have to&#xA;take special steps to avoid spawning&#xA;too many threads.&#xA;Instead, your timer uses the same thread&#xA;used to make cursors blink,&#xA;tool tips appear,&#xA;and so on.&#xA;&#xA;&lt;p>&#xA;You can find further documentation&#xA;and several examples of using timers by visiting&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/timer.html&quot;&#xA;target = &quot;_top&quot;>How to Use Timers&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;For more examples and help in choosing between&#xA;this &lt;code>Timer&lt;/code> class and&#xA;&lt;code>java.util.Timer&lt;/code>,&#xA;see&#xA;&lt;a href=&quot;http://java.sun.com/products/jfc/tsc/articles/timer/&quot;&#xA;target=&quot;_top&quot;>Using Timers in Swing Applications&lt;/a>,&#xA;an article in &lt;em>The Swing Connection.&lt;/em>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see java.util.Timer &lt;code>java.util.Timer&lt;/code>&#xA;&#xA;&#xA;@version 1.45 05/05/04&#xA;@author Dave Moore&#xA;" annotatedElement="70d61a79-48f1-4455-8f5c-ba971535b3f9"/>
            <interfaceRealization xmi:id="dbd2a7bc-163f-41ff-8575-43740b92abc5" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="70d61a79-48f1-4455-8f5c-ba971535b3f9" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="7a3890d1-f04b-4c45-a4c2-e477dd91aeb5" name="DoPostEvent" visibility="package" clientDependency="be506941-96df-4f05-ac8e-53e0e432d6af 50226d97-b0f4-4d49-991c-d7d3e1b51b5e">
              <ownedComment xmi:id="4f037d16-001e-44e7-8a19-039909f77f01" body="DoPostEvent is a runnable class that fires actionEvents to&#xA;the listeners on the EventDispatchThread, via invokeLater.&#xA;@see #post&#xA;" annotatedElement="7a3890d1-f04b-4c45-a4c2-e477dd91aeb5"/>
              <interfaceRealization xmi:id="50226d97-b0f4-4d49-991c-d7d3e1b51b5e" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="7a3890d1-f04b-4c45-a4c2-e477dd91aeb5" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
              <interfaceRealization xmi:id="be506941-96df-4f05-ac8e-53e0e432d6af" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="7a3890d1-f04b-4c45-a4c2-e477dd91aeb5" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="74564559-a512-4c82-bfcc-29769618ec6c" name="TransferHandler" clientDependency="951ff1f6-5dc5-4fc1-a4d1-ecb4a4c7e92b">
            <ownedComment xmi:id="5d702b0d-9f4c-4a76-a48d-bd13512778c5" body="This class is used to handle the transfer of a &lt;code>Transferable&lt;/code>&#xA;to and from Swing components.  The &lt;code>Transferable&lt;/code> is used to&#xA;represent data that is exchanged via a cut, copy, or paste&#xA;to/from a clipboard.  It is also used in drag-and-drop operations&#xA;to represent a drag from a component, and a drop to a component.&#xA;Swing provides functionality that automatically supports cut, copy,&#xA;and paste keyboard bindings that use the functionality provided by&#xA;an implementation of this class.  Swing also provides functionality&#xA;that automatically supports drag and drop that uses the functionality&#xA;provided by an implementation of this class.  The Swing developer can&#xA;concentrate on specifying the semantics of a transfer primarily by setting&#xA;the &lt;code>transferHandler&lt;/code> property on a Swing component.&#xA;&lt;p>&#xA;This class is implemented to provide a default behavior of transferring&#xA;a component property simply by specifying the name of the property in&#xA;the constructor.  For example, to transfer the foreground color from&#xA;one component to another either via the clipboard or a drag and drop operation&#xA;a &lt;code>TransferHandler&lt;/code> can be constructed with the string &quot;foreground&quot;.  The&#xA;built in support will use the color returned by &lt;code>getForeground&lt;/code> as the source&#xA;of the transfer, and &lt;code>setForeground&lt;/code> for the target of a transfer.&#xA;&lt;p>&#xA;Please see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/dnd.html&quot;>&#xA;How to Use Drag and Drop and Data Transfer&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>, for more information.&#xA;&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.29 06/02/04&#xA;@since 1.4&#xA;" annotatedElement="74564559-a512-4c82-bfcc-29769618ec6c"/>
            <interfaceRealization xmi:id="951ff1f6-5dc5-4fc1-a4d1-ecb4a4c7e92b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="74564559-a512-4c82-bfcc-29769618ec6c" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="b3ff5672-c4d6-4dd0-b043-806487da8632" name="PropertyTransferable" visibility="package" clientDependency="f16c528f-0676-4520-9f65-89653c186033">
              <interfaceRealization xmi:id="f16c528f-0676-4520-9f65-89653c186033" name="" supplier="93975c92-87b1-4831-a429-d2cc70682ac8" client="b3ff5672-c4d6-4dd0-b043-806487da8632" contract="93975c92-87b1-4831-a429-d2cc70682ac8"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="23b94d89-2e41-40dc-9e7e-1102721a3759" name="SwingDropTarget" visibility="package" clientDependency="8232ce54-3478-49e2-b13c-e1df700b73f2">
              <ownedComment xmi:id="5304be43-a5f7-47b8-84c1-a853aa4cacf4" body="This is the default drop target for drag and drop operations if&#xA;one isn't provided by the developer.  &lt;code>DropTarget&lt;/code>&#xA;only supports one &lt;code>DropTargetListener&lt;/code> and doesn't&#xA;function properly if it isn't set.&#xA;This class sets the one listener as the linkage of drop handling&#xA;to the &lt;code>TransferHandler&lt;/code>, and adds support for&#xA;additional listeners which some of the &lt;code>ComponentUI&lt;/code>&#xA;implementations install to manipulate a drop insertion location.&#xA;" annotatedElement="23b94d89-2e41-40dc-9e7e-1102721a3759"/>
              <generalization xmi:id="49592aed-22b1-4c84-a6bf-47de2d17b41d" isSubstitutable="true" general="2faaeb6a-cbf5-4758-9805-844b5d36ea14"/>
              <interfaceRealization xmi:id="8232ce54-3478-49e2-b13c-e1df700b73f2" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="23b94d89-2e41-40dc-9e7e-1102721a3759" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="41bf7518-2bf2-499f-aefc-19859160b119" name="DropHandler" visibility="private" clientDependency="2eac1f23-fba7-438d-8458-0fae7e93c57d ec13b4b0-33c9-48dc-956f-59aec5df85fa">
              <interfaceRealization xmi:id="ec13b4b0-33c9-48dc-956f-59aec5df85fa" name="" supplier="2d2b5782-0c86-4da3-a722-9835891eb353" client="41bf7518-2bf2-499f-aefc-19859160b119" contract="2d2b5782-0c86-4da3-a722-9835891eb353"/>
              <interfaceRealization xmi:id="2eac1f23-fba7-438d-8458-0fae7e93c57d" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="41bf7518-2bf2-499f-aefc-19859160b119" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="739085ac-6afa-4f47-b4cf-bcf6653b64a9" name="DragHandler" visibility="private" clientDependency="e857e926-6972-4271-934d-a4a3f2abea99 b4b92f88-6403-48d6-950a-3fb8c512342d">
              <ownedComment xmi:id="65d9d402-062f-4d91-b0f4-4a7db9df95f0" body="This is the default drag handler for drag and drop operations that&#xA;use the &lt;code>TransferHandler&lt;/code>.&#xA;" annotatedElement="739085ac-6afa-4f47-b4cf-bcf6653b64a9"/>
              <interfaceRealization xmi:id="e857e926-6972-4271-934d-a4a3f2abea99" name="" supplier="09b46730-9455-42a2-a2ce-e09b8963e217" client="739085ac-6afa-4f47-b4cf-bcf6653b64a9" contract="09b46730-9455-42a2-a2ce-e09b8963e217"/>
              <interfaceRealization xmi:id="b4b92f88-6403-48d6-950a-3fb8c512342d" name="" supplier="41b73f00-ad15-4def-a4f2-1f322121f0c1" client="739085ac-6afa-4f47-b4cf-bcf6653b64a9" contract="41b73f00-ad15-4def-a4f2-1f322121f0c1"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="4d91e8e2-67c2-4ec8-8c23-abb7bbe12426" name="SwingDragGestureRecognizer" visibility="private">
              <generalization xmi:id="c603fa5b-7982-41ad-b76c-b4af21eca377" isSubstitutable="true" general="bc05fb8c-6d22-4108-9c58-a2ba19f967ec"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="58b0747a-abc0-4cdc-82b1-baf02652dee4" name="TransferAction" visibility="package" clientDependency="8f1ec573-a2f7-433d-a1ec-5f3ddb30d75b">
              <generalization xmi:id="07213431-5a60-44ed-8859-8a1677c72fbe" isSubstitutable="true" general="e74961d6-232c-4520-8292-e13d41026b86"/>
              <interfaceRealization xmi:id="8f1ec573-a2f7-433d-a1ec-5f3ddb30d75b" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="58b0747a-abc0-4cdc-82b1-baf02652dee4" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="88c146c7-e263-47bc-927d-58bbe141a42b" name="SwingDefaultFocusTraversalPolicy" visibility="package">
            <generalization xmi:id="0a5cd253-ae1d-43cf-b653-d8b05281d174" isSubstitutable="true" general="191560cb-1b65-4ae2-8c63-c1f29b451549"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="49e616a3-ae12-450b-a151-207e17c439c2" name="ComponentInputMap">
            <ownedComment xmi:id="5f9ddbd4-5c58-4404-ac92-70e1c5f0238a" body="A &lt;code>ComponentInputMap&lt;/code> is an &lt;code>InputMap&lt;/code>&#xA;associated with a particular &lt;code>JComponent&lt;/code>.&#xA;The component is automatically notified whenever&#xA;the &lt;code>ComponentInputMap&lt;/code> changes.&#xA;&lt;code>ComponentInputMap&lt;/code>s are used for&#xA;&lt;code>WHEN_IN_FOCUSED_WINDOW&lt;/code> bindings.&#xA;&#xA;@version 1.9 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="49e616a3-ae12-450b-a151-207e17c439c2"/>
            <generalization xmi:id="6f59586a-1abe-4246-96db-0a18a36b9492" isSubstitutable="true" general="56079c23-87ef-4dab-9d4a-5a45870515b9"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e9955e3b-d75a-4378-bf2c-be63e4f5387d" name="Spring" isAbstract="true">
            <ownedComment xmi:id="b85b5609-0ac1-4135-8e66-892511217453" body="An instance of the &lt;code>Spring&lt;/code> class holds three properties that&#xA;characterize its behavior: the &lt;em>minimum&lt;/em>, &lt;em>preferred&lt;/em>, and&#xA;&lt;em>maximum&lt;/em> values. Each of these properties may be involved in&#xA;defining its fourth, &lt;em>value&lt;/em>, property based on a series of rules.&#xA;&lt;p>&#xA;An instance of the &lt;code>Spring&lt;/code> class can be visualized as a&#xA;mechanical spring that provides a corrective force as the spring is compressed&#xA;or stretched away from its preferred value. This force is modelled&#xA;as linear function of the distance from the preferred value, but with&#xA;two different constants -- one for the compressional force and one for the&#xA;tensional one. Those constants are specified by the minimum and maximum&#xA;values of the spring such that a spring at its minimum value produces an&#xA;equal and opposite force to that which is created when it is at its&#xA;maximum value. The difference between the &lt;em>preferred&lt;/em> and&#xA;&lt;em>minimum&lt;/em> values, therefore, represents the ease with which the&#xA;spring can be compressed and the difference between its &lt;em>maximum&lt;/em>&#xA;and &lt;em>preferred&lt;/em> values, indicates the ease with which the&#xA;&lt;code>Spring&lt;/code> can be extended.&#xA;See the {@link #sum} method for details.&#xA;&#xA;&lt;p>&#xA;By defining simple arithmetic operations on &lt;code>Spring&lt;/code>s,&#xA;the behavior of a collection of &lt;code>Spring&lt;/code>s&#xA;can be reduced to that of an ordinary (non-compound) &lt;code>Spring&lt;/code>. We define&#xA;the &quot;+&quot;, &quot;-&quot;, &lt;em>max&lt;/em>, and &lt;em>min&lt;/em> operators on&#xA;&lt;code>Spring&lt;/code>s so that, in each case, the result is a &lt;code>Spring&lt;/code>&#xA;whose characteristics bear a useful mathematical relationship to its constituent&#xA;springs.&#xA;&#xA;&lt;p>&#xA;A &lt;code>Spring&lt;/code> can be treated as a pair of intervals&#xA;with a single common point: the preferred value.&#xA;The following rules define some of the&#xA;arithmetic operators that can be applied to intervals&#xA;(&lt;code>[a, b]&lt;/code> refers to the interval&#xA;from &lt;code>a&lt;/code>&#xA;to &lt;code>b&lt;/code>,&#xA;where &lt;code>a &lt;= b&lt;/code>).&#xA;&lt;p>&#xA;&lt;pre>&#xA;[a1, b1] + [a2, b2] = [a1 + a2, b1 + b2]&#xA;&#xA;-[a, b] = [-b, -a]&#xA;&#xA;max([a1, b1], [a2, b2]) = [max(a1, a2), max(b1, b2)]&#xA;&lt;/pre>&#xA;&lt;p>&#xA;&#xA;If we denote &lt;code>Spring&lt;/code>s as &lt;code>[a, b, c]&lt;/code>,&#xA;where &lt;code>a &lt;= b &lt;= c&lt;/code>, we can define the same&#xA;arithmetic operators on &lt;code>Spring&lt;/code>s:&#xA;&lt;p>&#xA;&lt;pre>&#xA;[a1, b1, c1] + [a2, b2, c2] = [a1 + a2, b1 + b2, c1 + c2]&#xA;&#xA;-[a, b, c] = [-c, -b, -a]&#xA;&#xA;max([a1, b1, c1], [a2, b2, c2]) = [max(a1, a2), max(b1, b2), max(c1, c2)]&#xA;&lt;/pre>&#xA;&lt;p>&#xA;With both intervals and &lt;code>Spring&lt;/code>s we can define &quot;-&quot; and &lt;em>min&lt;/em>&#xA;in terms of negation:&#xA;&lt;p>&#xA;&lt;pre>&#xA;X - Y = X + (-Y)&#xA;&#xA;min(X, Y) = -max(-X, -Y)&#xA;&lt;/pre>&#xA;&lt;p>&#xA;For the static methods in this class that embody the arithmetic&#xA;operators, we do not actually perform the operation in question as&#xA;that would snapshot the values of the properties of the method's arguments&#xA;at the time the static method is called. Instead, the static methods&#xA;create a new &lt;code>Spring&lt;/code> instance containing references to&#xA;the method's arguments so that the characteristics of the new spring track the&#xA;potentially changing characteristics of the springs from which it&#xA;was made. This is a little like the idea of a &lt;em>lazy value&lt;/em>&#xA;in a functional language.&#xA;&lt;p>&#xA;If you are implementing a &lt;code>SpringLayout&lt;/code> you&#xA;can find further information and examples in&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/layout/spring.html&quot;>How to Use SpringLayout&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see SpringLayout&#xA;@see SpringLayout.Constraints&#xA;&#xA;@version 1.9 12/19/03&#xA;@author &#x9;Philip Milne&#xA;@since       1.4&#xA;" annotatedElement="e9955e3b-d75a-4378-bf2c-be63e4f5387d"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="db1a8be1-770c-476a-92fe-9f6ad56ac4d5" name="AbstractSpring" visibility="package" isAbstract="true">
              <generalization xmi:id="7aec3671-c2ec-4bf3-9e9a-0b295b09af36" isSubstitutable="true" general="e9955e3b-d75a-4378-bf2c-be63e4f5387d"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c68984b1-4699-45ab-bd01-549fd1de93de" name="StaticSpring" visibility="private">
              <generalization xmi:id="f34526b5-6459-4b17-bbdc-a10723feee9d" isSubstitutable="true" general="db1a8be1-770c-476a-92fe-9f6ad56ac4d5"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="d3997832-c817-4012-8443-dbee2c30d5a3" name="NegativeSpring" visibility="private">
              <generalization xmi:id="eff28123-f367-4ea4-b5ca-29f8091958cc" isSubstitutable="true" general="e9955e3b-d75a-4378-bf2c-be63e4f5387d"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="42c26b16-c723-4f5f-a717-5869a9d91968" name="CompoundSpring" visibility="package" isAbstract="true">
              <generalization xmi:id="9bee4280-1cce-477b-a155-fe0a99d6148b" isSubstitutable="true" general="c68984b1-4699-45ab-bd01-549fd1de93de"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="f2767d1b-1c3c-494a-b9cb-b7e87584b3fc" name="SumSpring" visibility="private">
              <generalization xmi:id="72d72069-c78b-4054-8ac9-76e5b3112579" isSubstitutable="true" general="42c26b16-c723-4f5f-a717-5869a9d91968"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="f697c2c0-d089-4b17-beb6-643e205b21db" name="MaxSpring" visibility="private">
              <generalization xmi:id="213cca2b-d454-4cba-a8d0-7c4a8f0fb5ea" isSubstitutable="true" general="42c26b16-c723-4f5f-a717-5869a9d91968"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="14a390fb-0aca-45a1-bc8d-1310b5e14f8a" name="ScaleSpring" visibility="private">
              <generalization xmi:id="2b91920e-b715-4e58-8b2c-b950ac9c44da" isSubstitutable="true" general="e9955e3b-d75a-4378-bf2c-be63e4f5387d"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="fae29aec-ba01-44e9-9c71-307c425ae1df" name="WidthSpring" visibility="package">
              <generalization xmi:id="fd819e3e-4988-4eaa-83c6-4de008963238" isSubstitutable="true" general="db1a8be1-770c-476a-92fe-9f6ad56ac4d5"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="ef283a87-27f6-49cf-95fb-a90816234723" name="HeightSpring" visibility="package">
              <generalization xmi:id="1e4ccbe1-df5c-4632-ad56-1e3bbb6f9eab" isSubstitutable="true" general="db1a8be1-770c-476a-92fe-9f6ad56ac4d5"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3f2f9193-bd5f-4380-83cd-ae6b8d3f88a5" name="SizeSequence">
            <ownedComment xmi:id="0865023e-c74e-4fbb-814f-9fbddfcfab44" body="A &lt;code>SizeSequence&lt;/code> object&#xA;efficiently maintains an ordered list&#xA;of sizes and corresponding positions.&#xA;One situation for which &lt;code>SizeSequence&lt;/code>&#xA;might be appropriate is in a component&#xA;that displays multiple rows of unequal size.&#xA;In this case, a single &lt;code>SizeSequence&lt;/code>&#xA;object could be used to track the heights&#xA;and Y positions of all rows.&#xA;&lt;p>&#xA;Another example would be a multi-column component,&#xA;such as a &lt;code>JTable&lt;/code>,&#xA;in which the column sizes are not all equal.&#xA;The &lt;code>JTable&lt;/code> might use a single&#xA;&lt;code>SizeSequence&lt;/code> object&#xA;to store the widths and X positions of all the columns.&#xA;The &lt;code>JTable&lt;/code> could then use the&#xA;&lt;code>SizeSequence&lt;/code> object&#xA;to find the column corresponding to a certain position.&#xA;The &lt;code>JTable&lt;/code> could update the&#xA;&lt;code>SizeSequence&lt;/code> object&#xA;whenever one or more column sizes changed.&#xA;&#xA;&lt;p>&#xA;The following figure shows the relationship between size and position data&#xA;for a multi-column component.&#xA;&lt;p>&#xA;&lt;center>&#xA;&lt;img src=&quot;doc-files/SizeSequence-1.gif&quot; width=384 height = 100&#xA;alt=&quot;The first item begins at position 0, the second at the position equal&#xA;to the size of the previous item, and so on.&quot;>&#xA;&lt;/center>&#xA;&lt;p>&#xA;In the figure, the first index (0) corresponds to the first column,&#xA;the second index (1) to the second column, and so on.&#xA;The first column's position starts at 0,&#xA;and the column occupies &lt;em>size&lt;sub>0&lt;/sub>&lt;/em> pixels,&#xA;where &lt;em>size&lt;sub>0&lt;/sub>&lt;/em> is the value returned by&#xA;&lt;code>getSize(0)&lt;/code>.&#xA;Thus, the first column ends at &lt;em>size&lt;sub>0&lt;/sub>&lt;/em> - 1.&#xA;The second column then begins at&#xA;the position &lt;em>size&lt;sub>0&lt;/sub>&lt;/em>&#xA;and occupies &lt;em>size&lt;sub>1&lt;/sub>&lt;/em> (&lt;code>getSize(1)&lt;/code>) pixels.&#xA;&lt;p>&#xA;Note that a &lt;code>SizeSequence&lt;/code> object simply represents intervals&#xA;along an axis.&#xA;In our examples, the intervals represent height or width in pixels.&#xA;However, any other unit of measure (for example, time in days)&#xA;could be just as valid.&#xA;&#xA;&lt;p>&#xA;&#xA;&lt;h4>Implementation Notes&lt;/h4>&#xA;&#xA;Normally when storing the size and position of entries,&#xA;one would choose between&#xA;storing the sizes or storing their positions&#xA;instead. The two common operations that are needed during&#xA;rendering are: &lt;code>getIndex(position)&lt;/code>&#xA;and &lt;code>setSize(index, size)&lt;/code>.&#xA;Whichever choice of internal format is made one of these&#xA;operations is costly when the number of entries becomes large.&#xA;If sizes are stored, finding the index of the entry&#xA;that encloses a particular position is linear in the&#xA;number of entries. If positions are stored instead, setting&#xA;the size of an entry at a particular index requires updating&#xA;the positions of the affected entries, which is also a linear&#xA;calculation.&#xA;&lt;p>&#xA;Like the above techniques this class holds an array of N integers&#xA;internally but uses a hybrid encoding, which is halfway&#xA;between the size-based and positional-based approaches.&#xA;The result is a data structure that takes the same space to store&#xA;the information but can perform most operations in Log(N) time&#xA;instead of O(N), where N is the number of entries in the list.&#xA;&lt;p>&#xA;Two operations that remain O(N) in the number of entries are&#xA;the &lt;code>insertEntries&lt;/code>&#xA;and &lt;code>removeEntries&lt;/code> methods, both&#xA;of which are implemented by converting the internal array to&#xA;a set of integer sizes, copying it into the new array, and then&#xA;reforming the hybrid representation in place.&#xA;&#xA;@version 1.14 12/19/03&#xA;@author Philip Milne&#xA;" annotatedElement="3f2f9193-bd5f-4380-83cd-ae6b8d3f88a5"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="10cb57cb-a0cb-4b2a-9e6c-eb1010d6d335" name="JEditorPane">
            <ownedComment xmi:id="f147149c-4174-48a8-8138-76e5d7ead84b" body="A text component to edit various kinds of content.&#xA;You can find how-to information and examples of using editor panes in&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/text.html&quot;>Using Text Components&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&#xA;&lt;p>&#xA;This component uses implementations of the&#xA;&lt;code>EditorKit&lt;/code> to accomplish its behavior. It effectively&#xA;morphs into the proper kind of text editor for the kind&#xA;of content it is given.  The content type that editor is bound&#xA;to at any given time is determined by the &lt;code>EditorKit&lt;/code> currently&#xA;installed.  If the content is set to a new URL, its type is used&#xA;to determine the &lt;code>EditorKit&lt;/code> that should be used to&#xA;load the content.&#xA;&lt;p>&#xA;By default, the following types of content are known:&#xA;&lt;dl>&#xA;&lt;dt>&lt;b>text/plain&lt;/b>&#xA;&lt;dd>Plain text, which is the default the type given isn't&#xA;recognized.  The kit used in this case is an extension of&#xA;&lt;code>DefaultEditorKit&lt;/code> that produces a wrapped plain text view.&#xA;&lt;dt>&lt;b>text/html&lt;/b>&#xA;&lt;dd>HTML text.  The kit used in this case is the class&#xA;&lt;code>javax.swing.text.html.HTMLEditorKit&lt;/code>&#xA;which provides HTML 3.2 support.&#xA;&lt;dt>&lt;b>text/rtf&lt;/b>&#xA;&lt;dd>RTF text.  The kit used in this case is the class&#xA;&lt;code>javax.swing.text.rtf.RTFEditorKit&lt;/code>&#xA;which provides a limited support of the Rich Text Format.&#xA;&lt;/dl>&#xA;&lt;p>&#xA;There are several ways to load content into this component.&#xA;&lt;ol>&#xA;&lt;li>&#xA;The &lt;a href=&quot;#setText&quot;>setText&lt;/a> method can be used to initialize&#xA;the component from a string.  In this case the current&#xA;&lt;code>EditorKit&lt;/code> will be used, and the content type will be&#xA;expected to be of this type.&#xA;&lt;li>&#xA;The &lt;a href=&quot;#read&quot;>read&lt;/a> method can be used to initialize the&#xA;component from a &lt;code>Reader&lt;/code>.  Note that if the content type is HTML,&#xA;relative references (e.g. for things like images) can't be resolved&#xA;unless the &lt;base> tag is used or the &lt;em>Base&lt;/em> property&#xA;on &lt;code>HTMLDocument&lt;/code> is set.&#xA;In this case the current &lt;code>EditorKit&lt;/code> will be used,&#xA;and the content type will be expected to be of this type.&#xA;&lt;li>&#xA;The &lt;a href=&quot;#setPage&quot;>setPage&lt;/a> method can be used to initialize&#xA;the component from a URL.  In this case, the content type will be&#xA;determined from the URL, and the registered &lt;code>EditorKit&lt;/code>&#xA;for that content type will be set.&#xA;&lt;/ol>&#xA;&lt;p>&#xA;Some kinds of content may provide hyperlink support by generating&#xA;hyperlink events.  The HTML &lt;code>EditorKit&lt;/code> will generate&#xA;hyperlink events if the &lt;code>JEditorPane&lt;/code> is &lt;em>not editable&lt;/em>&#xA;(&lt;code>JEditorPane.setEditable(false);&lt;/code> has been called).&#xA;If HTML frames are embedded in the document, the typical response would be&#xA;to change a portion of the current document.  The following code&#xA;fragment is a possible hyperlink listener implementation, that treats&#xA;HTML frame events specially, and simply displays any other activated&#xA;hyperlinks.&#xA;&lt;code>&lt;pre>&#xA;&amp;nbsp;    class Hyperactive implements HyperlinkListener {&#xA;&amp;nbsp;&#xA;&amp;nbsp;        public void hyperlinkUpdate(HyperlinkEvent e) {&#xA;&amp;nbsp;&#x9;          if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {&#xA;&amp;nbsp;&#x9;&#x9;      JEditorPane pane = (JEditorPane) e.getSource();&#xA;&amp;nbsp;&#x9;&#x9;      if (e instanceof HTMLFrameHyperlinkEvent) {&#xA;&amp;nbsp;&#x9;&#x9;          HTMLFrameHyperlinkEvent  evt = (HTMLFrameHyperlinkEvent)e;&#xA;&amp;nbsp;&#x9;&#x9;          HTMLDocument doc = (HTMLDocument)pane.getDocument();&#xA;&amp;nbsp;&#x9;&#x9;          doc.processHTMLFrameHyperlinkEvent(evt);&#xA;&amp;nbsp;&#x9;&#x9;      } else {&#xA;&amp;nbsp;&#x9;&#x9;          try {&#xA;&amp;nbsp;&#x9;&#x9;&#x9;      pane.setPage(e.getURL());&#xA;&amp;nbsp;&#x9;&#x9;          } catch (Throwable t) {&#xA;&amp;nbsp;&#x9;&#x9;&#x9;      t.printStackTrace();&#xA;&amp;nbsp;&#x9;&#x9;          }&#xA;&amp;nbsp;&#x9;&#x9;      }&#xA;&amp;nbsp;&#x9;          }&#xA;&amp;nbsp;&#x9;      }&#xA;&amp;nbsp;    }&#xA;&lt;/pre>&lt;/code>&#xA;&lt;p>&#xA;For information on customizing how &lt;b>text/html&lt;/b> is rendered please see&#xA;{@link #W3C_LENGTH_UNITS} and {@link #HONOR_DISPLAY_PROPERTIES}&#xA;&lt;p>&#xA;Culturally dependent information in some documents is handled through&#xA;a mechanism called character encoding.  Character encoding is an&#xA;unambiguous mapping of the members of a character set (letters, ideographs,&#xA;digits, symbols, or control functions) to specific numeric code values. It&#xA;represents the way the file is stored. Example character encodings are&#xA;ISO-8859-1, ISO-8859-5, Shift-jis, Euc-jp, and UTF-8. When the file is&#xA;passed to an user agent (&lt;code>JEditorPane&lt;/code>) it is converted to&#xA;the document character set (ISO-10646 aka Unicode).&#xA;&lt;p>&#xA;There are multiple ways to get a character set mapping to happen&#xA;with &lt;code>JEditorPane&lt;/code>.&#xA;&lt;ol>&#xA;&lt;li>&#xA;One way is to specify the character set as a parameter of the MIME&#xA;type.  This will be established by a call to the&#xA;&lt;a href=&quot;#setContentType&quot;>setContentType&lt;/a> method.  If the content&#xA;is loaded by the &lt;a href=&quot;#setPage&quot;>setPage&lt;/a> method the content&#xA;type will have been set according to the specification of the URL.&#xA;It the file is loaded directly, the content type would be expected to&#xA;have been set prior to loading.&#xA;&lt;li>&#xA;Another way the character set can be specified is in the document itself.&#xA;This requires reading the document prior to determining the character set&#xA;that is desired.  To handle this, it is expected that the&#xA;&lt;code>EditorKit&lt;/code>.read operation throw a&#xA;&lt;code>ChangedCharSetException&lt;/code> which will&#xA;be caught.  The read is then restarted with a new Reader that uses&#xA;the character set specified in the &lt;code>ChangedCharSetException&lt;/code>&#xA;(which is an &lt;code>IOException&lt;/code>).&#xA;&lt;/ol>&#xA;&lt;p>&#xA;&lt;dt>&lt;b>&lt;font size=+1>Newlines&lt;/font>&lt;/b>&#xA;&lt;dd>&#xA;For a discussion on how newlines are handled, see&#xA;&lt;a href=&quot;text/DefaultEditorKit.html&quot;>DefaultEditorKit&lt;/a>.&#xA;&lt;/dl>&#xA;&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A text component to edit various types of content.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.125 07/23/04&#xA;" annotatedElement="10cb57cb-a0cb-4b2a-9e6c-eb1010d6d335"/>
            <generalization xmi:id="a2d5a765-d920-4da9-b9d7-8d38c150b941" isSubstitutable="true" general="ff3cbbfc-9ddc-468b-be89-f7c80430097b"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="45490908-70af-44a7-a2c0-9ffe5d75ede4" name="PageLoader" visibility="package">
              <ownedComment xmi:id="3a385de4-ffd4-49da-96bd-d55ee2d78d13" body="Thread to load a stream into the text document model.&#xA;" annotatedElement="45490908-70af-44a7-a2c0-9ffe5d75ede4"/>
              <generalization xmi:id="058a3651-4951-4c70-97f3-dc9aecf52eb8" isSubstitutable="true" general="c9830202-c9c4-48c6-a18c-376520128934"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="422c11bf-d9c1-45ad-852c-3af1d5be8561" name="PageStream" visibility="package">
              <generalization xmi:id="08ae8467-c856-44b9-b56c-623ebfe46019" isSubstitutable="true" general="740d283f-3027-4647-a498-6f94656e662b"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="14587142-0e11-4e82-a108-a62520260224" name="AccessibleJEditorPane" visibility="protected">
              <ownedComment xmi:id="6de70418-6155-4863-80c0-403cec1705b2" body="This class implements accessibility support for the&#xA;&lt;code>JEditorPane&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to editor pane user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="14587142-0e11-4e82-a108-a62520260224"/>
              <generalization xmi:id="099116d0-7722-40d9-88eb-83007439c98e" isSubstitutable="true" general="ac9a36b2-925c-417c-900c-979e705e9cba"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="13d72d52-1568-405e-a455-72aa14f0cd09" name="AccessibleJEditorPaneHTML" visibility="protected">
              <ownedComment xmi:id="7114017b-32f3-406d-8d5f-106358200d94" body="This class provides support for &lt;code>AccessibleHypertext&lt;/code>,&#xA;and is used in instances where the &lt;code>EditorKit&lt;/code>&#xA;installed in this &lt;code>JEditorPane&lt;/code> is an instance of&#xA;&lt;code>HTMLEditorKit&lt;/code>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="13d72d52-1568-405e-a455-72aa14f0cd09"/>
              <generalization xmi:id="27febaca-5b96-4428-82f4-6f721af729c2" isSubstitutable="true" general="14587142-0e11-4e82-a108-a62520260224"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="707556e2-22fa-4910-869e-72d1aff37c3a" name="JEditorPaneAccessibleHypertextSupport" visibility="protected" clientDependency="f2f2d7e8-249d-4d43-af69-d0f2d341a8c4">
              <ownedComment xmi:id="9e807043-678f-4a90-b229-0cf93f0fe257" body="What's returned by&#xA;&lt;code>AccessibleJEditorPaneHTML.getAccessibleText&lt;/code>.&#xA;&#xA;Provides support for &lt;code>AccessibleHypertext&lt;/code> in case&#xA;there is an HTML document being displayed in this&#xA;&lt;code>JEditorPane&lt;/code>.&#xA;&#xA;" annotatedElement="707556e2-22fa-4910-869e-72d1aff37c3a"/>
              <generalization xmi:id="a5ff66b1-0f20-4bc2-9060-8b4f96f5567f" isSubstitutable="true" general="14587142-0e11-4e82-a108-a62520260224"/>
              <interfaceRealization xmi:id="f2f2d7e8-249d-4d43-af69-d0f2d341a8c4" name="" supplier="171cfccf-dc6e-4856-bdcf-b5a2bcb9e7f6" client="707556e2-22fa-4910-869e-72d1aff37c3a" contract="171cfccf-dc6e-4856-bdcf-b5a2bcb9e7f6"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="3237608c-4d67-4e55-b0c3-2175d2b1f754" name="HTMLLink">
                <generalization xmi:id="7281f5a2-6954-4418-85e0-e2cb3e356bb6" isSubstitutable="true" general="f33d9971-82e7-44c3-a04a-3ff8787c83c3"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="83b8390a-5059-4f8b-989d-dc5af215f7de" name="LinkVector" visibility="private">
                <generalization xmi:id="b097c2fc-5e15-4f8d-9bba-6249d206f918" isSubstitutable="true" general="09e882a4-dd07-4c3b-9818-4252173f1394"/>
              </nestedClassifier>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="99e8f380-0bf0-4372-9080-a423064a5711" name="PlainEditorKit" visibility="package" clientDependency="049fc4aa-dde3-4880-8e83-3a124fbe3f90">
              <generalization xmi:id="d3c1d291-4e86-4f55-b491-ff479bba76ca" isSubstitutable="true" general="638f44d8-d827-4f2f-bc04-3ab6e61eeeee"/>
              <interfaceRealization xmi:id="049fc4aa-dde3-4880-8e83-3a124fbe3f90" name="" supplier="e3a1d3f4-af71-4ce0-962d-e7b0b2295c0d" client="99e8f380-0bf0-4372-9080-a423064a5711" contract="e3a1d3f4-af71-4ce0-962d-e7b0b2295c0d"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="3e9c9c88-68e5-4b6b-892d-2bf1352c125e" name="PlainParagraph" visibility="package">
                <ownedComment xmi:id="85d76164-1fc3-4ad6-8c41-f92b13e8ccb4" body="Paragraph for representing plain-text lines that support&#xA;bidirectional text.&#xA;" annotatedElement="3e9c9c88-68e5-4b6b-892d-2bf1352c125e"/>
                <generalization xmi:id="48124076-8b3b-4ae3-a92c-f7e7bb72c8fe" isSubstitutable="true" general="f136ff6a-f89d-4e2c-8284-640d0aa408eb"/>
                <nestedClassifier xmi:type="uml:Class" xmi:id="c979c877-0763-4d88-b56d-b704f6ca2106" name="LogicalView" visibility="package">
                  <ownedComment xmi:id="b7471d08-c59e-42e8-b61b-5e68322fd717" body="This class can be used to represent a logical view for&#xA;a flow.  It keeps the children updated to reflect the state&#xA;of the model, gives the logical child views access to the&#xA;view hierarchy, and calculates a preferred span.  It doesn't&#xA;do any rendering, layout, or model/view translation.&#xA;" annotatedElement="c979c877-0763-4d88-b56d-b704f6ca2106"/>
                  <generalization xmi:id="064ab4b5-46ff-4013-afeb-218f2b5f1ae6" isSubstitutable="true" general="921a61fb-ee13-4ede-8408-998656f76875"/>
                </nestedClassifier>
              </nestedClassifier>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="bc88e65c-f9eb-42c7-a191-ead42f0668c9" name="HeaderParser" visibility="package"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="7456b1d9-8e1c-4c83-b168-c3995aff3bac" name="UIManager" clientDependency="073d63e1-ddb6-4062-89cd-3cf4fccacc50">
            <ownedComment xmi:id="386210a7-d69a-4c76-969a-59a3e43d5c85" body="This class keeps track of the current look and feel and its&#xA;defaults.&#xA;The default look and feel class is chosen in the following manner:&#xA;&lt;ol>&#xA;&lt;li>If the system property &lt;code>swing.defaultlaf&lt;/code> is&#xA;non-null, use it as the default look and feel class name.&#xA;&lt;li>If the {@link java.util.Properties} file &lt;code>swing.properties&lt;/code>&#xA;exists and contains the key &lt;code>swing.defaultlaf&lt;/code>,&#xA;use its value as default look and feel class name. The location of&#xA;&lt;code>swing.properties&lt;/code> may vary depending upon the&#xA;implementation of the Java platform. In Sun's implementation&#xA;this will reside in&#xA;&lt;code>&amp;java.home>/lib/swing.properties&lt;/code>. Refer to&#xA;the release notes of the implementation you are using for&#xA;further details.&#xA;&lt;li>Otherwise use the Java look and feel.&#xA;&lt;/ol>&#xA;&lt;p>&#xA;We manage three levels of defaults: user defaults, look&#xA;and feel defaults, system defaults.  A call to &lt;code>UIManager.get&lt;/code>&#xA;checks all three levels in order and returns the first non-&lt;code>null&lt;/code>&#xA;value for a key, if any.  A call to &lt;code>UIManager.put&lt;/code> just&#xA;affects the user defaults.  Note that a call to&#xA;&lt;code>setLookAndFeel&lt;/code> doesn't affect the user defaults, it just&#xA;replaces the middle defaults &quot;level&quot;.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see javax.swing.plaf.metal&#xA;&#xA;@version 1.115 12/19/03&#xA;@author Thomas Ball&#xA;@author Hans Muller&#xA;" annotatedElement="7456b1d9-8e1c-4c83-b168-c3995aff3bac"/>
            <interfaceRealization xmi:id="073d63e1-ddb6-4062-89cd-3cf4fccacc50" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="7456b1d9-8e1c-4c83-b168-c3995aff3bac" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="6cc32294-e22e-42e2-9403-8d519820038d" name="LAFState" visibility="private">
              <ownedComment xmi:id="c2b63ef4-54a2-4ccc-ae80-7f6afa96c2d0" body="This class defines the state managed by the &lt;code>UIManager&lt;/code>.  For&#xA;Swing applications the fields in this class could just as well&#xA;be static members of &lt;code>UIManager&lt;/code> however we give them&#xA;&quot;AppContext&quot;&#xA;scope instead so that applets (and potentially multiple lightweight&#xA;applications running in a single VM) have their own state. For example,&#xA;an applet can alter its look and feel, see &lt;code>setLookAndFeel&lt;/code>.&#xA;Doing so has no affect on other applets (or the browser).&#xA;" annotatedElement="6cc32294-e22e-42e2-9403-8d519820038d"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="7237a5a3-a138-43b7-8356-89d072da32dc" name="LookAndFeelInfo">
              <ownedComment xmi:id="a3085958-240b-438c-b08d-352f217bc177" body="Provides a little information about an installed&#xA;&lt;code>LookAndFeel&lt;/code> for the sake of configuring a menu or&#xA;for initial application set up.&#xA;&#xA;@see UIManager#getInstalledLookAndFeels&#xA;@see LookAndFeel&#xA;" annotatedElement="7237a5a3-a138-43b7-8356-89d072da32dc"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b42f850a-fbf4-40ce-8a65-d5ff6a0c9eb0" name="SizeRequirements" clientDependency="6723b846-d157-4ef3-a838-8cd8da2e6c1f">
            <ownedComment xmi:id="7956a8bc-84f1-4b75-80b2-799615509860" body="For the convenience of layout managers,&#xA;calculates information about the size and position of components.&#xA;All size and position calculation methods are class methods&#xA;that take arrays of SizeRequirements as arguments.&#xA;The SizeRequirements class supports two types of layout:&#xA;&#xA;&lt;blockquote>&#xA;&lt;dl>&#xA;&lt;dt> tiled&#xA;&lt;dd> The components are placed end-to-end,&#xA;starting either at coordinate 0 (the leftmost or topmost position)&#xA;or at the coordinate representing the end of the allocated span&#xA;(the rightmost or bottommost position).&#xA;&#xA;&lt;dt> aligned&#xA;&lt;dd> The components are aligned as specified&#xA;by each component's X or Y alignment value.&#xA;&lt;/dl>&#xA;&lt;/blockquote>&#xA;&#xA;&lt;p>&#xA;&#xA;Each SizeRequirements object contains information&#xA;about either the width (and X alignment)&#xA;or height (and Y alignment)&#xA;of a single component or a group of components:&#xA;&#xA;&lt;blockquote>&#xA;&lt;dl>&#xA;&lt;dt> &lt;code>minimum&lt;/code>&#xA;&lt;dd> The smallest reasonable width/height of the component&#xA;or component group, in pixels.&#xA;&#xA;&lt;dt> &lt;code>preferred&lt;/code>&#xA;&lt;dd> The natural width/height of the component&#xA;or component group, in pixels.&#xA;&#xA;&lt;dt> &lt;code>maximum&lt;/code>&#xA;&lt;dd> The largest reasonable width/height of the component&#xA;or component group, in pixels.&#xA;&#xA;&lt;dt> &lt;code>alignment&lt;/code>&#xA;&lt;dd> The X/Y alignment of the component&#xA;or component group.&#xA;&lt;/dl>&#xA;&lt;/blockquote>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see Component#getMinimumSize&#xA;@see Component#getPreferredSize&#xA;@see Component#getMaximumSize&#xA;@see Component#getAlignmentX&#xA;@see Component#getAlignmentY&#xA;&#xA;@version 1.32 12/19/03&#xA;@author Timothy Prinzing&#xA;" annotatedElement="b42f850a-fbf4-40ce-8a65-d5ff6a0c9eb0"/>
            <interfaceRealization xmi:id="6723b846-d157-4ef3-a838-8cd8da2e6c1f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="b42f850a-fbf4-40ce-8a65-d5ff6a0c9eb0" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="e3521fe0-4fc3-48f4-9f89-5ba768d41019" name="Icon" isAbstract="true">
            <ownedComment xmi:id="2fb3749a-9f4d-468c-b58b-2653da3e759b" body="A small fixed size picture, typically used to decorate components.&#xA;&#xA;@see ImageIcon&#xA;" annotatedElement="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="cbe6416c-3439-4aed-b4fb-bdfa8353852f" name="JViewport" clientDependency="df41a3a6-d479-44b3-a6ac-7660cea2da05">
            <ownedComment xmi:id="bc2c5ea9-0484-4ab9-9742-7c02c47f3531" body="The &quot;viewport&quot; or &quot;porthole&quot; through which you see the underlying&#xA;information. When you scroll, what moves is the viewport. It is like&#xA;peering through a camera's viewfinder. Moving the viewfinder upwards&#xA;brings new things into view at the top of the picture and loses&#xA;things that were at the bottom.&#xA;&lt;p>&#xA;By default, &lt;code>JViewport&lt;/code> is opaque. To change this, use the&#xA;&lt;code>setOpaque&lt;/code> method.&#xA;&lt;p>&#xA;&lt;b>NOTE:&lt;/b>We have implemented a faster scrolling algorithm that&#xA;does not require a buffer to draw in. The algorithm works as follows:&#xA;&lt;ol>&lt;li>The view and parent view and checked to see if they are&#xA;&lt;code>JComponents&lt;/code>,&#xA;if they aren't, stop and repaint the whole viewport.&#xA;&lt;li>If the viewport is obscured by an ancestor, stop and repaint the whole&#xA;viewport.&#xA;&lt;li>Compute the region that will become visible, if it is as big as&#xA;the viewport, stop and repaint the whole view region.&#xA;&lt;li>Obtain the ancestor &lt;code>Window&lt;/code>'s graphics and&#xA;do a &lt;code>copyArea&lt;/code> on the scrolled region.&#xA;&lt;li>Message the view to repaint the newly visible region.&#xA;&lt;li>The next time paint is invoked on the viewport, if the clip region&#xA;is smaller than the viewport size a timer is kicked off to repaint the&#xA;whole region.&#xA;&lt;/ol>&#xA;In general this approach is much faster. Compared to the backing store&#xA;approach this avoids the overhead of maintaining an offscreen buffer and&#xA;having to do two &lt;code>copyArea&lt;/code>s.&#xA;Compared to the non backing store case this&#xA;approach will greatly reduce the painted region.&#xA;&lt;p>&#xA;This approach can cause slower times than the backing store approach&#xA;when the viewport is obscured by another window, or partially offscreen.&#xA;When another window&#xA;obscures the viewport the copyArea will copy garbage and a&#xA;paint event will be generated by the system to inform us we need to&#xA;paint the newly exposed region. The only way to handle this is to&#xA;repaint the whole viewport, which can cause slower performance than the&#xA;backing store case. In most applications very rarely will the user be&#xA;scrolling while the viewport is obscured by another window or offscreen,&#xA;so this optimization is usually worth the performance hit when obscured.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.114 05/18/04&#xA;@author Hans Muller&#xA;@author Philip Milne&#xA;@see JScrollPane&#xA;" annotatedElement="cbe6416c-3439-4aed-b4fb-bdfa8353852f"/>
            <generalization xmi:id="8a02c0b0-27c2-4034-9ebd-ec41955ac230" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="df41a3a6-d479-44b3-a6ac-7660cea2da05" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="cbe6416c-3439-4aed-b4fb-bdfa8353852f" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="e1deb460-2328-46e8-beac-f83b804deede" name="ViewListener" visibility="protected" clientDependency="4436b6f6-3014-45dc-ae47-e5ac9d0a606f">
              <ownedComment xmi:id="90d804ba-fd22-46b3-918c-22154813dfbd" body="A listener for the view.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="e1deb460-2328-46e8-beac-f83b804deede"/>
              <generalization xmi:id="f4c9975d-375e-4e45-b22e-648546d34489" isSubstitutable="true" general="8e908659-53e3-4daf-b1e1-dc64b00db367"/>
              <interfaceRealization xmi:id="4436b6f6-3014-45dc-ae47-e5ac9d0a606f" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="e1deb460-2328-46e8-beac-f83b804deede" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="22110246-2479-4e31-a5e9-8d15c208e229" name="AccessibleJViewport" visibility="protected">
              <ownedComment xmi:id="77fdadce-44bc-46d0-a560-eef5559f5200" body="This class implements accessibility support for the&#xA;&lt;code>JViewport&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to viewport user-interface elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="22110246-2479-4e31-a5e9-8d15c208e229"/>
              <generalization xmi:id="c7f2c82a-582e-4e68-b677-ee3e26f79cac" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="b16df1ef-fbb3-46ce-9829-94727c615db0" name="ScrollPaneLayout" clientDependency="97768d61-eced-4874-ac57-85433dc14eaa e5201ad6-7f66-494e-98f1-390f781e53a0 935ba2e0-7fa4-4ca4-8a8a-a3704f5026cb">
            <ownedComment xmi:id="487b93ab-a5a6-4552-bb3f-c7d95b328eb6" body="The layout manager used by &lt;code>JScrollPane&lt;/code>.&#xA;&lt;code>JScrollPaneLayout&lt;/code> is&#xA;responsible for nine components: a viewport, two scrollbars,&#xA;a row header, a column header, and four &quot;corner&quot; components.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see JScrollPane&#xA;@see JViewport&#xA;&#xA;@version 1.60 05/18/04&#xA;@author Hans Muller&#xA;" annotatedElement="b16df1ef-fbb3-46ce-9829-94727c615db0"/>
            <interfaceRealization xmi:id="97768d61-eced-4874-ac57-85433dc14eaa" name="" supplier="c3507179-c29c-40a9-8869-092757900e53" client="b16df1ef-fbb3-46ce-9829-94727c615db0" contract="c3507179-c29c-40a9-8869-092757900e53"/>
            <interfaceRealization xmi:id="e5201ad6-7f66-494e-98f1-390f781e53a0" name="" supplier="077d0b24-8305-4eeb-a301-15642735b20b" client="b16df1ef-fbb3-46ce-9829-94727c615db0" contract="077d0b24-8305-4eeb-a301-15642735b20b"/>
            <interfaceRealization xmi:id="935ba2e0-7fa4-4ca4-8a8a-a3704f5026cb" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="b16df1ef-fbb3-46ce-9829-94727c615db0" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="04b7f5cd-9265-4bb3-bd67-9a3897771ad7" name="UIResource" clientDependency="d86abdd3-a9c5-4108-a876-04ee76c45f86">
              <ownedComment xmi:id="edadf455-793f-490f-8764-1f569ab526c1" body="The UI resource version of &lt;code>ScrollPaneLayout&lt;/code>.&#xA;" annotatedElement="04b7f5cd-9265-4bb3-bd67-9a3897771ad7"/>
              <generalization xmi:id="ed4a5f8e-abad-4d81-b7e6-e933d7b45a15" isSubstitutable="true" general="b16df1ef-fbb3-46ce-9829-94727c615db0"/>
              <interfaceRealization xmi:id="d86abdd3-a9c5-4108-a876-04ee76c45f86" name="" supplier="37ea7b3b-7a05-440e-b91c-3eec69d60728" client="04b7f5cd-9265-4bb3-bd67-9a3897771ad7" contract="37ea7b3b-7a05-440e-b91c-3eec69d60728"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ca79776d-907f-4c42-b293-16d92d244c34" name="DefaultDesktopManager" clientDependency="b818d228-de1c-4959-8b5a-a03d5489ef6b 8660fb3e-f413-4280-a4e5-e170d284ca90">
            <ownedComment xmi:id="5fbb70c5-b74a-4fc8-80fe-b8d756559c6d" body="This is an implementation of the &lt;code>DesktopManager&lt;/code>.&#xA;It currently implements the basic behaviors for managing&#xA;&lt;code>JInternalFrame&lt;/code>s in an arbitrary parent.&#xA;&lt;code>JInternalFrame&lt;/code>s that are not children of a&#xA;&lt;code>JDesktop&lt;/code> will use this component&#xA;to handle their desktop-like actions.&#xA;&lt;p>This class provides a policy for the various JInternalFrame methods,&#xA;it is not meant to be called directly rather the various JInternalFrame&#xA;methods will call into the DesktopManager.&lt;/p>&#xA;@see JDesktopPane&#xA;@see JInternalFrame&#xA;@version 1.52 12/19/03&#xA;@author David Kloba&#xA;@author Steve Wilson&#xA;" annotatedElement="ca79776d-907f-4c42-b293-16d92d244c34"/>
            <interfaceRealization xmi:id="b818d228-de1c-4959-8b5a-a03d5489ef6b" name="" supplier="99f7e322-1606-4858-877c-5c7caf28dd42" client="ca79776d-907f-4c42-b293-16d92d244c34" contract="99f7e322-1606-4858-877c-5c7caf28dd42"/>
            <interfaceRealization xmi:id="8660fb3e-f413-4280-a4e5-e170d284ca90" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ca79776d-907f-4c42-b293-16d92d244c34" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="d44327c5-7f44-4870-87e1-b0c1494ccee6" name="JSeparator" clientDependency="d96540d3-01bf-458c-9363-ddb735f0a463 ef1702f1-5c84-467c-81ff-d5ad346dd78c">
            <ownedComment xmi:id="9d8b4826-7083-4a91-a5b9-4403cee4c1fa" body="&lt;code>JSeparator&lt;/code> provides a general purpose component for&#xA;implementing divider lines - most commonly used as a divider&#xA;between menu items that breaks them up into logical groupings.&#xA;Instead of using &lt;code>JSeparator&lt;/code> directly,&#xA;you can use the &lt;code>JMenu&lt;/code> or &lt;code>JPopupMenu&lt;/code>&#xA;&lt;code>addSeparator&lt;/code> method to create and add a separator.&#xA;&lt;code>JSeparator&lt;/code>s may also be used elsewhere in a GUI&#xA;wherever a visual divider is useful.&#xA;&#xA;&lt;p>&#xA;&#xA;For more information and examples see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html&quot;>How to Use Menus&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A divider between menu items.&#xA;&#xA;@version 1.50 12/19/03&#xA;@author Georges Saab&#xA;@author Jeff Shapiro&#xA;" annotatedElement="d44327c5-7f44-4870-87e1-b0c1494ccee6"/>
            <generalization xmi:id="fff3a885-9ffc-4184-810f-79f8a06d9d21" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="d96540d3-01bf-458c-9363-ddb735f0a463" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="d44327c5-7f44-4870-87e1-b0c1494ccee6" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
            <interfaceRealization xmi:id="ef1702f1-5c84-467c-81ff-d5ad346dd78c" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="d44327c5-7f44-4870-87e1-b0c1494ccee6" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="3d374994-37ce-41f4-bebc-4936bacfbf68" name="AccessibleJSeparator" visibility="protected">
              <ownedComment xmi:id="57133e71-3e71-4d94-9729-4cbdc23b76bb" body="This class implements accessibility support for the&#xA;&lt;code>JSeparator&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to separator user-interface elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="3d374994-37ce-41f4-bebc-4936bacfbf68"/>
              <generalization xmi:id="b8fd5e85-2518-4c7d-b9f9-0d1769868a0b" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="2f41a22f-9c7b-4953-83d7-06951a32cde7" name="JCheckBox" clientDependency="74896716-41a6-42ba-b8a0-c7396998d2be">
            <ownedComment xmi:id="8b1346f0-6756-4c3f-a3bb-644a9b9d2309" body="An implementation of a check box -- an item that can be selected or&#xA;deselected, and which displays its state to the user.&#xA;By convention, any number of check boxes in a group can be selected.&#xA;See &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/button.html&quot;>How to Use Buttons, Check Boxes, and Radio Buttons&lt;/a>&#xA;in &lt;em>The Java Tutorial&lt;/em>&#xA;for examples and information on using check boxes.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see JRadioButton&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A component which can be selected or deselected.&#xA;&#xA;@version 1.73 12/19/03&#xA;@author Jeff Dinkins&#xA;" annotatedElement="2f41a22f-9c7b-4953-83d7-06951a32cde7"/>
            <generalization xmi:id="cd4ae3d7-d7dd-49c3-83ec-68a3cb2c26a6" isSubstitutable="true" general="0df7a8eb-2b43-458c-bfee-2c84a196b79d"/>
            <interfaceRealization xmi:id="74896716-41a6-42ba-b8a0-c7396998d2be" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="2f41a22f-9c7b-4953-83d7-06951a32cde7" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="15a83d26-7560-403c-bc28-382428471ffc" name="AccessibleJCheckBox" visibility="protected">
              <ownedComment xmi:id="ebd9babf-95fc-4cd5-b49e-47fecfb50ea0" body="This class implements accessibility support for the&#xA;&lt;code>JCheckBox&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to check box user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="15a83d26-7560-403c-bc28-382428471ffc"/>
              <generalization xmi:id="878f156e-e727-4fb9-96d9-a360e53465af" isSubstitutable="true" general="da7ae63b-1d41-416b-b2ba-26253fd43a56"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="f46ea5b6-72bb-4a1a-ad05-bff3c7926dda" name="ListSelectionModel" isAbstract="true">
            <ownedComment xmi:id="0db27e72-2dff-4497-8e30-28d9a9b042d3" body="This interface represents the current state of the&#xA;selection for any of the components that display a&#xA;list of values with stable indices.  The selection is&#xA;modeled as a set of intervals, each interval represents&#xA;a contiguous range of selected list elements.&#xA;The methods for modifying the set of selected intervals&#xA;all take a pair of indices, index0 and index1, that represent&#xA;a closed interval, i.e. the interval includes both index0 and&#xA;index1.&#xA;&#xA;@version 1.21 12/19/03&#xA;@author Hans Muller&#xA;@author Philip Milne&#xA;@see DefaultListSelectionModel&#xA;" annotatedElement="f46ea5b6-72bb-4a1a-ad05-bff3c7926dda"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="463f6495-d475-4ff3-9983-0e53f95e8741" name="Action" isAbstract="true">
            <ownedComment xmi:id="2e629675-8149-412c-bb7b-f4f383a0a2ac" body="The &lt;code>Action&lt;/code> interface provides a useful extension to the&#xA;&lt;code>ActionListener&lt;/code>&#xA;interface in cases where the same functionality may be accessed by&#xA;several controls.&#xA;&lt;p>&#xA;In addition to the &lt;code>actionPerformed&lt;/code> method defined by the&#xA;&lt;code>ActionListener&lt;/code> interface, this interface allows the&#xA;application to define, in a single place:&#xA;&lt;ul>&#xA;&lt;li>One or more text strings that describe the function. These strings&#xA;can be used, for example, to display the flyover text for a button&#xA;or to set the text in a menu item.&#xA;&lt;li>One or more icons that depict the function. These icons can be used&#xA;for the images in a menu control, or for composite entries in a more&#xA;sophisticated user interface.&#xA;&lt;li>The enabled/disabled state of the functionality. Instead of having&#xA;to separately disable the menu item and the toolbar button, the&#xA;application can disable the function that implements this interface.&#xA;All components which are registered as listeners for the state change&#xA;then know to disable event generation for that item and to modify the&#xA;display accordingly.&#xA;&lt;/ul>&#xA;Certain containers, including menus and tool bars, know how to add an&#xA;&lt;code>Action&lt;/code> object. When an &lt;code>Action&lt;/code> object is added&#xA;to such a container, the container:&#xA;&lt;ol type=&quot;a&quot;>&#xA;&lt;li>Creates a component that is appropriate for that container&#xA;(a tool bar creates a button component, for example).&#xA;&lt;li>Gets the appropriate property(s) from the &lt;code>Action&lt;/code> object to&#xA;customize the component (for example, the icon image and flyover text).&#xA;&lt;li>Checks the initial state of the &lt;code>Action&lt;/code> object to determine&#xA;if it is enabled or disabled, and renders the component in the&#xA;appropriate fashion.&#xA;&lt;li>Registers a listener with the &lt;code>Action&lt;/code> object so that is&#xA;notified of state changes. When the &lt;code>Action&lt;/code> object changes&#xA;from enabled to disabled,&#xA;or back, the container makes the appropriate revisions to the&#xA;event-generation mechanisms and renders the component accordingly.&#xA;&lt;/ol>&#xA;For example, both a menu item and a toolbar button could access a&#xA;&lt;code>Cut&lt;/code> action object. The text associated with the object is&#xA;specified as &quot;Cut&quot;, and an image depicting a pair of scissors is specified&#xA;as its icon. The &lt;code>Cut&lt;/code> action-object can then be added to a&#xA;menu and to a tool bar. Each container does the appropriate things with the&#xA;object, and invokes its &lt;code>actionPerformed&lt;/code> method when the&#xA;component associated with it is activated. The application can then disable&#xA;or enable the application object without worrying about what user-interface&#xA;components are connected to it.&#xA;&lt;p>&#xA;This interface can be added to an existing class or used to create an&#xA;adapter (typically, by subclassing &lt;code>AbstractAction&lt;/code>).&#xA;The &lt;code>Action&lt;/code> object&#xA;can then be added to multiple &lt;code>Action&lt;/code>-aware containers&#xA;and connected to &lt;code>Action&lt;/code>-capable&#xA;components. The GUI controls can then be activated or&#xA;deactivated all at once by invoking the &lt;code>Action&lt;/code> object's&#xA;&lt;code>setEnabled&lt;/code> method.&#xA;&lt;p>&#xA;Note that &lt;code>Action&lt;/code> implementations tend to be more expensive&#xA;in terms of storage than a typical &lt;code>ActionListener&lt;/code>,&#xA;which does not offer the benefits of centralized control of&#xA;functionality and broadcast of property changes.  For this reason,&#xA;you should take care to only use &lt;code>Action&lt;/code>s where their benefits&#xA;are desired, and use simple &lt;code>ActionListener&lt;/code>s elsewhere.&#xA;&#xA;@version 1.30 12/19/03&#xA;@author Georges Saab&#xA;@see AbstractAction&#xA;" annotatedElement="463f6495-d475-4ff3-9983-0e53f95e8741"/>
            <generalization xmi:id="d101885b-10e8-4f86-b104-07c4f57cb8f3" isSubstitutable="true" general="881e1f63-ea05-4933-82ba-17d8d70f9be1"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="eda2253c-2cf2-4fad-92f2-7499881fe18a" name="GrayFilter">
            <ownedComment xmi:id="314bd347-e462-41e5-91f3-c2c9d9955618" body="An image filter that &quot;disables&quot; an image by turning&#xA;it into a grayscale image, and brightening the pixels&#xA;in the image. Used by buttons to create an image for&#xA;a disabled button.&#xA;&#xA;@author      Jeff Dinkins&#xA;@author      Tom Ball&#xA;@author      Jim Graham&#xA;@version     1.15 12/19/03&#xA;" annotatedElement="eda2253c-2cf2-4fad-92f2-7499881fe18a"/>
            <generalization xmi:id="d0f2e4ab-12de-41a1-884e-b6f8219633f8" isSubstitutable="true" general="b54e2b90-aa85-42d7-8719-27d07a7e8e3c"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="594d2705-e1d3-4051-a365-534f8d909c6f" name="JDesktopPane" clientDependency="0e9db49c-24bc-4a8d-88f0-f8339b8998f9">
            <ownedComment xmi:id="9b857453-7793-40bc-aeb9-7c049e009de9" body="A container used to create a multiple-document interface or a virtual desktop.&#xA;You create &lt;code>JInternalFrame&lt;/code> objects and add them to the&#xA;&lt;code>JDesktopPane&lt;/code>. &lt;code>JDesktopPane&lt;/code> extends&#xA;&lt;code>JLayeredPane&lt;/code> to manage the potentially overlapping internal&#xA;frames. It also maintains a reference to an instance of&#xA;&lt;code>DesktopManager&lt;/code> that is set by the UI&#xA;class for the current look and feel (L&amp;F).  Note that &lt;code>JDesktopPane&lt;/code>&#xA;does not support borders.&#xA;&lt;p>&#xA;This class is normally used as the parent of &lt;code>JInternalFrames&lt;/code>&#xA;to provide a pluggable &lt;code>DesktopManager&lt;/code> object to the&#xA;&lt;code>JInternalFrames&lt;/code>. The &lt;code>installUI&lt;/code> of the&#xA;L&amp;F specific implementation is responsible for setting the&#xA;&lt;code>desktopManager&lt;/code> variable appropriately.&#xA;When the parent of a &lt;code>JInternalFrame&lt;/code> is a &lt;code>JDesktopPane&lt;/code>,&#xA;it should delegate most of its behavior to the &lt;code>desktopManager&lt;/code>&#xA;(closing, resizing, etc).&#xA;&lt;p>&#xA;For further documentation and examples see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/internalframe.html&quot;>How to Use Internal Frames&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see JInternalFrame&#xA;@see JInternalFrame.JDesktopIcon&#xA;@see DesktopManager&#xA;&#xA;@version 1.51 12/19/03&#xA;@author David Kloba&#xA;" annotatedElement="594d2705-e1d3-4051-a365-534f8d909c6f"/>
            <generalization xmi:id="9b5cadb2-4edb-4c85-bb8f-689f0acbc943" isSubstitutable="true" general="836cc1f4-ee45-4a77-8d58-5e1454cd64da"/>
            <interfaceRealization xmi:id="0e9db49c-24bc-4a8d-88f0-f8339b8998f9" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="594d2705-e1d3-4051-a365-534f8d909c6f" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="9d0a24de-e658-4621-b078-07f7a63f243e" name="AccessibleJDesktopPane" visibility="protected">
              <ownedComment xmi:id="fb6c5853-5f21-4890-bdf4-3db904a6104b" body="This class implements accessibility support for the&#xA;&lt;code>JDesktopPane&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to desktop pane user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="9d0a24de-e658-4621-b078-07f7a63f243e"/>
              <generalization xmi:id="a5fee6ab-3a0d-4995-b955-ede56510af6a" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="74efbdc6-4052-40dc-8f11-976628f804ab" name="ImageIcon" clientDependency="ded9f071-ea3c-415d-af56-9687b0d722f1 f1e7cf69-f97c-47bd-a66b-f6d3b8e004b8 d0d06b43-a384-43e3-887d-e965771c4222">
            <ownedComment xmi:id="46daa6e5-eb3d-4e9c-8fd5-bfed8081c7eb" body="An implementation of the Icon interface that paints Icons&#xA;from Images. Images that are created from a URL, filename or byte array&#xA;are preloaded using MediaTracker to monitor the loaded state&#xA;of the image.&#xA;&#xA;&lt;p>&#xA;For further information and examples of using image icons, see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/icon.html&quot;>How to Use Icons&lt;/a>&#xA;in &lt;em>The Java Tutorial.&lt;/em>&#xA;&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.53 12/19/03&#xA;@author Jeff Dinkins&#xA;@author Lynn Monsanto&#xA;" annotatedElement="74efbdc6-4052-40dc-8f11-976628f804ab"/>
            <interfaceRealization xmi:id="f1e7cf69-f97c-47bd-a66b-f6d3b8e004b8" name="" supplier="e3521fe0-4fc3-48f4-9f89-5ba768d41019" client="74efbdc6-4052-40dc-8f11-976628f804ab" contract="e3521fe0-4fc3-48f4-9f89-5ba768d41019"/>
            <interfaceRealization xmi:id="d0d06b43-a384-43e3-887d-e965771c4222" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="74efbdc6-4052-40dc-8f11-976628f804ab" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            <interfaceRealization xmi:id="ded9f071-ea3c-415d-af56-9687b0d722f1" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="74efbdc6-4052-40dc-8f11-976628f804ab" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="49cde22c-5355-417d-b289-4bf220fb0f2f" name="AccessibleImageIcon" visibility="protected" clientDependency="5db6f86d-b608-40f6-b5c1-5818c13e30c2 aad181bb-a5cc-4206-8d03-4ec8b99f5db0">
              <ownedComment xmi:id="f05d9695-ccd8-4c75-85dd-0f93681828d3" body="This class implements accessibility support for the&#xA;&lt;code>ImageIcon&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to image icon user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="49cde22c-5355-417d-b289-4bf220fb0f2f"/>
              <generalization xmi:id="59ada3bd-134d-4224-8d6a-962a07e67a27" isSubstitutable="true" general="5e5fecb3-251d-4b0e-b142-9f3aac1d4c57"/>
              <interfaceRealization xmi:id="5db6f86d-b608-40f6-b5c1-5818c13e30c2" name="" supplier="a9536d5d-ffe4-4cf1-a708-ec23229b0f6d" client="49cde22c-5355-417d-b289-4bf220fb0f2f" contract="a9536d5d-ffe4-4cf1-a708-ec23229b0f6d"/>
              <interfaceRealization xmi:id="aad181bb-a5cc-4206-8d03-4ec8b99f5db0" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="49cde22c-5355-417d-b289-4bf220fb0f2f" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Interface" xmi:id="103554e2-4cf7-4432-8d3b-ae5054ca05c4" name="ComboBoxEditor" isAbstract="true">
            <ownedComment xmi:id="b64e963b-9895-40f2-8326-6224fde410f7" body="The editor component used for JComboBox components.&#xA;&#xA;@version 1.13 12/19/03&#xA;@author Arnaud Weber&#xA;" annotatedElement="103554e2-4cf7-4432-8d3b-ae5054ca05c4"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="360cbab5-0605-4d47-8896-49d24eabc874" name="JRadioButton" clientDependency="1a7e7f9f-12fe-406a-814f-a6d714205e52">
            <ownedComment xmi:id="c81805c0-3cb9-463e-847e-84e8bf041694" body="An implementation of a radio button -- an item that can be selected or&#xA;deselected, and which displays its state to the user.&#xA;Used with a {@link ButtonGroup} object to create a group of buttons&#xA;in which only one button at a time can be selected. (Create a ButtonGroup&#xA;object and use its &lt;code>add&lt;/code> method to include the JRadioButton objects&#xA;in the group.)&#xA;&lt;blockquote>&#xA;&lt;strong>Note:&lt;/strong>&#xA;The ButtonGroup object is a logical grouping -- not a physical grouping.&#xA;Tocreate a button panel, you should still create a {@link JPanel} or similar&#xA;container-object and add a {@link javax.swing.border.Border} to it to set it off from surrounding&#xA;components.&#xA;&lt;/blockquote>&#xA;&lt;p>&#xA;See &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/button.html&quot;>How to Use Buttons, Check Boxes, and Radio Buttons&lt;/a>&#xA;in &lt;em>The Java Tutorial&lt;/em>&#xA;for further documentation.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A component which can display it's state as selected or deselected.&#xA;&#xA;@see ButtonGroup&#xA;@see JCheckBox&#xA;@version 1.74 12/19/03&#xA;@author Jeff Dinkins&#xA;" annotatedElement="360cbab5-0605-4d47-8896-49d24eabc874"/>
            <generalization xmi:id="654ce705-2596-4ebe-9140-bc589e869be0" isSubstitutable="true" general="0df7a8eb-2b43-458c-bfee-2c84a196b79d"/>
            <interfaceRealization xmi:id="1a7e7f9f-12fe-406a-814f-a6d714205e52" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="360cbab5-0605-4d47-8896-49d24eabc874" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="b879b51a-b711-4c1d-bf44-99ebce87f205" name="AccessibleJRadioButton" visibility="protected">
              <ownedComment xmi:id="09b3cb4a-2394-4e36-9706-dee509f7a6f0" body="This class implements accessibility support for the&#xA;&lt;code>JRadioButton&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to radio button&#xA;user-interface elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="b879b51a-b711-4c1d-bf44-99ebce87f205"/>
              <generalization xmi:id="a37ad113-40e5-48b5-90f2-847c61f2d6f6" isSubstitutable="true" general="da7ae63b-1d41-416b-b2ba-26253fd43a56"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e8b3dc5a-f346-4fc4-b077-bbe69ee386a3" name="JTextField" clientDependency="b098b39e-bd94-41cc-88d8-9a0999e5e189">
            <ownedComment xmi:id="5b94aed0-5307-4fce-972b-031425b515fe" body="&lt;code>JTextField&lt;/code> is a lightweight component that allows the editing&#xA;of a single line of text.&#xA;For information on and examples of using text fields,&#xA;see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/textfield.html&quot;>How to Use Text Fields&lt;/a>&#xA;in &lt;em>The Java Tutorial.&lt;/em>&#xA;&#xA;&lt;p>&#xA;&lt;code>JTextField&lt;/code> is intended to be source-compatible&#xA;with &lt;code>java.awt.TextField&lt;/code> where it is reasonable to do so.  This&#xA;component has capabilities not found in the &lt;code>java.awt.TextField&lt;/code>&#xA;class.  The superclass should be consulted for additional capabilities.&#xA;&lt;p>&#xA;&lt;code>JTextField&lt;/code> has a method to establish the string used as the&#xA;command string for the action event that gets fired.  The&#xA;&lt;code>java.awt.TextField&lt;/code> used the text of the field as the command&#xA;string for the &lt;code>ActionEvent&lt;/code>.&#xA;&lt;code>JTextField&lt;/code> will use the command&#xA;string set with the &lt;code>setActionCommand&lt;/code> method if not &lt;code>null&lt;/code>,&#xA;otherwise it will use the text of the field as a compatibility with&#xA;&lt;code>java.awt.TextField&lt;/code>.&#xA;&lt;p>&#xA;The method &lt;code>setEchoChar&lt;/code> and &lt;code>getEchoChar&lt;/code>&#xA;are not provided directly to avoid a new implementation of a&#xA;pluggable look-and-feel inadvertently exposing password characters.&#xA;To provide password-like services a separate class &lt;code>JPasswordField&lt;/code>&#xA;extends &lt;code>JTextField&lt;/code> to provide this service with an independently&#xA;pluggable look-and-feel.&#xA;&lt;p>&#xA;The &lt;code>java.awt.TextField&lt;/code> could be monitored for changes by adding&#xA;a &lt;code>TextListener&lt;/code> for &lt;code>TextEvent&lt;/code>'s.&#xA;In the &lt;code>JTextComponent&lt;/code> based&#xA;components, changes are broadcasted from the model via a&#xA;&lt;code>DocumentEvent&lt;/code> to &lt;code>DocumentListeners&lt;/code>.&#xA;The &lt;code>DocumentEvent&lt;/code> gives&#xA;the location of the change and the kind of change if desired.&#xA;The code fragment might look something like:&#xA;&lt;pre>&lt;code>&#xA;&amp;nbsp;   DocumentListener myListener = ??;&#xA;&amp;nbsp;   JTextField myArea = ??;&#xA;&amp;nbsp;   myArea.getDocument().addDocumentListener(myListener);&#xA;&lt;/code>&lt;/pre>&#xA;&lt;p>&#xA;The horizontal alignment of &lt;code>JTextField&lt;/code> can be set to be left&#xA;justified, leading justified, centered, right justified or trailing justified.&#xA;Right/trailing justification is useful if the required size&#xA;of the field text is smaller than the size allocated to it.&#xA;This is determined by the &lt;code>setHorizontalAlignment&lt;/code>&#xA;and &lt;code>getHorizontalAlignment&lt;/code> methods.  The default&#xA;is to be leading justified.&#xA;&lt;p>&#xA;How the text field consumes VK_ENTER events depends&#xA;on whether the text field has any action listeners.&#xA;If so, then VK_ENTER results in the listeners&#xA;getting an ActionEvent,&#xA;and the VK_ENTER event is consumed.&#xA;This is compatible with how AWT text fields handle VK_ENTER events.&#xA;If the text field has no action listeners, then as of v 1.3 the VK_ENTER&#xA;event is not consumed.  Instead, the bindings of ancestor components&#xA;are processed, which enables the default button feature of&#xA;JFC/Swing to work.&#xA;&lt;p>&#xA;Customized fields can easily be created by extending the model and&#xA;changing the default model provided.  For example, the following piece&#xA;of code will create a field that holds only upper case characters.  It&#xA;will work even if text is pasted into from the clipboard or it is altered via&#xA;programmatic changes.&#xA;&lt;pre>&lt;code>&#xA;&amp;nbsp;public class UpperCaseField extends JTextField {&#xA;&amp;nbsp;&#xA;&amp;nbsp;    public UpperCaseField(int cols) {&#xA;&amp;nbsp;        super(cols);&#xA;&amp;nbsp;    }&#xA;&amp;nbsp;&#xA;&amp;nbsp;    protected Document createDefaultModel() {&#xA;&amp;nbsp;&#x9;      return new UpperCaseDocument();&#xA;&amp;nbsp;    }&#xA;&amp;nbsp;&#xA;&amp;nbsp;    static class UpperCaseDocument extends PlainDocument {&#xA;&amp;nbsp;&#xA;&amp;nbsp;        public void insertString(int offs, String str, AttributeSet a)&#xA;&amp;nbsp;&#x9;          throws BadLocationException {&#xA;&amp;nbsp;&#xA;&amp;nbsp;&#x9;          if (str == null) {&#xA;&amp;nbsp;&#x9;&#x9;      return;&#xA;&amp;nbsp;&#x9;          }&#xA;&amp;nbsp;&#x9;          char[] upper = str.toCharArray();&#xA;&amp;nbsp;&#x9;          for (int i = 0; i &lt; upper.length; i++) {&#xA;&amp;nbsp;&#x9;&#x9;      upper[i] = Character.toUpperCase(upper[i]);&#xA;&amp;nbsp;&#x9;          }&#xA;&amp;nbsp;&#x9;          super.insertString(offs, new String(upper), a);&#xA;&amp;nbsp;&#x9;      }&#xA;&amp;nbsp;    }&#xA;&amp;nbsp;}&#xA;&lt;/code>&lt;/pre>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer false&#xA;description: A component which allows for the editing of a single line of text.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.90 12/19/03&#xA;@see #setActionCommand&#xA;@see JPasswordField&#xA;@see #addActionListener&#xA;" annotatedElement="e8b3dc5a-f346-4fc4-b077-bbe69ee386a3"/>
            <generalization xmi:id="4ed13bfc-7616-4431-969e-e87fe7ca36bd" isSubstitutable="true" general="ff3cbbfc-9ddc-468b-be89-f7c80430097b"/>
            <interfaceRealization xmi:id="b098b39e-bd94-41cc-88d8-9a0999e5e189" name="" supplier="e6ed5159-dfed-45c8-a076-44689a431f3d" client="e8b3dc5a-f346-4fc4-b077-bbe69ee386a3" contract="e6ed5159-dfed-45c8-a076-44689a431f3d"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="54682f57-7b20-4549-9c37-3ddc70bad264" name="NotifyAction" visibility="package">
              <generalization xmi:id="37e8a39a-2956-4cac-a7cc-8649f860a011" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="0507a259-fd56-42a8-8984-a212c4b5a3e5" name="ScrollRepainter" visibility="package" clientDependency="d629aa75-8e38-4d39-bdf5-6eef7aba969e 30bb98f4-be43-4f44-9b28-7d32f87f1986">
              <interfaceRealization xmi:id="d629aa75-8e38-4d39-bdf5-6eef7aba969e" name="" supplier="334e76ee-f6d5-4094-b3f5-494be7414f2c" client="0507a259-fd56-42a8-8984-a212c4b5a3e5" contract="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
              <interfaceRealization xmi:id="30bb98f4-be43-4f44-9b28-7d32f87f1986" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="0507a259-fd56-42a8-8984-a212c4b5a3e5" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="490daf1c-5a6b-40b4-bfaa-97389c49c945" name="AccessibleJTextField" visibility="protected">
              <ownedComment xmi:id="12f21af4-2b43-4bd4-84a1-1c2f5d08ccb2" body="This class implements accessibility support for the&#xA;&lt;code>JTextField&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to text field user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="490daf1c-5a6b-40b4-bfaa-97389c49c945"/>
              <generalization xmi:id="d9502196-5c2b-4320-b110-5228300becdd" isSubstitutable="true" general="ac9a36b2-925c-417c-900c-979e705e9cba"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="16010a0d-19d3-4e60-bf27-61fef18eb4c2" name="event">
            <packagedElement xmi:type="uml:Interface" xmi:id="6bc8edc9-4c17-4ffe-962b-c690c7e16505" name="HyperlinkListener" isAbstract="true">
              <ownedComment xmi:id="7e1720ff-c588-47ed-a65a-52f1eb6e2ad2" body="HyperlinkListener&#xA;&#xA;@version 1.10 12/19/03&#xA;@author  Timothy Prinzing&#xA;" annotatedElement="6bc8edc9-4c17-4ffe-962b-c690c7e16505"/>
              <generalization xmi:id="8b533fec-633d-43b7-9b57-639973726349" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="7bde1841-c014-4bfc-af9a-9a4efbbf727d" name="TreeWillExpandListener" isAbstract="true">
              <ownedComment xmi:id="ae9a3105-69e7-4f6b-a3da-90662625b074" body="The listener that's notified when a tree expands or collapses&#xA;a node.&#xA;For further information and examples see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/events/treewillexpandlistener.html&quot;>How to Write a Tree-Will-Expand Listener&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&#xA;@version 1.9 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="7bde1841-c014-4bfc-af9a-9a4efbbf727d"/>
              <generalization xmi:id="ca5cfa6d-445e-41c3-bd70-c0bcd274df3a" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="88de5424-785a-4ad7-993f-f51dc1a81690" name="AncestorListener" isAbstract="true">
              <ownedComment xmi:id="e6f16c31-8207-4440-a572-369f46639856" body="AncestorListener&#xA;&#xA;Interface to support notification when changes occur to a JComponent or one&#xA;of its ancestors.  These include movement and when the component becomes&#xA;visible or invisible, either by the setVisible() method or by being added&#xA;or removed from the component hierarchy.&#xA;&#xA;@version 1.12 12/19/03&#xA;@author Dave Moore&#xA;" annotatedElement="88de5424-785a-4ad7-993f-f51dc1a81690"/>
              <generalization xmi:id="5a00c6f8-727e-4a91-984a-97ab45d0433f" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="fabf8bf4-3709-42ed-9edd-b2a858f90b1b" name="AncestorEvent">
              <ownedComment xmi:id="0067e2d4-38c9-4788-9348-5ed0f67e184d" body="An event reported to a child component that originated from an&#xA;ancestor in the component hierarchy.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.19 12/19/03&#xA;@author Dave Moore&#xA;" annotatedElement="fabf8bf4-3709-42ed-9edd-b2a858f90b1b"/>
              <generalization xmi:id="afff5c57-efe9-4985-b57f-cbd997ac528f" isSubstitutable="true" general="dc3e23e7-09df-4daf-b0e1-0ea40dc8c9ee"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="077ca4fe-3afb-4e22-bed0-5cc47445acf4" name="ListSelectionListener" isAbstract="true">
              <ownedComment xmi:id="c5bc53db-3a8b-4c3c-824a-f0b7605aafc3" body="The listener that's notified when a lists selection value&#xA;changes.&#xA;&#xA;@see javax.swing.ListSelectionModel&#xA;&#xA;@version 1.12 12/19/03&#xA;@author Hans Muller&#xA;" annotatedElement="077ca4fe-3afb-4e22-bed0-5cc47445acf4"/>
              <generalization xmi:id="ac6ed5a8-e5b3-4dc5-8db2-7fe449a32f41" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="e228038f-21ca-440d-a484-f2bec602ff9e" name="CellEditorListener" isAbstract="true">
              <ownedComment xmi:id="00e8632b-64b2-409b-838b-bb2e28ccb011" body="CellEditorListener defines the interface for an object that listens&#xA;to changes in a CellEditor&#xA;&#xA;@version 1.13 12/19/03&#xA;@author Alan Chung&#xA;" annotatedElement="e228038f-21ca-440d-a484-f2bec602ff9e"/>
              <generalization xmi:id="5a6aa753-8ba6-4f1a-9a98-fdcca04742b4" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="bfc5675c-3cd0-45f4-9cdd-6cf64e13e834" name="PopupMenuEvent">
              <ownedComment xmi:id="52345e01-23f3-442e-9111-e164c5ae6989" body="PopupMenuEvent only contains the source of the event which is the JPoupMenu&#xA;sending the event&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.13 12/19/03&#xA;@author Arnaud Weber&#xA;" annotatedElement="bfc5675c-3cd0-45f4-9cdd-6cf64e13e834"/>
              <generalization xmi:id="dc434191-deeb-413b-ad30-7bed01b9151a" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="75814c8d-ab3b-4cba-97a1-92d8b45318c4" name="TreeExpansionEvent">
              <ownedComment xmi:id="1b58ad7f-2151-471a-ac30-3d68ce4153a1" body="An event used to identify a single path in a tree.  The source&#xA;returned by &lt;b>getSource&lt;/b> will be an instance of JTree.&#xA;&lt;p>&#xA;For further documentation and examples see&#xA;the following sections in &lt;em>The Java Tutorial&lt;/em>:&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/events/treeexpansionlistener.html&quot;>How to Write a Tree Expansion Listener&lt;/a> and&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/events/treewillexpandlistener.html&quot;>How to Write a Tree-Will-Expand Listener&lt;/a>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@author Scott Violet&#xA;@version 1.20 12/19/03&#xA;" annotatedElement="75814c8d-ab3b-4cba-97a1-92d8b45318c4"/>
              <generalization xmi:id="4dc9a057-0a1e-4d0c-b3a5-27f69ad549d0" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2ae00c28-5604-40ee-ad2c-51f38327e81d" name="ListSelectionEvent">
              <ownedComment xmi:id="8fa9a5af-9427-4e60-8de1-fc9e8b70c568" body="An event that characterizes a change in the current&#xA;selection.  The change is limited to a row interval.&#xA;ListSelectionListeners will generally query the source of&#xA;the event for the new selected status of each potentially&#xA;changed row.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.20 12/19/03&#xA;@author Hans Muller&#xA;@author Ray Ryan&#xA;@see ListSelectionModel&#xA;" annotatedElement="2ae00c28-5604-40ee-ad2c-51f38327e81d"/>
              <generalization xmi:id="262c124c-2b41-4cca-9433-95dfb5dcccd9" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="f4c98f3d-8995-45e9-b8b0-6e599175474b" name="UndoableEditListener" isAbstract="true">
              <ownedComment xmi:id="7e9838c3-114c-4211-913c-e307193bc487" body="Interface implemented by a class interested in hearing about&#xA;undoable operations.&#xA;&#xA;@version 1.16 12/19/03&#xA;@author Ray Ryan&#xA;" annotatedElement="f4c98f3d-8995-45e9-b8b0-6e599175474b"/>
              <generalization xmi:id="5f44a44a-ac6f-439f-affe-7e0d36422b79" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1e0b98b8-11c9-4e70-8b96-561f96b4447f" name="ListDataEvent">
              <ownedComment xmi:id="246502a9-aaa9-477f-88ac-aa5571afb2ed" body="Defines an event that encapsulates changes to a list.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.18 12/19/03&#xA;@author Hans Muller&#xA;" annotatedElement="1e0b98b8-11c9-4e70-8b96-561f96b4447f"/>
              <generalization xmi:id="0573e4d1-9cc7-4d15-9157-b562b3d87e7d" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="926679b4-597b-4f14-95c3-4956e7352241" name="TreeModelListener" isAbstract="true">
              <ownedComment xmi:id="908511c1-85ac-43f2-bab9-c6a8e6972908" body="Defines the interface for an object that listens&#xA;to changes in a TreeModel.&#xA;For further information and examples see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/events/treemodellistener.html&quot;>How to Write a Tree Model Listener&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&#xA;@version 1.17 12/19/03&#xA;@author Rob Davis&#xA;@author Ray Ryan&#xA;" annotatedElement="926679b4-597b-4f14-95c3-4956e7352241"/>
              <generalization xmi:id="76bf5a76-ffea-4f69-8a59-10ed57aaf1f7" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="187c9297-1b72-4c63-ba47-593d6f887a7d" name="MenuListener" isAbstract="true">
              <ownedComment xmi:id="790a2b7b-23c0-44fd-b091-49c9a163ccfd" body="Defines a listener for menu events.&#xA;&#xA;@version 1.12 12/19/03&#xA;@author Georges Saab&#xA;" annotatedElement="187c9297-1b72-4c63-ba47-593d6f887a7d"/>
              <generalization xmi:id="b9299883-cad9-4712-b7cf-b3b60bed707d" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1ced2d82-c15b-4d9f-bf85-aa9484493c5b" name="ChangeEvent">
              <ownedComment xmi:id="0e33fe48-d72c-435e-86ed-e377c787e1cb" body="ChangeEvent is used to notify interested parties that&#xA;state has changed in the event source.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.16 12/19/03&#xA;@author Jeff Dinkins&#xA;" annotatedElement="1ced2d82-c15b-4d9f-bf85-aa9484493c5b"/>
              <generalization xmi:id="0ca0f704-f449-4d25-8b95-8b2ac534fedd" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="334e76ee-f6d5-4094-b3f5-494be7414f2c" name="ChangeListener" isAbstract="true">
              <ownedComment xmi:id="d8f74104-1823-4544-9ba2-40cd09273a09" body="Defines an object which listens for ChangeEvents.&#xA;&#xA;@version 1.11 12/19/03&#xA;@author Jeff Dinkins&#xA;" annotatedElement="334e76ee-f6d5-4094-b3f5-494be7414f2c"/>
              <generalization xmi:id="5a52d685-6f49-493c-9a98-27fecbde5ac8" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f08e1bcd-f9f1-46d9-a7a2-44650b055110" name="UndoableEditEvent">
              <ownedComment xmi:id="0f413f20-b74e-4eb8-874c-c41bb99f3b7c" body="An event indicating that an operation which can be undone has occurred.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.18 12/19/03&#xA;@author Ray Ryan&#xA;" annotatedElement="f08e1bcd-f9f1-46d9-a7a2-44650b055110"/>
              <generalization xmi:id="18fe5a5d-8607-4131-830d-94ef1fd4bcc8" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5d91cd7a-f250-42cf-bcdc-41184f8ecbdc" name="SwingPropertyChangeSupport" isLeaf="true">
              <ownedComment xmi:id="30a43af6-3a28-4c68-8823-0b13006f101c" body="This subclass of java.beans.PropertyChangeSupport is identical&#xA;in functionality -- it sacrifices thread-safety (not a Swing&#xA;concern) for reduce memory consumption, which helps performance&#xA;(both big Swing concerns).  Most of the overridden methods are&#xA;only necessary because all of PropertyChangeSupport's instance&#xA;data is private, without accessor methods.&#xA;&#xA;@version 1.20 12/19/03&#xA;@author unattributed&#xA;" annotatedElement="5d91cd7a-f250-42cf-bcdc-41184f8ecbdc"/>
              <generalization xmi:id="a1b5a32e-d432-4377-99ed-037ea4638325" isSubstitutable="true" general="748bc78b-da48-43a5-a8f3-4490e0c14751"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="06f84883-944a-446a-b70f-369f4c06b3a9" name="EventListenerList" clientDependency="70b24fd6-9128-45e1-af68-f7c31039f127">
              <ownedComment xmi:id="08405b60-03ce-4b13-9820-650e0bd28738" body="A class that holds a list of EventListeners.  A single instance&#xA;can be used to hold all listeners (of all types) for the instance&#xA;using the list.  It is the responsiblity of the class using the&#xA;EventListenerList to provide type-safe API (preferably conforming&#xA;to the JavaBeans spec) and methods which dispatch event notification&#xA;methods to appropriate Event Listeners on the list.&#xA;&#xA;The main benefits that this class provides are that it is relatively&#xA;cheap in the case of no listeners, and it provides serialization for&#xA;event-listener lists in a single place, as well as a degree of MT safety&#xA;(when used correctly).&#xA;&#xA;Usage example:&#xA;Say one is defining a class that sends out FooEvents, and one wants&#xA;to allow users of the class to register FooListeners and receive&#xA;notification when FooEvents occur.  The following should be added&#xA;to the class definition:&#xA;&lt;pre>&#xA;EventListenerList listenerList = new EventListenerList();&#xA;FooEvent fooEvent = null;&#xA;&#xA;public void addFooListener(FooListener l) {&#xA;listenerList.add(FooListener.class, l);&#xA;}&#xA;&#xA;public void removeFooListener(FooListener l) {&#xA;listenerList.remove(FooListener.class, l);&#xA;}&#xA;&#xA;&#xA;Notify all listeners that have registered interest for&#xA;notification on this event type.  The event instance&#xA;is lazily created using the parameters passed into&#xA;the fire method.&#xA;&#xA;protected void fireFooXXX() {&#xA;Guaranteed to return a non-null array&#xA;Object[] listeners = listenerList.getListenerList();&#xA;Process the listeners last to first, notifying&#xA;those that are interested in this event&#xA;for (int i = listeners.length-2; i>=0; i-=2) {&#xA;if (listeners[i]==FooListener.class) {&#xA;Lazily create the event:&#xA;if (fooEvent == null)&#xA;fooEvent = new FooEvent(this);&#xA;((FooListener)listeners[i+1]).fooXXX(fooEvent);&#xA;}&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;foo should be changed to the appropriate name, and fireFooXxx to the&#xA;appropriate method name.  One fire method should exist for each&#xA;notification method in the FooListener interface.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.36 05/05/04&#xA;@author Georges Saab&#xA;@author Hans Muller&#xA;@author James Gosling&#xA;" annotatedElement="06f84883-944a-446a-b70f-369f4c06b3a9"/>
              <interfaceRealization xmi:id="70b24fd6-9128-45e1-af68-f7c31039f127" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="06f84883-944a-446a-b70f-369f4c06b3a9" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f36c18a4-5702-45a7-ba3c-7eb273221d4e" name="HyperlinkEvent">
              <ownedComment xmi:id="cdecfb1e-391a-4072-b094-018b923003c0" body="HyperlinkEvent is used to notify interested parties that&#xA;something has happened with respect to a hypertext link.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.18 12/19/03&#xA;@author  Timothy Prinzing&#xA;" annotatedElement="f36c18a4-5702-45a7-ba3c-7eb273221d4e"/>
              <generalization xmi:id="6f898224-c02a-48de-b35c-c839f22287b8" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f24bcee5-136e-4c1a-88d3-fa8ba495cc4f" name="EventType" isLeaf="true">
                <ownedComment xmi:id="ca21480a-0f27-42c5-ac50-46e0abaa4d1d" body="Defines the ENTERED, EXITED, and ACTIVATED event types, along&#xA;with their string representations, returned by toString().&#xA;" annotatedElement="f24bcee5-136e-4c1a-88d3-fa8ba495cc4f"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="22131fc3-24b3-4438-b2cd-2f5cf26dd84b" name="InternalFrameAdapter" clientDependency="ba0bc789-8f5d-4751-a32a-2021d9cf25d4" isAbstract="true">
              <ownedComment xmi:id="30cfb519-b34a-4814-ab82-4df4f2079d6f" body="An abstract adapter class for receiving internal frame events.&#xA;The methods in this class are empty. This class exists as&#xA;convenience for creating listener objects, and is functionally&#xA;equivalent to the WindowAdapter class in the AWT.&#xA;&lt;p>&#xA;See &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/events/internalframelistener.html&quot;>How to Write an Internal Frame Listener&lt;/a>&#xA;in &lt;em>The Java Tutorial&lt;/em> and&#xA;&lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>The Java Class Libraries (update)&lt;/a>&#xA;&#xA;@see InternalFrameEvent&#xA;@see InternalFrameListener&#xA;@see java.awt.event.WindowListener&#xA;&#xA;@version 1.12 12/19/03&#xA;@author Thomas Ball&#xA;" annotatedElement="22131fc3-24b3-4438-b2cd-2f5cf26dd84b"/>
              <interfaceRealization xmi:id="ba0bc789-8f5d-4751-a32a-2021d9cf25d4" name="" supplier="1e7d1b2b-1cbe-4e5f-963e-45b930b3deca" client="22131fc3-24b3-4438-b2cd-2f5cf26dd84b" contract="1e7d1b2b-1cbe-4e5f-963e-45b930b3deca"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="f9333e5d-3556-4b2e-93d6-4e5f29f721e9" name="TableColumnModelListener" isAbstract="true">
              <ownedComment xmi:id="48b23d23-f18c-4bfd-9f0d-19d37f0d1559" body="TableColumnModelListener defines the interface for an object that listens&#xA;to changes in a TableColumnModel.&#xA;&#xA;@version 1.13 12/19/03&#xA;@author Alan Chung&#xA;@see TableColumnModelEvent&#xA;" annotatedElement="f9333e5d-3556-4b2e-93d6-4e5f29f721e9"/>
              <generalization xmi:id="e06693e4-69e6-4303-9c11-e4c0484900e1" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="be6d66aa-0c41-4e80-9099-9d6984f02804" name="InternalFrameEvent">
              <ownedComment xmi:id="181603fe-593e-4b4d-a647-62097ef21e77" body="An &lt;code>AWTEvent&lt;/code> that adds support for&#xA;&lt;code>JInternalFrame&lt;/code> objects as the event source.  This class has the&#xA;same event types as &lt;code>WindowEvent&lt;/code>,&#xA;although different IDs are used.&#xA;Help on handling internal frame events&#xA;is in&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/events/internalframelistener.html&quot; target=&quot;_top&quot;>How to Write an Internal Frame Listener&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see java.awt.event.WindowEvent&#xA;@see java.awt.event.WindowListener&#xA;@see JInternalFrame&#xA;@see InternalFrameListener&#xA;&#xA;@version 1.16 12/19/03&#xA;@author Thomas Ball&#xA;" annotatedElement="be6d66aa-0c41-4e80-9099-9d6984f02804"/>
              <generalization xmi:id="1fce088d-abf8-4d5e-a9c6-a2ddfc6cea9f" isSubstitutable="true" general="dc3e23e7-09df-4daf-b0e1-0ea40dc8c9ee"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="bcdeadf8-6999-41e4-bdd9-4404260fdf22" name="ListDataListener" isAbstract="true">
              <ownedComment xmi:id="5346ee16-ed6b-478c-81d8-374379c69d61" body="ListDataListener&#xA;&#xA;@version 1.13 12/19/03&#xA;@author Hans Muller&#xA;" annotatedElement="bcdeadf8-6999-41e4-bdd9-4404260fdf22"/>
              <generalization xmi:id="5527af8d-7074-4b5a-8eb1-be39dd7e8cbe" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="1e7d1b2b-1cbe-4e5f-963e-45b930b3deca" name="InternalFrameListener" isAbstract="true">
              <ownedComment xmi:id="fa9286e8-202f-4c11-a3f1-13a06da6fefc" body="The listener interface for receiving internal frame events.&#xA;This class is functionally equivalent to the WindowListener class&#xA;in the AWT.&#xA;&lt;p>&#xA;See &lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/events/internalframelistener.html&quot;>How to Write an Internal Frame Listener&lt;/a>&#xA;in &lt;em>The Java Tutorial&lt;/em> and&#xA;&lt;a href=&quot;http://www.awl.com/cp/javaseries/jcl1_2.html&quot;>The Java Class Libraries (update)&lt;/a>&#xA;for further documentation.&#xA;&#xA;@see java.awt.event.WindowListener&#xA;&#xA;@version 1.12 12/19/03&#xA;@author Thomas Ball&#xA;" annotatedElement="1e7d1b2b-1cbe-4e5f-963e-45b930b3deca"/>
              <generalization xmi:id="9e701ab9-b461-40ab-8abe-6ba583394d37" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1dd6c96e-2620-426f-b240-533df8ae8e0d" name="MenuEvent">
              <ownedComment xmi:id="cf63cf27-6738-4c7e-82ab-3b77dfa13e42" body="MenuEvent is used to notify interested parties that&#xA;the menu which is the event source has been posted,&#xA;selected, or canceled.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.15 12/19/03&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;" annotatedElement="1dd6c96e-2620-426f-b240-533df8ae8e0d"/>
              <generalization xmi:id="36973b12-98e9-4cc4-8539-eea73cc667ff" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="38012c17-4b34-47c2-b7d8-dd3924836e2a" name="TableModelListener" isAbstract="true">
              <ownedComment xmi:id="4cf31606-b821-4f3c-86d8-6cebc8376de5" body="TableModelListener defines the interface for an object that listens&#xA;to changes in a TableModel.&#xA;&#xA;@version 1.15 12/19/03&#xA;@author Alan Chung&#xA;@see javax.swing.table.TableModel&#xA;" annotatedElement="38012c17-4b34-47c2-b7d8-dd3924836e2a"/>
              <generalization xmi:id="4dda5921-7783-4f10-a628-fef3457727ec" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="361ca981-29c8-430f-b1a4-fa3e692a1955" name="MouseInputListener" isAbstract="true">
              <ownedComment xmi:id="0eff6e67-9395-4ce4-98ea-f558b524ffd8" body="A listener implementing all the methods in both the MouseListener and&#xA;MouseMotionListener interfaces.&#xA;&#xA;@version 1.10 12/19/03&#xA;@author Philip Milne&#xA;" annotatedElement="361ca981-29c8-430f-b1a4-fa3e692a1955"/>
              <generalization xmi:id="9eb4b4af-7759-49b7-b6be-c858eef46ebf" isSubstitutable="true" general="d2bfccf2-94c5-4882-8d84-613f4ad53195"/>
              <generalization xmi:id="af5bd8b6-85f5-4573-947c-cf0ab732b321" isSubstitutable="true" general="8747391f-bebd-47e3-888b-8e509ac223c9"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="8473483d-b350-428d-828b-a5a719abea43" name="DocumentListener" isAbstract="true">
              <ownedComment xmi:id="3dd862e0-e908-4847-9ffb-7a779de8398a" body="Interface for an observer to register to receive notifications&#xA;of changes to a text document.&#xA;&lt;p>&#xA;The default implementation of&#xA;the Document interface (AbstractDocument) supports asynchronous&#xA;mutations.  If this feature is used (i.e. mutations are made&#xA;from a thread other than the Swing event thread), the listeners&#xA;will be notified via the mutating thread.  &lt;em>This means that&#xA;if asynchronous updates are made, the implementation of this&#xA;interface must be threadsafe&lt;/em>!&#xA;&lt;p>&#xA;The DocumentEvent notification is based upon the JavaBeans&#xA;event model.  There is no guarantee about the order of delivery&#xA;to listeners, and all listeners must be notified prior to making&#xA;further mutations to the Document.  &lt;em>This means implementations&#xA;of the DocumentListener may not mutate the source of the event&#xA;(i.e. the associated Document)&lt;/em>.&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.14 12/19/03&#xA;@see javax.swing.text.Document&#xA;@see javax.swing.text.StyledDocument&#xA;@see DocumentEvent&#xA;" annotatedElement="8473483d-b350-428d-828b-a5a719abea43"/>
              <generalization xmi:id="0bc3f4a5-8534-4a51-adeb-42ace61bec59" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c51ca7c1-8a31-4ad6-a87b-e02aa214f2aa" name="MenuKeyEvent">
              <ownedComment xmi:id="4a2a9b86-d3e5-4818-8e3b-7575e61f2401" body="MenuKeyEvent is used to notify interested parties that&#xA;the menu element has received a KeyEvent forwarded to it&#xA;in a menu tree.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.13 12/19/03&#xA;@author Georges Saab&#xA;" annotatedElement="c51ca7c1-8a31-4ad6-a87b-e02aa214f2aa"/>
              <generalization xmi:id="f39ce323-56df-4c6e-b3dc-5b2ed8e323b2" isSubstitutable="true" general="73ccb2d2-1c8e-47dd-9fab-585b6c335dcf"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0026fc5d-592e-4382-bc52-4ff69c243d98" name="CaretEvent" isAbstract="true">
              <ownedComment xmi:id="43e3770a-a2d0-4690-a954-3e2a97c2272e" body="CaretEvent is used to notify interested parties that&#xA;the text caret has changed in the event source.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.13 12/19/03&#xA;@author  Timothy Prinzing&#xA;" annotatedElement="0026fc5d-592e-4382-bc52-4ff69c243d98"/>
              <generalization xmi:id="40f96053-1793-4da6-ba84-e9678f89cedb" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="7f3dfbae-e88f-4d3a-854b-189e70ccdda1" name="CaretListener" isAbstract="true">
              <ownedComment xmi:id="df8a37c2-5dc6-43d1-a99d-eeeb65439d7a" body="Listener for changes in the caret position of a text&#xA;component.&#xA;&#xA;@version 1.9 12/19/03&#xA;@author  Timothy Prinzing&#xA;" annotatedElement="7f3dfbae-e88f-4d3a-854b-189e70ccdda1"/>
              <generalization xmi:id="6ae9aacb-c1dc-4118-b401-91bb2234c88f" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="173abbe6-9303-4b54-abf5-2c00ce8666cf" name="TreeSelectionListener" isAbstract="true">
              <ownedComment xmi:id="1667330a-3762-4c67-8ff4-89b5fa22ef67" body="The listener that's notified when the selection in a TreeSelectionModel&#xA;changes.&#xA;For more information and examples see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/events/treeselectionlistener.html&quot;>How to Write a Tree Selection Listener&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&#xA;@see javax.swing.tree.TreeSelectionModel&#xA;@see javax.swing.JTree&#xA;&#xA;@version 1.14 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="173abbe6-9303-4b54-abf5-2c00ce8666cf"/>
              <generalization xmi:id="35bacb2e-8d51-4b37-9790-9ab87f30c174" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="66876c63-9640-4ecf-85d5-22e30bc84e77" name="MenuKeyListener" isAbstract="true">
              <ownedComment xmi:id="b7ea6310-ebc8-4648-933d-79d638dd9462" body="MenuKeyListener&#xA;&#xA;@version 1.9 12/19/03&#xA;@author Georges Saab&#xA;" annotatedElement="66876c63-9640-4ecf-85d5-22e30bc84e77"/>
              <generalization xmi:id="16ba839e-cb69-410d-b8ac-ee6e2efb6a93" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="dc063b6b-8f57-4924-b4bd-139ec9bb4dba" name="MenuDragMouseEvent">
              <ownedComment xmi:id="d86b20fd-31ec-43e4-bcae-693f8d996e43" body="MenuDragMouseEvent is used to notify interested parties that&#xA;the menu element has received a MouseEvent forwarded to it&#xA;under drag conditions.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.13 12/19/03&#xA;@author Georges Saab&#xA;" annotatedElement="dc063b6b-8f57-4924-b4bd-139ec9bb4dba"/>
              <generalization xmi:id="ce2339a3-3e67-488a-8dca-a72df2541d5c" isSubstitutable="true" general="74331044-3525-424b-b9bc-44661d0d96a6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="69130d3e-0795-4340-be55-cc2ce754646e" name="MouseInputAdapter" clientDependency="bb859ae3-3366-4cbc-8a66-98a445e5fd51" isAbstract="true">
              <ownedComment xmi:id="3e2d742a-efc3-4bfb-874f-d59f9e9164fa" body="The adapter which receives mouse events and mouse motion events.&#xA;The methods in this class are empty;  this class is provided as a&#xA;convenience for easily creating listeners by extending this class&#xA;and overriding only the methods of interest.&#xA;&#xA;@version 1.12 12/19/03&#xA;@author Philip Milne&#xA;" annotatedElement="69130d3e-0795-4340-be55-cc2ce754646e"/>
              <interfaceRealization xmi:id="bb859ae3-3366-4cbc-8a66-98a445e5fd51" name="" supplier="361ca981-29c8-430f-b1a4-fa3e692a1955" client="69130d3e-0795-4340-be55-cc2ce754646e" contract="361ca981-29c8-430f-b1a4-fa3e692a1955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="bee13a63-1606-406a-9935-44e5d6da1c49" name="TreeModelEvent">
              <ownedComment xmi:id="3c48cc9b-94f7-494d-ad1e-f27d75d14f05" body="Encapsulates information describing changes to a tree model, and&#xA;used to notify tree model listeners of the change.&#xA;For more information and examples see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/events/treemodellistener.html&quot;>How to Write a Tree Model Listener&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.33 12/19/03&#xA;@author Rob Davis&#xA;@author Ray Ryan&#xA;@author Scott Violet&#xA;" annotatedElement="bee13a63-1606-406a-9935-44e5d6da1c49"/>
              <generalization xmi:id="880ec25e-0953-4c24-8454-17da9897fe84" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="df2553d0-45f1-4a7c-b2a1-2e14b2acc6b8" name="TableModelEvent">
              <ownedComment xmi:id="50466b02-5d38-4d69-87a7-3b49bbf90432" body="TableModelEvent is used to notify listeners that a table model&#xA;has changed. The model event describes changes to a TableModel&#xA;and all references to rows and columns are in the co-ordinate&#xA;system of the model.&#xA;Depending on the parameters used in the constructors, the TableModelevent&#xA;can be used to specify the following types of changes: &lt;p>&#xA;&#xA;&lt;pre>&#xA;TableModelEvent(source);              //  The data, ie. all rows changed&#xA;TableModelEvent(source, HEADER_ROW);  //  Structure change, reallocate TableColumns&#xA;TableModelEvent(source, 1);           //  Row 1 changed&#xA;TableModelEvent(source, 3, 6);        //  Rows 3 to 6 inclusive changed&#xA;TableModelEvent(source, 2, 2, 6);     //  Cell at (2, 6) changed&#xA;TableModelEvent(source, 3, 6, ALL_COLUMNS, INSERT); // Rows (3, 6) were inserted&#xA;TableModelEvent(source, 3, 6, ALL_COLUMNS, DELETE); // Rows (3, 6) were deleted&#xA;&lt;/pre>&#xA;&#xA;It is possible to use other combinations of the parameters, not all of them&#xA;are meaningful. By subclassing, you can add other information, for example:&#xA;whether the event WILL happen or DID happen. This makes the specification&#xA;of rows in DELETE events more useful but has not been included in&#xA;the swing package as the JTable only needs post-event notification.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.21 12/19/03&#xA;@author Alan Chung&#xA;@author Philip Milne&#xA;@see TableModel&#xA;" annotatedElement="df2553d0-45f1-4a7c-b2a1-2e14b2acc6b8"/>
              <generalization xmi:id="569cdeb9-04b2-45a2-b536-ec34d880c494" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="1a6761f2-765c-474c-8299-4d40d2a1e6f7" name="PopupMenuListener" isAbstract="true">
              <ownedComment xmi:id="589c797a-d242-481d-a6d1-81ff8ca1cebc" body="A popup menu listener&#xA;&#xA;@version 1.9 12/19/03&#xA;@author Arnaud Weber&#xA;" annotatedElement="1a6761f2-765c-474c-8299-4d40d2a1e6f7"/>
              <generalization xmi:id="94ee6b70-7783-42fd-8204-7b45aee2e51a" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="ab6aa2df-5b08-47af-bc93-b63a9ca8b150" name="TreeExpansionListener" isAbstract="true">
              <ownedComment xmi:id="75b2543b-f2c7-4c0e-8474-22ed45587d19" body="The listener that's notified when a tree expands or collapses&#xA;a node.&#xA;For further documentation and examples see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/events/treeexpansionlistener.html&quot;>How to Write a Tree Expansion Listener&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&#xA;@author Scott Violet&#xA;" annotatedElement="ab6aa2df-5b08-47af-bc93-b63a9ca8b150"/>
              <generalization xmi:id="33d9966e-c31d-4dd7-8b63-ec5ff5183684" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="433b9f6e-be7b-45a8-ac7d-73d0967667bd" name="TableColumnModelEvent">
              <ownedComment xmi:id="76f641d1-43cd-498a-92a3-b86de9270303" body="&lt;B>TableColumnModelEvent&lt;/B> is used to notify listeners that a table&#xA;column model has changed, such as a column was added, removed, or&#xA;moved.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.16 12/19/03&#xA;@author Alan Chung&#xA;@see TableColumnModelListener&#xA;" annotatedElement="433b9f6e-be7b-45a8-ac7d-73d0967667bd"/>
              <generalization xmi:id="eb296642-2d91-489d-ad2c-02d47c66f062" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5f98948e-12fc-4267-9980-b423164916b0" name="TreeSelectionEvent">
              <ownedComment xmi:id="838cf9b2-2ae6-43d3-95c4-206de0ee6779" body="An event that characterizes a change in the current&#xA;selection.  The change is based on any number of paths.&#xA;TreeSelectionListeners will generally query the source of&#xA;the event for the new selected status of each potentially&#xA;changed row.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@see TreeSelectionListener&#xA;@see javax.swing.tree.TreeSelectionModel&#xA;&#xA;@version 1.26 12/19/03&#xA;@author Scott Violet&#xA;" annotatedElement="5f98948e-12fc-4267-9980-b423164916b0"/>
              <generalization xmi:id="7bb06584-abe8-48d8-8233-3c4f1148a2a8" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="33f8e49e-c9a3-4db4-94cf-6592c6ee6894" name="MenuDragMouseListener" isAbstract="true">
              <ownedComment xmi:id="8d6a3e9f-a787-4573-89ad-4888ef19a4f1" body="Defines a menu mouse-drag listener.&#xA;&#xA;@version 1.11 12/19/03&#xA;@author Georges Saab&#xA;" annotatedElement="33f8e49e-c9a3-4db4-94cf-6592c6ee6894"/>
              <generalization xmi:id="76ee0fa7-930b-4559-bdea-9eff7f4c237c" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="ed4ebb41-73e1-415b-b527-955941359030" name="DocumentEvent" isAbstract="true">
              <ownedComment xmi:id="0fb7d967-e136-44e5-973d-20f472f99e4f" body="Interface for document change notifications.  This provides&#xA;detailed information to Document observers about how the&#xA;Document changed.  It provides high level information such&#xA;as type of change and where it occurred, as well as the more&#xA;detailed structural changes (What Elements were inserted and&#xA;removed).&#xA;&#xA;@author  Timothy Prinzing&#xA;@version 1.23 12/19/03&#xA;@see javax.swing.text.Document&#xA;@see DocumentListener&#xA;" annotatedElement="ed4ebb41-73e1-415b-b527-955941359030"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0885472d-0838-4e4d-a77c-8dbf2e8bb441" name="EventType" isLeaf="true">
                <ownedComment xmi:id="18ef6ed9-9751-4b18-bb6c-3732781363ef" body="Enumeration for document event types&#xA;" annotatedElement="0885472d-0838-4e4d-a77c-8dbf2e8bb441"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Interface" xmi:id="eee74a14-6c3d-4deb-abef-61c9ea3b3cbf" name="ElementChange" isAbstract="true">
                <ownedComment xmi:id="a0c1c95b-251e-452c-89e9-a12df346b174" body="Describes changes made to a specific element.&#xA;" annotatedElement="eee74a14-6c3d-4deb-abef-61c9ea3b3cbf"/>
              </nestedClassifier>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3e1679c4-7cd9-4a76-a6ce-07168520c86f" name="TablePrintable" visibility="package" clientDependency="d6d30e4b-183e-418d-9a62-779268b90d21">
            <ownedComment xmi:id="9e6905e2-e9b1-4905-8730-ec8cf101fa8f" body="An implementation of &lt;code>Printable&lt;/code> for printing&#xA;&lt;code>JTable&lt;/code>s.&#xA;&lt;p>&#xA;This implementation spreads table rows naturally in sequence&#xA;across multiple pages, fitting as many rows as possible per page.&#xA;The distribution of columns, on the other hand, is controlled by a&#xA;printing mode parameter passed to the constructor. When&#xA;&lt;code>JTable.PrintMode.NORMAL&lt;/code> is used, the implementation&#xA;handles columns in a similar manner to how it handles rows, spreading them&#xA;across multiple pages (in an order consistent with the table's&#xA;&lt;code>ComponentOrientation&lt;/code>).&#xA;When &lt;code>JTable.PrintMode.FIT_WIDTH&lt;/code> is given, the implementation&#xA;scales the output smaller if necessary, to ensure that all columns fit on&#xA;the page. (Note that width and height are scaled equally, ensuring that the&#xA;aspect ratio remains the same).&#xA;&lt;p>&#xA;The portion of table printed on each page is headed by the&#xA;appropriate section of the table's &lt;code>JTableHeader&lt;/code>.&#xA;&lt;p>&#xA;Header and footer text can be added to the output by providing&#xA;&lt;code>MessageFormat&lt;/code> instances to the constructor. The&#xA;printing code requests Strings from the formats by calling&#xA;their &lt;code>format&lt;/code> method with a single parameter:&#xA;an &lt;code>Object&lt;/code> array containing a single element of type&#xA;&lt;code>Integer&lt;/code>, representing the current page number.&#xA;&lt;p>&#xA;There are certain circumstances where this &lt;code>Printable&lt;code>&#xA;cannot fit items appropriately, resulting in clipped output.&#xA;These are:&#xA;&lt;ul>&#xA;&lt;li>In any mode, when the header or footer text is too wide to&#xA;fit completely in the printable area. The implementation&#xA;prints as much of the text as possible starting from the beginning,&#xA;as determined by the table's &lt;code>ComponentOrientation&lt;/code>.&#xA;&lt;li>In any mode, when a row is too tall to fit in the&#xA;printable area. The upper most portion of the row&#xA;is printed and no lower border is shown.&#xA;&lt;li>In &lt;code>JTable.PrintMode.NORMAL&lt;/code> when a column&#xA;is too wide to fit in the printable area. The center of the&#xA;column is printed and no left and right borders are shown.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;It is entirely valid for a developer to wrap this &lt;code>Printable&lt;/code>&#xA;inside another in order to create complex reports and documents. They may&#xA;even request that different pages be rendered into different sized&#xA;printable areas. The implementation was designed to handle this by&#xA;performing most of its calculations on the fly. However, providing different&#xA;sizes works best when &lt;code>JTable.PrintMode.FIT_WIDTH&lt;/code> is used, or&#xA;when only the printable width is changed between pages. This is because when&#xA;it is printing a set of rows in &lt;code>JTable.PrintMode.NORMAL&lt;/code> and the&#xA;implementation determines a need to distribute columns across pages,&#xA;it assumes that all of those rows will fit on each subsequent page needed&#xA;to fit the columns.&#xA;&lt;p>&#xA;It is the responsibility of the developer to ensure that the table is not&#xA;modified in any way after this &lt;code>Printable&lt;/code> is created (invalid&#xA;modifications include changes in: size, renderers, or underlying data).&#xA;The behavior of this &lt;code>Printable&lt;/code> is undefined if the table is&#xA;changed at any time after creation.&#xA;&#xA;@author  Shannon Hickey&#xA;@version 1.39 12/19/03&#xA;" annotatedElement="3e1679c4-7cd9-4a76-a6ce-07168520c86f"/>
            <interfaceRealization xmi:id="d6d30e4b-183e-418d-9a62-779268b90d21" name="" supplier="f54fba22-4a31-4697-8da1-29309df40d39" client="3e1679c4-7cd9-4a76-a6ce-07168520c86f" contract="f54fba22-4a31-4697-8da1-29309df40d39"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="de634767-22fb-4447-ac15-feccd80a8a26" name="AbstractSpinnerModel" clientDependency="1ec33e9c-685b-4a78-aade-69c9de1f1d7e" isAbstract="true">
            <ownedComment xmi:id="1da8a827-37ac-4c92-8e1a-8a6037f16d7e" body="This class provides the ChangeListener part of the&#xA;SpinnerModel interface that should be suitable for most concrete SpinnerModel&#xA;implementations.  Subclasses must provide an implementation of the&#xA;minimum, maximum, and value properties and the getNextValue&#xA;and getPreviousValue methods.&#xA;&#xA;@see JSpinner&#xA;@see SpinnerModel&#xA;@see SpinnerListModel&#xA;@see SpinnerNumberModel&#xA;@see SpinnerDateModel&#xA;&#xA;@version 1.7 05/05/04&#xA;@author Hans Muller&#xA;@since 1.4&#xA;" annotatedElement="de634767-22fb-4447-ac15-feccd80a8a26"/>
            <interfaceRealization xmi:id="1ec33e9c-685b-4a78-aade-69c9de1f1d7e" name="" supplier="caec98d6-636e-475b-89de-108d71af705a" client="de634767-22fb-4447-ac15-feccd80a8a26" contract="caec98d6-636e-475b-89de-108d71af705a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="000640fb-2ecf-4576-91aa-37c2286ba74a" name="JMenuBar" clientDependency="dc485e3f-b866-4a32-883e-1c514c64df68 3d6dfec3-a810-4767-b42f-8c0f7e12acb2">
            <ownedComment xmi:id="a4b3bde4-b7af-4014-afbb-ba566a84e5da" body="An implementation of a menu bar. You add &lt;code>JMenu&lt;/code> objects to the&#xA;menu bar to construct a menu. When the user selects a &lt;code>JMenu&lt;/code>&#xA;object, its associated &lt;code>JPopupMenu&lt;/code> is displayed, allowing the&#xA;user to select one of the &lt;code>JMenuItems&lt;/code> on it.&#xA;&lt;p>&#xA;For information and examples of using menu bars see&#xA;&lt;a&#xA;href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html&quot;>How to Use Menus&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial.&lt;/em>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@beaninfo&#xA;attribute: isContainer true&#xA;description: A container for holding and displaying menus.&#xA;&#xA;@version 1.98 05/18/04&#xA;@author Georges Saab&#xA;@author David Karlton&#xA;@author Arnaud Weber&#xA;@see JMenu&#xA;@see JPopupMenu&#xA;@see JMenuItem&#xA;" annotatedElement="000640fb-2ecf-4576-91aa-37c2286ba74a"/>
            <generalization xmi:id="916d0ffa-5517-457e-8c4e-2f8557a41ab7" isSubstitutable="true" general="ab0cae1e-3609-4f84-b012-181f2f0d7acf"/>
            <interfaceRealization xmi:id="dc485e3f-b866-4a32-883e-1c514c64df68" name="" supplier="ed907a69-6a73-461b-8000-495b37bdc076" client="000640fb-2ecf-4576-91aa-37c2286ba74a" contract="ed907a69-6a73-461b-8000-495b37bdc076"/>
            <interfaceRealization xmi:id="3d6dfec3-a810-4767-b42f-8c0f7e12acb2" name="" supplier="de6cdb33-0a16-47b4-939d-325aedf18238" client="000640fb-2ecf-4576-91aa-37c2286ba74a" contract="de6cdb33-0a16-47b4-939d-325aedf18238"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="873378b3-686f-490f-bf37-a38c069bec16" name="AccessibleJMenuBar" visibility="protected" clientDependency="c3a3551a-9613-4def-b84f-25f3763a95b3">
              <ownedComment xmi:id="60998d69-c08e-4c9b-8194-39d3d543577f" body="This class implements accessibility support for the&#xA;&lt;code>JMenuBar&lt;/code> class.  It provides an implementation of the&#xA;Java Accessibility API appropriate to menu bar user-interface&#xA;elements.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;" annotatedElement="873378b3-686f-490f-bf37-a38c069bec16"/>
              <generalization xmi:id="d5142298-fdc3-4523-89a7-aeb5a947e365" isSubstitutable="true" general="7476a5d9-16dc-482c-bb13-90f59bc1c7b6"/>
              <interfaceRealization xmi:id="c3a3551a-9613-4def-b84f-25f3763a95b3" name="" supplier="0dbef058-3ccc-4038-b98f-eea279be3f13" client="873378b3-686f-490f-bf37-a38c069bec16" contract="0dbef058-3ccc-4038-b98f-eea279be3f13"/>
            </nestedClassifier>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="a5ae007d-9a18-48ad-a95f-22df935ab78e" name="RepaintManager">
            <ownedComment xmi:id="6ed400b8-2edd-4ae3-8157-eba2282d603b" body="This class manages repaint requests, allowing the number&#xA;of repaints to be minimized, for example by collapsing multiple&#xA;requests into a single repaint for members of a component tree.&#xA;&#xA;@version 1.60 02/18/04&#xA;@author Arnaud Weber&#xA;" annotatedElement="a5ae007d-9a18-48ad-a95f-22df935ab78e"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="3281e519-05fd-4b2b-9d1d-1f93ae3530be" name="DoubleBufferInfo" visibility="private"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="e5d62208-ef13-4e3f-9e5a-9483f3cd3cc1" name="CompareTabOrderComparator" visibility="package" clientDependency="b68d2a67-fa89-4648-a66b-a3def5547d56" isLeaf="true">
            <interfaceRealization xmi:id="b68d2a67-fa89-4648-a66b-a3def5547d56" name="" supplier="16208a27-5dc1-4bb6-8f33-2ff9d104bf1d" client="e5d62208-ef13-4e3f-9e5a-9483f3cd3cc1" contract="16208a27-5dc1-4bb6-8f33-2ff9d104bf1d"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="6815381d-29eb-408a-98ef-95a852eb2846" name="DefaultFocusManager">
            <ownedComment xmi:id="2d5396c1-4d82-43ac-946d-011e9dd2f788" body="This class has been obsoleted by the 1.4 focus APIs. While client code may&#xA;still use this class, developers are strongly encouraged to use&#xA;&lt;code>java.awt.KeyboardFocusManager&lt;/code> and&#xA;&lt;code>java.awt.DefaultKeyboardFocusManager&lt;/code> instead.&#xA;&lt;p>&#xA;Please see&#xA;&lt;a href=&quot;http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html&quot;>&#xA;How to Use the Focus Subsystem&lt;/a>,&#xA;a section in &lt;em>The Java Tutorial&lt;/em>, and the&#xA;&lt;a href=&quot;../../java/awt/doc-files/FocusSpec.html&quot;>Focus Specification&lt;/a>&#xA;for more information.&#xA;&#xA;@version 1.29, 12/19/03&#xA;@author Arnaud Weber&#xA;@author David Mendenhall&#xA;" annotatedElement="6815381d-29eb-408a-98ef-95a852eb2846"/>
            <generalization xmi:id="0e76f5b7-6409-4f62-a5e5-5a1bf522e0bf" isSubstitutable="true" general="98246b5d-ac1a-4bf4-92a3-1a8192d7dd4a"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="3fe37d3e-f3b0-4294-b63a-dbf731e9a5f6" name="SwingContainerOrderFocusTraversalPolicy" visibility="package">
            <generalization xmi:id="cdc91322-d1e2-4d90-ad81-47b24dcd863d" isSubstitutable="true" general="80ce0e2c-30ad-43c9-b048-03cf7abf9639"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ff04e28c-597b-4663-b075-122f6461ba3b" name="LayoutComparator" visibility="package" clientDependency="de1122c2-ae6f-4264-8793-ba2422a45b4c ba75343d-91a4-459b-b479-eae38030246b" isLeaf="true">
            <ownedComment xmi:id="5ad6e63e-5659-4598-9d1f-6ca9ead7259f" body="Comparator which attempts to sort Components based on their size and&#xA;position. Code adapted from original javax.swing.DefaultFocusManager&#xA;implementation.&#xA;&#xA;@version 1.7, 02/05/04&#xA;@author David Mendenhall&#xA;" annotatedElement="ff04e28c-597b-4663-b075-122f6461ba3b"/>
            <interfaceRealization xmi:id="de1122c2-ae6f-4264-8793-ba2422a45b4c" name="" supplier="16208a27-5dc1-4bb6-8f33-2ff9d104bf1d" client="ff04e28c-597b-4663-b075-122f6461ba3b" contract="16208a27-5dc1-4bb6-8f33-2ff9d104bf1d"/>
            <interfaceRealization xmi:id="ba75343d-91a4-459b-b479-eae38030246b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="ff04e28c-597b-4663-b075-122f6461ba3b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="abd91420-3fae-4698-89fc-94858a3a9dda" name="JFormattedTextField">
            <ownedComment xmi:id="d06cf931-434e-46bb-867e-7d8518eb271f" body="&lt;code>JFormattedTextField&lt;/code> extends &lt;code>JTextField&lt;/code> adding&#xA;support for formatting arbitrary values, as well as retrieving a particular&#xA;object once the user has edited the text. The following illustrates&#xA;configuring a &lt;code>JFormattedTextField&lt;/code> to edit dates:&#xA;&lt;pre>&#xA;JFormattedTextField ftf = new JFormattedTextField();&#xA;ftf.setValue(new Date());&#xA;&lt;/pre>&#xA;&lt;p>&#xA;Once a &lt;code>JFormattedTextField&lt;/code> has been created, you can&#xA;listen for editing changes by way of adding&#xA;a &lt;code>PropertyChangeListener&lt;/code> and listening for&#xA;&lt;code>PropertyChangeEvent&lt;/code>s with the property name &lt;code>value&lt;/code>.&#xA;&lt;p>&#xA;&lt;code>JFormattedTextField&lt;/code> allows&#xA;configuring what action should be taken when focus is lost. The possible&#xA;configurations are:&#xA;&lt;table summary=&quot;Possible JFormattedTextField configurations and their descriptions&quot;>&#xA;&lt;tr>&lt;th>&lt;p align=&quot;left&quot;>Value&lt;/p>&lt;/th>&lt;th>&lt;p align=&quot;left&quot;>Description&lt;/p>&lt;/th>&lt;/tr>&#xA;&lt;tr>&lt;td>JFormattedTextField.REVERT&#xA;&lt;td>Revert the display to match that of &lt;code>getValue&lt;/code>,&#xA;possibly losing the current edit.&#xA;&lt;tr>&lt;td>JFormattedTextField.COMMIT&#xA;&lt;td>Commits the current value. If the value being edited&#xA;isn't considered a legal value by the&#xA;&lt;code>AbstractFormatter&lt;/code> that is, a&#xA;&lt;code>ParseException&lt;/code> is thrown, then the value&#xA;will not change, and then edited value will persist.&#xA;&lt;tr>&lt;td>JFormattedTextField.COMMIT_OR_REVERT&#xA;&lt;td>Similar to &lt;code>COMMIT&lt;/code>, but if the value isn't&#xA;legal, behave like &lt;code>REVERT&lt;/code>.&#xA;&lt;tr>&lt;td>JFormattedTextField.PERSIST&#xA;&lt;td>Do nothing, don't obtain a new&#xA;&lt;code>AbstractFormatter&lt;/code>, and don't update the value.&#xA;&lt;/table>&#xA;The default is &lt;code>JFormattedTextField.COMMIT_OR_REVERT&lt;/code>,&#xA;refer to {@link #setFocusLostBehavior} for more information on this.&#xA;&lt;p>&#xA;&lt;code>JFormattedTextField&lt;/code> allows the focus to leave, even if&#xA;the currently edited value is invalid. To lock the focus down while the&#xA;&lt;code>JFormattedTextField&lt;/code> is an invalid edit state&#xA;you can attach an &lt;code>InputVerifier&lt;/code>. The following code snippet&#xA;shows a potential implementation of such an &lt;code>InputVerifier&lt;/code>:&#xA;&lt;pre>&#xA;public class FormattedTextFieldVerifier extends InputVerifier {&#xA;public boolean verify(JComponent input) {&#xA;if (input instanceof JFormattedTextField) {&#xA;JFormattedTextField ftf = (JFormattedTextField)input;&#xA;AbstractFormatter formatter = ftf.getFormatter();&#xA;if (formatter != null) {&#xA;String text = ftf.getText();&#xA;try {&#xA;formatter.stringToValue(text);&#xA;return true;&#xA;} catch (ParseException pe) {&#xA;return false;&#xA;}&#xA;}&#xA;}&#xA;return true;&#xA;}&#xA;public boolean shouldYieldFocus(JComponent input) {&#xA;return verify(input);&#xA;}&#xA;}&#xA;&lt;/pre>&#xA;&lt;p>&#xA;Alternatively, you could invoke &lt;code>commitEdit&lt;/code>, which would also&#xA;commit the value.&#xA;&lt;p>&#xA;&lt;code>JFormattedTextField&lt;/code> does not do the formatting it self,&#xA;rather formatting is done through an instance of&#xA;&lt;code>JFormattedTextField.AbstractFormatter&lt;/code> which is obtained from&#xA;an instance of &lt;code>JFormattedTextField.AbstractFormatterFactory&lt;/code>.&#xA;Instances of &lt;code>JFormattedTextField.AbstractFormatter&lt;/code> are&#xA;notified when they become active by way of the&#xA;&lt;code>install&lt;/code> method, at which point the&#xA;&lt;code>JFormattedTextField.AbstractFormatter&lt;/code> can install whatever&#xA;it needs to, typically a &lt;code>DocumentFilter&lt;/code>. Similarly when&#xA;&lt;code>JFormattedTextField&lt;/code> no longer&#xA;needs the &lt;code>AbstractFormatter&lt;/code>, it will invoke&#xA;&lt;code>uninstall&lt;/code>.&#xA;&lt;p>&#xA;&lt;code>JFormattedTextField&lt;/code> typically&#xA;queries the &lt;code>AbstractFormatterFactory&lt;/code> for an&#xA;&lt;code>AbstractFormat&lt;/code> when it gains or loses focus. Although this&#xA;can change based on the focus lost policy. If the focus lost&#xA;policy is &lt;code>JFormattedTextField.PERSIST&lt;/code>&#xA;and the &lt;code>JFormattedTextField&lt;/code> has been edited, the&#xA;&lt;code>AbstractFormatterFactory&lt;/code> will not be queried until the&#xA;value has been commited. Similarly if the focus lost policy is&#xA;&lt;code>JFormattedTextField.COMMIT&lt;/code> and an exception&#xA;is thrown from &lt;code>stringToValue&lt;/code>, the&#xA;&lt;code>AbstractFormatterFactory&lt;/code> will not be querired when focus is&#xA;lost or gained.&#xA;&lt;p>&#xA;&lt;code>JFormattedTextField.AbstractFormatter&lt;/code>&#xA;is also responsible for determining when values are commited to&#xA;the &lt;code>JFormattedTextField&lt;/code>. Some&#xA;&lt;code>JFormattedTextField.AbstractFormatter&lt;/code>s will make new values&#xA;available on every edit, and others will never commit the value. You can&#xA;force the current value to be obtained&#xA;from the current &lt;code>JFormattedTextField.AbstractFormatter&lt;/code>&#xA;by way of invoking &lt;code>commitEdit&lt;/code>. &lt;code>commitEdit&lt;/code> will&#xA;be invoked whenever return is pressed in the&#xA;&lt;code>JFormattedTextField&lt;/code>.&#xA;&lt;p>&#xA;If an &lt;code>AbstractFormatterFactory&lt;/code> has not been explicitly&#xA;set, one will be set based on the &lt;code>Class&lt;/code> of the value type after&#xA;&lt;code>setValue&lt;/code> has been invoked (assuming value is non-null).&#xA;For example, in the following code an appropriate&#xA;&lt;code>AbstractFormatterFactory&lt;/code> and &lt;code>AbstractFormatter&lt;/code>&#xA;will be created to handle formatting of numbers:&#xA;&lt;pre>&#xA;JFormattedTextField tf = new JFormattedTextField();&#xA;tf.setValue(new Number(100));&#xA;&lt;/pre>&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong> As the &lt;code>AbstractFormatter&lt;/code> will&#xA;typically install a &lt;code>DocumentFilter&lt;/code> on the&#xA;&lt;code>Document&lt;/code>, and a &lt;code>NavigationFilter&lt;/code> on the&#xA;&lt;code>JFormattedTextField&lt;/code> you should not install your own. If you do,&#xA;you are likely to see odd behavior in that the editing policy of the&#xA;&lt;code>AbstractFormatter&lt;/code> will not be enforced.&#xA;&lt;p>&#xA;&lt;strong>Warning:&lt;/strong>&#xA;Serialized objects of this class will not be compatible with&#xA;future Swing releases. The current serialization support is&#xA;appropriate for short term storage or RMI between applications running&#xA;the same version of Swing.  As of 1.4, support for long term storage&#xA;of all JavaBeans&lt;sup>&lt;font size=&quot;-2&quot;>TM&lt;/font>&lt;/sup>&#xA;has been added to the &lt;code>java.beans&lt;/code> package.&#xA;Please see {@link java.beans.XMLEncoder}.&#xA;&#xA;@version 1.22 12/19/03&#xA;@since 1.4&#xA;" annotatedElement="abd91420-3fae-4698-89fc-94858a3a9dda"/>
            <generalization xmi:id="4b2df97c-9cfc-4f3a-8cba-2b8d352b3baa" isSubstitutable="true" general="e8b3dc5a-f346-4fc4-b077-bbe69ee386a3"/>
            <nestedClassifier xmi:type="uml:Class" xmi:id="d913768d-b40b-4fb1-a8f0-e28d299ad38f" name="FocusLostHandler" visibility="private" clientDependency="62877b88-b48c-484b-9ef9-76817136ba5e 4bea06b0-781f-4126-a99f-11a02720f43b">
              <ownedComment xmi:id="e4727066-837e-482b-8c68-bacb509fc2f5" body="FOCUS_LOST behavior implementation&#xA;" annotatedElement="d913768d-b40b-4fb1-a8f0-e28d299ad38f"/>
              <interfaceRealization xmi:id="62877b88-b48c-484b-9ef9-76817136ba5e" name="" supplier="f099ab56-f712-409a-887b-b9949cb5553b" client="d913768d-b40b-4fb1-a8f0-e28d299ad38f" contract="f099ab56-f712-409a-887b-b9949cb5553b"/>
              <interfaceRealization xmi:id="4bea06b0-781f-4126-a99f-11a02720f43b" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="d913768d-b40b-4fb1-a8f0-e28d299ad38f" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="c8c7842a-fbe8-4764-89d4-8c2da7995687" name="AbstractFormatterFactory" isAbstract="true">
              <ownedComment xmi:id="320af280-ee2a-43c0-a3be-7a0ce3975368" body="Instances of &lt;code>AbstractFormatterFactory&lt;/code> are used by&#xA;&lt;code>JFormattedTextField&lt;/code> to obtain instances of&#xA;&lt;code>AbstractFormatter&lt;/code> which in turn are used to format values.&#xA;&lt;code>AbstractFormatterFactory&lt;/code> can return different&#xA;&lt;code>AbstractFormatter&lt;/code>s based on the state of the&#xA;&lt;code>JFormattedTextField&lt;/code>, perhaps returning different&#xA;&lt;code>AbstractFormatter&lt;/code>s when the&#xA;&lt;code>JFormattedTextField&lt;/code> has focus vs when it&#xA;doesn't have focus.&#xA;" annotatedElement="c8c7842a-fbe8-4764-89d4-8c2da7995687"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="eab6c93c-ab8c-436f-b98f-fc1a232f0ca5" name="AbstractFormatter" clientDependency="140e6a5c-9fac-4bd1-acb0-87f46668bbdd" isAbstract="true">
              <ownedComment xmi:id="2429e915-5562-4a90-bd85-05d0b757954b" body="Instances of &lt;code>AbstractFormatter&lt;/code> are used by&#xA;&lt;code>JFormattedTextField&lt;/code> to handle the conversion both&#xA;from an Object to a String, and back from a String to an Object.&#xA;&lt;code>AbstractFormatter&lt;/code>s can also enfore editing policies,&#xA;or navigation policies, or manipulate the&#xA;&lt;code>JFormattedTextField&lt;/code> in any way it sees fit to&#xA;enforce the desired policy.&#xA;&lt;p>&#xA;An &lt;code>AbstractFormatter&lt;/code> can only be active in&#xA;one &lt;code>JFormattedTextField&lt;/code> at a time.&#xA;&lt;code>JFormattedTextField&lt;/code> invokes&#xA;&lt;code>install&lt;/code> when it is ready to use it followed&#xA;by &lt;code>uninstall&lt;/code> when done. Subclasses&#xA;that wish to install additional state should override&#xA;&lt;code>install&lt;/code> and message super appropriately.&#xA;&lt;p>&#xA;Subclasses must override the conversion methods&#xA;&lt;code>stringToValue&lt;/code> and &lt;code>valueToString&lt;/code>. Optionally&#xA;they can override &lt;code>getActions&lt;/code>,&#xA;&lt;code>getNavigationFilter&lt;/code> and &lt;code>getDocumentFilter&lt;/code>&#xA;to restrict the &lt;code>JFormattedTextField&lt;/code> in a particular&#xA;way.&#xA;&lt;p>&#xA;Subclasses that allow the &lt;code>JFormattedTextField&lt;/code> to be in&#xA;a temporarily invalid state should invoke &lt;code>setEditValid&lt;/code>&#xA;at the appropriate times.&#xA;" annotatedElement="eab6c93c-ab8c-436f-b98f-fc1a232f0ca5"/>
              <interfaceRealization xmi:id="140e6a5c-9fac-4bd1-acb0-87f46668bbdd" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="eab6c93c-ab8c-436f-b98f-fc1a232f0ca5" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="d14dd15e-f7db-47cc-ae02-32cd656a9409" name="CommitAction" visibility="package">
              <ownedComment xmi:id="c9549364-520f-4f54-a68b-48ed39d60cdc" body="Used to commit the edit. This extends JTextField.NotifyAction&#xA;so that &lt;code>isEnabled&lt;/code> is true while a JFormattedTextField&#xA;has focus, and extends &lt;code>actionPerformed&lt;/code> to invoke&#xA;commitEdit.&#xA;" annotatedElement="d14dd15e-f7db-47cc-ae02-32cd656a9409"/>
              <generalization xmi:id="a2e28d1f-8c12-4a54-841b-39758ca46061" isSubstitutable="true" general="54682f57-7b20-4549-9c37-3ddc70bad264"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="be331b20-bdc5-4fed-b8aa-983e894491c8" name="CancelAction" visibility="private">
              <ownedComment xmi:id="fcdfe02c-da49-4907-bce1-b3c221195f4c" body="CancelAction will reset the value in the JFormattedTextField when&#xA;&lt;code>actionPerformed&lt;/code> is invoked. It will only be&#xA;enabled if the focused component is an instance of&#xA;JFormattedTextField.&#xA;" annotatedElement="be331b20-bdc5-4fed-b8aa-983e894491c8"/>
              <generalization xmi:id="b85e761b-d0a9-45cd-accd-05f09728fe1e" isSubstitutable="true" general="734d9f6e-4a5e-437c-b0cb-9d2460957bd4"/>
            </nestedClassifier>
            <nestedClassifier xmi:type="uml:Class" xmi:id="b041e213-37b5-4f4c-b3bb-4c7653c9ae39" name="DocumentHandler" visibility="private" clientDependency="26363e4a-0dd4-4f01-9c9d-f0ca63e567e3 d60403fe-f5a4-40a9-bd6a-5a6586a804a9">
              <ownedComment xmi:id="dee49ae1-04e8-403c-aaf4-9ba897c71727" body="Sets the dirty state as the document changes.&#xA;" annotatedElement="b041e213-37b5-4f4c-b3bb-4c7653c9ae39"/>
              <interfaceRealization xmi:id="26363e4a-0dd4-4f01-9c9d-f0ca63e567e3" name="" supplier="8473483d-b350-428d-828b-a5a719abea43" client="b041e213-37b5-4f4c-b3bb-4c7653c9ae39" contract="8473483d-b350-428d-828b-a5a719abea43"/>
              <interfaceRealization xmi:id="d60403fe-f5a4-40a9-bd6a-5a6586a804a9" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="b041e213-37b5-4f4c-b3bb-4c7653c9ae39" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </nestedClassifier>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="0ac7208d-c513-40ff-b101-4c45073f2fde" name="crypto">
          <packagedElement xmi:type="uml:Interface" xmi:id="83a7815a-11ab-4532-adf3-0860bf2a3f93" name="SecretKey" isAbstract="true"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="4ae5fab9-219e-4076-bb1f-5dbfb04190b3" name="xml">
          <packagedElement xmi:type="uml:Package" xmi:id="7045cb04-70e3-4ad6-a23a-52e54ab02414" name="parsers">
            <packagedElement xmi:type="uml:Class" xmi:id="5cc189cc-e7a8-4050-aa6b-feb286ce4f5a" name="SAXParserFactory" isAbstract="true">
              <ownedComment xmi:id="7298d4e3-869e-4fd5-802f-fc81d65b4bc3" body="Defines a factory API that enables applications to configure and&#xA;obtain a SAX based parser to parse XML documents.&#xA;&#xA;@author &lt;a href=&quot;Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.39 $, $Date: 2004/04/20 00:22:02 $&#xA;" annotatedElement="5cc189cc-e7a8-4050-aa6b-feb286ce4f5a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="fea7e999-6a40-4387-b89b-601755bcd701" name="SAXParser" isAbstract="true">
              <ownedComment xmi:id="d8c65a7d-aae7-46ff-b155-0f66ad77b859" body="Defines the API that wraps an {@link org.xml.sax.XMLReader}&#xA;implementation class. In JAXP 1.0, this class wrapped the&#xA;{@link org.xml.sax.Parser} interface, however this interface was&#xA;replaced by the {@link org.xml.sax.XMLReader}. For ease&#xA;of transition, this class continues to support the same name&#xA;and interface as well as supporting new methods.&#xA;&#xA;An instance of this class can be obtained from the&#xA;{@link javax.xml.parsers.SAXParserFactory#newSAXParser()} method.&#xA;Once an instance of this class is obtained, XML can be parsed from&#xA;a variety of input sources. These input sources are InputStreams,&#xA;Files, URLs, and SAX InputSources.&lt;p>&#xA;&#xA;This static method creates a new factory instance based&#xA;on a system property setting or uses the platform default&#xA;if no property has been defined.&lt;p>&#xA;&#xA;The system property that controls which Factory implementation&#xA;to create is named &lt;code>&quot;javax.xml.parsers.SAXParserFactory&quot;&lt;/code>.&#xA;This property names a class that is a concrete subclass of this&#xA;abstract class. If no property is defined, a platform default&#xA;will be used.&lt;/p>&#xA;&#xA;As the content is parsed by the underlying parser, methods of the&#xA;given {@link org.xml.sax.HandlerBase} or the&#xA;{@link org.xml.sax.helpers.DefaultHandler} are called.&lt;p>&#xA;&#xA;Implementors of this class which wrap an underlaying implementation&#xA;can consider using the {@link org.xml.sax.helpers.ParserAdapter}&#xA;class to initially adapt their SAX1 impelemntation to work under&#xA;this revised class.&#xA;&#xA;@author &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.28.12.1.2.1 $, $Date: 2004/05/02 04:30:56 $&#xA;" annotatedElement="fea7e999-6a40-4387-b89b-601755bcd701"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="feed12e7-c357-4383-9373-78963804b119" name="DocumentBuilder" isAbstract="true">
              <ownedComment xmi:id="798945bf-70cf-4bbd-9ba7-bfb56f357cc9" body="Defines the API to obtain DOM Document instances from an XML&#xA;document. Using this class, an application programmer can obtain a&#xA;{@link Document} from XML.&lt;p>&#xA;&#xA;An instance of this class can be obtained from the&#xA;{@link DocumentBuilderFactory#newDocumentBuilder()} method. Once&#xA;an instance of this class is obtained, XML can be parsed from a&#xA;variety of input sources. These input sources are InputStreams,&#xA;Files, URLs, and SAX InputSources.&lt;p>&#xA;&#xA;Note that this class reuses several classes from the SAX API. This&#xA;does not require that the implementor of the underlying DOM&#xA;implementation use a SAX parser to parse XML document into a&#xA;&lt;code>Document&lt;/code>. It merely requires that the implementation&#xA;communicate with the application using these existing APIs.&#xA;&#xA;@author &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.25.14.1.2.1 $, $Date: 2004/06/28 18:23:44 $&#xA;" annotatedElement="feed12e7-c357-4383-9373-78963804b119"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="be491aff-bbe8-4cce-8aff-6e67ecb8262b" name="FactoryFinder" visibility="package">
              <ownedComment xmi:id="1b77df74-38bf-47c2-8e80-b1e1e3270193" body="This class is duplicated for each JAXP subpackage so keep it in&#xA;sync.  It is package private.&#xA;&#xA;This code is designed to implement the JAXP 1.1 spec pluggability&#xA;feature and is designed to run on JDK version 1.1 and later including&#xA;JVMs that perform early linking like the Microsoft JVM in IE 5.  Note&#xA;however that it must be compiled on a JDK version 1.2 or later system&#xA;since it calls Thread#getContextClassLoader().  The code also runs both&#xA;as part of an unbundled jar file and when bundled as part of the JDK.&#xA;" annotatedElement="be491aff-bbe8-4cce-8aff-6e67ecb8262b"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="d8028856-a58c-4380-ae43-f56c7ea58f8c" name="ConfigurationError" visibility="package">
                <generalization xmi:id="3b5d9069-ee83-4942-8522-472981f2c7dd" isSubstitutable="true" general="4e4110b0-dae3-4d54-846c-b32f5eb17a30"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="296dd1b1-8da1-43e1-9439-7a1dda8c8b32" name="ParserConfigurationException">
              <ownedComment xmi:id="efbcd192-c9b8-47b7-8253-87ac48d37276" body="Indicates a serious configuration error.&#xA;&#xA;@author &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.2 $, $Date: 2003/12/06 00:21:41 $&#xA;" annotatedElement="296dd1b1-8da1-43e1-9439-7a1dda8c8b32"/>
              <generalization xmi:id="f49dc3d4-3422-4861-90d0-6323d98ab70b" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="67002ce4-4df5-4a71-bf52-6a6abe8965f5" name="DocumentBuilderFactory" isAbstract="true">
              <ownedComment xmi:id="4573f4ac-5df0-4bb1-a315-f18822bfe215" body="Defines a factory API that enables applications to obtain a&#xA;parser that produces DOM object trees from XML documents.&#xA;&#xA;@author &lt;a href=&quot;Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.39.16.1 $, $Date: 2004/07/17 00:22:03 $&#xA;" annotatedElement="67002ce4-4df5-4a71-bf52-6a6abe8965f5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a68d5332-8540-45c3-b91e-60a4d9de9f05" name="FactoryConfigurationError">
              <ownedComment xmi:id="a16952ff-cfa8-4baa-95c1-640976561fd5" body="Thrown when a problem with configuration with the Parser Factories&#xA;exists. This error will typically be thrown when the class of a&#xA;parser factory specified in the system properties cannot be found&#xA;or instantiated.&#xA;&#xA;@author &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.2 $, $Date: 2003/12/06 00:21:42 $&#xA;" annotatedElement="a68d5332-8540-45c3-b91e-60a4d9de9f05"/>
              <generalization xmi:id="832e060a-ebc2-4563-86fa-c4a9adb87501" isSubstitutable="true" general="4e4110b0-dae3-4d54-846c-b32f5eb17a30"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="572cb7eb-0376-47c5-bb49-593d0b236ccd" name="SecuritySupport" visibility="package">
              <ownedComment xmi:id="e36e2563-42b8-4fdf-91bf-18c0d8623378" body="This class is duplicated for each JAXP subpackage so keep it in sync.&#xA;It is package private and therefore is not exposed as part of the JAXP&#xA;API.&#xA;&#xA;Security related methods that only work on J2SE 1.2 and newer.&#xA;" annotatedElement="572cb7eb-0376-47c5-bb49-593d0b236ccd"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="6b6e1eae-9f8e-4aaf-aecd-92440568a6eb" name="datatype">
            <packagedElement xmi:type="uml:Class" xmi:id="a3671659-247c-4e85-b0dc-e70e4b509930" name="XMLGregorianCalendar" clientDependency="146fbefc-77b6-4303-bf42-1595ce3a66fb" isAbstract="true">
              <ownedComment xmi:id="a044752f-d319-4219-92b3-5210e3df74df" body="&lt;p>Representation for W3C XML Schema 1.0 date/time datatypes.&#xA;Specifically, these date/time datatypes are&#xA;&lt;a href=&quot;#DATETIME&quot;>&lt;code>dateTime&lt;/code>&lt;/a>,&#xA;&lt;a href=&quot;#TIME&quot;>&lt;code>time&lt;/code>&lt;/a>,&#xA;&lt;a href=&quot;#DATE&quot;>&lt;code>date&lt;/code>&lt;/a>,&#xA;&lt;a href=&quot;#GYEARMONTH&quot;>&lt;code>gYearMonth&lt;/code>&lt;/a>,&#xA;&lt;a href=&quot;#GMONTHDAY&quot;>&lt;code>gMonthDay&lt;/code>&lt;/a>,&#xA;&lt;a href=&quot;#GYEAR&quot;>&lt;code>gYear&lt;/code>&lt;/a>&#xA;&lt;a href=&quot;#GMONTH&quot;>&lt;code>gMonth&lt;/code>&lt;/a> and&#xA;&lt;a href=&quot;#GDAY&quot;>&lt;code>gDay&lt;/code>&lt;/a> defined in the XML Namespace&#xA;&lt;code>&quot;http://www.w3.org/2001/XMLSchema&quot;&lt;/code>.&#xA;These datatypes are normatively defined in&#xA;&lt;a href=&quot;http://www.w3.org/TR/xmlschema-2/#dateTime&quot;>W3C XML Schema 1.0 Part 2, Section 3.2.7-14&lt;/a>.&lt;/p>&#xA;&#xA;&lt;p>The table below defines the mapping between XML Schema 1.0&#xA;date/time datatype fields and this class' fields. It also summarizes&#xA;the value constraints for the date and time fields defined in&#xA;&lt;a href=&quot;http://www.w3.org/TR/xmlschema-2/#isoformats&quot;>W3C XML Schema 1.0 Part 2, Appendix D,&#xA;&lt;i>ISO 8601 Date and Time Formats&lt;/i>&lt;/a>.&lt;/p>&#xA;&#xA;&lt;a name=&quot;datetimefieldsmapping&quot;/>&#xA;&lt;table border=&quot;2&quot; rules=&quot;all&quot; cellpadding=&quot;2&quot;>&#xA;&lt;thead>&#xA;&lt;tr>&#xA;&lt;th align=&quot;center&quot; colspan=&quot;3&quot;>&#xA;Date/Time Datatype Field Mapping Between XML Schema 1.0 and Java Representation&#xA;&lt;/th>&#xA;&lt;/tr>&#xA;&lt;/thead>&#xA;&lt;tbody>&#xA;&lt;tr>&#xA;&lt;th>XML Schema 1.0&lt;br/>&#xA;datatype&lt;br/>&#xA;field&lt;/th>&#xA;&lt;th>Related&lt;br/>XMLGregorianCalendar&lt;br/>Accessor(s)&lt;/th>&#xA;&lt;th>Value Range&lt;/th>&#xA;&lt;/tr>&#xA;&lt;a name=&quot;datetimefield-year&quot;/>&#xA;&lt;tr>&#xA;&lt;td> year &lt;/td>&#xA;&lt;td> {@link #getYear()} + {@link #getEon()} or&lt;br/>&#xA;{@link #getEonAndYear}&#xA;&lt;/td>&#xA;&lt;td> &lt;code>getYear()&lt;/code> is a value between -(10^9-1) to (10^9)-1&#xA;or {@link DatatypeConstants#FIELD_UNDEFINED}.&lt;br/>&#xA;{@link #getEon()} is high order year value in billion of years.&lt;br/>&#xA;&lt;code>getEon()&lt;/code> has values greater than or equal to (10^9) or less than or equal to -(10^9).&#xA;A value of null indicates field is undefined.&lt;/br>&#xA;Given that &lt;a href=&quot;http://www.w3.org/2001/05/xmlschema-errata#e2-63&quot;>XML Schema 1.0 errata&lt;/a> states that the year zero&#xA;will be a valid lexical value in a future version of XML Schema,&#xA;this class allows the year field to be set to zero. Otherwise,&#xA;the year field value is handled exactly as described&#xA;in the errata and [ISO-8601-1988]. Note that W3C XML Schema 1.0&#xA;validation does not allow for the year field to have a value of zero.&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;a name=&quot;datetimefield-month&quot;/>&#xA;&lt;tr>&#xA;&lt;td> month &lt;/td>&#xA;&lt;td> {@link #getMonth()} &lt;/td>&#xA;&lt;td> 1 to 12 or {@link DatatypeConstants#FIELD_UNDEFINED} &lt;/td>&#xA;&lt;/tr>&#xA;&lt;a name=&quot;datetimefield-day&quot;/>&#xA;&lt;tr>&#xA;&lt;td> day &lt;/td>&#xA;&lt;td> {@link #getDay()} &lt;/td>&#xA;&lt;td> Independent of month, max range is 1 to 31 or {@link DatatypeConstants#FIELD_UNDEFINED}.&lt;br/>&#xA;The normative value constraint stated relative to month&#xA;field's value is in &lt;a href=&quot;http://www.w3.org/TR/xmlschema-2/#isoformats&quot;>W3C XML Schema 1.0 Part 2, Appendix D&lt;/a>.&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr id=&quot;datetimefield-hour&quot;>&#xA;&lt;td>hour&lt;/td>&#xA;&lt;td>{@link #getHour()}&lt;/td>&#xA;&lt;td>&#xA;0 to 24 or {@link DatatypeConstants#FIELD_UNDEFINED}.&#xA;For a value of 24, the minute and second field must be zero per&#xA;&lt;a href=&quot;http://www.w3.org/2001/05/xmlschema-errata#e2-45&quot;>XML Schema Errata&lt;/a>.&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;a name=&quot;datetimefield-minute&quot;/>&#xA;&lt;tr>&#xA;&lt;td> minute &lt;/td>&#xA;&lt;td> {@link #getMinute()} &lt;/td>&#xA;&lt;td> 0 to 59 or {@link DatatypeConstants#FIELD_UNDEFINED} &lt;/td>&#xA;&lt;/tr>&#xA;&lt;a name=&quot;datetimefield-second&quot;/>&#xA;&lt;tr>&#xA;&lt;td>second&lt;/td>&#xA;&lt;td>&#xA;{@link #getSecond()} + {@link #getMillisecond()}/1000 or&lt;br/>&#xA;{@link #getSecond()} + {@link #getFractionalSecond()}&#xA;&lt;/td>&#xA;&lt;td>&#xA;{@link #getSecond()} from 0 to 60 or {@link DatatypeConstants#FIELD_UNDEFINED}.&lt;br/>&#xA;&lt;i>(Note: 60 only allowable for leap second.)&lt;/i>&lt;br/>&#xA;{@link #getFractionalSecond()} allows for infinite precision over the range from 0.0 to 1.0 when&#xA;the {@link #getSecond()} is defined.&lt;br/>&#xA;&lt;code>FractionalSecond&lt;/code> is optional and has a value of &lt;code>null&lt;/code> when it is undefined.&lt;br />&#xA;{@link #getMillisecond()} is the convenience&#xA;millisecond precision of value of {@link #getFractionalSecond()}.&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr id=&quot;datetimefield-timezone&quot;>&#xA;&lt;td> timezone &lt;/td>&#xA;&lt;td> {@link #getTimezone()} &lt;/td>&#xA;&lt;td> Number of minutes or {@link DatatypeConstants#FIELD_UNDEFINED}.&#xA;Value range from -14 hours (-14 * 60 minutes) to 14 hours (14 * 60 minutes).&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/tbody>&#xA;&lt;/table>&#xA;&#xA;&lt;p>All maximum value space constraints listed for the fields in the table&#xA;above are checked by factory methods, @{link DatatypeFactory},&#xA;setter methods and parse methods of&#xA;this class. &lt;code>IllegalArgumentException&lt;/code> is thrown when a&#xA;parameter's value is outside the value constraint for the field or&#xA;if the composite&#xA;values constitute an invalid XMLGregorianCalendar instance (for example, if&#xA;the 31st of June is specified).&#xA;&lt;/p>&#xA;&#xA;&lt;p>The following operations are defined for this class:&#xA;&lt;ul>&#xA;&lt;li>accessors/mutators for independent date/time fields&lt;/li>&#xA;&lt;li>conversion between this class and W3C XML Schema 1.0 lexical representation,&#xA;{@link #toString()}, {@link DatatypeFactory#newXMLGregorianCalendar(String lexicalRepresentation)}&lt;/li>&#xA;&lt;li>conversion between this class and {@link GregorianCalendar},&#xA;{@link #toGregorianCalendar(java.util.TimeZone timezone, java.util.Locale aLocale, XMLGregorianCalendar defaults)},&#xA;{@link DatatypeFactory}&lt;/li>&#xA;&lt;li>partial order relation comparator method, {@link #compare(XMLGregorianCalendar xmlGregorianCalendar)}&lt;/li>&#xA;&lt;li>{@link #equals(Object)} defined relative to {@link #compare(XMLGregorianCalendar xmlGregorianCalendar)}.&lt;/li>&#xA;&lt;li>addition operation with {@link Duration}&#xA;instance as defined in &lt;a href=&quot;http://www.w3.org/TR/xmlschema-2/#adding-durations-to-dateTimes&quot;>&#xA;W3C XML Schema 1.0 Part 2, Appendix E, &lt;i>Adding durations to dateTimes&lt;/i>&lt;/a>.&#xA;&lt;/li>&#xA;&lt;/ul>&#xA;&lt;/p>&#xA;&#xA;@author &lt;a href=&quot;mailto:Joseph.Fialli@Sun.com&quot;>Joseph Fialli&lt;/a>&#xA;@author &lt;a href=&quot;mailto:Kohsuke.Kawaguchi@Sun.com&quot;>Kohsuke Kawaguchi&lt;/a>&#xA;@author &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.28.4.2.2.4.2.1.2.2.2.6 $, $Date: 2004/06/09 19:06:01 $&#xA;@see Duration&#xA;@see DatatypeFactory&#xA;@since 1.5&#xA;" annotatedElement="a3671659-247c-4e85-b0dc-e70e4b509930"/>
              <interfaceRealization xmi:id="146fbefc-77b6-4303-bf42-1595ce3a66fb" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="a3671659-247c-4e85-b0dc-e70e4b509930" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0bb8eb5d-591b-418e-aab8-99c2f5a7e015" name="DatatypeConstants" isLeaf="true">
              <ownedComment xmi:id="b1ed790b-4809-41bb-9fdb-6bb7f15451fb" body="&lt;p>Utility class to contain basic Datatype values as constants.&lt;/p>&#xA;&#xA;@author &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.2.2.1 $, $Date: 2004/04/28 23:12:57 $&#xA;@since 1.5&#xA;" annotatedElement="0bb8eb5d-591b-418e-aab8-99c2f5a7e015"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="ae0d1bb2-145b-476f-a2f2-700ed063572e" name="Field" isLeaf="true">
                <ownedComment xmi:id="49c8f535-db02-4f44-81ee-49154f04befb" body="Type-safe enum class that represents six fields&#xA;of the {@link Duration} class.&#xA;" annotatedElement="ae0d1bb2-145b-476f-a2f2-700ed063572e"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="5359b20d-9120-4557-92b8-38fdcb5616f2" name="DatatypeConfigurationException">
              <ownedComment xmi:id="c777f791-2927-4ff9-9181-2ab25424448c" body="&lt;p>Indicates a serious configuration error.&lt;/p>&#xA;&#xA;TODO: support all constructors&#xA;&#xA;@author &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.1 $, $Date: 2004/03/06 00:22:23 $&#xA;@since 1.5&#xA;" annotatedElement="5359b20d-9120-4557-92b8-38fdcb5616f2"/>
              <generalization xmi:id="98b68cf7-c76e-48d0-b094-a48c537b20e8" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0a7a63e2-05e3-4a0c-b6d1-ea9f3aa10500" name="Duration" isAbstract="true">
              <ownedComment xmi:id="93567cab-ae99-4995-bedd-3fe31f818beb" body="&lt;p>Immutable representation of a time span as defined in&#xA;the W3C XML Schema 1.0 specification.&lt;/p>&#xA;&#xA;&lt;p>A Duration object represents a period of Gregorian time,&#xA;which consists of six fields (years, months, days, hours,&#xA;minutes, and seconds) plus a sign (+/-) field.&lt;/p>&#xA;&#xA;&lt;p>The first five fields have non-negative (>=0) integers or null&#xA;(which represents that the field is not set),&#xA;and the seconds field has a non-negative decimal or null.&#xA;A negative sign indicates a negative duration.&lt;/p>&#xA;&#xA;&lt;p>This class provides a number of methods that make it easy&#xA;to use for the duration datatype of XML Schema 1.0 with&#xA;the errata.&lt;/p>&#xA;&#xA;&lt;h2>Order relationship&lt;/h2>&#xA;&lt;p>Duration objects only have partial order, where two values A and B&#xA;maybe either:&lt;/p>&#xA;&lt;ol>&#xA;&lt;li>A&lt;B (A is shorter than B)&#xA;&lt;li>A>B (A is longer than B)&#xA;&lt;li>A==B   (A and B are of the same duration)&#xA;&lt;li>A&lt;>B (Comparison between A and B is indeterminate)&#xA;&lt;/ol>&#xA;&lt;p>For example, 30 days cannot be meaningfully compared to one month.&#xA;The {@link #compare(Duration duration)} method implements this&#xA;relationship.&lt;/p>&#xA;&#xA;&lt;p>See the {@link #isLongerThan(Duration)} method for details about&#xA;the order relationship among &lt;code>Duration&lt;/code> objects.&lt;/p>&#xA;&#xA;&lt;h2>Operations over Duration&lt;/h2>&#xA;&lt;p>This class provides a set of basic arithmetic operations, such&#xA;as addition, subtraction and multiplication.&#xA;Because durations don't have total order, an operation could&#xA;fail for some combinations of operations. For example, you cannot&#xA;subtract 15 days from 1 month. See the javadoc of those methods&#xA;for detailed conditions where this could happen.&lt;/p>&#xA;&#xA;&lt;p>Also, division of a duration by a number is not provided because&#xA;the &lt;code>Duration&lt;/code> class can only deal with finite precision&#xA;decimal numbers. For example, one cannot represent 1 sec divided by 3.&lt;/p>&#xA;&#xA;&lt;p>However, you could substitute a division by 3 with multiplying&#xA;by numbers such as 0.3 or 0.333.&lt;/p>&#xA;&#xA;&lt;h2>Range of allowed values&lt;/h2>&#xA;&lt;p>&#xA;Because some operations of &lt;code>Duration&lt;/code> rely on {@link Calendar}&#xA;even though {@link Duration} can hold very large or very small values,&#xA;some of the methods may not work correctly on such &lt;code>Duration&lt;/code>s.&#xA;The impacted methods document their dependency on {@link Calendar}.&#xA;&#xA;&#xA;@author &lt;a href=&quot;mailto:Joseph.Fialli@Sun.COM&quot;>Joseph Fialli&lt;/a>&#xA;@author &lt;a href=&quot;mailto:Kohsuke.Kawaguchi@Sun.com&quot;>Kohsuke Kawaguchi&lt;/a>&#xA;@author &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.36.8.1.4.3 $, $Date: 2004/06/07 06:33:50 $&#xA;@see XMLGregorianCalendar#add(Duration)&#xA;@since 1.5&#xA;" annotatedElement="0a7a63e2-05e3-4a0c-b6d1-ea9f3aa10500"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="bdb4b607-135e-4d9e-be8d-b941b4e27a82" name="FactoryFinder" visibility="package">
              <ownedComment xmi:id="136e05cb-741c-4163-b6ed-3e26c62d2dca" body="This class is duplicated for each JAXP subpackage so keep it in&#xA;sync.  It is package private.&#xA;&#xA;This code is designed to implement the JAXP 1.1 spec pluggability&#xA;feature and is designed to run on JDK version 1.1 and later including&#xA;JVMs that perform early linking like the Microsoft JVM in IE 5.  Note&#xA;however that it must be compiled on a JDK version 1.2 or later system&#xA;since it calls Thread#getContextClassLoader().  The code also runs both&#xA;as part of an unbundled jar file and when bundled as part of the JDK.&#xA;" annotatedElement="bdb4b607-135e-4d9e-be8d-b941b4e27a82"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="23093a9e-dad3-44a1-a389-b3baa06d20a4" name="ConfigurationError" visibility="package">
                <generalization xmi:id="883f8344-ee2f-4d86-8098-707f630b88aa" isSubstitutable="true" general="4e4110b0-dae3-4d54-846c-b32f5eb17a30"/>
              </nestedClassifier>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f23c872b-b126-4f4f-901c-1662d9238acf" name="ClassLoaderFinder" visibility="private" isAbstract="true"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="31b01b10-5f65-4f6a-ae74-7826c59d559c" name="ClassLoaderFinderConcrete" visibility="package">
                <generalization xmi:id="a5b7514e-f3d2-4b50-8dcf-0c035380a698" isSubstitutable="true" general="f23c872b-b126-4f4f-901c-1662d9238acf"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f8ace206-0363-49dc-9721-a7f0a04eac44" name="DatatypeFactory" isAbstract="true">
              <ownedComment xmi:id="70407dbd-b638-4ea3-8a7f-c704f9681d04" body="&lt;p>Factory that creates new &lt;code>javax.xml.datatype&lt;/code> &lt;code>Object&lt;/code>s that map XML to/from Java &lt;code>Object&lt;/code>s.&lt;/p>&#xA;&#xA;&lt;p id=&quot;DatatypeFactory.newInstance&quot;>{@link #newInstance()} is used to create a new &lt;code>DatatypeFactory&lt;/code>.&#xA;The following implementation resolution mechanisms are used in the following order:&lt;/p>&#xA;&lt;ol>&#xA;&lt;li>&#xA;If the system property specified by {@link #DATATYPEFACTORY_PROPERTY}, &quot;&lt;code>javax.xml.datatype.DatatypeFactory&lt;/code>&quot;,&#xA;exists, a class with the name of the property's value is instantiated.&#xA;Any Exception thrown during the instantiation process is wrapped as a {@link DatatypeConfigurationException}.&#xA;&lt;/li>&#xA;&lt;li>&#xA;If the file ${JAVA_HOME}/lib/jaxp.properties exists, it is loaded in a {@link java.util.Properties} &lt;code>Object&lt;/code>.&#xA;The &lt;code>Properties&lt;/code> &lt;code>Object &lt;/code> is then queried for the property as documented in the prior step&#xA;and processed as documented in the prior step.&#xA;&lt;/li>&#xA;&lt;li>&#xA;The services resolution mechanism is used, e.g. &lt;code>META-INF/services/java.xml.datatype.DatatypeFactory&lt;/code>.&#xA;Any Exception thrown during the instantiation process is wrapped as a {@link DatatypeConfigurationException}.&#xA;&lt;/li>&#xA;&lt;li>&#xA;The final mechanism is to attempt to instantiate the &lt;code>Class&lt;/code> specified by&#xA;{@link #DATATYPEFACTORY_IMPLEMENTATION_CLASS}, &quot;&lt;code>javax.xml.datatype.DatatypeFactoryImpl&lt;/code>&quot;.&#xA;Any Exception thrown during the instantiation process is wrapped as a {@link DatatypeConfigurationException}.&#xA;&lt;/li>&#xA;&lt;/ol>&#xA;&#xA;@author &lt;a href=&quot;mailto:Joseph.Fialli@Sun.COM&quot;>Joseph Fialli&lt;/a>&#xA;@author &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.1.6.2.4.3 $, $Date: 2004/06/18 08:40:14 $&#xA;@since 1.5&#xA;" annotatedElement="f8ace206-0363-49dc-9721-a7f0a04eac44"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="c25613da-faa3-4085-b081-93fc81d253c7" name="namespace">
            <packagedElement xmi:type="uml:Class" xmi:id="1dfc227a-c685-46ab-9883-4503330d506a" name="QName" clientDependency="1fd7cf37-bc3f-4f3a-a038-274239cd9c73">
              <ownedComment xmi:id="2be4e8d8-cd57-4683-b79d-cb8fa6f90819" body="&lt;p>&lt;code>QName&lt;/code> represents a &lt;strong>qualified name&lt;/strong>&#xA;as defined in the XML specifications: &lt;a&#xA;href=&quot;http://www.w3.org/TR/xmlschema-2/#QName&quot;>XML Schema Part2:&#xA;Datatypes specification&lt;/a>, &lt;a&#xA;href=&quot;http://www.w3.org/TR/REC-xml-names/#ns-qualnames&quot;>Namespaces&#xA;in XML&lt;/a>, &lt;a&#xA;href=&quot;http://www.w3.org/XML/xml-names-19990114-errata&quot;>Namespaces&#xA;in XML Errata&lt;/a>.&lt;/p>&#xA;&#xA;&lt;p>The value of a &lt;code>QName&lt;/code> contains a &lt;strong>Namespace&#xA;URI&lt;/strong>, &lt;strong>local part&lt;/strong> and&#xA;&lt;strong>prefix&lt;/strong>.&lt;/p>&#xA;&#xA;&lt;p>The prefix is included in &lt;code>QName&lt;/code> to retain lexical&#xA;information &lt;strong>&lt;em>when present&lt;/em>&lt;/strong> in an {@link&#xA;javax.xml.transform.Source XML input source}. The prefix is&#xA;&lt;strong>&lt;em>NOT&lt;/em>&lt;/strong> used in {@link #equals(Object)&#xA;QName.equals(Object)} or to compute the {@link #hashCode()&#xA;QName.hashCode()}.  Equality and the hash code are defined using&#xA;&lt;strong>&lt;em>only&lt;/em>&lt;/strong> the Namespace URI and local part.&lt;/p>&#xA;&#xA;&lt;p>If not specified, the Namespace URI is set to {@link&#xA;javax.xml.XMLConstants#NULL_NS_URI XMLConstants.NULL_NS_URI}.&#xA;If not specified, the prefix is set to {@link&#xA;javax.xml.XMLConstants#DEFAULT_NS_PREFIX&#xA;XMLConstants.DEFAULT_NS_PREFIX}.&lt;/p>&#xA;&#xA;&lt;p>&lt;code>QName&lt;/code> is immutable.&lt;/p>&#xA;&#xA;@author &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.10 $, $Date: 2004/02/09 23:41:21 $&#xA;@see &lt;a href=&quot;http://www.w3.org/TR/xmlschema-2/#QName&quot;>XML Schema Part2: Datatypes specification&lt;/a>&#xA;@see &lt;a href=&quot;http://www.w3.org/TR/REC-xml-names/#ns-qualnames&quot;>Namespaces in XML&lt;/a>&#xA;@see &lt;a href=&quot;http://www.w3.org/XML/xml-names-19990114-errata&quot;>Namespaces in XML Errata&lt;/a>&#xA;@since 1.5&#xA;" annotatedElement="1dfc227a-c685-46ab-9883-4503330d506a"/>
              <interfaceRealization xmi:id="1fd7cf37-bc3f-4f3a-a038-274239cd9c73" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="1dfc227a-c685-46ab-9883-4503330d506a" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="7ec5b3c3-fa0f-40aa-b082-ba8aa409b0a2" name="NamespaceContext" isAbstract="true">
              <ownedComment xmi:id="6884061b-9f4e-4007-91d8-61c201227668" body="&lt;p>Interface for read only XML Namespace context processing.&lt;/p>&#xA;&#xA;&lt;p>An XML Namespace has the properties:&lt;/p>&#xA;&lt;ul>&#xA;&lt;li>Namespace URI:&#xA;Namespace name expressed as a URI to which the prefix is bound&lt;/li>&#xA;&lt;li>prefix: syntactically, this is the part of the attribute name&#xA;following the &lt;code>XMLConstants.XMLNS_ATTRIBUTE&lt;/code>&#xA;(&quot;xmlns&quot;) in the Namespace declaration&lt;/li>&#xA;&lt;/ul>&#xA;&lt;p> example: &lt;code>&lt;element xmlns:prefix=&quot;http://Namespace-name-URI&quot;>&lt;/code>&lt;/p>&#xA;&#xA;&lt;p>All &lt;code>get*(*)&lt;/code> methods operate in the current scope&#xA;for Namespace URI and prefix resolution.&lt;/p>&#xA;&#xA;&lt;p>Note that a Namespace URI can be bound to&#xA;&lt;strong>multiple&lt;/strong> prefixes in the current scope.  This can&#xA;occur when multiple &lt;code>XMLConstants.XMLNS_ATTRIBUTE&lt;/code>&#xA;(&quot;xmlns&quot;) Namespace declarations occur in the same Start-Tag and&#xA;refer to the same Namespace URI. e.g.&lt;br />&#xA;&lt;pre>&#xA;&lt;element xmlns:prefix1=&quot;http://Namespace-name-URI&quot;&#xA;xmlns:prefix2=&quot;http://Namespace-name-URI&quot;>&#xA;&lt;/pre>&#xA;This can also occur when the same Namespace URI is used in multiple&#xA;&lt;code>XMLConstants.XMLNS_ATTRIBUTE&lt;/code> (&quot;xmlns&quot;) Namespace&#xA;declarations in the logical parent element hierarchy.  e.g.&lt;br />&#xA;&lt;pre>&#xA;&lt;parent xmlns:prefix1=&quot;http://Namespace-name-URI&quot;>&#xA;&lt;child xmlns:prefix2=&quot;http://Namespace-name-URI&quot;>&#xA;...&#xA;&lt;/child>&#xA;&lt;/parent>&#xA;&lt;/pre>&lt;/p>&#xA;&#xA;&lt;p>A prefix can only be bound to a &lt;strong>single&lt;/strong>&#xA;Namespace URI in the current scope.&lt;/p>&#xA;&#xA;@author &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.4.16.1 $, $Date: 2004/06/28 18:20:38 $&#xA;@see javax.xml.XMLConstants javax.XMLConstants for declarations of common XML values&#xA;@see &lt;a href=&quot;http://www.w3.org/TR/xmlschema-2/#QName&quot;>XML Schema Part2: Datatypes&lt;/a>&#xA;@see &lt;a href=&quot;http://www.w3.org/TR/REC-xml-names/#ns-qualnames&quot;>Namespaces in XML&lt;/a>&#xA;@see &lt;a href=&quot;http://www.w3.org/XML/xml-names-19990114-errata&quot;>Namespaces in XML Errata&lt;/a>&#xA;@since 1.5&#xA;" annotatedElement="7ec5b3c3-fa0f-40aa-b082-ba8aa409b0a2"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="582881a1-5c64-46b1-844a-37aced30f338" name="xpath">
            <packagedElement xmi:type="uml:Class" xmi:id="def87a9c-be13-47df-8f5e-b99773a20800" name="XPathConstants">
              <ownedComment xmi:id="a0a0514a-198c-467e-b7fb-4820d253d0a4" body="&lt;p>XPath constants.&lt;/p>&#xA;&#xA;@author &lt;a href=&quot;mailto:Norman.Walsh@Sun.COM&quot;>Norman Walsh&lt;/a>&#xA;@author &lt;a href=&quot;mailto:Jeff.Suttor@Sun.COM&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.7.16.1 $, $Date: 2004/05/26 22:31:04 $&#xA;@see &lt;a href=&quot;http://www.w3.org/TR/xpath&quot;>XML Path Language (XPath) Version 1.0&lt;/a>&#xA;@since 1.5&#xA;" annotatedElement="def87a9c-be13-47df-8f5e-b99773a20800"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="3fb61dc1-83a4-4778-8056-ebb5d2ced576" name="XPathFactoryFinder" visibility="package">
              <ownedComment xmi:id="b6390cbe-5ab9-4766-ba6f-874fd480a321" body="Implementation of {@link XPathFactory#newInstance(String)}.&#xA;&#xA;@author &lt;a href=&quot;Kohsuke.Kawaguchi@Sun.com&quot;>Kohsuke Kawaguchi&lt;/a>&#xA;@version $Revision: 1.2.8.1 $, $Date: 2004/05/07 00:34:05 $&#xA;@since 1.5&#xA;" annotatedElement="3fb61dc1-83a4-4778-8056-ebb5d2ced576"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="49732a99-6595-4415-b8e2-f6585d28bebf" name="SingleIterator" visibility="private" clientDependency="941602c8-f811-4b1a-8814-267d89d04876" isAbstract="true">
                <ownedComment xmi:id="af99111e-4d09-4b9c-a30c-b87752f59fb9" body="Iterator that lazily computes one value and returns it." annotatedElement="49732a99-6595-4415-b8e2-f6585d28bebf"/>
                <interfaceRealization xmi:id="941602c8-f811-4b1a-8814-267d89d04876" name="" supplier="68be2fb3-d9b5-43e8-ba81-15535e34b87a" client="49732a99-6595-4415-b8e2-f6585d28bebf" contract="68be2fb3-d9b5-43e8-ba81-15535e34b87a"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="fb7c3757-fda1-4a4f-9a07-ce692c5c78ad" name="XPathException">
              <ownedComment xmi:id="93d4c528-d0d3-42b5-b101-b02a4d416509" body="&lt;code>XPathException&lt;/code> represents a generic XPath exception.&lt;/p>&#xA;&#xA;@author  &lt;a href=&quot;Norman.Walsh@Sun.com&quot;>Norman Walsh&lt;/a>&#xA;@author &lt;a href=&quot;mailto:Jeff.Suttor@Sun.COM&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.14.12.2 $, $Date: 2004/06/15 00:07:08 $&#xA;@since 1.5&#xA;" annotatedElement="fb7c3757-fda1-4a4f-9a07-ce692c5c78ad"/>
              <generalization xmi:id="3e5bd3a8-3ca6-490e-8850-76d2b98f9694" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="705aa5be-f0ac-41cb-9522-033bd42b1853" name="XPathVariableResolver" isAbstract="true">
              <ownedComment xmi:id="aa2aa1c0-d93b-4ef6-960a-fb2d871d1a70" body="&lt;p>&lt;code>XPathVariableResolver&lt;/code> provides access to the set of user defined XPath variables.&lt;/p>&#xA;&#xA;&lt;p>The &lt;code>XPathVariableResolver&lt;/code> and the XPath evaluator must adhere to a contract that&#xA;cannot be directly enforced by the API.  Although variables may be mutable,&#xA;that is, an application may wish to evaluate the same XPath expression more&#xA;than once with different variable values, in the course of evaluating any&#xA;single XPath expression, a variable's value &lt;strong>&lt;em>must&lt;/em>&lt;/strong> be immutable.&lt;/p>&#xA;&#xA;@author  &lt;a href=&quot;mailto:Norman.Walsh@Sun.com&quot;>Norman Walsh&lt;/a>&#xA;@author  &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.6 $, $Date: 2003/12/08 04:40:47 $&#xA;@since 1.5&#xA;" annotatedElement="705aa5be-f0ac-41cb-9522-033bd42b1853"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="666ff4cc-638f-4f75-a3ac-e466bd9a93ec" name="XPathFunctionException">
              <ownedComment xmi:id="d7419eda-3610-44c8-b556-241d7ee81168" body="&lt;code>XPathFunctionException&lt;/code> represents an error with an XPath function.&lt;/p>&#xA;&#xA;@author  &lt;a href=&quot;mailto:Norman.Walsh@Sun.com&quot;>Norman Walsh&lt;/a>&#xA;@author  &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.3.12.1 $, $Date: 2004/06/15 00:05:02 $&#xA;@since 1.5&#xA;" annotatedElement="666ff4cc-638f-4f75-a3ac-e466bd9a93ec"/>
              <generalization xmi:id="15d320bb-a381-46f5-b485-afff5ec49407" isSubstitutable="true" general="3328c7eb-89e5-4bd4-835f-6ed608eee9f6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a7993e99-aa3a-4c98-bf16-542f1c8e84b2" name="XPathFactoryConfigurationException">
              <ownedComment xmi:id="3b093b82-d8dd-470d-b52d-733bbbd30705" body="&lt;code>XPathFactoryConfigurationException&lt;/code> represents a configuration error in a &lt;code>XPathFactory&lt;/code> environment.&lt;/p>&#xA;&#xA;@author  &lt;a href=&quot;mailto:Norman.Walsh@Sun.com&quot;>Norman Walsh&lt;/a>&#xA;@author  &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.6.12.1 $, $Date: 2004/06/15 00:05:02 $&#xA;@since 1.5&#xA;" annotatedElement="a7993e99-aa3a-4c98-bf16-542f1c8e84b2"/>
              <generalization xmi:id="c0a0afb9-bd2d-4ec9-bec5-f2ae57dd8997" isSubstitutable="true" general="fb7c3757-fda1-4a4f-9a07-ce692c5c78ad"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="9c7dab68-14e6-4054-904c-77b4f14e7b7f" name="XPath" isAbstract="true">
              <ownedComment xmi:id="21b549f9-41d7-4018-9124-fd76d19cbaac" body="&lt;p>&lt;code>XPath&lt;/code> provides access to the XPath evaluation environment and expressions.&lt;/p>&#xA;&#xA;&lt;table id=&quot;XPath-evaluation&quot; border=&quot;1&quot; cellpadding=&quot;2&quot;>&#xA;&lt;thead>&#xA;&lt;tr>&#xA;&lt;th colspan=&quot;2&quot;>Evaluation of XPath Expressions.&lt;/th>&#xA;&lt;/tr>&#xA;&lt;/thead>&#xA;&lt;tbody>&#xA;&lt;tr>&#xA;&lt;td>context&lt;/td>&#xA;&lt;td>&#xA;If a request is made to evaluate the expression in the absence&#xA;of a context item, an empty document node will be used for the context.&#xA;For the purposes of evaluating XPath expressions, a DocumentFragment&#xA;is treated like a Document node.&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>variables&lt;/td>&#xA;&lt;td>&#xA;If the expression contains a variable reference, its value will be found through the {@link XPathVariableResolver}&#xA;set with {@link #setXPathVariableResolver(XPathVariableResolver resolver)}.&#xA;An {@link XPathExpressionException} is raised if the variable resolver is undefined or&#xA;the resolver returns &lt;code>null&lt;/code> for the variable.&#xA;The value of a variable must be immutable through the course of any single evaluation.&lt;/p>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>functions&lt;/td>&#xA;&lt;td>&#xA;If the expression contains a function reference, the function will be found through the {@link XPathFunctionResolver}&#xA;set with {@link #setXPathFunctionResolver(XPathFunctionResolver resolver)}.&#xA;An {@link XPathExpressionException} is raised if the function resolver is undefined or&#xA;the function resolver returns &lt;code>null&lt;/code> for the function.&lt;/p>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>QNames&lt;/td>&#xA;&lt;td>&#xA;QNames in the expression are resolved against the XPath namespace context&#xA;set with {@link #setNamespaceContext(NamespaceContext nsContext)}.&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>result&lt;/td>&#xA;&lt;td>&#xA;This result of evaluating an expression is converted to an instance of the desired return type.&#xA;Valid return types are defined in {@link XPathConstants}.&#xA;Conversion to the return type follows XPath conversion rules.&lt;/p>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&#xA;@author  &lt;a href=&quot;Norman.Walsh@Sun.com&quot;>Norman Walsh&lt;/a>&#xA;@author  &lt;a href=&quot;Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.12.14.2.2.3 $, $Date: 2004/07/01 17:49:22 $&#xA;@see &lt;a href=&quot;http://www.w3.org/TR/xpath&quot;>XML Path Language (XPath) Version 1.0&lt;/a>&#xA;@since 1.5&#xA;" annotatedElement="9c7dab68-14e6-4054-904c-77b4f14e7b7f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="1b0c0455-4c78-4ee4-9def-1d99f88c6feb" name="XPathFunction" isAbstract="true">
              <ownedComment xmi:id="8d4fca7d-88b4-4b84-ab40-51b8ff4ab29f" body="&lt;p>&lt;code>XPathFunction&lt;/code> provides access to XPath functions.&lt;/p>&#xA;&#xA;&lt;p>Functions are identified by QName and arity in XPath.&lt;/p>&#xA;&#xA;@author  &lt;a href=&quot;mailto:Norman.Walsh@Sun.com&quot;>Norman Walsh&lt;/a>&#xA;@author  &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.10 $, $Date: 2004/02/11 20:14:32 $&#xA;@since 1.5&#xA;" annotatedElement="1b0c0455-4c78-4ee4-9def-1d99f88c6feb"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="be381d9b-27f3-4a89-a217-5a6c027dd87c" name="XPathExpression" isAbstract="true">
              <ownedComment xmi:id="65cb37fc-28c0-45e9-90e8-762c46ca1e1b" body="&lt;p>&lt;code>XPathExpression&lt;/code> provides access to compiled XPath expressions.&lt;/p>&#xA;&#xA;&lt;table id=&quot;XPathExpression-evaluation&quot; border=&quot;1&quot; cellpadding=&quot;2&quot;>&#xA;&lt;thead>&#xA;&lt;tr>&#xA;&lt;th colspan=&quot;2&quot;>Evaluation of XPath Expressions.&lt;/th>&#xA;&lt;/tr>&#xA;&lt;/thead>&#xA;&lt;tbody>&#xA;&lt;tr>&#xA;&lt;td>context&lt;/td>&#xA;&lt;td>&#xA;If a request is made to evaluate the expression in the absence&#xA;of a context item, an empty document node will be used for the context.&#xA;For the purposes of evaluating XPath expressions, a DocumentFragment&#xA;is treated like a Document node.&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>variables&lt;/td>&#xA;&lt;td>&#xA;If the expression contains a variable reference, its value will be found through the {@link XPathVariableResolver}.&#xA;An {@link XPathExpressionException} is raised if the variable resolver is undefined or&#xA;the resolver returns &lt;code>null&lt;/code> for the variable.&#xA;The value of a variable must be immutable through the course of any single evaluation.&lt;/p>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>functions&lt;/td>&#xA;&lt;td>&#xA;If the expression contains a function reference, the function will be found through the {@link XPathFunctionResolver}.&#xA;An {@link XPathExpressionException} is raised if the function resolver is undefined or&#xA;the function resolver returns &lt;code>null&lt;/code> for the function.&lt;/p>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>QNames&lt;/td>&#xA;&lt;td>&#xA;QNames in the expression are resolved against the XPath namespace context.&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>result&lt;/td>&#xA;&lt;td>&#xA;This result of evaluating an expression is converted to an instance of the desired return type.&#xA;Valid return types are defined in {@link XPathConstants}.&#xA;Conversion to the return type follows XPath conversion rules.&lt;/p>&#xA;&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&#xA;@author  &lt;a href=&quot;mailto:Norman.Walsh@Sun.com&quot;>Norman Walsh&lt;/a>&#xA;@author  &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.10.16.1 $, $Date: 2004/07/01 17:49:23 $&#xA;@see &lt;a href=&quot;http://www.w3.org/TR/xpath#section-Expressions&quot;>XML Path Language (XPath) Version 1.0, Expressions&lt;/a>&#xA;@since 1.5&#xA;" annotatedElement="be381d9b-27f3-4a89-a217-5a6c027dd87c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8b7236ad-1617-464b-9ef5-f2a5f7b18754" name="XPathFactory" isAbstract="true">
              <ownedComment xmi:id="4125e904-108a-483c-a1c0-fbefea426428" body="&lt;p>An &lt;code>XPathFactory&lt;/code> instance can be used to create&#xA;{@link javax.xml.xpath.XPath} objects.&lt;/p>&#xA;&#xA;&lt;p>See {@link #newInstance(String uri)} for lookup mechanism.&lt;/p>&#xA;&#xA;@author  &lt;a href=&quot;mailto:Norman.Walsh@Sun.com&quot;>Norman Walsh&lt;/a>&#xA;@author  &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.13.10.1 $, $Date: 2004/05/07 00:34:05 $&#xA;@since 1.5&#xA;" annotatedElement="8b7236ad-1617-464b-9ef5-f2a5f7b18754"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="3328c7eb-89e5-4bd4-835f-6ed608eee9f6" name="XPathExpressionException">
              <ownedComment xmi:id="dc15457b-0af5-4342-9bd2-593acdedeb7e" body="&lt;code>XPathExpressionException&lt;/code> represents an error in an XPath expression.&lt;/p>&#xA;&#xA;@author  &lt;a href=&quot;mailto:Norman.Walsh@Sun.com&quot;>Norman Walsh&lt;/a>&#xA;@author  &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.3.12.1 $, $Date: 2004/06/15 00:05:01 $&#xA;@since 1.5&#xA;" annotatedElement="3328c7eb-89e5-4bd4-835f-6ed608eee9f6"/>
              <generalization xmi:id="82dbca4c-e3ce-405f-bed4-c9238878c93c" isSubstitutable="true" general="fb7c3757-fda1-4a4f-9a07-ce692c5c78ad"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="07ca503e-42e4-4dea-8541-9f9f66ef7f3a" name="XPathFunctionResolver" isAbstract="true">
              <ownedComment xmi:id="89f25cab-30a0-4d89-ab8e-02a2e1ecd938" body="&lt;p>&lt;code>XPathFunctionResolver&lt;/code> provides access to the set of user defined &lt;code>XPathFunction&lt;/code>s.&lt;/p>&#xA;&#xA;&lt;p>XPath functions are resolved by name and arity.&#xA;The resolver is not needed for XPath built-in functions and the resolver&#xA;&lt;strong>&lt;em>cannot&lt;/em>&lt;/strong> be used to override those functions.&lt;/p>&#xA;&#xA;&lt;p>In particular, the resolver is only called for functions in an another&#xA;namespace (functions with an explicit prefix). This means that you cannot&#xA;use the &lt;code>XPathFunctionResolver&lt;/code> to implement specifications&#xA;like &lt;a href=&quot;http://www.w3.org/TR/xmldsig-core/&quot;>XML-Signature Syntax&#xA;and Processing&lt;/a> which extend the function library of XPath 1.0 in the&#xA;same namespace. This is a consequence of the design of the resolver.&lt;/p>&#xA;&#xA;&lt;p>If you wish to implement additional built-in functions, you will have to&#xA;extend the underlying implementation directly.&lt;/p>&#xA;&#xA;@author  &lt;a href=&quot;mailto:Norman.Walsh@Sun.com&quot;>Norman Walsh&lt;/a>&#xA;@author  &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.7 $, $Date: 2004/04/01 16:07:17 $&#xA;@see &lt;a href=&quot;http://www.w3.org/TR/xpath#corelib&quot;>XML Path Language (XPath) Version 1.0, Core Function Library&lt;/a>&#xA;@since 1.5&#xA;" annotatedElement="07ca503e-42e4-4dea-8541-9f9f66ef7f3a"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="6893d240-bcad-40da-abd1-814086432de4" name="validation">
            <packagedElement xmi:type="uml:Class" xmi:id="3675ae0d-941c-4291-891d-19834d59f82a" name="SchemaFactoryFinder" visibility="package">
              <ownedComment xmi:id="381d5337-f096-4626-b5f0-4e285f9ff274" body="Implementation of {@link SchemaFactory#newInstance(String)}.&#xA;&#xA;@author &lt;a href=&quot;Kohsuke.Kawaguchi@Sun.com&quot;>Kohsuke Kawaguchi&lt;/a>&#xA;@version $Revision: 1.11.6.1.2.1.4.1 $, $Date: 2004/05/07 01:22:37 $&#xA;@since 1.5&#xA;" annotatedElement="3675ae0d-941c-4291-891d-19834d59f82a"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="dd993ede-2ae8-4d3d-a8ff-74e3d8c50e9d" name="SingleIterator" visibility="private" clientDependency="294ef2b6-a78e-47fb-8ec0-4c8b6231452a" isAbstract="true">
                <ownedComment xmi:id="3f668270-18cb-4517-8fb6-f3e5470db576" body="Iterator that lazily computes one value and returns it." annotatedElement="dd993ede-2ae8-4d3d-a8ff-74e3d8c50e9d"/>
                <interfaceRealization xmi:id="294ef2b6-a78e-47fb-8ec0-4c8b6231452a" name="" supplier="68be2fb3-d9b5-43e8-ba81-15535e34b87a" client="dd993ede-2ae8-4d3d-a8ff-74e3d8c50e9d" contract="68be2fb3-d9b5-43e8-ba81-15535e34b87a"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="23f0a8ce-d418-448c-aea2-0339c7d8f7c9" name="ValidatorHandler" clientDependency="7ca17810-cc1b-42c8-b5b8-4bc3e2269a59" isAbstract="true">
              <ownedComment xmi:id="aec03bcd-88a6-4990-87e6-a5f35f4b4346" body="Streaming validator that works on SAX stream.&#xA;&#xA;&lt;p>&#xA;A {@link ValidatorHandler} object is a thread-unsafe, non-reentrant object.&#xA;In other words, it is the application's responsibility to make&#xA;sure that one {@link ValidatorHandler} object is not used from&#xA;more than one thread at any given time.&#xA;&#xA;&lt;p>&#xA;{@link ValidatorHandler} checks if the SAX events follow&#xA;the set of constraints described in the associated {@link Schema},&#xA;and additionally it may modify the SAX events (for example&#xA;by adding default values, etc.)&#xA;&#xA;&lt;p>&#xA;{@link ValidatorHandler} extends from {@link ContentHandler},&#xA;but it refines the underlying {@link ContentHandler} in&#xA;the following way:&#xA;&lt;ol>&#xA;&lt;li>startElement/endElement events must receive non-null String&#xA;for &lt;code>uri&lt;/code>, &lt;code>localName&lt;/code>, and &lt;code>qname&lt;/code>,&#xA;even though SAX allows some of them to be null.&#xA;Similarly, the user-specified {@link ContentHandler} will receive non-null&#xA;Strings for all three parameters.&#xA;&#xA;&lt;li>Applications must ensure that {@link ValidatorHandler}'s&#xA;{@link ContentHandler#startPrefixMapping(String,String)} and&#xA;{@link ContentHandler#endPrefixMapping(String)} are invoked&#xA;properly. Similarly, the user-specified {@link ContentHandler}&#xA;will receive startPrefixMapping/endPrefixMapping events.&#xA;If the {@link ValidatorHandler} introduces additional namespace&#xA;bindings, the user-specified {@link ContentHandler} will receive&#xA;additional startPrefixMapping/endPrefixMapping events.&#xA;&#xA;&lt;li>{@link org.xml.sax.Attributes} for the&#xA;{@link ContentHandler#startElement(String,String,String,Attributes)} method&#xA;may or may not include xmlns* attributes.&#xA;&lt;/ol>&#xA;&#xA;&lt;p>&#xA;A {@link ValidatorHandler} is automatically reset every time&#xA;the startDocument method is invoked.&#xA;&#xA;&lt;h2>Recognized Properties and Features&lt;/h2>&#xA;&lt;p>&#xA;This spec defines the following feature that must be recognized&#xA;by all {@link ValidatorHandler} implementations.&#xA;&#xA;&lt;h3>&lt;code>http://xml.org/sax/features/namespace-prefixes&lt;/code>&lt;/h3>&#xA;&lt;p>&#xA;This feature controls how a {@link ValidatorHandler} introduces&#xA;namespace bindings that were not present in the original SAX event&#xA;stream.&#xA;When this feature is set to true, it must make&#xA;sure that the user's {@link ContentHandler} will see&#xA;the corresponding &lt;code>xmlns*&lt;/code> attribute in&#xA;the {@link org.xml.sax.Attributes} object of the&#xA;{@link ContentHandler#startElement(String,String,String,Attributes)}&#xA;callback. Otherwise, &lt;code>xmlns*&lt;/code> attributes must not be&#xA;added to {@link org.xml.sax.Attributes} that's passed to the&#xA;user-specified {@link ContentHandler}.&#xA;&lt;p>&#xA;(Note that regardless of this switch, namespace bindings are&#xA;always notified to applications through&#xA;{@link ContentHandler#startPrefixMapping(String,String)} and&#xA;{@link ContentHandler#endPrefixMapping(String)} methods of the&#xA;{@link ContentHandler} specified by the user.)&#xA;&#xA;&lt;p>&#xA;Note that this feature does &lt;em>NOT&lt;/em> affect the way&#xA;a {@link ValidatorHandler} receives SAX events. It merely&#xA;changes the way it augments SAX events.&#xA;&#xA;&lt;p>This feature is set to &lt;code>false&lt;/code> by default.&lt;/p>&#xA;&#xA;@author  &lt;a href=&quot;mailto:Kohsuke.Kawaguchi@Sun.com&quot;>Kohsuke Kawaguchi&lt;/a>&#xA;@version $Revision: 1.23.16.1 $, $Date: 2004/06/28 18:26:43 $&#xA;@since 1.5&#xA;" annotatedElement="23f0a8ce-d418-448c-aea2-0339c7d8f7c9"/>
              <interfaceRealization xmi:id="7ca17810-cc1b-42c8-b5b8-4bc3e2269a59" name="" supplier="a097ae78-9869-4a39-b48f-43ad9c449e2d" client="23f0a8ce-d418-448c-aea2-0339c7d8f7c9" contract="a097ae78-9869-4a39-b48f-43ad9c449e2d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c02e8973-b816-4390-bf83-7e017719f7dd" name="SchemaFactory" isAbstract="true">
              <ownedComment xmi:id="d2767678-d3db-4664-b2c6-3746047bd6a0" body="Factory that creates {@link Schema} objects&amp;#x2E; Entry-point to&#xA;the validation API.&#xA;&#xA;&lt;p>&#xA;{@link SchemaFactory} is a schema compiler. It reads external&#xA;representations of schemas and prepares them for validation.&#xA;&#xA;&lt;p>&#xA;The {@link SchemaFactory} class is not thread-safe. In other words,&#xA;it is the application's responsibility to ensure that at most&#xA;one thread is using a {@link SchemaFactory} object at any&#xA;given moment. Implementations are encouraged to mark methods&#xA;as &lt;tt>synchronized&lt;/tt> to protect themselves from broken clients.&#xA;&#xA;&lt;p>&#xA;{@link SchemaFactory} is not re-entrant. While one of the&#xA;&lt;code>newSchema&lt;/code> methods is being invoked, applications&#xA;may not attempt to recursively invoke the &lt;code>newSchema&lt;/code> method,&#xA;even from the same thread.&#xA;&#xA;&lt;h2>&lt;a name=&quot;schemaLanguage&quot;>&lt;/a>Schema Language&lt;/h2>&#xA;&lt;p>&#xA;This spec uses a namespace URI to designate a schema language.&#xA;The following table shows the values defined by this specification.&#xA;&lt;p>&#xA;To be compliant with the spec, the implementation&#xA;is only required to support W3C XML Schema 1.0. However,&#xA;if it chooses to support other schema languages listed here,&#xA;it must conform to the relevant behaviors described in this spec.&#xA;&#xA;&lt;p>&#xA;Schema languages not listed here are expected to&#xA;introduce their own URIs to represent themselves.&#xA;The {@link SchemaFactory} class is capable of locating other&#xA;implementations for other schema languages at run-time.&#xA;&#xA;&lt;p>&#xA;Note that because the XML DTD is strongly tied to the parsing process&#xA;and has a significant effect on the parsing process, it is impossible&#xA;to define the DTD validation as a process independent from parsing.&#xA;For this reason, this specification does not define the semantics for&#xA;the XML DTD. This doesn't prohibit implentors from implementing it&#xA;in a way they see fit, but &lt;em>users are warned that any DTD&#xA;validation implemented on this interface necessarily deviate from&#xA;the XML DTD semantics as defined in the XML 1.0&lt;/em>.&#xA;&#xA;&lt;table border=&quot;1&quot; cellpadding=&quot;2&quot;>&#xA;&lt;thead>&#xA;&lt;tr>&#xA;&lt;th>value&lt;/th>&#xA;&lt;th>language&lt;/th>&#xA;&lt;/tr>&#xA;&lt;/thead>&#xA;&lt;tbody>&#xA;&lt;tr>&#xA;&lt;td>{@link javax.xml.XMLConstants#W3C_XML_SCHEMA_NS_URI} (&quot;&lt;code>http://www.w3.org/2001/XMLSchema&lt;/code>&quot;)&lt;/td>&#xA;&lt;td>&lt;a href=&quot;http://www.w3.org/TR/xmlschema-1&quot;>W3C XML Schema 1.0&lt;/a>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>{@link javax.xml.XMLConstants#RELAXNG_NS_URI} (&quot;&lt;code>http://relaxng.org/ns/structure/1.0&lt;/code>&quot;)&lt;/td>&#xA;&lt;td>&lt;a href=&quot;http://www.relaxng.org/&quot;>RELAX NG 1.0&lt;/a>&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/tbody>&#xA;&lt;/table>&#xA;&#xA;@author  &lt;a href=&quot;mailto:Kohsuke.Kawaguchi@Sun.com&quot;>Kohsuke Kawaguchi&lt;/a>&#xA;@version $Revision: 1.20.10.1.2.2 $, $Date: 2004/06/11 14:59:49 $&#xA;@since 1.5&#xA;" annotatedElement="c02e8973-b816-4390-bf83-7e017719f7dd"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="01fdf56c-cfdd-4779-985f-31b0a48a5a01" name="Validator" isAbstract="true">
              <ownedComment xmi:id="9db0d9b8-fa8b-4162-8c3a-de713d08f42e" body="&lt;p>A processor that checks an XML document against {@link Schema}.&lt;/p>&#xA;&#xA;&lt;p>&#xA;A validator is a thread-unsafe and non-reentrant object.&#xA;In other words, it is the application's responsibility to make&#xA;sure that one {@link Validator} object is not used from&#xA;more than one thread at any given time, and while the &lt;tt>validate&lt;/tt>&#xA;method is invoked, applications may not recursively call&#xA;the &lt;tt>validate&lt;/tt> method.&#xA;&lt;p>&#xA;&#xA;Note that while the {@link #validate(javax.xml.transform.Source)} and {@link #validate(javax.xml.transform.Source, javax.xml.transform.Result)}&#xA;methods take a {@link Source} instance, the &lt;code>Source&lt;/code>&#xA;instance must be a &lt;code>SAXSource&lt;/code> or &lt;code>DOMSource&lt;/code>.&#xA;&#xA;@author  &lt;a href=&quot;mailto:Kohsuke.Kawaguchi@Sun.com&quot;>Kohsuke Kawaguchi&lt;/a>&#xA;@version $Revision: 1.18.14.1.2.4 $, $Date: 2004/07/13 22:27:52 $&#xA;@since 1.5&#xA;" annotatedElement="01fdf56c-cfdd-4779-985f-31b0a48a5a01"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6699a08d-9718-44e7-bd24-f2360e7f8b63" name="TypeInfoProvider" isAbstract="true">
              <ownedComment xmi:id="6c7bd4f6-6208-400c-83d2-48d2fac5b876" body="This class provides access to the type information determined&#xA;by {@link ValidatorHandler}.&#xA;&#xA;&lt;p>&#xA;Some schema languages, such as W3C XML Schema, encourages a validator&#xA;to report the &quot;type&quot; it assigns to each attribute/element.&#xA;Those applications who wish to access this type information can invoke&#xA;methods defined on this &quot;interface&quot; to access such type information.&#xA;&#xA;&lt;p>&#xA;Implementation of this &quot;interface&quot; can be obtained through the&#xA;{@link ValidatorHandler#getTypeInfoProvider()} method.&#xA;&#xA;@author  &lt;a href=&quot;mailto:Kohsuke.Kawaguchi@Sun.com&quot;>Kohsuke Kawaguchi&lt;/a>&#xA;@version $Revision: 1.11 $, $Date: 2004/02/06 01:16:10 $&#xA;@see org.w3c.dom.TypeInfo&#xA;@since 1.5&#xA;" annotatedElement="6699a08d-9718-44e7-bd24-f2360e7f8b63"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1ceadd7b-7b55-4c1e-b8ae-99e2d22056b5" name="SchemaFactoryLoader" isAbstract="true">
              <ownedComment xmi:id="d56a488a-7257-4290-a203-06dec87932ee" body="&lt;p>Factory that creates {@link SchemaFactory}.&lt;/p>&#xA;&#xA;&lt;p>&#xA;This class is intended to be used by the implementations of&#xA;the validation API, not by users.&#xA;&lt;/p>&#xA;&#xA;@author &lt;a href=&quot;Kohsuke.Kawaguchi@Sun.com&quot;>Kohsuke Kawaguchi&lt;/a>&#xA;@version $Revision: 1.6 $, $Date: 2004/03/17 03:58:54 $&#xA;@since 1.5&#xA;" annotatedElement="1ceadd7b-7b55-4c1e-b8ae-99e2d22056b5"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="96f60c70-ad5d-4d77-a336-6116a134f7af" name="Schema" isAbstract="true">
              <ownedComment xmi:id="a31a2dba-57c9-4cf5-b824-33dddc4286ed" body="Immutable in-memory representation of grammar.&#xA;&#xA;&lt;p>&#xA;This object represents a set of constraints that can be checked&#xA;enforced against an XML document.&#xA;&#xA;&lt;p>&#xA;A {@link Schema} object is thread safe and applications are&#xA;encouraged to share it across many parsers in many threads.&#xA;&#xA;&lt;p>&#xA;A {@link Schema} object is immutable in the sense that it shouldn't&#xA;change the set of constraints once it is created. In other words,&#xA;if an application validates the same document twice against the same&#xA;{@link Schema}, it must always produce the same result.&#xA;&#xA;&lt;p>&#xA;A {@link Schema} object is usually created from {@link SchemaFactory}.&#xA;&#xA;&lt;p>&#xA;Two kinds of validators can be created from a {@link Schema} object.&#xA;One is {@link Validator}, which provides highly-level validation&#xA;operations that cover typical use cases. The other is&#xA;{@link ValidatorHandler}, which works on top of SAX for better&#xA;modularity.&#xA;&#xA;&lt;p>&#xA;This specification does not refine&#xA;the {@link java.lang.Object#equals(java.lang.Object)} method.&#xA;In other words, if you parse the same schema twice, you may&#xA;still get &lt;code>!schemaA.equals(schemaB)&lt;/code>.&#xA;&#xA;@author &lt;a href=&quot;mailto:Kohsuke.Kawaguchi@Sun.com&quot;>Kohsuke Kawaguchi&lt;/a>&#xA;@version $Revision: 1.4 $, $Date: 2003/12/06 00:21:36 $&#xA;@see &lt;a href=&quot;http://www.w3.org/TR/xmlschema-1/&quot;>XML Schema Part 1: Structures&lt;/a>&#xA;@see &lt;a href=&quot;http://www.w3.org/TR/xml11/&quot;>Extensible Markup Language (XML) 1.1&lt;/a>&#xA;@see &lt;a href=&quot;http://www.w3.org/TR/REC-xml&quot;>Extensible Markup Language (XML) 1.0 (Second Edition)&lt;/a>&#xA;@since 1.5&#xA;" annotatedElement="96f60c70-ad5d-4d77-a336-6116a134f7af"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="45aad448-07e9-407e-a8d6-7a11c0ba23f6" name="transform">
            <packagedElement xmi:type="uml:Interface" xmi:id="228548ca-e95a-4c82-92cf-ded56009130d" name="ErrorListener" isAbstract="true">
              <ownedComment xmi:id="ff417efc-360b-4869-9a6a-8c977ee8fce2" body="&lt;p>To provide customized error handling, implement this interface and&#xA;use the &lt;code>setErrorListener&lt;/code> method to register an instance of the&#xA;implmentation with the {@link javax.xml.transform.Transformer}.  The&#xA;&lt;code>Transformer&lt;/code> then reports all errors and warnings through this&#xA;interface.&lt;/p>&#xA;&#xA;&lt;p>If an application does &lt;em>not&lt;/em> register its own custom&#xA;&lt;code>ErrorListener&lt;/code>, the default &lt;code>ErrorListener&lt;/code>&#xA;is used which reports all warnings and errors to &lt;code>System.err&lt;/code>&#xA;and does not throw any &lt;code>Exception&lt;/code>s.&#xA;Applications are &lt;em>strongly&lt;/em> encouraged to register and use&#xA;&lt;code>ErrorListener&lt;/code>s that insure proper behavior for warnings and&#xA;errors.&lt;/p>&#xA;&#xA;&lt;p>For transformation errors, a &lt;code>Transformer&lt;/code> must use this&#xA;interface instead of throwing an &lt;code>Exception&lt;/code>: it is up to the&#xA;application to decide whether to throw an &lt;code>Exception&lt;/code> for&#xA;different types of errors and warnings.  Note however that the&#xA;&lt;code>Transformer&lt;/code> is not required to continue with the transformation&#xA;after a call to {@link #fatalError(TransformerException exception)}.&lt;/p>&#xA;&#xA;&lt;p>&lt;code>Transformer&lt;/code>s may use this mechanism to report XML parsing&#xA;errors as well as transformation errors.&lt;/p>&#xA;" annotatedElement="228548ca-e95a-4c82-92cf-ded56009130d"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a1fbc32c-9f19-4733-9422-059e6b1f9f46" name="TransformerConfigurationException">
              <ownedComment xmi:id="fd040ff2-fdc4-488d-b3c0-6214e8c5c651" body="Indicates a serious configuration error.&#xA;" annotatedElement="a1fbc32c-9f19-4733-9422-059e6b1f9f46"/>
              <generalization xmi:id="01b4b52a-48fe-4812-a1f3-1816d02b104d" isSubstitutable="true" general="ca8aeec8-f15e-4f81-b74d-af025009e486"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="cae542c5-3f6b-4fdb-8910-70d9aa2054f8" name="Source" isAbstract="true">
              <ownedComment xmi:id="0ee36c88-e775-4476-9533-dcd1124cf491" body="An object that implements this interface contains the information&#xA;needed to act as source input (XML source or transformation instructions).&#xA;" annotatedElement="cae542c5-3f6b-4fdb-8910-70d9aa2054f8"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="0c30cac5-8f84-41a0-9585-82c18ac673a0" name="TransformerFactory" isAbstract="true">
              <ownedComment xmi:id="01550e37-c7c4-4c3c-b236-822da88272aa" body="&lt;p>A TransformerFactory instance can be used to create&#xA;{@link javax.xml.transform.Transformer} and&#xA;{@link javax.xml.transform.Templates} objects.&lt;/p>&#xA;&#xA;&lt;p>The system property that determines which Factory implementation&#xA;to create is named &lt;code>&quot;javax.xml.transform.TransformerFactory&quot;&lt;/code>.&#xA;This property names a concrete subclass of the&#xA;&lt;code>TransformerFactory&lt;/code> abstract class. If the property is not&#xA;defined, a platform default is be used.&lt;/p>&#xA;&#xA;@author &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;" annotatedElement="0c30cac5-8f84-41a0-9585-82c18ac673a0"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="eb5f876e-b3e2-4df0-8355-1039615ba058" name="FactoryFinder" visibility="package">
              <ownedComment xmi:id="205ee984-1569-46d7-b746-68a7a2a88ad9" body="This class is duplicated for each JAXP subpackage so keep it in&#xA;sync.  It is package private.&#xA;&#xA;This code is designed to implement the JAXP 1.1 spec pluggability&#xA;feature and is designed to run on JDK version 1.1 and later including&#xA;JVMs that perform early linking like the Microsoft JVM in IE 5.  Note&#xA;however that it must be compiled on a JDK version 1.2 or later system&#xA;since it calls Thread#getContextClassLoader().  The code also runs both&#xA;as part of an unbundled jar file and when bundled as part of the JDK.&#xA;" annotatedElement="eb5f876e-b3e2-4df0-8355-1039615ba058"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="703f49be-bcf1-402f-82fc-c7561b8fb4ee" name="ConfigurationError" visibility="package">
                <generalization xmi:id="c189a44d-ecf3-475a-afc2-e1da0b97f5bb" isSubstitutable="true" general="4e4110b0-dae3-4d54-846c-b32f5eb17a30"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="921c5874-f6e1-445b-a6c2-478b6b165d6e" name="SecuritySupport" visibility="package">
              <ownedComment xmi:id="892028fa-562a-4c40-a383-82bacabfa5ec" body="This class is duplicated for each JAXP subpackage so keep it in sync.&#xA;It is package private and therefore is not exposed as part of the JAXP&#xA;API.&#xA;&#xA;Security related methods that only work on J2SE 1.2 and newer.&#xA;" annotatedElement="921c5874-f6e1-445b-a6c2-478b6b165d6e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="a3af3b37-0d23-475b-b03c-9b6a064f70da" name="OutputKeys">
              <ownedComment xmi:id="9f971544-e5b1-4a41-b293-8fa136acf4d7" body="Provides string constants that can be used to set&#xA;output properties for a Transformer, or to retrieve&#xA;output properties from a Transformer or Templates object.&#xA;&lt;p>All the fields in this class are read-only.&lt;/p>&#xA;&#xA;@see &lt;a href=&quot;http://www.w3.org/TR/xslt#output&quot;>&#xA;section 16 of the XSL Transformations (XSLT) W3C Recommendation&lt;/a>&#xA;" annotatedElement="a3af3b37-0d23-475b-b03c-9b6a064f70da"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="12a36eaa-20f1-4206-95b6-32de69f82fa0" name="Result" isAbstract="true">
              <ownedComment xmi:id="24c36cd0-a0fa-46c2-8f12-661419fbc49f" body="&lt;p>An object that implements this interface contains the information&#xA;needed to build a transformation result tree.&lt;/p>&#xA;&#xA;@author &lt;a href=&quot;Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;" annotatedElement="12a36eaa-20f1-4206-95b6-32de69f82fa0"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="35047459-1bba-437e-bf3c-7f7f7f442c92" name="TransformerFactoryConfigurationError">
              <ownedComment xmi:id="2ec0ab31-3aea-4fce-9e2b-27afedf4cc3c" body="Thrown when a problem with configuration with the Transformer Factories&#xA;exists. This error will typically be thrown when the class of a&#xA;transformation factory specified in the system properties cannot be found&#xA;or instantiated.&#xA;" annotatedElement="35047459-1bba-437e-bf3c-7f7f7f442c92"/>
              <generalization xmi:id="8b5198cd-6957-41f1-8323-1271cc4a16fc" isSubstitutable="true" general="4e4110b0-dae3-4d54-846c-b32f5eb17a30"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d1980827-330b-48a2-86a7-3e2df9f43b5e" name="SourceLocator" isAbstract="true">
              <ownedComment xmi:id="90355cad-f028-444e-9e76-0103a8adb890" body="This interface is primarily for the purposes of reporting where&#xA;an error occurred in the XML source or transformation instructions.&#xA;" annotatedElement="d1980827-330b-48a2-86a7-3e2df9f43b5e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="43e92f57-8685-4e28-934b-f66fe5201a7e" name="sax">
              <packagedElement xmi:type="uml:Class" xmi:id="f56a1bba-35f7-416f-9870-394c40e12aa6" name="SAXResult" clientDependency="92e10eaf-d093-4c7c-b023-1bed45d9b0ad">
                <ownedComment xmi:id="01fb17d3-2f95-485d-8e4d-a7775413b958" body="&lt;p>Acts as an holder for a transformation Result.&lt;/p>&#xA;&#xA;@author &lt;a href=&quot;Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;" annotatedElement="f56a1bba-35f7-416f-9870-394c40e12aa6"/>
                <interfaceRealization xmi:id="92e10eaf-d093-4c7c-b023-1bed45d9b0ad" name="" supplier="12a36eaa-20f1-4206-95b6-32de69f82fa0" client="f56a1bba-35f7-416f-9870-394c40e12aa6" contract="12a36eaa-20f1-4206-95b6-32de69f82fa0"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="f0deb717-6ebf-46dd-be7f-57417ec8a9fa" name="TemplatesHandler" isAbstract="true">
                <ownedComment xmi:id="46dc5c63-7eee-444b-b214-95f95064fea3" body="A SAX ContentHandler that may be used to process SAX&#xA;parse events (parsing transformation instructions) into a Templates object.&#xA;&#xA;&lt;p>Note that TemplatesHandler does not need to implement LexicalHandler.&lt;/p>&#xA;" annotatedElement="f0deb717-6ebf-46dd-be7f-57417ec8a9fa"/>
                <generalization xmi:id="deeb69e8-dfe5-421f-bce5-8581763206a5" isSubstitutable="true" general="a097ae78-9869-4a39-b48f-43ad9c449e2d"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="76cbd2cc-70c9-4d48-9f55-8ae6a3093245" name="TransformerHandler" isAbstract="true">
                <ownedComment xmi:id="4075ac3c-624d-483c-bfa5-f43f65da86ac" body="A TransformerHandler&#xA;listens for SAX ContentHandler parse events and transforms&#xA;them to a Result.&#xA;" annotatedElement="76cbd2cc-70c9-4d48-9f55-8ae6a3093245"/>
                <generalization xmi:id="f0722dc6-8f89-46c4-ba59-799a7a5ea797" isSubstitutable="true" general="a097ae78-9869-4a39-b48f-43ad9c449e2d"/>
                <generalization xmi:id="c8b7e465-115e-47e7-aaab-a6f3d50d9841" isSubstitutable="true" general="46729b7d-c666-4e77-9b74-2b65b543837e"/>
                <generalization xmi:id="1743f613-4d2d-4502-8545-f80e5c9381de" isSubstitutable="true" general="be7e6eeb-a6c0-4743-809a-50b2c3167d14"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="afc7f0a3-3f6e-4df8-8ff4-c7748e551f13" name="SAXSource" clientDependency="ee349a77-4c36-4358-8fae-a4bda4f8e1a9">
                <ownedComment xmi:id="7aa4d276-38fc-435f-be72-be534c8be6f6" body="&lt;p>Acts as an holder for SAX-style Source.&lt;/p>&#xA;&#xA;&lt;p>Note that XSLT requires namespace support. Attempting to transform an&#xA;input source that is not&#xA;generated with a namespace-aware parser may result in errors.&#xA;Parsers can be made namespace aware by calling the&#xA;{@link javax.xml.parsers.SAXParserFactory#setNamespaceAware(boolean awareness)} method.&lt;/p>&#xA;&#xA;@author &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.7.14.1.2.2 $, $Date: 2004/07/13 22:27:50 $&#xA;" annotatedElement="afc7f0a3-3f6e-4df8-8ff4-c7748e551f13"/>
                <interfaceRealization xmi:id="ee349a77-4c36-4358-8fae-a4bda4f8e1a9" name="" supplier="cae542c5-3f6b-4fdb-8910-70d9aa2054f8" client="afc7f0a3-3f6e-4df8-8ff4-c7748e551f13" contract="cae542c5-3f6b-4fdb-8910-70d9aa2054f8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="dff75702-af31-48d5-9f9c-2307995ae784" name="SAXTransformerFactory" isAbstract="true">
                <ownedComment xmi:id="b59d7a71-ba84-4a8e-87c3-11cd3e3a6e51" body="This class extends TransformerFactory to provide SAX-specific&#xA;factory methods.  It provides two types of ContentHandlers,&#xA;one for creating Transformers, the other for creating Templates&#xA;objects.&#xA;&#xA;&lt;p>If an application wants to set the ErrorHandler or EntityResolver&#xA;for an XMLReader used during a transformation, it should use a URIResolver&#xA;to return the SAXSource which provides (with getXMLReader) a reference to&#xA;the XMLReader.&lt;/p>&#xA;" annotatedElement="dff75702-af31-48d5-9f9c-2307995ae784"/>
                <generalization xmi:id="9d913aee-a79c-47b7-8906-603b24a4f1f2" isSubstitutable="true" general="0c30cac5-8f84-41a0-9585-82c18ac673a0"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="0f5f3923-7b15-4b49-92b8-be4cec49fa68" name="URIResolver" isAbstract="true">
              <ownedComment xmi:id="3bbcdb06-79d1-4b65-8b6f-a68d6a80f426" body="&lt;p>An object that implements this interface that can be called by the processor&#xA;to turn a URI used in document(), xsl:import, or xsl:include into a Source object.&#xA;" annotatedElement="0f5f3923-7b15-4b49-92b8-be4cec49fa68"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="947edff5-5ac7-4cff-ab93-765450b68456" name="Templates" isAbstract="true">
              <ownedComment xmi:id="4c25cf37-5003-43ac-a6e9-a88d2adc9ebf" body="An object that implements this interface is the runtime representation of processed&#xA;transformation instructions.&#xA;&#xA;&lt;p>Templates must be threadsafe for a given instance&#xA;over multiple threads running concurrently, and may&#xA;be used multiple times in a given session.&lt;/p>&#xA;" annotatedElement="947edff5-5ac7-4cff-ab93-765450b68456"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="88e981e8-c797-4e25-9e82-5af09b4f1bab" name="dom">
              <packagedElement xmi:type="uml:Class" xmi:id="b66e36be-66e1-4d37-892f-d11bdf362016" name="DOMSource" clientDependency="ab4c32a6-b57d-468a-b131-427fbe49f1a5">
                <ownedComment xmi:id="fd7b8416-88a1-4589-86d1-aa906167e7bf" body="&lt;p>Acts as a holder for a transformation Source tree in the&#xA;form of a Document Object Model (DOM) tree.&lt;/p>&#xA;&#xA;&lt;p>Note that XSLT requires namespace support. Attempting to transform a DOM&#xA;that was not contructed with a namespace-aware parser may result in errors.&#xA;Parsers can be made namespace aware by calling&#xA;{@link javax.xml.parsers.DocumentBuilderFactory#setNamespaceAware(boolean awareness)}.&lt;/p>&#xA;&#xA;@author &lt;a href=&quot;Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.5.14.1.2.2 $, $Date: 2004/07/13 22:27:49 $&#xA;@see &lt;a href=&quot;http://www.w3.org/TR/DOM-Level-2&quot;>Document Object Model (DOM) Level 2 Specification&lt;/a>&#xA;" annotatedElement="b66e36be-66e1-4d37-892f-d11bdf362016"/>
                <interfaceRealization xmi:id="ab4c32a6-b57d-468a-b131-427fbe49f1a5" name="" supplier="cae542c5-3f6b-4fdb-8910-70d9aa2054f8" client="b66e36be-66e1-4d37-892f-d11bdf362016" contract="cae542c5-3f6b-4fdb-8910-70d9aa2054f8"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Interface" xmi:id="ac6e51c1-997c-4ae0-ab48-e0a90a441d4b" name="DOMLocator" isAbstract="true">
                <ownedComment xmi:id="dc6ee89d-5024-4054-b365-fdef8a4f9538" body="Indicates the position of a node in a source DOM, intended&#xA;primarily for error reporting.  To use a DOMLocator, the receiver of an&#xA;error must downcast the {@link javax.xml.transform.SourceLocator}&#xA;object returned by an exception. A {@link javax.xml.transform.Transformer}&#xA;may use this object for purposes other than error reporting, for instance,&#xA;to indicate the source node that originated a result node.&#xA;" annotatedElement="ac6e51c1-997c-4ae0-ab48-e0a90a441d4b"/>
                <generalization xmi:id="8c57d883-99f8-4509-a6ec-c93dfd0aee86" isSubstitutable="true" general="d1980827-330b-48a2-86a7-3e2df9f43b5e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="5b1b7326-d50a-4142-9bdf-416b0afbf39d" name="DOMResult" clientDependency="00c54593-d7b2-4133-9922-2d90d49f1a48">
                <ownedComment xmi:id="3661250d-0e35-4e9f-8d23-83eb26b45043" body="&lt;p>Acts as a holder for a transformation result tree in the form of a Document Object Model (DOM) tree.&lt;/p>&#xA;&#xA;&lt;p>If no output DOM source is set, the transformation will create a Document node as the holder for the result of the transformation,&#xA;which may be retrieved with {@link #getNode()}.&lt;/p>&#xA;&#xA;@author &lt;a href=&quot;Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.4.16.5 $, $Date: 2004/07/13 22:27:49 $&#xA;" annotatedElement="5b1b7326-d50a-4142-9bdf-416b0afbf39d"/>
                <interfaceRealization xmi:id="00c54593-d7b2-4133-9922-2d90d49f1a48" name="" supplier="12a36eaa-20f1-4206-95b6-32de69f82fa0" client="5b1b7326-d50a-4142-9bdf-416b0afbf39d" contract="12a36eaa-20f1-4206-95b6-32de69f82fa0"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="ca8aeec8-f15e-4f81-b74d-af025009e486" name="TransformerException">
              <ownedComment xmi:id="9910a752-7f19-4b60-a390-6c3e8d40b321" body="This class specifies an exceptional condition that occured&#xA;during the transformation process.&#xA;" annotatedElement="ca8aeec8-f15e-4f81-b74d-af025009e486"/>
              <generalization xmi:id="724887db-a91e-4eca-a011-674fa8a42ae9" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="ba185537-0ff3-4c17-8636-a8ba93d86dd4" name="stream">
              <packagedElement xmi:type="uml:Class" xmi:id="2f377c87-282b-4e62-a488-8d4ffaed1039" name="StreamResult" clientDependency="b3b1c102-4970-4e53-ae98-6ae3b89df1ab">
                <ownedComment xmi:id="31239e78-6281-43c0-9ad7-f38b88ca2237" body="&lt;p>Acts as an holder for a transformation result,&#xA;which may be XML, plain Text, HTML, or some other form of markup.&lt;/p>&#xA;&#xA;@author &lt;a href=&quot;Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;" annotatedElement="2f377c87-282b-4e62-a488-8d4ffaed1039"/>
                <interfaceRealization xmi:id="b3b1c102-4970-4e53-ae98-6ae3b89df1ab" name="" supplier="12a36eaa-20f1-4206-95b6-32de69f82fa0" client="2f377c87-282b-4e62-a488-8d4ffaed1039" contract="12a36eaa-20f1-4206-95b6-32de69f82fa0"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="df328946-36ef-4f63-9c12-86cfc2a7b6eb" name="StreamSource" clientDependency="76f8e532-8e7d-4bea-8845-43b946211626">
                <ownedComment xmi:id="f756fc95-e0b6-4aa0-b65d-0420cf07e4dc" body="&lt;p>Acts as an holder for a transformation Source in the form&#xA;of a stream of XML markup.&lt;/p>&#xA;&#xA;&lt;p>&lt;em>Note:&lt;/em> Due to their internal use of either a {@link Reader} or {@link InputStream} instance,&#xA;&lt;code>StreamSource&lt;/code> instances may only be used once.&lt;/p>&#xA;&#xA;@author &lt;a href=&quot;Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.6.12.3 $, $Date: 2004/07/13 22:27:51 $&#xA;" annotatedElement="df328946-36ef-4f63-9c12-86cfc2a7b6eb"/>
                <interfaceRealization xmi:id="76f8e532-8e7d-4bea-8845-43b946211626" name="" supplier="cae542c5-3f6b-4fdb-8910-70d9aa2054f8" client="df328946-36ef-4f63-9c12-86cfc2a7b6eb" contract="cae542c5-3f6b-4fdb-8910-70d9aa2054f8"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="94999573-9457-466a-a0d2-b6042918bdf6" name="Transformer" isAbstract="true">
              <ownedComment xmi:id="15b59bf5-a2b9-43a6-91e5-c1760813c53c" body="An instance of this abstract class can transform a&#xA;source tree into a result tree.&#xA;&#xA;&lt;p>An instance of this class can be obtained with the&#xA;{@link TransformerFactory#newTransformer TransformerFactory.newTransformer}&#xA;method. This instance may then be used to process XML from a&#xA;variety of sources and write the transformation output to a&#xA;variety of sinks.&lt;/p>&#xA;&#xA;&lt;p>An object of this class may not be used in multiple threads&#xA;running concurrently.  Different Transformers may be used&#xA;concurrently by different threads.&lt;/p>&#xA;&#xA;&lt;p>A &lt;code>Transformer&lt;/code> may be used multiple times.  Parameters and&#xA;output properties are preserved across transformations.&lt;/p>&#xA;&#xA;@author &lt;a href=&quot;Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.9.14.1.2.4 $, $Date: 2004/06/28 18:45:41 $&#xA;" annotatedElement="94999573-9457-466a-a0d2-b6042918bdf6"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="efe1fdc9-fa11-423d-9117-41bdd75ea04d" name="XMLConstants" isLeaf="true">
            <ownedComment xmi:id="ff750e1b-b7de-4cac-aec7-2d732f0851b6" body="&lt;p>Utility class to contain basic XML values as constants.&lt;/p>&#xA;&#xA;@author &lt;a href=&quot;mailto:Jeff.Suttor@Sun.com&quot;>Jeff Suttor&lt;/a>&#xA;@version $Revision: 1.10.12.1 $, $Date: 2004/05/05 20:04:51 $&#xA;@see &lt;a href=&quot;http://www.w3.org/TR/xml11/&quot;>Extensible Markup Language (XML) 1.1&lt;/a>&#xA;@see &lt;a href=&quot;http://www.w3.org/TR/REC-xml&quot;>Extensible Markup Language (XML) 1.0 (Second Edition)&lt;/a>&#xA;@see &lt;a href=&quot;http://www.w3.org/XML/xml-V10-2e-errata&quot;>XML 1.0 Second Edition Specification Errata&lt;/a>&#xA;@see &lt;a href=&quot;http://www.w3.org/TR/xml-names11/&quot;>Namespaces in XML 1.1&lt;/a>&#xA;@see &lt;a href=&quot;http://www.w3.org/TR/REC-xml-names&quot;>Namespaces in XML&lt;/a>&#xA;@see &lt;a href=&quot;http://www.w3.org/XML/xml-names-19990114-errata&quot;>Namespaces in XML Errata&lt;/a>&#xA;@see &lt;a href=&quot;http://www.w3.org/TR/xmlschema-1/&quot;>XML Schema Part 1: Structures&lt;/a>&#xA;@since 1.5&#xA;" annotatedElement="efe1fdc9-fa11-423d-9117-41bdd75ea04d"/>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="55183412-d2f9-4058-a33a-5f559b73f880" name="sound">
          <packagedElement xmi:type="uml:Package" xmi:id="fc5d4e60-5b15-436b-be80-e31f5ef0eb15" name="midi">
            <packagedElement xmi:type="uml:Class" xmi:id="005e4c05-6b1f-4acf-b561-90c92e8ba396" name="InvalidMidiDataException">
              <ownedComment xmi:id="299bddfa-ddec-486d-aca7-4f61440983b0" body="An &lt;code>InvalidMidiDataException&lt;/code> indicates that inappropriate MIDI&#xA;data was encountered. This often means that the data is invalid in and of&#xA;itself, from the perspective of the MIDI specification.  An example would&#xA;be an undefined status byte.  However, the exception might simply&#xA;mean that the data was invalid in the context it was used, or that&#xA;the object to which the data was given was unable to parse or use it.&#xA;For example, a file reader might not be able to parse a Type 2 MIDI file, even&#xA;though that format is defined in the MIDI specification.&#xA;&#xA;@version 1.11, 12/19/03&#xA;@author Kara Kytle&#xA;" annotatedElement="005e4c05-6b1f-4acf-b561-90c92e8ba396"/>
              <generalization xmi:id="3bd2f277-f865-4287-bbbe-383f7cc7e1e2" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="1587717e-c5a2-487a-9023-66e40f015e41" name="Sequencer" isAbstract="true">
              <ownedComment xmi:id="d7d484aa-012f-47df-a305-ccae3800e0ac" body="A hardware or software device that plays back a MIDI&#xA;&lt;code>{@link Sequence sequence}&lt;/code> is known as a &lt;em>sequencer&lt;/em>.&#xA;A MIDI sequence contains lists of time-stamped MIDI data, such as&#xA;might be read from a standard MIDI file.  Most&#xA;sequencers also provide functions for creating and editing sequences.&#xA;&lt;p>&#xA;The &lt;code>Sequencer&lt;/code> interface includes methods for the following&#xA;basic MIDI sequencer operations:&#xA;&lt;ul>&#xA;&lt;li>obtaining a sequence from MIDI file data&lt;/li>&#xA;&lt;li>starting and stopping playback&lt;/li>&#xA;&lt;li>moving to an arbitrary position in the sequence&lt;/li>&#xA;&lt;li>changing the tempo (speed) of playback&lt;/li>&#xA;&lt;li>synchronizing playback to an internal clock or to received MIDI&#xA;messages&lt;/li>&#xA;&lt;li>controlling the timing of another device&lt;/li>&#xA;&lt;/ul>&#xA;In addition, the following operations are supported, either directly, or&#xA;indirectly through objects that the &lt;code>Sequencer&lt;/code> has access to:&#xA;&lt;ul>&#xA;&lt;li>editing the data by adding or deleting individual MIDI events or entire&#xA;tracks&lt;/li>&#xA;&lt;li>muting or soloing individual tracks in the sequence&lt;/li>&#xA;&lt;li>notifying listener objects about any meta-events or&#xA;control-change events encountered while playing back the sequence.&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;@see Sequencer.SyncMode&#xA;@see #addMetaEventListener&#xA;@see ControllerEventListener&#xA;@see Receiver&#xA;@see Transmitter&#xA;@see MidiDevice&#xA;&#xA;@version 1.36, 03/12/19&#xA;@author Kara Kytle&#xA;@author Florian Bomers&#xA;" annotatedElement="1587717e-c5a2-487a-9023-66e40f015e41"/>
              <generalization xmi:id="fb2dface-58fe-4453-b201-0733bba68c02" isSubstitutable="true" general="89b1190b-fd95-44e9-a098-82a724bdd47c"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="e5545fb4-d7c3-4bf1-8347-2bb50c0086e3" name="SyncMode">
                <ownedComment xmi:id="b5926fec-6721-4d88-9104-6ffcd9241888" body="A &lt;code>SyncMode&lt;/code> object represents one of the ways in which&#xA;a MIDI sequencer's notion of time can be synchronized with a master&#xA;or slave device.&#xA;If the sequencer is being synchronized to a master, the&#xA;sequencer revises its current time in response to messages from&#xA;the master.  If the sequencer has a slave, the sequencer&#xA;similarly sends messages to control the slave's timing.&#xA;&lt;p>&#xA;There are three predefined modes that specify possible masters&#xA;for a sequencer: &lt;code>INTERNAL_CLOCK&lt;/code>,&#xA;&lt;code>MIDI_SYNC&lt;/code>, and &lt;code>MIDI_TIME_CODE&lt;/code>.  The&#xA;latter two work if the sequencer receives MIDI messages from&#xA;another device.  In these two modes, the sequencer's time gets reset&#xA;based on system real-time timing clock messages or MIDI time code&#xA;(MTC) messages, respectively.  These two modes can also be used&#xA;as slave modes, in which case the sequencer sends the corresponding&#xA;types of MIDI messages to its receiver (whether or not the sequencer&#xA;is also receiving them from a master).  A fourth mode,&#xA;&lt;code>NO_SYNC&lt;/code>, is used to indicate that the sequencer should&#xA;not control its receiver's timing.&#xA;&#xA;@see Sequencer#setMasterSyncMode(Sequencer.SyncMode)&#xA;@see Sequencer#setSlaveSyncMode(Sequencer.SyncMode)&#xA;" annotatedElement="e5545fb4-d7c3-4bf1-8347-2bb50c0086e3"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="4f200087-eb80-4315-bfbd-021dfa3345ad" name="Receiver" isAbstract="true">
              <ownedComment xmi:id="4c2ed8b5-e72e-4133-8607-80bc188e5a4a" body="A &lt;code>Receiver&lt;/code> receives &lt;code>{@link MidiEvent}&lt;/code> objects and&#xA;typically does something useful in response, such as interpreting them to&#xA;generate sound or raw MIDI output.  Common MIDI receivers include&#xA;synthesizers and MIDI Out ports.&#xA;&#xA;@see MidiDevice&#xA;@see Synthesizer&#xA;@see Transmitter&#xA;&#xA;@version 1.21, 03/12/19&#xA;@author Kara Kytle&#xA;" annotatedElement="4f200087-eb80-4315-bfbd-021dfa3345ad"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="f7a47607-2b18-4b4a-9b0e-26e251ba87c1" name="SoundbankResource" isAbstract="true">
              <ownedComment xmi:id="bfb2d56f-3258-4c50-93f0-052a1dd383d1" body="A &lt;code>SoundbankResource&lt;/code> represents any audio resource stored&#xA;in a &lt;code>{@link Soundbank}&lt;/code>.  Common soundbank resources include:&#xA;&lt;ul>&#xA;&lt;li>Instruments.  An instrument may be specified in a variety of&#xA;ways.  However, all soundbanks have some mechanism for defining&#xA;instruments.  In doing so, they may reference other resources&#xA;stored in the soundbank.  Each instrument has a &lt;code>Patch&lt;/code>&#xA;which specifies the MIDI program and bank by which it may be&#xA;referenced in MIDI messages.  Instrument information may be&#xA;stored in &lt;code>{@link Instrument}&lt;/code> objects.&#xA;&lt;li>Audio samples.  A sample typically is a sampled audio waveform&#xA;which contains a short sound recording whose duration is a fraction of&#xA;a second, or at most a few seconds.  These audio samples may be&#xA;used by a &lt;code>{@link Synthesizer}&lt;/code> to synthesize sound in response to MIDI&#xA;commands, or extracted for use by an application.&#xA;(The terminology reflects musicians' use of the word &quot;sample&quot; to refer&#xA;collectively to a series of contiguous audio samples or frames, rather than&#xA;to a single, instantaneous sample.)&#xA;The data class for an audio sample will be an object&#xA;that encapsulates the audio sample data itself and information&#xA;about how to interpret it (the format of the audio data), such&#xA;as an &lt;code>{@link javax.sound.sampled.AudioInputStream}&lt;/code>.&#x9;&lt;/li>&#xA;&lt;li>Embedded sequences.  A sound bank may contain built-in&#xA;song data stored in a data object such as a &lt;code>{@link Sequence}&lt;/code>.&#xA;&lt;/ul>&#xA;&lt;p>&#xA;Synthesizers that use wavetable synthesis or related&#xA;techniques play back the audio in a sample when&#xA;synthesizing notes, often when emulating the real-world instrument that&#xA;was originally recorded.  However, there is not necessarily a one-to-one&#xA;correspondence between the &lt;code>Instruments&lt;/code> and samples&#xA;in a &lt;code>Soundbank&lt;/code>.  A single &lt;code>Instrument&lt;/code> can use&#xA;multiple SoundbankResources (typically for notes of dissimilar pitch or&#xA;brightness).  Also, more than one &lt;code>Instrument&lt;/code> can use the same&#xA;sample.&#xA;&#xA;@version 1.15, 04/05/05&#xA;@author Kara Kytle&#xA;" annotatedElement="f7a47607-2b18-4b4a-9b0e-26e251ba87c1"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="437c4d3f-c90b-40fc-8a6e-6ae4b735987f" name="ControllerEventListener" isAbstract="true">
              <ownedComment xmi:id="d9836708-7aca-4a1b-be21-dbc34be3fcad" body="The &lt;code>ControllerEventListener&lt;/code> interface should be implemented&#xA;by classes whose instances need to be notified when a &lt;code>Sequencer&lt;/code>&#xA;has processed a requested type of MIDI control-change event.&#xA;To register a &lt;code>ControllerEventListener&lt;/code> object to receive such&#xA;notifications, invoke the&#xA;{@link Sequencer#addControllerEventListener(ControllerEventListener, int[])&#xA;addControllerEventListener} method of &lt;code>Sequencer&lt;/code>,&#xA;specifying the types of MIDI controllers about which you are interested in&#xA;getting control-change notifications.&#xA;&#xA;@see MidiChannel#controlChange(int, int)&#xA;&#xA;@version 1.15, 03/12/19&#xA;@author Kara Kytle&#xA;" annotatedElement="437c4d3f-c90b-40fc-8a6e-6ae4b735987f"/>
              <generalization xmi:id="7a32e700-d565-436d-8442-2aac349c1128" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9f5a5ee8-eb94-4314-a086-119f1df59e5b" name="Sequence">
              <ownedComment xmi:id="f1e97afe-1ad9-4040-a35b-8e5a13fae28a" body="A &lt;code>Sequence&lt;/code> is a data structure containing musical&#xA;information (often an entire song or composition) that can be played&#xA;back by a &lt;code>{@link Sequencer}&lt;/code> object. Specifically, the&#xA;&lt;code>Sequence&lt;/code> contains timing&#xA;information and one or more tracks.  Each &lt;code>{@link Track track}&lt;/code> consists of a&#xA;series of MIDI events (such as note-ons, note-offs, program changes, and meta-events).&#xA;The sequence's timing information specifies the type of unit that is used&#xA;to time-stamp the events in the sequence.&#xA;&lt;p>&#xA;A &lt;code>Sequence&lt;/code> can be created from a MIDI file by reading the file&#xA;into an input stream and invoking one of the &lt;code>getSequence&lt;/code> methods of&#xA;{@link MidiSystem}.  A sequence can also be built from scratch by adding new&#xA;&lt;code>Tracks&lt;/code> to an empty &lt;code>Sequence&lt;/code>, and adding&#xA;&lt;code>{@link MidiEvent}&lt;/code> objects to these &lt;code>Tracks&lt;/code>.&#xA;&#xA;@see Sequencer#setSequence(java.io.InputStream stream)&#xA;@see Sequencer#setSequence(Sequence sequence)&#xA;@see Track#add(MidiEvent)&#xA;@see MidiFileFormat&#xA;&#xA;@version 1.27, 04/05/05&#xA;@author Kara Kytle&#xA;" annotatedElement="9f5a5ee8-eb94-4314-a086-119f1df59e5b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8dc19533-4ed6-43b5-bada-05bbe9bcabb7" name="MidiSystem">
              <ownedComment xmi:id="028dc201-b1c2-4dcf-8b57-89f811764b78" body="The &lt;code>MidiSystem&lt;/code> class provides access to the installed MIDI&#xA;system resources, including devices such as synthesizers, sequencers, and&#xA;MIDI input and output ports.  A typical simple MIDI application might&#xA;begin by invoking one or more &lt;code>MidiSystem&lt;/code> methods to learn&#xA;what devices are installed and to obtain the ones needed in that&#xA;application.&#xA;&lt;p>&#xA;The class also has methods for reading files, streams, and  URLs that&#xA;contain standard MIDI file data or soundbanks.  You can query the&#xA;&lt;code>MidiSystem&lt;/code> for the format of a specified MIDI file.&#xA;&lt;p>&#xA;You cannot instantiate a &lt;code>MidiSystem&lt;/code>; all the methods are&#xA;static.&#xA;&#xA;&lt;p>Properties can be used to specify default MIDI devices.&#xA;Both system properties and a properties file are considered.&#xA;The properties file is &quot;lib/sound.properties&quot; in the JRE&#xA;directory. If a property exists both as a system property and in the&#xA;properties file, the system property takes precedence. If none is&#xA;specified, a suitable default is chosen among the available devices.&#xA;The syntax of the properties file is specified in&#xA;{@link java.util.Properties#load(InputStream) Properties.load}. The&#xA;following table lists the available property keys and which methods&#xA;consider them:&#xA;&#xA;&lt;table border=0>&#xA;&lt;tr>&#xA;&lt;th>Property Key&lt;/th>&#xA;&lt;th>Interface&lt;/th>&#xA;&lt;th>Affected Method&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>javax.sound.midi.Receiver&lt;/code>&lt;/td>&#xA;&lt;td>{@link Receiver}&lt;/td>&#xA;&lt;td>{@link #getReceiver}&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>javax.sound.midi.Sequencer&lt;/code>&lt;/td>&#xA;&lt;td>{@link Sequencer}&lt;/td>&#xA;&lt;td>{@link #getSequencer}&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>javax.sound.midi.Synthesizer&lt;/code>&lt;/td>&#xA;&lt;td>{@link Synthesizer}&lt;/td>&#xA;&lt;td>{@link #getSynthesizer}&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>javax.sound.midi.Transmitter&lt;/code>&lt;/td>&#xA;&lt;td>{@link Transmitter}&lt;/td>&#xA;&lt;td>{@link #getTransmitter}&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&#xA;The property value consists of the provider class name&#xA;and the device name, separated by the hash mark (&quot;#&quot;).&#xA;The provider class name is the fully-qualified&#xA;name of a concrete {@link javax.sound.midi.spi.MidiDeviceProvider&#xA;MIDI device provider} class. The device name is matched against&#xA;the &lt;code>String&lt;/code> returned by the &lt;code>getName&lt;/code>&#xA;method of &lt;code>MidiDevice.Info&lt;/code>.&#xA;Either the class name, or the device name may be omitted.&#xA;If only the class name is specified, the trailing hash mark&#xA;is optional.&#xA;&#xA;&lt;p>If the provider class is specified, and it can be&#xA;successully retrieved from the installed providers,&#xA;the list of&#xA;&lt;code>MidiDevice.Info&lt;/code> objects is retrieved&#xA;from the provider. Otherwise, or when these devices&#xA;do not provide a subsequent match, the list is retrieved&#xA;from {@link #getMidiDeviceInfo} to contain&#xA;all available &lt;code>MidiDevice.Info&lt;/code> objects.&#xA;&#xA;&lt;p>If a device name is specified, the resulting list of&#xA;&lt;code>MidiDevice.Info&lt;/code> objects is searched:&#xA;the first one with a matching name, and whose&#xA;&lt;code>MidiDevice&lt;/code> implements the&#xA;respective interface, will be returned.&#xA;If no matching &lt;code>MidiDevice.Info&lt;/code> object&#xA;is found, or the device name is not specified,&#xA;the first suitable device from the resulting&#xA;list will be returned. For Sequencer and Synthesizer,&#xA;a device is suitable if it implements the respective&#xA;interface; whereas for Receiver and Transmitter, a device is&#xA;suitable if it&#xA;implements neither Sequencer nor Synthesizer and provides&#xA;at least one Receiver or Transmitter, respectively.&#xA;&#xA;For example, the property &lt;code>javax.sound.midi.Receiver&lt;/code>&#xA;with a value&#xA;&lt;code>&quot;com.sun.media.sound.MidiProvider#SunMIDI1&quot;&lt;/code>&#xA;will have the following consequences when&#xA;&lt;code>getReceiver&lt;/code> is called:&#xA;if the class &lt;code>com.sun.media.sound.MidiProvider&lt;/code> exists&#xA;in the list of installed MIDI device providers,&#xA;the first &lt;code>Receiver&lt;/code> device with name&#xA;&lt;code>&quot;SunMIDI1&quot;&lt;/code> will be returned. If it cannot&#xA;be found, the first &lt;code>Receiver&lt;/code> from that provider&#xA;will be returned, regardless of name.&#xA;If there is none, the first &lt;code>Receiver&lt;/code> with name&#xA;&lt;code>&quot;SunMIDI1&quot;&lt;/code> in the list of all devices&#xA;(as returned by &lt;code>getMidiDeviceInfo&lt;/code>) will be returned,&#xA;or, if not found, the first &lt;code>Receiver&lt;/code> that can&#xA;be found in the list of all devices is returned.&#xA;If that fails, too, a &lt;code>MidiUnavailableException&lt;/code>&#xA;is thrown.&#xA;&#xA;@version 1.66, 04/04/15&#xA;@author Kara Kytle&#xA;@author Florian Bomers&#xA;@author Matthias Pfisterer&#xA;" annotatedElement="8dc19533-4ed6-43b5-bada-05bbe9bcabb7"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="68b9a0e3-5538-4b45-8902-496a0071dc5a" name="MidiFileFormat">
              <ownedComment xmi:id="3d04ef76-d93a-41cd-bcd8-8dab2aedf56e" body="A &lt;code>MidiFileFormat&lt;/code> object encapsulates a MIDI file's&#xA;type, as well as its length and timing information.&#xA;&#xA;&lt;p>A &lt;code>MidiFileFormat&lt;/code> object can&#xA;include a set of properties. A property is a pair of key and value:&#xA;the key is of type &lt;code>String&lt;/code>, the associated property&#xA;value is an arbitrary object.&#xA;Properties specify additional informational&#xA;meta data (like a author, or copyright).&#xA;Properties are optional information, and file reader and file&#xA;writer implementations are not required to provide or&#xA;recognize properties.&#xA;&#xA;&lt;p>The following table lists some common properties that should&#xA;be used in implementations:&#xA;&#xA;&lt;table border=1>&#xA;&lt;tr>&#xA;&lt;th>Property key&lt;/th>&#xA;&lt;th>Value type&lt;/th>&#xA;&lt;th>Description&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&quot;author&quot;&lt;/td>&#xA;&lt;td>{@link java.lang.String String}&lt;/td>&#xA;&lt;td>name of the author of this file&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&quot;title&quot;&lt;/td>&#xA;&lt;td>{@link java.lang.String String}&lt;/td>&#xA;&lt;td>title of this file&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&quot;copyright&quot;&lt;/td>&#xA;&lt;td>{@link java.lang.String String}&lt;/td>&#xA;&lt;td>copyright message&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&quot;date&quot;&lt;/td>&#xA;&lt;td>{@link java.util.Date Date}&lt;/td>&#xA;&lt;td>date of the recording or release&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&quot;comment&quot;&lt;/td>&#xA;&lt;td>{@link java.lang.String String}&lt;/td>&#xA;&lt;td>an arbitrary text&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&#xA;@see MidiSystem#getMidiFileFormat(java.io.File)&#xA;@see Sequencer#setSequence(java.io.InputStream stream)&#xA;&#xA;@version 1.17, 03/12/19&#xA;@author Kara Kytle&#xA;@author Florian Bomers&#xA;" annotatedElement="68b9a0e3-5538-4b45-8902-496a0071dc5a"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="60987b7e-ac78-4b3f-ba7a-76128eff4ed7" name="MidiEvent">
              <ownedComment xmi:id="87a83237-d9f6-4e8b-9aa7-52551b5ee2df" body="MIDI events contain a MIDI message and a corresponding time-stamp&#xA;expressed in ticks, and can represent the MIDI event information&#xA;stored in a MIDI file or a &lt;code>{@link Sequence}&lt;/code> object.  The&#xA;duration of a tick is specified by the timing information contained&#xA;in the MIDI file or &lt;code>Sequence&lt;/code> object.&#xA;&lt;p>&#xA;In Java Sound, &lt;code>MidiEvent&lt;/code> objects are typically contained in a&#xA;&lt;code>{@link Track}&lt;/code>, and &lt;code>Tracks&lt;/code> are likewise&#xA;contained in a &lt;code>Sequence&lt;/code>.&#xA;&#xA;&#xA;@version 1.10 03/12/19&#xA;@author David Rivas&#xA;@author Kara Kytle&#xA;" annotatedElement="60987b7e-ac78-4b3f-ba7a-76128eff4ed7"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="6c9be762-0359-4827-94f0-e6940b54642b" name="MetaMessage">
              <ownedComment xmi:id="a063d6bc-35a7-4060-a473-7d3e95472ff4" body="A &lt;code>MetaMessage&lt;/code> is a &lt;code>{@link MidiMessage}&lt;/code> that is not meaningful to synthesizers, but&#xA;that can be stored in a MIDI file and interpreted by a sequencer program.&#xA;(See the discussion in the &lt;code>MidiMessage&lt;/code>&#xA;class description.)  The Standard MIDI Files specification defines&#xA;various types of meta-events, such as sequence number, lyric, cue point,&#xA;and set tempo.  There are also meta-events&#xA;for such information as lyrics, copyrights, tempo indications, time and key&#xA;signatures, markers, etc.  For more information, see the Standard MIDI Files 1.0&#xA;specification, which is part of the Complete MIDI 1.0 Detailed Specification&#xA;published by the MIDI Manufacturer's Association&#xA;(&lt;a href = http://www.midi.org>http://www.midi.org&lt;/a>).&#xA;&#xA;&lt;p>&#xA;When data is being transported using MIDI wire protocol,&#xA;a &lt;code>{@link ShortMessage}&lt;/code> with the status value &lt;code>0xFF&lt;/code> represents&#xA;a system reset message.  In MIDI files, this same status value denotes a &lt;code>MetaMessage&lt;/code>.&#xA;The types of meta-message are distinguished from each other by the first byte&#xA;that follows the status byte &lt;code>0xFF&lt;/code>.  The subsequent bytes are data&#xA;bytes.  As with system exclusive messages, there are an arbitrary number of&#xA;data bytes, depending on the type of &lt;code>MetaMessage&lt;/code>.&#xA;&#xA;@see MetaEventListener&#xA;&#xA;@version 1.24, 03/12/19&#xA;@author David Rivas&#xA;@author Kara Kytle&#xA;" annotatedElement="6c9be762-0359-4827-94f0-e6940b54642b"/>
              <generalization xmi:id="52248c46-14f9-4293-b50d-f9bae0e5d00a" isSubstitutable="true" general="b6813194-584c-4ee4-a25a-106387b62837"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="fab0cb8b-4d80-4a77-8450-052ee9fad716" name="Transmitter" isAbstract="true">
              <ownedComment xmi:id="3c5b4b9b-bf7b-43e4-82da-079d4b3192a8" body="A &lt;code>Transmitter&lt;/code> sends &lt;code>{@link MidiEvent}&lt;/code> objects to one or more&#xA;&lt;code>{@link Receiver Receivers}&lt;/code>. Common MIDI transmitters include sequencers&#xA;and MIDI input ports.&#xA;&#xA;@see Receiver&#xA;&#xA;@version 1.22, 03/12/19&#xA;@author Kara Kytle&#xA;" annotatedElement="fab0cb8b-4d80-4a77-8450-052ee9fad716"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="891b6936-3dfd-4210-9ec4-210516fe1a73" name="Patch">
              <ownedComment xmi:id="f026361b-14cf-49cd-a471-3b3108f76e78" body="A &lt;code>Patch&lt;/code> object represents a location, on a MIDI&#xA;synthesizer, into which a single instrument is stored (loaded).&#xA;Every &lt;code>Instrument&lt;/code> object has its own &lt;code>Patch&lt;/code>&#xA;object that specifies the memory location&#xA;into which that instrument should be loaded. The&#xA;location is specified abstractly by a bank index and a program number (not by&#xA;any scheme that directly refers to a specific address or offset in RAM).&#xA;This is a hierarchical indexing scheme: MIDI provides for up to 16384 banks,&#xA;each of which contains up to 128 program locations.  For example, a&#xA;minimal sort of synthesizer might have only one bank of instruments, and&#xA;only 32 instruments (programs) in that bank.&#xA;&lt;p>&#xA;To select what instrument should play the notes on a particular MIDI&#xA;channel, two kinds of MIDI message are used that specify a patch location:&#xA;a bank-select command, and a program-change channel command.  The Java Sound&#xA;equivalent is the&#xA;{@link MidiChannel#programChange(int, int) programChange(int, int)}&#xA;method of &lt;code>MidiChannel&lt;/code>.&#xA;&#xA;@see Instrument&#xA;@see Instrument#getPatch()&#xA;@see MidiChannel#programChange(int, int)&#xA;@see Synthesizer#loadInstruments(Soundbank, Patch[])&#xA;@see Soundbank&#xA;@see Sequence#getPatchList()&#xA;&#xA;@author Kara Kytle&#xA;" annotatedElement="891b6936-3dfd-4210-9ec4-210516fe1a73"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b6813194-584c-4ee4-a25a-106387b62837" name="MidiMessage" clientDependency="045da44f-07e6-427a-8f2b-844359723a4d" isAbstract="true">
              <ownedComment xmi:id="aff154e6-4ca9-48a0-8577-a8e4c6430a5a" body="&lt;code>MidiMessage&lt;/code> is the base class for MIDI messages.  They include&#xA;not only the standard MIDI messages that a synthesizer can respond to, but also&#xA;&quot;meta-events&quot; that can be used by sequencer programs.  There are meta-events&#xA;for such information as lyrics, copyrights, tempo indications, time and key&#xA;signatures, markers, etc.  For more information, see the Standard MIDI Files 1.0&#xA;specification, which is part of the Complete MIDI 1.0 Detailed Specification&#xA;published by the MIDI Manufacturer's Association&#xA;(&lt;a href = http://www.midi.org>http://www.midi.org&lt;/a>).&#xA;&lt;p>&#xA;The base &lt;code>MidiMessage&lt;/code> class provides access to three types of&#xA;information about a MIDI message:&#xA;&lt;ul>&#xA;&lt;li>The messages's status byte&lt;/li>&#xA;&lt;li>The total length of the message in bytes (the status byte plus any data bytes)&lt;/li>&#xA;&lt;li>A byte array containing the complete message&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;&lt;code>MidiMessage&lt;/code> includes methods to get, but not set, these values.&#xA;Setting them is a subclass responsibility.&#xA;&lt;p>&#xA;&lt;a name=&quot;integersVsBytes&quot;>&lt;/a>&#xA;The MIDI standard expresses MIDI data in bytes.  However, because&#xA;Java&lt;sup>TM&lt;/sup> uses signed bytes, the Java Sound API uses integers&#xA;instead of bytes when expressing MIDI data.  For example, the&#xA;{@link #getStatus()} method of&#xA;&lt;code>MidiMessage&lt;/code> returns MIDI status bytes as integers.  If you are&#xA;processing MIDI data that originated outside Java Sound and now&#xA;is encoded as signed bytes, the bytes can&#xA;can be converted to integers using this conversion:&#xA;&lt;center>&lt;code>int i = (int)(byte &amp; 0xFF)&lt;/code>&lt;/center>&#xA;&lt;p>&#xA;If you simply need to pass a known MIDI byte value as a method parameter,&#xA;it can be expressed directly as an integer, using (for example) decimal or&#xA;hexidecimal notation.  For instance, to pass the &quot;active sensing&quot; status byte&#xA;as the first argument to ShortMessage's&#xA;{@link ShortMessage#setMessage(int) setMessage(int)}&#xA;method, you can express it as 254 or 0xFE.&#xA;&#xA;@see Track&#xA;@see Sequence&#xA;@see Receiver&#xA;&#xA;@version 1.29, 03/12/19&#xA;@author David Rivas&#xA;@author Kara Kytle&#xA;" annotatedElement="b6813194-584c-4ee4-a25a-106387b62837"/>
              <interfaceRealization xmi:id="045da44f-07e6-427a-8f2b-844359723a4d" name="" supplier="2221a66a-f41d-45b3-9bf0-09796b003ada" client="b6813194-584c-4ee4-a25a-106387b62837" contract="2221a66a-f41d-45b3-9bf0-09796b003ada"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d2ccacda-f4bc-4a3f-982b-7cc9a297cee1" name="Synthesizer" isAbstract="true">
              <ownedComment xmi:id="191a343f-de45-44ce-afe1-6c5d7add3b93" body="A &lt;code>Synthesizer&lt;/code> generates sound.  This usually happens when one of&#xA;the &lt;code>Synthesizer&lt;/code>'s {@link MidiChannel} objects receives a&#xA;{@link MidiChannel#noteOn(int, int) noteOn} message, either&#xA;directly or via the &lt;code>Synthesizer&lt;/code> object.&#xA;Many &lt;code>Synthesizer&lt;/code>s support &lt;code>Receivers&lt;/code>, through which&#xA;MIDI events can be delivered to the &lt;code>Synthesizer&lt;/code>.&#xA;In such cases, the &lt;code>Synthesizer&lt;/code> typically responds by sending&#xA;a corresponding message to the appropriate &lt;code>MidiChannel&lt;/code>, or by&#xA;processing the event itself if the event isn't one of the MIDI channel&#xA;messages.&#xA;&lt;p>&#xA;The &lt;code>Synthesizer&lt;/code> interface includes methods for loading and&#xA;unloading instruments from soundbanks.  An instrument is a specification for synthesizing a&#xA;certain type of sound, whether that sound emulates a traditional instrument or is&#xA;some kind of sound effect or other imaginary sound. A soundbank is a collection of instruments, organized&#xA;by bank and program number (via the instrument's &lt;code>Patch&lt;/code> object).&#xA;Different &lt;code>Synthesizer&lt;/code> classes might implement different sound-synthesis&#xA;techniques, meaning that some instruments and not others might be compatible with a&#xA;given synthesizer.&#xA;Also, synthesizers may have a limited amount of memory for instruments, meaning&#xA;that not every soundbank and instrument can be used by every synthesizer, even if&#xA;the synthesis technique is compatible.&#xA;To see whether the instruments from&#xA;a certain soundbank can be played by a given synthesizer, invoke the&#xA;{@link #isSoundbankSupported(Soundbank) isSoundbankSupported} method of&#xA;&lt;code>Synthesizer&lt;/code>.&#xA;&lt;p>&#xA;&quot;Loading&quot; an instrument means that that instrument becomes available for&#xA;synthesizing notes.  The instrument is loaded into the bank and&#xA;program location specified by its &lt;code>Patch&lt;/code> object.  Loading does&#xA;not necessarily mean that subsequently played notes will immediately have&#xA;the sound of this newly loaded instrument.  For the instrument to play notes,&#xA;one of the synthesizer's &lt;code>MidiChannel&lt;/code> objects must receive (or have received)&#xA;a program-change message that causes that particular instrument's&#xA;bank and program number to be selected.&#xA;&#xA;@see MidiSystem#getSynthesizer&#xA;@see Soundbank&#xA;@see Instrument&#xA;@see MidiChannel#programChange(int, int)&#xA;@see Receiver&#xA;@see Transmitter&#xA;@see MidiDevice&#xA;&#xA;@version 1.27, 03/12/19&#xA;@author Kara Kytle&#xA;" annotatedElement="d2ccacda-f4bc-4a3f-982b-7cc9a297cee1"/>
              <generalization xmi:id="e95ccef2-06da-4fa7-8e4a-1ebd3c56c75b" isSubstitutable="true" general="89b1190b-fd95-44e9-a098-82a724bdd47c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="89b1190b-fd95-44e9-a098-82a724bdd47c" name="MidiDevice" isAbstract="true">
              <ownedComment xmi:id="383d15dc-d8ee-4397-a818-0d62faef04d0" body="&lt;code>MidiDevice&lt;/code> is the base interface for all MIDI devices.&#xA;Common devices include synthesizers, sequencers, MIDI input ports, and MIDI&#xA;output ports.&#xA;&#xA;&lt;p>A &lt;code>MidiDevice&lt;/code> can be a transmitter or a receiver of&#xA;MIDI events, or both. Therefore, it can provide {@link Transmitter}&#xA;or {@link Receiver} instances (or both). Typically, MIDI IN ports&#xA;provide transmitters, MIDI OUT ports and synthesizers provide&#xA;receivers. A Sequencer typically provides transmitters for playback&#xA;and receivers for recording.&#xA;&#xA;&lt;p>A &lt;code>MidiDevice&lt;/code> can be opened and closed explicitly as&#xA;well as implicitly. Explicit opening is accomplished by calling&#xA;{@link #open}, explicit closing is done by calling {@link&#xA;#close} on the &lt;code>MidiDevice&lt;/code> instance.&#xA;If an application opens a &lt;code>MidiDevice&lt;/code>&#xA;explicitly, it has to close it explicitly to free system resources&#xA;and enable the application to exit cleanly. Implicit opening is&#xA;done by calling {@link javax.sound.midi.MidiSystem#getReceiver&#xA;MidiSystem.getReceiver} and {@link&#xA;javax.sound.midi.MidiSystem#getTransmitter&#xA;MidiSystem.getTransmitter}. The &lt;code>MidiDevice&lt;/code> used by&#xA;&lt;code>MidiSystem.getReceiver&lt;/code> and&#xA;&lt;code>MidiSystem.getTransmitter&lt;/code> is implementation-dependant&#xA;unless the properties &lt;code>javax.sound.midi.Receiver&lt;/code>&#xA;and &lt;code>javax.sound.midi.Transmitter&lt;/code> are used (see the&#xA;description of properties to select default providers in&#xA;{@link javax.sound.midi.MidiSystem}). A &lt;code>MidiDevice&lt;/code>&#xA;that was opened implicitly, is closed implicitly by closing the&#xA;&lt;code>Receiver&lt;/code> or &lt;code>Transmitter&lt;/code> that resulted in&#xA;opening it. If more than one implicitly opening&#xA;&lt;code>Receiver&lt;/code> or &lt;code>Transmitter&lt;/code> were obtained by&#xA;the application, the decive is closed after the last&#xA;&lt;code>Receiver&lt;/code> or &lt;code>Transmitter&lt;/code> has been&#xA;closed. On the other hand, calling &lt;code>getReceiver&lt;/code> or&#xA;&lt;code>getTransmitter&lt;/code> on the device instance directly does&#xA;not open the device implicitly. Closing these&#xA;&lt;code>Transmitter&lt;/code>s and &lt;code>Receiver&lt;/code>s does not close&#xA;the device implicitly. To use a device with &lt;code>Receiver&lt;/code>s&#xA;or &lt;code>Transmitter&lt;/code>s obtained this way, the device has to&#xA;be opened and closed explicitly.&#xA;&#xA;&lt;p>If implicit and explicit opening and closing are mixed on the&#xA;same &lt;code>MidiDevice&lt;/code> instance, the following rules apply:&#xA;&#xA;&lt;ul>&#xA;&lt;li>After an explicit open (either before or after implicit&#xA;opens), the device will not be closed by implicit closing. The only&#xA;way to close an explicitly opened device is an explicit close.&lt;/li>&#xA;&#xA;&lt;li>An explicit close always closes the device, even if it also has&#xA;been opened implicitly. A subsequent implicit close has no further&#xA;effect.&lt;/li>&#xA;&lt;/ul>&#xA;&#xA;To detect if a MidiDevice represents a hardware MIDI port, the&#xA;following programming technique can be used:&#xA;&#xA;&lt;pre>&#xA;MidiDevice device = ...;&#xA;if ( ! (device instanceof Sequencer) &amp;&amp; ! (device instanceof Synthesizer)) {&#xA;we're now sure that device represents a MIDI port&#xA;...&#xA;}&#xA;&lt;/pre>&#xA;&#xA;&lt;p>&#xA;A &lt;code>MidiDevice&lt;/code> includes a &lt;code>{@link MidiDevice.Info}&lt;/code> object&#xA;to provide manufacturer information and so on.&#xA;&#xA;@see Synthesizer&#xA;@see Sequencer&#xA;@see Receiver&#xA;@see Transmitter&#xA;&#xA;@version 1.38, 03/12/19&#xA;@author Kara Kytle&#xA;@author Florian Bomers&#xA;" annotatedElement="89b1190b-fd95-44e9-a098-82a724bdd47c"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="e3b9639d-e305-4410-b3be-80d98f19ef79" name="Info">
                <ownedComment xmi:id="5701d7ec-eb4e-4d08-8886-c251576f0c40" body="A &lt;code>MidiDevice.Info&lt;/code> object contains assorted&#xA;data about a &lt;code>{@link MidiDevice}&lt;/code>, including its&#xA;name, the company who created it, and descriptive text.&#xA;&#xA;@see MidiDevice#getDeviceInfo&#xA;" annotatedElement="e3b9639d-e305-4410-b3be-80d98f19ef79"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="9c6c0b30-ce6c-4519-8697-f283954ef750" name="spi">
              <packagedElement xmi:type="uml:Class" xmi:id="f6181bcb-7c9e-4eca-a3be-332b83ad4b10" name="MidiFileReader" isAbstract="true">
                <ownedComment xmi:id="6aea02db-b2f2-4adc-bca7-65c05d029b16" body="A &lt;code>MidiFileReader&lt;/code> supplies MIDI file-reading services.  Classes implementing this&#xA;interface can parse the format information from one or more types of&#xA;MIDI file, and can produce a &lt;code>Sequence&lt;/code> object from files of these types.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.13 03/12/19&#xA;@since 1.3&#xA;" annotatedElement="f6181bcb-7c9e-4eca-a3be-332b83ad4b10"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="27ffe5c2-ddbd-40b5-8e65-4be7a3ea7043" name="SoundbankReader" isAbstract="true">
                <ownedComment xmi:id="ae0ce07e-c340-48eb-a463-3338fd4165b0" body="A &lt;code>SoundbankReader&lt;/code> supplies soundbank file-reading services.&#xA;Concrete subclasses of &lt;code>SoundbankReader&lt;/code> parse a given&#xA;soundbank file, producing a {@link javax.sound.midi.Soundbank}&#xA;object that can be loaded into a {@link javax.sound.midi.Synthesizer}.&#xA;&#xA;@since 1.3&#xA;@version 1.18 03/12/19&#xA;@author Kara Kytle&#xA;" annotatedElement="27ffe5c2-ddbd-40b5-8e65-4be7a3ea7043"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="31843a37-fefd-4f25-8e90-b26a041434ab" name="MidiDeviceProvider" isAbstract="true">
                <ownedComment xmi:id="9b2321fe-a780-4e51-b128-ac16919072f7" body="A &lt;code>MidiDeviceProvider&lt;/code> is a factory or provider for a particular&#xA;type of MIDI device.&#xA;This mechanism allows the implementation to determine&#xA;how resources are managed in the creation and management of&#xA;a device.&#xA;&#xA;@version 1.19 03/12/19&#xA;@author Kara Kytle&#xA;" annotatedElement="31843a37-fefd-4f25-8e90-b26a041434ab"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="74dc9c78-df30-4568-8fd0-3f5efb0cc956" name="MidiFileWriter" isAbstract="true">
                <ownedComment xmi:id="327fce2a-fd55-41cb-ae30-efa07f5a7284" body="A &lt;code>MidiFileWriter&lt;/code> supplies MIDI file-writing services.  Classes&#xA;that implement this interface can write one or more types of MIDI file from&#xA;a &lt;code>{@link Sequence}&lt;/code> object.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.17, 03/12/19&#xA;@since 1.3&#xA;" annotatedElement="74dc9c78-df30-4568-8fd0-3f5efb0cc956"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="7663deef-1dde-4d07-bf63-28224866f109" name="MetaEventListener" isAbstract="true">
              <ownedComment xmi:id="2d228c48-f923-4ebd-bc21-658508b5926f" body="The &lt;code>MetaEventListener&lt;/code> interface should be implemented&#xA;by classes whose instances need to be notified when a &lt;code>{@link Sequencer}&lt;/code>&#xA;has processed a &lt;code>{@link MetaMessage}&lt;/code>.&#xA;To register a &lt;code>MetaEventListener&lt;/code> object to receive such&#xA;notifications, pass it as the argument to the&#xA;&lt;code>{@link Sequencer#addMetaEventListener(MetaEventListener) addMetaEventListener}&lt;/code>&#xA;method of &lt;code>Sequencer&lt;/code>.&#xA;&#xA;@version 1.16, 03/12/19&#xA;@author Kara Kytle&#xA;" annotatedElement="7663deef-1dde-4d07-bf63-28224866f109"/>
              <generalization xmi:id="7f47389d-b792-4b18-b95f-938028606388" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="2fe2c879-4f39-4473-8c38-99f2218a468f" name="Soundbank" isAbstract="true">
              <ownedComment xmi:id="0783bde2-6c77-4e5d-94eb-7d163dd506bc" body="A &lt;code>Soundbank&lt;/code> contains a set of &lt;code>Instruments&lt;/code>&#xA;that can be loaded into a &lt;code>Synthesizer&lt;/code>.&#xA;Note that a Java Sound &lt;code>Soundbank&lt;/code> is different from a MIDI bank.&#xA;MIDI permits up to 16383 banks, each containing up to 128 instruments&#xA;(also sometimes called programs, patches, or timbres).&#xA;However, a &lt;code>Soundbank&lt;/code> can contain 16383 times 128 instruments,&#xA;because the instruments within a &lt;code>Soundbank&lt;/code> are indexed by both&#xA;a MIDI program number and a MIDI bank number (via a &lt;code>Patch&lt;/code>&#xA;object). Thus, a &lt;code>Soundbank&lt;/code> can be thought of as a collection&#xA;of MIDI banks.&#xA;&lt;p>&#xA;&lt;code>Soundbank&lt;/code> includes methods that return &lt;code>String&lt;/code>&#xA;objects containing the sound bank's name, manufacturer, version number, and&#xA;description.  The precise content and format of these strings is left&#xA;to the implementor.&#xA;&lt;p>&#xA;Different synthesizers use a variety of synthesis techniques.  A common&#xA;one is wavetable synthesis, in which a segment of recorded sound is&#xA;played back, often with looping and pitch change.  The Downloadable Sound&#xA;(DLS) format uses segments of recorded sound, as does the Headspace Engine.&#xA;&lt;code>Soundbanks&lt;/code> and &lt;code>Instruments&lt;/code> that are based on&#xA;wavetable synthesis (or other uses of stored sound recordings) should&#xA;typically implement the &lt;code>getResources()&lt;/code>&#xA;method to provide access to these recorded segments.  This is optional,&#xA;however; the method can return an zero-length array if the synthesis technique&#xA;doesn't use sampled sound (FM synthesis and physical modeling are examples&#xA;of such techniques), or if it does but the implementor chooses not to make the&#xA;samples accessible.&#xA;&#xA;@see Synthesizer#getDefaultSoundbank&#xA;@see Synthesizer#isSoundbankSupported&#xA;@see Synthesizer#loadInstruments(Soundbank, Patch[])&#xA;@see Patch&#xA;@see Instrument&#xA;@see SoundbankResource&#xA;&#xA;@version 1.24, 03/12/19&#xA;@author David Rivas&#xA;@author Kara Kytle&#xA;" annotatedElement="2fe2c879-4f39-4473-8c38-99f2218a468f"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="c174a706-9184-4553-92a8-dde17d10a456" name="MidiUnavailableException">
              <ownedComment xmi:id="bfd4f7fb-5130-44a0-99ef-43807d80c2ca" body="A &lt;code>MidiUnavailableException&lt;/code> is thrown when a requested MIDI&#xA;component cannot be opened or created because it is unavailable.  This often&#xA;occurs when a device is in use by another application.  More generally, it&#xA;can occur when there is a finite number of a certain kind of resource that can&#xA;be used for some purpose, and all of them are already in use (perhaps all by&#xA;this application).  For an example of the latter case, see the&#xA;{@link Transmitter#setReceiver(Receiver) setReceiver} method of&#xA;&lt;code>Transmitter&lt;/code>.&#xA;&#xA;@version 1.13, 12/19/03&#xA;@author Kara Kytle&#xA;" annotatedElement="c174a706-9184-4553-92a8-dde17d10a456"/>
              <generalization xmi:id="881658ae-df13-4c5f-88ca-6211a12fd0cd" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b61db05e-7766-401b-8706-d1a806bcb71a" name="Track">
              <ownedComment xmi:id="4b9b331b-4455-41f1-9431-1652d73c1138" body="A MIDI track is an independent stream of MIDI events (time-stamped MIDI&#xA;data) that can be stored along with other tracks in a standard MIDI file.&#xA;The MIDI specification allows only 16 channels of MIDI data, but tracks&#xA;are a way to get around this limitation.  A MIDI file can contain any number&#xA;of tracks, each containing its own stream of up to 16 channels of MIDI data.&#xA;&lt;p>&#xA;A &lt;code>Track&lt;/code> occupies a middle level in the hierarchy of data played&#xA;by a &lt;code>{@link Sequencer}&lt;/code>: sequencers play sequences, which contain tracks,&#xA;which contain MIDI events.  A sequencer may provide controls that mute&#xA;or solo individual tracks.&#xA;&lt;p>&#xA;The timing information and resolution for a track is controlled by and stored&#xA;in the sequence containing the track. A given &lt;code>Track&lt;/code>&#xA;is considered to belong to the particular &lt;code>{@link Sequence}&lt;/code> that&#xA;maintains its timing. For this reason, a new (empty) track is created by calling the&#xA;&lt;code>{@link Sequence#createTrack}&lt;/code> method, rather than by directly invoking a&#xA;&lt;code>Track&lt;/code> constructor.&#xA;&lt;p>&#xA;The &lt;code>Track&lt;/code> class provides methods to edit the track by adding&#xA;or removing &lt;code>MidiEvent&lt;/code> objects from it.  These operations keep&#xA;the event list in the correct time order.  Methods are also&#xA;included to obtain the track's size, in terms of either the number of events&#xA;it contains or its duration in ticks.&#xA;&#xA;@see Sequencer#setTrackMute&#xA;@see Sequencer#setTrackSolo&#xA;&#xA;@version 1.22, 03/12/19&#xA;@author Kara Kytle&#xA;@author Florian Bomers&#xA;" annotatedElement="b61db05e-7766-401b-8706-d1a806bcb71a"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="7f1db5d7-9cce-468e-887d-b62f93ecfe09" name="ImmutableEndOfTrack" visibility="private">
                <generalization xmi:id="7c0c2ce0-1421-4496-a26f-1ef25d5494de" isSubstitutable="true" general="6c9be762-0359-4827-94f0-e6940b54642b"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="16507d3c-60d6-4fad-9a3f-a6294bfbdc1b" name="VoiceStatus">
              <ownedComment xmi:id="8c5b4852-373a-479e-8027-5134b213e40b" body="A &lt;code>VoiceStatus&lt;/code> object contains information about the current&#xA;status of one of the voices produced by a {@link Synthesizer}.&#xA;&lt;p>&#xA;MIDI synthesizers are generally capable of producing some maximum number of&#xA;simultaneous notes, also referred to as voices.  A voice is a stream&#xA;of successive single notes, and the process of assigning incoming MIDI notes to&#xA;specific voices is known as voice allocation.&#xA;However, the voice-allocation algorithm and the contents of each voice are&#xA;normally internal to a MIDI synthesizer and hidden from outside view.  One can, of&#xA;course, learn from MIDI messages which notes the synthesizer is playing, and&#xA;one might be able deduce something about the assignment of notes to voices.&#xA;But MIDI itself does not provide a means to report which notes a&#xA;synthesizer has assigned to which voice, nor even to report how many voices&#xA;the synthesizer is capable of synthesizing.&#xA;&lt;p>&#xA;In Java Sound, however, a&#xA;&lt;code>Synthesizer&lt;/code> class can expose the contents of its voices through its&#xA;{@link Synthesizer#getVoiceStatus() getVoiceStatus()} method.&#xA;This behavior is recommended but optional;&#xA;synthesizers that don't expose their voice allocation simply return a&#xA;zero-length array. A &lt;code>Synthesizer&lt;/code> that does report its voice status&#xA;should maintain this information at&#xA;all times for all of its voices, whether they are currently sounding or&#xA;not.  In other words, a given type of &lt;code>Synthesizer&lt;/code> always has a fixed&#xA;number of voices, equal to the maximum number of simultaneous notes it is&#xA;capable of sounding.&#xA;&lt;p>&#xA;&lt;A NAME=&quot;description_of_active&quot;>&lt;/A>&#xA;If the voice is not currently processing a MIDI note, it&#xA;is considered inactive.  A voice is inactive when it has&#xA;been given no note-on commands, or when every note-on command received has&#xA;been terminated by a corresponding note-off (or by an &quot;all notes off&quot;&#xA;message).  For example, this happens when a synthesizer capable of playing 16&#xA;simultaneous notes is told to play a four-note chord; only&#xA;four voices are active in this case (assuming no earlier notes are still playing).&#xA;Usually, a voice whose status is reported as active is producing audible sound, but this&#xA;is not always true; it depends on the details of the instrument (that&#xA;is, the synthesis algorithm) and how long the note has been going on.&#xA;For example, a voice may be synthesizing the sound of a single hand-clap.  Because&#xA;this sound dies away so quickly, it may become inaudible before a note-off&#xA;message is received.  In such a situation, the voice is still considered active&#xA;even though no sound is currently being produced.&#xA;&lt;p>&#xA;Besides its active or inactive status, the &lt;code>VoiceStatus&lt;/code> class&#xA;provides fields that reveal the voice's current MIDI channel, bank and&#xA;program number, MIDI note number, and MIDI volume.  All of these can&#xA;change during the course of a voice.  While the voice is inactive, each&#xA;of these fields has an unspecified value, so you should check the active&#xA;field first.&#xA;&#xA;@see Synthesizer#getMaxPolyphony&#xA;@see Synthesizer#getVoiceStatus&#xA;&#xA;@version 1.18, 12/19/03&#xA;@author David Rivas&#xA;@author Kara Kytle&#xA;" annotatedElement="16507d3c-60d6-4fad-9a3f-a6294bfbdc1b"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="e3624c53-be60-40dd-8e92-368faabe31db" name="Instrument" isAbstract="true">
              <ownedComment xmi:id="6c9458b0-96e8-4855-a223-ca86fd48f3a5" body="An instrument is a sound-synthesis algorithm with certain parameter&#xA;settings, usually designed to emulate a specific real-world&#xA;musical instrument or to achieve a specific sort of sound effect.&#xA;Instruments are typically stored in collections called soundbanks.&#xA;Before the instrument can be used to play notes, it must first be loaded&#xA;onto a synthesizer, and then it must be selected for use on&#xA;one or more channels, via a program-change command.  MIDI notes&#xA;that are subsequently received on those channels will be played using&#xA;the sound of the selected instrument.&#xA;&#xA;@see Soundbank&#xA;@see Soundbank#getInstruments&#xA;@see Patch&#xA;@see Synthesizer#loadInstrument(Instrument)&#xA;@see MidiChannel#programChange(int, int)&#xA;@version 1.16, 04/05/05&#xA;@author Kara Kytle&#xA;" annotatedElement="e3624c53-be60-40dd-8e92-368faabe31db"/>
              <generalization xmi:id="11fe072e-75f0-401a-9a71-33c871004d01" isSubstitutable="true" general="f7a47607-2b18-4b4a-9b0e-26e251ba87c1"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="11fe03eb-04b8-4d7f-bb9d-a184e57615a8" name="SysexMessage">
              <ownedComment xmi:id="db84e04b-7186-4cd4-b46c-447507977ea7" body="A &lt;code>SysexMessage&lt;/code> object represents a MIDI system exclusive message.&#xA;&lt;p>&#xA;When a system exclusive message is read from a MIDI file, it always has&#xA;a defined length.  Data from a system exclusive message from a MIDI file&#xA;should be stored in the data array of a &lt;code>SysexMessage&lt;/code> as&#xA;follows: the system exclusive message status byte (0xF0 or 0xF7), all&#xA;message data bytes, and finally the end-of-exclusive flag (0xF7).&#xA;The length reported by the &lt;code>SysexMessage&lt;/code> object is therefore&#xA;the length of the system exclusive data plus two: one byte for the status&#xA;byte and one for the end-of-exclusive flag.&#xA;&lt;p>&#xA;As dictated by the Standard MIDI Files specification, two status byte values are legal&#xA;for a &lt;code>SysexMessage&lt;/code> read from a MIDI file:&#xA;&lt;ul>&#xA;&lt;li>0xF0: System Exclusive message (same as in MIDI wire protocol)&lt;/li>&#xA;&lt;li>0xF7: Special System Exclusive message&lt;/li>&#xA;&lt;/ul>&#xA;&lt;p>&#xA;When Java Sound is used to handle system exclusive data that is being received&#xA;using MIDI wire protocol, it should place the data in one or more&#xA;&lt;code>SysexMessages&lt;/code>.  In this case, the length of the system exclusive data&#xA;is not known in advance; the end of the system exclusive data is marked by an&#xA;end-of-exclusive flag (0xF7) in the MIDI wire byte stream.&#xA;&lt;ul>&#xA;&lt;li>0xF0: System Exclusive message (same as in MIDI wire protocol)&lt;/li>&#xA;&lt;li>0xF7: End of Exclusive (EOX)&lt;/li>&#xA;&lt;/ul>&#xA;The first &lt;code>SysexMessage&lt;/code> object containing data for a particular system&#xA;exclusive message should have the status value 0xF0.  If this message contains all&#xA;the system exclusive data&#xA;for the message, it should end with the status byte 0xF7 (EOX).&#xA;Otherwise, additional system exclusive data should be sent in one or more&#xA;&lt;code>SysexMessages&lt;/code> with a status value of 0xF7.  The &lt;code>SysexMessage&lt;/code>&#xA;containing the last of the data for the system exclusive message should end with the&#xA;value 0xF7 (EOX) to mark the end of the system exclusive message.&#xA;&lt;p>&#xA;If system exclusive data from &lt;code>SysexMessages&lt;/code> objects is being transmitted&#xA;using MIDI wire protocol, only the initial 0xF0 status byte, the system exclusive&#xA;data itself, and the final 0xF7 (EOX) byte should be propagated; any 0xF7 status&#xA;bytes used to indicate that a &lt;code>SysexMessage&lt;/code> contains continuing system&#xA;exclusive data should not be propagated via MIDI wire protocol.&#xA;&#xA;@version 1.26, 03/12/19&#xA;@author David Rivas&#xA;@author Kara Kytle&#xA;@author Florian Bomers&#xA;" annotatedElement="11fe03eb-04b8-4d7f-bb9d-a184e57615a8"/>
              <generalization xmi:id="0f7bca78-daad-4702-8581-3d75d3fdd43a" isSubstitutable="true" general="b6813194-584c-4ee4-a25a-106387b62837"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="1f26dc30-3a28-4f34-abf5-f5a51200ad4b" name="ShortMessage">
              <ownedComment xmi:id="23b0a391-3d57-4503-988a-22ab46c0560a" body="A &lt;code>ShortMessage&lt;/code> contains a MIDI message that has at most&#xA;two data bytes following its status byte.  The types of MIDI message&#xA;that satisfy this criterion are channel voice, channel mode, system common,&#xA;and system real-time--in other words, everything except system exclusive&#xA;and meta-events.  The &lt;code>ShortMessage&lt;/code> class provides methods&#xA;for getting and setting the contents of the MIDI message.&#xA;&lt;p>&#xA;A number of &lt;code>ShortMessage&lt;/code> methods have integer parameters by which&#xA;you specify a MIDI status or data byte.  If you know the numeric value, you&#xA;can express it directly.  For system common and system real-time messages,&#xA;you can often use the corresponding fields of &lt;code>ShortMessage&lt;/code>, such as&#xA;{@link #SYSTEM_RESET SYSTEM_RESET}.  For channel messages,&#xA;the upper four bits of the status byte are specified by a command value and&#xA;the lower four bits are specified by a MIDI channel number. To&#xA;convert incoming MIDI data bytes that are in the form of Java's signed bytes,&#xA;you can use the &lt;A HREF=&quot;MidiMessage.html#integersVsBytes&quot;>conversion code&lt;/A>&#xA;given in the &lt;code>{@link MidiMessage}&lt;/code> class description.&#xA;&#xA;@see SysexMessage&#xA;@see MetaMessage&#xA;&#xA;@version 1.24, 03/12/19&#xA;@author David Rivas&#xA;@author Kara Kytle&#xA;@author Florian Bomers&#xA;" annotatedElement="1f26dc30-3a28-4f34-abf5-f5a51200ad4b"/>
              <generalization xmi:id="33442d17-0d7b-41b9-add7-b46fd55f97b2" isSubstitutable="true" general="b6813194-584c-4ee4-a25a-106387b62837"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d55d9289-08c8-4964-b555-5659aae032b7" name="MidiChannel" isAbstract="true">
              <ownedComment xmi:id="b1ae3c0d-f738-437c-a44a-9f4ba24277ae" body="A &lt;code>MidiChannel&lt;/code> object represents a single MIDI channel.&#xA;Generally, each &lt;code>MidiChannel&lt;/code> method processes a like-named MIDI&#xA;&quot;channel voice&quot; or &quot;channel mode&quot; message as defined by the MIDI specification. However,&#xA;&lt;code>MidiChannel&lt;/code> adds some &quot;get&quot; methods  that retrieve the value&#xA;most recently set by one of the standard MIDI channel messages.  Similarly,&#xA;methods for per-channel solo and mute have been added.&#xA;&lt;p>&#xA;A &lt;code>{@link Synthesizer}&lt;/code> object has a collection&#xA;of &lt;code>MidiChannels&lt;/code>, usually one for each of the 16 channels&#xA;prescribed by the MIDI 1.0 specification.  The &lt;code>Synthesizer&lt;/code>&#xA;generates sound when its &lt;code>MidiChannels&lt;/code> receive&#xA;&lt;code>noteOn&lt;/code> messages.&#xA;&lt;p>&#xA;See the MIDI 1.0 Specification for more information about the prescribed&#xA;behavior of the MIDI channel messages, which are not exhaustively&#xA;documented here.  The specification is titled &lt;code>MIDI Reference:&#xA;The Complete MIDI 1.0 Detailed Specification&lt;/code>, and is published by&#xA;the MIDI Manufacturer's Association (&lt;a href = http://www.midi.org>&#xA;http://www.midi.org&lt;/a>).&#xA;&lt;p>&#xA;MIDI was originally a protocol for reporting the gestures of a keyboard&#xA;musician.  This genesis is visible in the &lt;code>MidiChannel&lt;/code> API, which&#xA;preserves such MIDI concepts as key number, key velocity, and key pressure.&#xA;It should be understood that the MIDI data does not necessarily originate&#xA;with a keyboard player (the source could be a different kind of musician, or&#xA;software).  Some devices might generate constant values for velocity&#xA;and pressure, regardless of how the note was performed.&#xA;Also, the MIDI specification often leaves it up to the&#xA;synthesizer to use the data in the way the implementor sees fit.  For&#xA;example, velocity data need not always be mapped to volume and/or brightness.&#xA;&#xA;@see Synthesizer#getChannels&#xA;&#xA;@version 1.43, 04/22/04&#xA;@author David Rivas&#xA;@author Kara Kytle&#xA;" annotatedElement="d55d9289-08c8-4964-b555-5659aae032b7"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="f2846a2e-12cb-4931-984b-553e94f84d2e" name="sampled">
            <packagedElement xmi:type="uml:Class" xmi:id="dfd6ffb9-4b9f-40df-bc29-16bf6bafbce8" name="UnsupportedAudioFileException">
              <ownedComment xmi:id="3f6a9075-cfdc-47c3-9619-8c4db255a383" body="An &lt;code>UnsupportedAudioFileException&lt;/code> is an exception indicating that an&#xA;operation failed because a file did not contain valid data of a recognized file&#xA;type and format.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.9 03/12/19&#xA;@since 1.3&#xA;" annotatedElement="dfd6ffb9-4b9f-40df-bc29-16bf6bafbce8"/>
              <generalization xmi:id="7de127fa-289e-4e52-b7e8-cb1ffebd631e" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="01a0320b-9051-4053-b863-246d5f883419" name="Mixer" isAbstract="true">
              <ownedComment xmi:id="31a0ba08-28ba-4704-a560-fb2b558d28a8" body="A mixer is an audio device with one or more lines.  It need not be&#xA;designed for mixing audio signals.  A mixer that actually mixes audio&#xA;has multiple input (source) lines and at least one output (target) line.&#xA;The former are often instances of classes that implement&#xA;&lt;code>{@link SourceDataLine}&lt;/code>,&#xA;and the latter, &lt;code>{@link TargetDataLine}&lt;/code>.  &lt;code>{@link Port}&lt;/code>&#xA;objects, too, are either source lines or target lines.&#xA;A mixer can accept prerecorded, loopable sound as input, by having&#xA;some of its source lines be instances of objects that implement the&#xA;&lt;code>{@link Clip}&lt;/code> interface.&#xA;&lt;p>&#xA;Through methods of the &lt;code>Line&lt;/code> interface, which &lt;code>Mixer&lt;/code> extends,&#xA;a mixer might provide a set of controls that are global to the mixer.  For example,&#xA;the mixer can have a master gain control.  These global controls are distinct&#xA;from the controls belonging to each of the mixer's individual lines.&#xA;&lt;p>&#xA;Some mixers, especially&#xA;those with internal digital mixing capabilities, may provide&#xA;additional capabilities by implementing the &lt;code>DataLine&lt;/code> interface.&#xA;&lt;p>&#xA;A mixer can support synchronization of its lines.  When one line in&#xA;a synchronized group is started or stopped, the other lines in the group&#xA;automatically start or stop simultaneously with the explicitly affected one.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.31, 04/07/14&#xA;@since 1.3&#xA;" annotatedElement="01a0320b-9051-4053-b863-246d5f883419"/>
              <generalization xmi:id="78e2107d-2b2a-40fc-98d9-ec98faa08a06" isSubstitutable="true" general="6767217e-8309-4730-823d-5a8503e5842f"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="69cbfcf1-729a-4b5c-a1e2-b1084e0ecbd7" name="Info">
                <ownedComment xmi:id="867ac97b-5e2c-431e-b3bd-9f46ffac343c" body="The &lt;code>Mixer.Info&lt;/code> class represents information about an audio mixer,&#xA;including the product's name, version, and vendor, along with a textual&#xA;description.  This information may be retrieved through the&#xA;{@link Mixer#getMixerInfo() getMixerInfo}&#xA;method of the &lt;code>Mixer&lt;/code> interface.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.31, 04/07/14&#xA;@since 1.3&#xA;" annotatedElement="69cbfcf1-729a-4b5c-a1e2-b1084e0ecbd7"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="324a3936-9086-47f5-b6de-870bf2721865" name="FloatControl" isAbstract="true">
              <ownedComment xmi:id="0924c6ce-1607-4633-839f-563618dd5629" body="A &lt;code>FloatControl&lt;/code> object provides control over a range of&#xA;floating-point values.  Float controls are often&#xA;represented in graphical user interfaces by continuously&#xA;adjustable objects such as sliders or rotary knobs.  Concrete subclasses&#xA;of &lt;code>FloatControl&lt;/code> implement controls, such as gain and pan, that&#xA;affect a line's audio signal in some way that an application can manipulate.&#xA;The &lt;code>{@link FloatControl.Type}&lt;/code>&#xA;inner class provides static instances of types that are used to&#xA;identify some common kinds of float control.&#xA;&lt;p>&#xA;The &lt;code>FloatControl&lt;/code> abstract class provides methods to set and get&#xA;the control's current floating-point value.  Other methods obtain the possible&#xA;range of values and the control's resolution (the smallest increment between&#xA;returned values).  Some float controls allow ramping to a&#xA;new value over a specified period of time.  &lt;code>FloatControl&lt;/code> also&#xA;includes methods that return string labels for the minimum, maximum, and midpoint&#xA;positions of the control.&#xA;&#xA;@see Line#getControls&#xA;@see Line#isControlSupported&#xA;&#xA;@author David Rivas&#xA;@author Kara Kytle&#xA;@version 1.16, 03/12/19&#xA;@since 1.3&#xA;" annotatedElement="324a3936-9086-47f5-b6de-870bf2721865"/>
              <generalization xmi:id="d5d7bd96-7443-4606-9093-b39e7389e708" isSubstitutable="true" general="9cf27fa2-cd14-40f9-88f5-71034dd5581b"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="0e107c0d-de85-4507-a939-2314bc2a2757" name="Type">
                <ownedComment xmi:id="6592ddf5-40de-4d11-bd59-290e26818250" body="An instance of the &lt;code>FloatControl.Type&lt;/code> inner class identifies one kind of&#xA;float control.  Static instances are provided for the&#xA;common types.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.16, 03/12/19&#xA;@since 1.3&#xA;" annotatedElement="0e107c0d-de85-4507-a939-2314bc2a2757"/>
                <generalization xmi:id="d0e17c60-ee4f-4d40-9be7-8ee2960b8773" isSubstitutable="true" general="3ace97a2-b629-4e49-a08e-83b75987a7f6"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="60188b89-4f43-4e44-a07d-8b794a502396" name="SourceDataLine" isAbstract="true">
              <ownedComment xmi:id="40c34423-4b36-4930-82d6-232cf737beb0" body="A source data line is a data line to which data may be written.  It acts as&#xA;a source to its mixer. An application writes audio bytes to a source data line,&#xA;which handles the buffering of the bytes and delivers them to the mixer.&#xA;The mixer may mix the samples with those from other sources and then deliver&#xA;the mix to a target such as an output port (which may represent an audio output&#xA;device on a sound card).&#xA;&lt;p>&#xA;Note that the naming convention for this interface reflects the relationship&#xA;between the line and its mixer.  From the perspective of an application,&#xA;a source data line may act as a target for audio data.&#xA;&lt;p>&#xA;A source data line can be obtained from a mixer by invoking the&#xA;&lt;code>{@link Mixer#getLine getLine}&lt;/code> method of &lt;code>Mixer&lt;/code> with&#xA;an appropriate &lt;code>{@link DataLine.Info}&lt;/code> object.&#xA;&lt;p>&#xA;The &lt;code>SourceDataLine&lt;/code> interface provides a method for writing&#xA;audio data to the data line's buffer. Applications that play or mix&#xA;audio should write data to the source data line quickly enough to keep the&#xA;buffer from underflowing (emptying), which could cause discontinuities in&#xA;the audio that are perceived as clicks.  Applications can use the&#xA;&lt;code>{@link DataLine#available available}&lt;/code> method defined in the&#xA;&lt;code>DataLine&lt;/code> interface to determine the amount of data currently&#xA;queued in the data line's buffer.  The amount of data which can be written&#xA;to the buffer without blocking is the difference between the buffer size&#xA;and the amount of queued data.  If the delivery of audio output&#xA;stops due to underflow, a &lt;code>{@link LineEvent.Type#STOP STOP}&lt;/code> event is&#xA;generated.  A &lt;code>{@link LineEvent.Type#START START}&lt;/code> event is generated&#xA;when the audio output resumes.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.20 03/12/19&#xA;@see Mixer&#xA;@see DataLine&#xA;@see TargetDataLine&#xA;@since 1.3&#xA;" annotatedElement="60188b89-4f43-4e44-a07d-8b794a502396"/>
              <generalization xmi:id="fce82cb7-ac33-4c1d-b36a-99b271b67035" isSubstitutable="true" general="6cc99140-5150-4ff1-95a5-874dd2527fe6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="9cf27fa2-cd14-40f9-88f5-71034dd5581b" name="Control" isAbstract="true">
              <ownedComment xmi:id="f91f7660-0361-466c-879c-443545d1b3e5" body="{@link Line Lines} often have a set of controls, such as gain and pan, that affect&#xA;the audio signal passing through the line.  Java Sound's &lt;code>Line&lt;/code> objects&#xA;let you obtain a particular control object by passing its class as the&#xA;argument to a {@link Line#getControl(Control.Type) getControl} method.&#xA;&lt;p>&#xA;Because the various types of controls have different purposes and features,&#xA;all of their functionality is accessed from the subclasses that define&#xA;each kind of control.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.25, 03/12/19&#xA;&#xA;@see Line#getControls&#xA;@see Line#isControlSupported&#xA;@since 1.3&#xA;" annotatedElement="9cf27fa2-cd14-40f9-88f5-71034dd5581b"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="3ace97a2-b629-4e49-a08e-83b75987a7f6" name="Type">
                <ownedComment xmi:id="1090bdc0-5f8d-4369-b2bd-cbded5afe241" body="An instance of the &lt;code>Type&lt;/code> class represents the type of&#xA;the control.  Static instances are provided for the&#xA;common types.&#xA;" annotatedElement="3ace97a2-b629-4e49-a08e-83b75987a7f6"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="1145b64a-6346-4d81-a67e-e60e06ce4fb2" name="Port" isAbstract="true">
              <ownedComment xmi:id="1a3290df-4b71-4464-8eb0-57082f069f35" body="Ports are simple lines for input or output of audio to or from audio devices.&#xA;Common examples of ports that act as source lines (mixer inputs) include the microphone,&#xA;line input, and CD-ROM drive.  Ports that act as target lines (mixer outputs) include the&#xA;speaker, headphone, and line output.  You can access port using a &lt;code>{@link Port.Info}&lt;/code>&#xA;object.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.26, 04/05/05&#xA;@since 1.3&#xA;" annotatedElement="1145b64a-6346-4d81-a67e-e60e06ce4fb2"/>
              <generalization xmi:id="c8f92e0f-90de-494b-91d4-aed5c7b8fcb8" isSubstitutable="true" general="6767217e-8309-4730-823d-5a8503e5842f"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="1d4a75ad-8c0f-479b-b155-7064b528b8e2" name="Info">
                <ownedComment xmi:id="50ab0dde-88c4-4134-ad8e-815d9f57cc00" body="The &lt;code>Port.Info&lt;/code> class extends &lt;code>{@link Line.Info}&lt;/code>&#xA;with additional information specific to ports, including the port's name&#xA;and whether it is a source or a target for its mixer.&#xA;By definition, a port acts as either a source or a target to its mixer,&#xA;but not both.  (Audio input ports are sources; audio output ports are targets.)&#xA;&lt;p>&#xA;To learn what ports are available, you can retrieve port info objects through the&#xA;&lt;code>{@link Mixer#getSourceLineInfo getSourceLineInfo}&lt;/code> and&#xA;&lt;code>{@link Mixer#getTargetLineInfo getTargetLineInfo}&lt;/code>&#xA;methods of the &lt;code>Mixer&lt;/code> interface.  Instances of the&#xA;&lt;code>Port.Info&lt;/code> class may also be constructed and used to obtain&#xA;lines matching the parameters specified in the &lt;code>Port.Info&lt;/code> object.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.26, 04/05/05&#xA;@since 1.3&#xA;" annotatedElement="1d4a75ad-8c0f-479b-b155-7064b528b8e2"/>
                <generalization xmi:id="435bec28-6800-4dc9-badf-b069e0724e8e" isSubstitutable="true" general="f50ced04-5725-4a42-b962-ac8f8379c5a0"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="80b6dbf8-a264-4c7f-9533-3dd0cbd1288e" name="AudioSystem">
              <ownedComment xmi:id="a08e8c38-df79-4c5f-829e-51fd08d02625" body="The &lt;code>AudioSystem&lt;/code> class acts as the entry point to the&#xA;sampled-audio system resources. This class lets you query and&#xA;access the mixers that are installed on the system.&#xA;&lt;code>AudioSystem&lt;/code> includes a number of&#xA;methods for converting audio data between different formats, and for&#xA;translating between audio files and streams. It also provides a method&#xA;for obtaining a &lt;code>{@link Line}&lt;/code> directly from the&#xA;&lt;code>AudioSystem&lt;/code> without dealing explicitly&#xA;with mixers.&#xA;&#xA;&lt;p>Properties can be used to specify the default mixer&#xA;for specific line types.&#xA;Both system properties and a properties file are considered.&#xA;In the Sun reference implementation, the properties file is&#xA;&quot;lib/sound.properties&quot; in the JRE&#xA;directory. If a property exists both as a system property and in the&#xA;properties file, the system property takes precedence. If none is&#xA;specified, a suitable default is chosen among the available devices.&#xA;The syntax of the properties file is specified in&#xA;{@link java.util.Properties#load(InputStream) Properties.load}. The&#xA;following table lists the available property keys and which methods&#xA;consider them:&#xA;&#xA;&lt;table border=0>&#xA;&lt;tr>&#xA;&lt;th>Property Key&lt;/th>&#xA;&lt;th>Interface&lt;/th>&#xA;&lt;th>Affected Method(s)&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>javax.sound.sampled.Clip&lt;/code>&lt;/td>&#xA;&lt;td>{@link Clip}&lt;/td>&#xA;&lt;td>{@link #getLine}, {@link #getClip}&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>javax.sound.sampled.Port&lt;/code>&lt;/td>&#xA;&lt;td>{@link Port}&lt;/td>&#xA;&lt;td>{@link #getLine}&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>javax.sound.sampled.SourceDataLine&lt;/code>&lt;/td>&#xA;&lt;td>{@link SourceDataLine}&lt;/td>&#xA;&lt;td>{@link #getLine}, {@link #getSourceDataLine}&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&lt;code>javax.sound.sampled.TargetDataLine&lt;/code>&lt;/td>&#xA;&lt;td>{@link TargetDataLine}&lt;/td>&#xA;&lt;td>{@link #getLine}, {@link #getTargetDataLine}&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&#xA;The property value consists of the provider class name&#xA;and the mixer name, separated by the hash mark (&quot;#&quot;).&#xA;The provider class name is the fully-qualified&#xA;name of a concrete {@link javax.sound.sampled.spi.MixerProvider&#xA;mixer provider} class. The mixer name is matched against&#xA;the &lt;code>String&lt;/code> returned by the &lt;code>getName&lt;/code>&#xA;method of &lt;code>Mixer.Info&lt;/code>.&#xA;Either the class name, or the mixer name may be omitted.&#xA;If only the class name is specified, the trailing hash mark&#xA;is optional.&#xA;&#xA;&lt;p>If the provider class is specified, and it can be&#xA;successully retrieved from the installed providers, the list of&#xA;&lt;code>Mixer.Info&lt;/code> objects is retrieved&#xA;from the provider. Otherwise, or when these mixers&#xA;do not provide a subsequent match, the list is retrieved&#xA;from {@link #getMixerInfo} to contain&#xA;all available &lt;code>Mixer.Info&lt;/code> objects.&#xA;&#xA;&lt;p>If a mixer name is specified, the resulting list of&#xA;&lt;code>Mixer.Info&lt;/code> objects is searched:&#xA;the first one with a matching name, and whose&#xA;&lt;code>Mixer&lt;/code> provides the&#xA;respective line interface, will be returned.&#xA;If no matching &lt;code>Mixer.Info&lt;/code> object&#xA;is found, or the mixer name is not specified,&#xA;the first mixer from the resulting&#xA;list, which provides the respective line&#xA;interface, will be returned.&#xA;&#xA;For example, the property &lt;code>javax.sound.sampled.Clip&lt;/code>&#xA;with a value&#xA;&lt;code>&quot;com.sun.media.sound.MixerProvider#SunClip&quot;&lt;/code>&#xA;will have the following consequences when&#xA;&lt;code>getLine&lt;/code> is called requesting a &lt;code>Clip&lt;/code>&#xA;instance:&#xA;if the class &lt;code>com.sun.media.sound.MixerProvider&lt;/code> exists&#xA;in the list of installed mixer providers,&#xA;the first &lt;code>Clip&lt;/code> from the first mixer with name&#xA;&lt;code>&quot;SunClip&quot;&lt;/code> will be returned. If it cannot&#xA;be found, the first &lt;code>Clip&lt;/code> from the first mixer&#xA;of the specified provider will be returned, regardless of name.&#xA;If there is none, the first &lt;code>Clip&lt;/code> from the first&#xA;&lt;code>Mixer&lt;/code> with name&#xA;&lt;code>&quot;SunClip&quot;&lt;/code> in the list of all mixers&#xA;(as returned by &lt;code>getMixerInfo&lt;/code>) will be returned,&#xA;or, if not found, the first &lt;code>Clip&lt;/code> of the first&#xA;&lt;code>Mixer&lt;/code>that can be found in the list of all&#xA;mixers is returned.&#xA;If that fails, too, an &lt;code>IllegalArgumentException&lt;/code>&#xA;is thrown.&#xA;&#xA;@author Kara Kytle&#xA;@author Florian Bomers&#xA;@author Matthias Pfisterer&#xA;@author Kevin P. Smith&#xA;@version 1.81, 04/07/14&#xA;&#xA;@see AudioFormat&#xA;@see AudioInputStream&#xA;@see Mixer&#xA;@see Line&#xA;@see Line.Info&#xA;@since 1.3&#xA;" annotatedElement="80b6dbf8-a264-4c7f-9533-3dd0cbd1288e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="e9a28e72-c053-47a6-b4f8-f5df41eab877" name="TargetDataLine" isAbstract="true">
              <ownedComment xmi:id="17bbc850-55a3-4a75-8e3c-7831b8aca5df" body="A target data line is a type of &lt;code>{@link DataLine}&lt;/code> from which&#xA;audio data can be read.  The most common example is a data line that gets&#xA;its data from an audio capture device.  (The device is implemented as a&#xA;mixer that writes to the target data line.)&#xA;&lt;p>&#xA;Note that the naming convention for this interface reflects the relationship&#xA;between the line and its mixer.  From the perspective of an application,&#xA;a target data line may act as a source for audio data.&#xA;&lt;p>&#xA;The target data line can be obtained from a mixer by invoking the&#xA;&lt;code>{@link Mixer#getLine getLine}&lt;/code>&#xA;method of &lt;code>Mixer&lt;/code> with an appropriate&#xA;&lt;code>{@link DataLine.Info}&lt;/code> object.&#xA;&lt;p>&#xA;The &lt;code>TargetDataLine&lt;/code> interface provides a method for reading the&#xA;captured data from the target data line's buffer.Applications&#xA;that record audio should read data from the target data line quickly enough&#xA;to keep the buffer from overflowing, which could cause discontinuities in&#xA;the captured data that are perceived as clicks.  Applications can use the&#xA;&lt;code>{@link DataLine#available available}&lt;/code> method defined in the&#xA;&lt;code>DataLine&lt;/code> interface to determine the amount of data currently&#xA;queued in the data line's buffer.  If the buffer does overflow,&#xA;the oldest queued data is discarded and replaced by new data.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.20 03/12/19&#xA;@see Mixer&#xA;@see DataLine&#xA;@see SourceDataLine&#xA;@since 1.3&#xA;" annotatedElement="e9a28e72-c053-47a6-b4f8-f5df41eab877"/>
              <generalization xmi:id="715dea04-c7db-4085-9ddb-999255a80805" isSubstitutable="true" general="6cc99140-5150-4ff1-95a5-874dd2527fe6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="63730471-5a22-4e0b-9dde-21fa34fbfc9e" name="ReverbType">
              <ownedComment xmi:id="42f97cae-8e62-48e5-8a12-847bfb644d65" body="The &lt;code>ReverbType&lt;/code> class provides methods for&#xA;accessing various reverberation settings to be applied to&#xA;an audio signal.&#xA;&lt;p>&#xA;Reverberation simulates the reflection of sound off of&#xA;the walls, ceiling, and floor of a room.  Depending on&#xA;the size of the room, and how absorbent or reflective the materials in the&#xA;room's surfaces are, the sound might bounce around for a&#xA;long time before dying away.&#xA;&lt;p>&#xA;The reverberation parameters provided by &lt;code>ReverbType&lt;/code> consist&#xA;of the delay time and intensity of early reflections, the delay time and&#xA;intensity of late reflections, and an overall decay time.&#xA;Early reflections are the initial individual low-order reflections of the&#xA;direct signal off the surfaces in the room.&#xA;The late Relections are the dense, high-order reflections that characterize&#xA;the room's reverberation.&#xA;The delay times for the start of these two reflection types give the listener&#xA;a sense of the overall size and complexity of the room's shape and contents.&#xA;The larger the room, the longer the reflection delay times.&#xA;The early and late reflections' intensities define the gain (in decibels) of the reflected&#xA;signals as compared to the direct signal.  These intensities give the&#xA;listener an impression of the absorptive nature of the surfaces and objects&#xA;in the room.&#xA;The decay time defines how long the reverberation takes to exponentially&#xA;decay until it is no longer perceptible (&quot;effective zero&quot;).&#xA;The larger and less absorbent the surfaces, the longer the decay time.&#xA;&lt;p>&#xA;The set of parameters defined here may not include all aspects of reverberation&#xA;as specified by some systems.  For example, the Midi Manufacturer's Association&#xA;(MMA) has an Interactive Audio Special Interest Group (IASIG), which has a&#xA;3-D Working Group that has defined a Level 2 Spec (I3DL2).  I3DL2&#xA;supports filtering of reverberation and&#xA;control of reverb density.  These properties are not included in the JavaSound 1.0&#xA;definition of a reverb control.  In such a case, the implementing system&#xA;should either extend the defined reverb control to include additional&#xA;parameters, or else interpret the system's additional capabilities in a way that fits&#xA;the model described here.&#xA;&lt;p>&#xA;If implementing JavaSound on a I3DL2-compliant device:&#xA;&lt;ul>&#xA;&lt;li>Filtering is disabled (high-frequency attenuations are set to 0.0 dB)&#xA;&lt;li>Density parameters are set to midway between minimum and maximum&#xA;&lt;/ul>&#xA;&lt;p>&#xA;The following table shows what parameter values an implementation might use for a&#xA;representative set of reverberation settings.&#xA;&lt;p>&#xA;&#xA;&lt;b>Reverberation Types and Parameters&lt;/b>&#xA;&lt;p>&#xA;&lt;table border=1 cellpadding=5 summary=&quot;reverb types and params: decay time, late intensity, late delay, early intensity, and early delay&quot;>&#xA;&#xA;&lt;tr>&#xA;&lt;th>Type&lt;/th>&#xA;&lt;th>Decay Time (ms)&lt;/th>&#xA;&lt;th>Late Intensity (dB)&lt;/th>&#xA;&lt;th>Late Delay (ms)&lt;/th>&#xA;&lt;th>Early Intensity (dB)&lt;/th>&#xA;&lt;th>Early Delay(ms)&lt;/th>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>Cavern&lt;/td>&#xA;&lt;td>2250&lt;/td>&#xA;&lt;td>-2.0&lt;/td>&#xA;&lt;td>41.3&lt;/td>&#xA;&lt;td>-1.4&lt;/td>&#xA;&lt;td>10.3&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>Dungeon&lt;/td>&#xA;&lt;td>1600&lt;/td>&#xA;&lt;td>-1.0&lt;/td>&#xA;&lt;td>10.3&lt;/td>&#xA;&lt;td>-0.7&lt;/td>&#xA;&lt;td>2.6&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>Garage&lt;/td>&#xA;&lt;td>900&lt;/td>&#xA;&lt;td>-6.0&lt;/td>&#xA;&lt;td>14.7&lt;/td>&#xA;&lt;td>-4.0&lt;/td>&#xA;&lt;td>3.9&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>Acoustic Lab&lt;/td>&#xA;&lt;td>280&lt;/td>&#xA;&lt;td>-3.0&lt;/td>&#xA;&lt;td>8.0&lt;/td>&#xA;&lt;td>-2.0&lt;/td>&#xA;&lt;td>2.0&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>Closet&lt;/td>&#xA;&lt;td>150&lt;/td>&#xA;&lt;td>-10.0&lt;/td>&#xA;&lt;td>2.5&lt;/td>&#xA;&lt;td>-7.0&lt;/td>&#xA;&lt;td>0.6&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;/table>&#xA;&#xA;@author Kara Kytle&#xA;@version 1.13, 03/12/19&#xA;@since 1.3&#xA;" annotatedElement="63730471-5a22-4e0b-9dde-21fa34fbfc9e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="4498bd04-95a8-49bd-bd9d-ba69dfc4a888" name="BooleanControl" isAbstract="true">
              <ownedComment xmi:id="3cd1a980-c944-4a22-969c-f7112b0482a9" body="A &lt;code>BooleanControl&lt;/code> provides the ability to switch between&#xA;two possible settings that affect a line's audio.  The settings are boolean&#xA;values (&lt;code>true&lt;/code> and &lt;code>false&lt;/code>).  A graphical user interface&#xA;might represent the control by a two-state button, an on/off switch, two&#xA;mutually exclusive buttons, or a checkbox (among other possibilities).&#xA;For example, depressing a button might activate a&#xA;&lt;code>{@link BooleanControl.Type#MUTE MUTE}&lt;/code> control to silence&#xA;the line's audio.&#xA;&lt;p>&#xA;As with other &lt;code>{@link Control}&lt;/code> subclasses, a method is&#xA;provided that returns string labels for the values, suitable for&#xA;display in the user interface.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.15, 03/12/19&#xA;@since 1.3&#xA;" annotatedElement="4498bd04-95a8-49bd-bd9d-ba69dfc4a888"/>
              <generalization xmi:id="8ffd4cb2-3aca-4549-ad1f-829402cb3fd3" isSubstitutable="true" general="9cf27fa2-cd14-40f9-88f5-71034dd5581b"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="a7bc9b16-00d4-4949-8d09-50fda8484693" name="Type">
                <ownedComment xmi:id="dcee7ee1-8efe-4eb2-ba90-788c43bfe1ae" body="An instance of the &lt;code>BooleanControl.Type&lt;/code> class identifies one kind of&#xA;boolean control.  Static instances are provided for the&#xA;common types.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.15, 03/12/19&#xA;@since 1.3&#xA;" annotatedElement="a7bc9b16-00d4-4949-8d09-50fda8484693"/>
                <generalization xmi:id="0989a13c-f2d1-427a-b362-be1477ce56eb" isSubstitutable="true" general="3ace97a2-b629-4e49-a08e-83b75987a7f6"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="47bde82f-ad2b-4d2b-8ee9-a9091243562d" name="LineListener" isAbstract="true">
              <ownedComment xmi:id="853f00ae-b87b-4488-9fcc-d3dc3fabc46a" body="Instances of classes that implement the &lt;code>LineListener&lt;/code> interface can register to&#xA;receive events when a line's status changes.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.9 03/12/19&#xA;&#xA;@see Line&#xA;@see Line#addLineListener&#xA;@see Line#removeLineListener&#xA;@see LineEvent&#xA;&#xA;@since 1.3&#xA;" annotatedElement="47bde82f-ad2b-4d2b-8ee9-a9091243562d"/>
              <generalization xmi:id="05ceb9ba-0218-462b-a19a-cd9d9f53615d" isSubstitutable="true" general="4a082587-0c9e-4fc6-950d-861bfb398882"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Package" xmi:id="a761d294-1767-4d9a-b836-61a949274eed" name="spi">
              <packagedElement xmi:type="uml:Class" xmi:id="3a69f16b-41cc-4d94-8352-e902f7b06e69" name="AudioFileReader" isAbstract="true">
                <ownedComment xmi:id="1d99d023-bcb3-461d-8d8a-237ff643b732" body="Provider for audio file reading services.  Classes providing concrete&#xA;implementations can parse the format information from one or more types of&#xA;audio file, and can produce audio input streams from files of these types.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.15 03/12/19&#xA;@since 1.3&#xA;" annotatedElement="3a69f16b-41cc-4d94-8352-e902f7b06e69"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="94f595dc-6b5c-4593-86cd-e9e8a598f76e" name="AudioFileWriter" isAbstract="true">
                <ownedComment xmi:id="66623b47-4c0a-4974-b0ac-2e1edab3318a" body="Provider for audio file writing services.  Classes providing concrete&#xA;implementations can write one or more types of audio file from an audio&#xA;stream.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.24, 03/12/19&#xA;@since 1.3&#xA;" annotatedElement="94f595dc-6b5c-4593-86cd-e9e8a598f76e"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="bc51ba57-a2ba-4666-80b1-e06514714cb5" name="MixerProvider" isAbstract="true">
                <ownedComment xmi:id="bab6703e-15dd-4737-bd2a-8c8a110a6601" body="A provider or factory for a particular mixer type.&#xA;This mechanism allows the implementation to determine&#xA;how resources are managed in creation / management of&#xA;a mixer.&#xA;&#xA;@version 1.18 03/12/19&#xA;@author Kara Kytle&#xA;@since 1.3&#xA;" annotatedElement="bc51ba57-a2ba-4666-80b1-e06514714cb5"/>
              </packagedElement>
              <packagedElement xmi:type="uml:Class" xmi:id="5dd8b2ef-ea6d-4d49-8592-85ebef1c54ae" name="FormatConversionProvider" isAbstract="true">
                <ownedComment xmi:id="938f997a-b71c-4a62-9dfa-cc3c04cb0088" body="A format conversion provider provides format conversion services&#xA;from one or more input formats to one or more output formats.&#xA;Converters include codecs, which encode and/or decode audio data,&#xA;as well as transcoders, etc.  Format converters provide methods for&#xA;determining what conversions are supported and for obtaining an audio&#xA;stream from which converted data can be read.&#xA;&lt;p>&#xA;The source format represents the format of the incoming&#xA;audio data, which will be converted.&#xA;&lt;p>&#xA;The target format represents the format of the processed, converted&#xA;audio data.  This is the format of the data that can be read from&#xA;the stream returned by one of the &lt;code>getAudioInputStream&lt;/code> methods.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.29, 03/12/19&#xA;@since 1.3&#xA;" annotatedElement="5dd8b2ef-ea6d-4d49-8592-85ebef1c54ae"/>
              </packagedElement>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="97fe351d-9039-41d7-997a-a87fb562f48c" name="AudioInputStream">
              <ownedComment xmi:id="2f64e6fa-06a4-4b1f-8870-036b55539f85" body="An audio input stream is an input stream with a specified audio format and&#xA;length.  The length is expressed in sample frames, not bytes.&#xA;Several methods are provided for reading a certain number of bytes from&#xA;the stream, or an unspecified number of bytes.&#xA;The audio input stream keeps track  of the last byte that was read.&#xA;You can skip over an arbitrary number of bytes to get to a later position&#xA;for reading. An audio input stream may support marks.  When you set a mark,&#xA;the current position is remembered so that you can return to it later.&#xA;&lt;p>&#xA;The &lt;code>AudioSystem&lt;/code> class includes many methods that manipulate&#xA;&lt;code>AudioInputStream&lt;/code> objects.&#xA;For example, the methods let you:&#xA;&lt;ul>&#xA;&lt;li> obtain an&#xA;audio input stream from an external audio file, stream, or URL&#xA;&lt;li> write an external file from an audio input stream&#xA;&lt;li> convert an audio input stream to a different audio format&#xA;&lt;/ul>&#xA;&#xA;@author David Rivas&#xA;@author Kara Kytle&#xA;@author Florian Bomers&#xA;@version 1.32, 03/12/19&#xA;&#xA;@see AudioSystem&#xA;@see Clip#open(AudioInputStream) Clip.open(AudioInputStream)&#xA;@since 1.3&#xA;" annotatedElement="97fe351d-9039-41d7-997a-a87fb562f48c"/>
              <generalization xmi:id="304ed609-0805-4ba7-9897-887dc138bdb6" isSubstitutable="true" general="ee3aaef0-e959-4cca-9d5d-9bd2a90ad7dd"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="05a6d4d9-c0cd-489c-876e-12a68bba9ada" name="TargetDataLineInputStream" visibility="private">
                <ownedComment xmi:id="2188c4eb-7283-4078-a1d3-a4aeb30d5a6e" body="Private inner class that makes a TargetDataLine look like an InputStream.&#xA;" annotatedElement="05a6d4d9-c0cd-489c-876e-12a68bba9ada"/>
                <generalization xmi:id="df56f5b0-0142-4f04-9e4b-2f2bb8198ef7" isSubstitutable="true" general="ee3aaef0-e959-4cca-9d5d-9bd2a90ad7dd"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="6767217e-8309-4730-823d-5a8503e5842f" name="Line" isAbstract="true">
              <ownedComment xmi:id="4095c679-0fd1-45a9-bdd7-479837e7da4a" body="The &lt;code>Line&lt;/code> interface represents a mono or multi-channel&#xA;audio feed. A line is an element of the digital audio&#xA;&quot;pipeline,&quot; such as a mixer, an input or output port,&#xA;or a data path into or out of a mixer.&#xA;&lt;p>&#xA;A line can have controls, such as gain, pan, and reverb.&#xA;The controls themselves are instances of classes that extend the&#xA;base &lt;code>{@link Control}&lt;/code> class.&#xA;The &lt;code>Line&lt;/code> interface provides two accessor methods for&#xA;obtaining the line's controls: &lt;code>{@link #getControls getControls}&lt;/code> returns the&#xA;entire set, and &lt;code>{@link #getControl getControl}&lt;/code> returns a single control of&#xA;specified type.&#xA;&lt;p>&#xA;Lines exist in various states at different times.  When a line opens, it reserves system&#xA;resources for itself, and when it closes, these resources are freed for&#xA;other objects or applications. The &lt;code>{@link #isOpen()}&lt;/code> method lets&#xA;you discover whether a line is open or closed.&#xA;An open line need not be processing data, however.  Such processing is&#xA;typically initiated by subinterface methods such as&#xA;&lt;code>{@link SourceDataLine#write SourceDataLine.write}&lt;/code> and&#xA;&lt;code>{@link TargetDataLine#read TargetDataLine.read}&lt;/code>.&#xA;&lt;p>&#xA;You can register an object to receive notifications whenever the line's&#xA;state changes.  The object must implement the &lt;code>{@link LineListener}&lt;/code>&#xA;interface, which consists of the single method&#xA;&lt;code>{@link LineListener#update update}&lt;/code>.&#xA;This method will be invoked when a line opens and closes (and, if it's a&#xA;{@link DataLine}, when it starts and stops).&#xA;&lt;p>&#xA;An object can be registered to listen to multiple lines.  The event it&#xA;receives in its &lt;code>update&lt;/code> method will specify which line created&#xA;the event, what type of event it was&#xA;(&lt;code>OPEN&lt;/code>, &lt;code>CLOSE&lt;/code>, &lt;code>START&lt;/code>, or &lt;code>STOP&lt;/code>),&#xA;and how many sample frames the line had processed at the time the event occurred.&#xA;&lt;p>&#xA;Certain line operations, such as open and close, can generate security&#xA;exceptions if invoked by unprivileged code when the line is a shared audio&#xA;resource.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.29, 04/07/14&#xA;&#xA;@see LineEvent&#xA;@since 1.3&#xA;" annotatedElement="6767217e-8309-4730-823d-5a8503e5842f"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="f50ced04-5725-4a42-b962-ac8f8379c5a0" name="Info">
                <ownedComment xmi:id="69bb3ddf-c5aa-42ee-89f3-98a7875efa61" body="A &lt;code>Line.Info&lt;/code> object contains information about a line.&#xA;The only information provided by &lt;code>Line.Info&lt;/code> itself&#xA;is the Java class of the line.&#xA;A subclass of &lt;code>Line.Info&lt;/code> adds other kinds of information&#xA;about the line.  This additional information depends on which &lt;code>Line&lt;/code>&#xA;subinterface is implemented by the kind of line that the &lt;code>Line.Info&lt;/code>&#xA;subclass describes.&#xA;&lt;p>&#xA;A &lt;code>Line.Info&lt;/code> can be retrieved using various methods of&#xA;the &lt;code>Line&lt;/code>, &lt;code>Mixer&lt;/code>, and &lt;code>AudioSystem&lt;/code>&#xA;interfaces.  Other such methods let you pass a &lt;code>Line.Info&lt;/code> as&#xA;an argument, to learn whether lines matching the specified configuration&#xA;are available and to obtain them.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.29, 04/07/14&#xA;&#xA;@see Line#getLineInfo&#xA;@see Mixer#getSourceLineInfo&#xA;@see Mixer#getTargetLineInfo&#xA;@see Mixer#getLine &lt;code>Mixer.getLine(Line.Info)&lt;/code>&#xA;@see Mixer#getSourceLineInfo(Line.Info) &lt;code>Mixer.getSourceLineInfo(Line.Info)&lt;/code>&#xA;@see Mixer#getSourceLineInfo(Line.Info) &lt;code>Mixer.getTargetLineInfo(Line.Info)&lt;/code>&#xA;@see Mixer#isLineSupported &lt;code>Mixer.isLineSupported(Line.Info)&lt;/code>&#xA;@see AudioSystem#getLine &lt;code>AudioSystem.getLine(Line.Info)&lt;/code>&#xA;@see AudioSystem#getSourceLineInfo &lt;code>AudioSystem.getSourceLineInfo(Line.Info)&lt;/code>&#xA;@see AudioSystem#getTargetLineInfo &lt;code>AudioSystem.getTargetLineInfo(Line.Info)&lt;/code>&#xA;@see AudioSystem#isLineSupported &lt;code>AudioSystem.isLineSupported(Line.Info)&lt;/code>&#xA;@since 1.3&#xA;" annotatedElement="f50ced04-5725-4a42-b962-ac8f8379c5a0"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d0e6492a-09d0-4176-a8a0-30e20fd94434" name="LineUnavailableException">
              <ownedComment xmi:id="d613f8c6-1390-4ffc-afa4-23b9b81de67e" body="A &lt;code>LineUnavailableException&lt;/code> is an exception indicating that a&#xA;line cannot be opened because it is unavailable.  This situation&#xA;arises most commonly when a requested line is already in use&#xA;by another application.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.9 03/12/19&#xA;@since 1.3&#xA;" annotatedElement="d0e6492a-09d0-4176-a8a0-30e20fd94434"/>
              <generalization xmi:id="da5e0b9f-8253-4b22-9b24-5b5f5e0346e9" isSubstitutable="true" general="d9873bd2-3a74-4e59-8f22-c1deb5d08955"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="2f69e688-06e4-44c1-a34e-2db9ea77db92" name="AudioPermission">
              <ownedComment xmi:id="ce1159be-3732-4838-9251-576f37bc2644" body="The &lt;code>AudioPermission&lt;/code> class represents access rights to the audio&#xA;system resources.  An &lt;code>AudioPermission&lt;/code> contains a target name&#xA;but no actions list; you either have the named permission or you don't.&#xA;&lt;p>&#xA;The target name is the name of the audio permission (see the table below).&#xA;The names follow the hierarchical property-naming convention. Also, an asterisk&#xA;can be used to represent all the audio permissions.&#xA;&lt;p>&#xA;The following table lists the possible &lt;code>AudioPermission&lt;/code> target names.&#xA;For each name, the table provides a description of exactly what that permission&#xA;allows, as well as a discussion of the risks of granting code the permission.&#xA;&lt;p>&#xA;&#xA;&lt;table border=1 cellpadding=5 summary=&quot;permission target name, what the permission allows, and associated risks&quot;>&#xA;&lt;tr>&#xA;&lt;th>Permission Target Name&lt;/th>&#xA;&lt;th>What the Permission Allows&lt;/th>&#xA;&lt;th>Risks of Allowing this Permission&lt;/th>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>play&lt;/td>&#xA;&lt;td>Audio playback through the audio device or devices on the system.&#xA;Allows the application to obtain and manipulate lines and mixers for&#xA;audio playback (rendering).&lt;/td>&#xA;&lt;td>In some cases use of this permission may affect other&#xA;applications because the audio from one line may be mixed with other audio&#xA;being played on the system, or because manipulation of a mixer affects the&#xA;audio for all lines using that mixer.&lt;/td>&#xA;&lt;/tr>&#xA;&#xA;&lt;tr>&#xA;&lt;td>record&lt;/td>&#xA;&lt;td>Audio recording through the audio device or devices on the system.&#xA;Allows the application to obtain and manipulate lines and mixers for&#xA;audio recording (capture).&lt;/td>&#xA;&lt;td>In some cases use of this permission may affect other&#xA;applications because manipulation of a mixer affects the audio for all lines&#xA;using that mixer.&#xA;This permission can enable an applet or application to eavesdrop on a user.&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&lt;p>&#xA;&#xA;@author Kara Kytle&#xA;@version 1.17 03/12/19&#xA;@since 1.3&#xA;" annotatedElement="2f69e688-06e4-44c1-a34e-2db9ea77db92"/>
              <generalization xmi:id="32cd8ba9-9119-4cfb-8efb-7fab81ad626a" isSubstitutable="true" general="4831e368-c670-40b4-87bd-a8a910a528fa"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="6cc99140-5150-4ff1-95a5-874dd2527fe6" name="DataLine" isAbstract="true">
              <ownedComment xmi:id="e17eed4f-a60f-4901-91b8-0be81f91f3d3" body="&lt;code>DataLine&lt;/code> adds media-related functionality to its&#xA;superinterface, &lt;code>{@link Line}&lt;/code>.  This functionality includes&#xA;transport-control methods that start, stop, drain, and flush&#xA;the audio data that passes through the line.  A data line can also&#xA;report the current position, volume, and audio format of the media.&#xA;Data lines are used for output of audio by means of the&#xA;subinterfaces &lt;code>{@link SourceDataLine}&lt;/code> or&#xA;&lt;code>{@link Clip}&lt;/code>, which allow an application program to write data.  Similarly,&#xA;audio input is handled by the subinterface &lt;code>{@link TargetDataLine}&lt;/code>,&#xA;which allows data to be read.&#xA;&lt;p>&#xA;A data line has an internal buffer in which&#xA;the incoming or outgoing audio data is queued.  The&#xA;&lt;code>{@link #drain()}&lt;/code> method blocks until this internal buffer&#xA;becomes empty, usually because all queued data has been processed.  The&#xA;&lt;code>{@link #flush()}&lt;/code> method discards any available queued data&#xA;from the internal buffer.&#xA;&lt;p>&#xA;A data line produces &lt;code>{@link LineEvent.Type#START START}&lt;/code> and&#xA;&lt;code>{@link LineEvent.Type#STOP STOP}&lt;/code> events whenever&#xA;it begins or ceases active presentation or capture of data.  These events&#xA;can be generated in response to specific requests, or as a result of&#xA;less direct state changes.  For example, if &lt;code>{@link #start()}&lt;/code> is called&#xA;on an inactive data line, and data is available for capture or playback, a&#xA;&lt;code>START&lt;/code> event will be generated shortly, when data playback&#xA;or capture actually begins.  Or, if the flow of data to an active data&#xA;line is constricted so that a gap occurs in the presentation of data,&#xA;a &lt;code>STOP&lt;/code> event is generated.&#xA;&lt;p>&#xA;Mixers often support synchronized control of multiple data lines.&#xA;Synchronization can be established through the Mixer interface's&#xA;&lt;code>{@link Mixer#synchronize synchronize}&lt;/code> method.&#xA;See the description of the &lt;code>{@link Mixer Mixer}&lt;/code> interface&#xA;for a more complete description.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.33, 04/07/14&#xA;@see LineEvent&#xA;@since 1.3&#xA;" annotatedElement="6cc99140-5150-4ff1-95a5-874dd2527fe6"/>
              <generalization xmi:id="06147a98-ec7d-4b4e-8811-ce97ddeaa972" isSubstitutable="true" general="6767217e-8309-4730-823d-5a8503e5842f"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="5500c57e-a7f9-451e-a3ba-f226e0539631" name="Info">
                <ownedComment xmi:id="68ce2d58-0572-429b-b38a-319a9e54a62a" body="Besides the class information inherited from its superclass,&#xA;&lt;code>DataLine.Info&lt;/code> provides additional information specific to data lines.&#xA;This information includes:&#xA;&lt;ul>&#xA;&lt;li> the audio formats supported by the data line&#xA;&lt;li> the minimum and maximum sizes of its internal buffer&#xA;&lt;/ul>&#xA;Because a &lt;code>Line.Info&lt;/code> knows the class of the line its describes, a&#xA;&lt;code>DataLine.Info&lt;/code> object can describe &lt;code>DataLine&lt;/code>&#xA;subinterfaces such as &lt;code>{@link SourceDataLine}&lt;/code>,&#xA;&lt;code>{@link TargetDataLine}&lt;/code>, and &lt;code>{@link Clip}&lt;/code>.&#xA;You can query a mixer for lines of any of these types, passing an appropriate&#xA;instance of &lt;code>DataLine.Info&lt;/code> as the argument to a method such as&#xA;&lt;code>{@link Mixer#getLine Mixer.getLine(Line.Info)}&lt;/code>.&#xA;&#xA;@see Line.Info&#xA;@author Kara Kytle&#xA;@version 1.33, 04/07/14&#xA;@since 1.3&#xA;" annotatedElement="5500c57e-a7f9-451e-a3ba-f226e0539631"/>
                <generalization xmi:id="42fc7b3f-d0cb-4940-afce-123437ec66f3" isSubstitutable="true" general="f50ced04-5725-4a42-b962-ac8f8379c5a0"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="7f3b7af1-bed1-4e65-8588-9421d0b3933c" name="AudioFormat">
              <ownedComment xmi:id="d8e5c266-2b7b-4474-aa56-994e892af39b" body="&lt;code>AudioFormat&lt;/code> is the class that specifies a particular arrangement of data in a sound stream.&#xA;By examing the information stored in the audio format, you can discover how to interpret the bits in the&#xA;binary sound data.&#xA;&lt;p>&#xA;Every data line has an audio format associated with its data stream. The audio format of a source (playback) data line indicates&#xA;what kind of data the data line expects to receive for output.  For a target (capture) data line, the audio format specifies the kind&#xA;of the data that can be read from the line.&#xA;Sound files also have audio formats, of course.  The &lt;code>{@link AudioFileFormat}&lt;/code>&#xA;class encapsulates an &lt;code>AudioFormat&lt;/code> in addition to other,&#xA;file-specific information.  Similarly, an &lt;code>{@link AudioInputStream}&lt;/code> has an&#xA;&lt;code>AudioFormat&lt;/code>.&#xA;&lt;p>&#xA;The &lt;code>AudioFormat&lt;/code> class accommodates a number of common sound-file encoding techniques, including&#xA;pulse-code modulation (PCM), mu-law encoding, and a-law encoding.  These encoding techniques are predefined,&#xA;but service providers can create new encoding types.&#xA;The encoding that a specific format uses is named by its &lt;code>encoding&lt;/code> field.&#xA;&lt;p>&#xA;In addition to the encoding, the audio format includes other properties that further specify the exact&#xA;arrangement of the data.&#xA;These include the number of channels, sample rate, sample size, byte order, frame rate, and frame size.&#xA;Sounds may have different numbers of audio channels: one for mono, two for stereo.&#xA;The sample rate measures how many &quot;snapshots&quot; (samples) of the sound pressure are taken per second, per channel.&#xA;(If the sound is stereo rather than mono, two samples are actually measured at each instant of time: one for the left channel,&#xA;and another for the right channel; however, the sample rate still measures the number per channel, so the rate is the same&#xA;regardless of the number of channels.   This is the standard use of the term.)&#xA;The sample size indicates how many bits are used to store each snapshot; 8 and 16 are typical values.&#xA;For 16-bit samples (or any other sample size larger than a byte),&#xA;byte order is important; the bytes in each sample are arranged in&#xA;either the &quot;little-endian&quot; or &quot;big-endian&quot; style.&#xA;For encodings like PCM, a frame consists of the set of samples for all channels at a given&#xA;point in time, and so the size of a frame (in bytes) is always equal to the size of a sample (in bytes) times&#xA;the number of channels.  However, with some other sorts of encodings a frame can contain&#xA;a bundle of compressed data for a whole series of samples, as well as additional, non-sample&#xA;data.  For such encodings, the sample rate and sample size refer to the data after it is decoded into PCM,&#xA;and so they are completely different from the frame rate and frame size.&#xA;&#xA;&lt;p>An &lt;code>AudioFormat&lt;/code> object can include a set of&#xA;properties. A property is a pair of key and value: the key&#xA;is of type &lt;code>String&lt;/code>, the associated property&#xA;value is an arbitrary object. Properties specify&#xA;additional format specifications, like the bit rate for&#xA;compressed formats. Properties are mainly used as a means&#xA;to transport additional information of the audio format&#xA;to and from the service providers. Therefore, properties&#xA;are ignored in the {@link #matches(AudioFormat)} method.&#xA;However, methods which rely on the installed service&#xA;providers, like {@link AudioSystem#isConversionSupported&#xA;(AudioFormat, AudioFormat) isConversionSupported} may consider&#xA;properties, depending on the respective service provider&#xA;implementation.&#xA;&#xA;&lt;p>The following table lists some common properties which&#xA;service providers should use, if applicable:&#xA;&#xA;&lt;table border=0>&#xA;&lt;tr>&#xA;&lt;th>Property key&lt;/th>&#xA;&lt;th>Value type&lt;/th>&#xA;&lt;th>Description&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&quot;bitrate&quot;&lt;/td>&#xA;&lt;td>{@link java.lang.Integer Integer}&lt;/td>&#xA;&lt;td>average bit rate in bits per second&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&quot;vbr&quot;&lt;/td>&#xA;&lt;td>{@link java.lang.Boolean Boolean}&lt;/td>&#xA;&lt;td>&lt;code>true&lt;/code>, if the file is encoded in variable bit&#xA;rate (VBR)&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&quot;quality&quot;&lt;/td>&#xA;&lt;td>{@link java.lang.Integer Integer}&lt;/td>&#xA;&lt;td>encoding/conversion quality, 1..100&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&#xA;&lt;p>Vendors of service providers (plugins) are encouraged&#xA;to seek information about other already established&#xA;properties in third party plugins, and follow the same&#xA;conventions.&#xA;&#xA;@author Kara Kytle&#xA;@author Florian Bomers&#xA;@version 1.35 04/03/15&#xA;@see DataLine#getFormat&#xA;@see AudioInputStream#getFormat&#xA;@see AudioFileFormat&#xA;@see javax.sound.sampled.spi.FormatConversionProvider&#xA;@since 1.3&#xA;" annotatedElement="7f3b7af1-bed1-4e65-8588-9421d0b3933c"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="433b1a1a-4011-4227-8c5d-b6f145fc8ba9" name="Encoding">
                <ownedComment xmi:id="121c7c43-c04a-49b1-aed6-e277f99da11b" body="The &lt;code>Encoding&lt;/code> class  names the  specific type of data representation&#xA;used for an audio stream.   The encoding includes aspects of the&#xA;sound format other than the number of channels, sample rate, sample size,&#xA;frame rate, frame size, and byte order.&#xA;&lt;p>&#xA;One ubiquitous type of audio encoding is pulse-code modulation (PCM),&#xA;which is simply a linear (proportional) representation of the sound&#xA;waveform.  With PCM, the number stored in each sample is proportional&#xA;to the instantaneous amplitude of the sound pressure at that point in&#xA;time.  The numbers are frequently signed or unsigned integers.&#xA;Besides PCM, other encodings include mu-law and a-law, which are nonlinear&#xA;mappings of the sound amplitude that are often used for recording speech.&#xA;&lt;p>&#xA;You can use a predefined encoding by referring to one of the static&#xA;objects created by this class, such as PCM_SIGNED or&#xA;PCM_UNSIGNED.  Service providers can create new encodings, such as&#xA;compressed audio formats or floating-point PCM samples, and make&#xA;these available through the &lt;code>{@link AudioSystem}&lt;/code> class.&#xA;&lt;p>&#xA;The &lt;code>Encoding&lt;/code> class is static, so that all&#xA;&lt;code>AudioFormat&lt;/code> objects that have the same encoding will refer&#xA;to the same object (rather than different instances of the same class).&#xA;This allows matches to be made by checking that two format's encodings&#xA;are equal.&#xA;&#xA;@see AudioFormat&#xA;@see javax.sound.sampled.spi.FormatConversionProvider&#xA;&#xA;@author Kara Kytle&#xA;@version 1.35 04/03/15&#xA;@since 1.3&#xA;" annotatedElement="433b1a1a-4011-4227-8c5d-b6f145fc8ba9"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="b79d9ec3-6e32-4ecb-b20e-a6d04d1d3a53" name="EnumControl" isAbstract="true">
              <ownedComment xmi:id="469bc886-2e1f-4a3c-b884-5a758fa291d8" body="A &lt;code>EnumControl&lt;/code> provides control over a set of&#xA;discrete possible values, each represented by an object.  In a&#xA;graphical user interface, such a control might be represented&#xA;by a set of buttons, each of which chooses one value or setting.  For&#xA;example, a reverb control might provide several preset reverberation&#xA;settings, instead of providing continuously adjustable parameters&#xA;of the sort that would be represented by &lt;code>{@link FloatControl}&lt;/code>&#xA;objects.&#xA;&lt;p>&#xA;Controls that provide a choice between only two settings can often be implemented&#xA;instead as a &lt;code>{@link BooleanControl}&lt;/code>, and controls that provide&#xA;a set of values along some quantifiable dimension might be implemented&#xA;instead as a &lt;code>FloatControl&lt;/code> with a coarse resolution.&#xA;However, a key feature of &lt;code>EnumControl&lt;/code> is that the returned values&#xA;are arbitrary objects, rather than numerical or boolean values.  This means that each&#xA;returned object can provide further information.  As an example, the settings&#xA;of a &lt;code>{@link EnumControl.Type#REVERB REVERB}&lt;/code> control are instances of&#xA;&lt;code>{@link ReverbType}&lt;/code> that can be queried for the parameter values&#xA;used for each setting.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.14, 03/12/19&#xA;@since 1.3&#xA;" annotatedElement="b79d9ec3-6e32-4ecb-b20e-a6d04d1d3a53"/>
              <generalization xmi:id="63f67095-0eb7-47b7-852c-5758fc0bb36a" isSubstitutable="true" general="9cf27fa2-cd14-40f9-88f5-71034dd5581b"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="35ae0233-b5d9-4288-92b5-8d0ccb76ed9d" name="Type">
                <ownedComment xmi:id="b7e1f422-2aca-4510-9009-88b42f08f2c4" body="An instance of the &lt;code>EnumControl.Type&lt;/code> inner class identifies one kind of&#xA;enumerated control.  Static instances are provided for the&#xA;common types.&#xA;&#xA;@see EnumControl&#xA;&#xA;@author Kara Kytle&#xA;@version 1.14, 03/12/19&#xA;@since 1.3&#xA;" annotatedElement="35ae0233-b5d9-4288-92b5-8d0ccb76ed9d"/>
                <generalization xmi:id="c66aca0f-3b77-4877-b69a-18293f9f796b" isSubstitutable="true" general="3ace97a2-b629-4e49-a08e-83b75987a7f6"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="8568ea33-0c39-45f3-911e-b06ae073d6fd" name="CompoundControl" isAbstract="true">
              <ownedComment xmi:id="332c0d7f-c665-456a-8a93-fde222002c79" body="A &lt;code>CompoundControl&lt;/code>, such as a graphic equalizer, provides control&#xA;over two or more related properties, each of which is itself represented as&#xA;a &lt;code>Control&lt;/code>.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.10, 03/12/19&#xA;@since 1.3&#xA;" annotatedElement="8568ea33-0c39-45f3-911e-b06ae073d6fd"/>
              <generalization xmi:id="4e0213c4-0d56-4865-83c4-9d8aa33f2be4" isSubstitutable="true" general="9cf27fa2-cd14-40f9-88f5-71034dd5581b"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="202e779a-e5c2-4328-9d1d-4aeec8b49289" name="Type">
                <ownedComment xmi:id="c236de81-914d-4bdd-a415-2ac36f58741e" body="An instance of the &lt;code>CompoundControl.Type&lt;/code> inner class identifies one kind of&#xA;compound control.  Static instances are provided for the&#xA;common types.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.10, 03/12/19&#xA;@since 1.3&#xA;" annotatedElement="202e779a-e5c2-4328-9d1d-4aeec8b49289"/>
                <generalization xmi:id="ca2e34fc-a454-4f19-9721-7a8ba3158b3c" isSubstitutable="true" general="3ace97a2-b629-4e49-a08e-83b75987a7f6"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="16949701-aaf9-4050-a8a2-b14dfa2c71ce" name="Clip" isAbstract="true">
              <ownedComment xmi:id="e9ce1a68-cd12-461b-9737-d135bc067738" body="The &lt;code>Clip&lt;/code> interface represents a special kind of data line whose&#xA;audio data can be loaded prior to playback, instead of being streamed in&#xA;real time.&#xA;&lt;p>&#xA;Because the data is pre-loaded and has a known length, you can set a clip&#xA;to start playing at any position in its audio data.  You can also create a&#xA;loop, so that when the clip is played it will cycle repeatedly.  Loops are&#xA;specified with a starting and ending sample frame, along with the number of&#xA;times that the loop should be played.&#xA;&lt;p>&#xA;Clips may be obtained from a &lt;code>{@link Mixer}&lt;/code> that supports lines&#xA;of this type.  Data is loaded into a clip when it is opened.&#xA;&lt;p>&#xA;Playback of an audio clip may be started and stopped using the &lt;code>start&lt;/code>&#xA;and &lt;code>stop&lt;/code> methods.  These methods do not reset the media position;&#xA;&lt;code>start&lt;/code> causes playback to continue from the position where playback&#xA;was last stopped.  To restart playback from the beginning of the clip's audio&#xA;data, simply follow the invocation of &lt;code>{@link DataLine#stop stop}&lt;/code>&#xA;with setFramePosition(0), which rewinds the media to the beginning&#xA;of the clip.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.38, 03/12/19&#xA;@since 1.3&#xA;" annotatedElement="16949701-aaf9-4050-a8a2-b14dfa2c71ce"/>
              <generalization xmi:id="241245d9-7ba4-4933-9925-a35137a027f4" isSubstitutable="true" general="6cc99140-5150-4ff1-95a5-874dd2527fe6"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="d12a51d8-04b0-4e9c-890a-071d5d1db2ec" name="AudioFileFormat">
              <ownedComment xmi:id="c8bdc86b-3a31-4865-961f-e2e1e17a6491" body="An instance of the &lt;code>AudioFileFormat&lt;/code> class describes&#xA;an audio file, including the file type, the file's length in bytes,&#xA;the length in sample frames of the audio data contained in the file,&#xA;and the format of the audio data.&#xA;&lt;p>&#xA;The &lt;code>{@link AudioSystem}&lt;/code> class includes methods for determining the format&#xA;of an audio file, obtaining an audio input stream from an audio file, and&#xA;writing an audio file from an audio input stream.&#xA;&#xA;&lt;p>An &lt;code>AudioFileFormat&lt;/code> object can&#xA;include a set of properties. A property is a pair of key and value:&#xA;the key is of type &lt;code>String&lt;/code>, the associated property&#xA;value is an arbitrary object.&#xA;Properties specify additional informational&#xA;meta data (like a author, copyright, or file duration).&#xA;Properties are optional information, and file reader and file&#xA;writer implementations are not required to provide or&#xA;recognize properties.&#xA;&#xA;&lt;p>The following table lists some common properties that should&#xA;be used in implementations:&#xA;&#xA;&lt;table border=1>&#xA;&lt;tr>&#xA;&lt;th>Property key&lt;/th>&#xA;&lt;th>Value type&lt;/th>&#xA;&lt;th>Description&lt;/th>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&quot;duration&quot;&lt;/td>&#xA;&lt;td>{@link java.lang.Long Long}&lt;/td>&#xA;&lt;td>playback duration of the file in microseconds&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&quot;author&quot;&lt;/td>&#xA;&lt;td>{@link java.lang.String String}&lt;/td>&#xA;&lt;td>name of the author of this file&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&quot;title&quot;&lt;/td>&#xA;&lt;td>{@link java.lang.String String}&lt;/td>&#xA;&lt;td>title of this file&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&quot;copyright&quot;&lt;/td>&#xA;&lt;td>{@link java.lang.String String}&lt;/td>&#xA;&lt;td>copyright message&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&quot;date&quot;&lt;/td>&#xA;&lt;td>{@link java.util.Date Date}&lt;/td>&#xA;&lt;td>date of the recording or release&lt;/td>&#xA;&lt;/tr>&#xA;&lt;tr>&#xA;&lt;td>&quot;comment&quot;&lt;/td>&#xA;&lt;td>{@link java.lang.String String}&lt;/td>&#xA;&lt;td>an arbitrary text&lt;/td>&#xA;&lt;/tr>&#xA;&lt;/table>&#xA;&#xA;&#xA;@author David Rivas&#xA;@author Kara Kytle&#xA;@author Florian Bomers&#xA;@version 1.23 03/12/19&#xA;@see AudioInputStream&#xA;@since 1.3&#xA;" annotatedElement="d12a51d8-04b0-4e9c-890a-071d5d1db2ec"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="9b2919ab-c2d5-4302-a00d-13f799cb30bd" name="Type">
                <ownedComment xmi:id="191dc504-b8c8-4b0c-a6a6-b6419a247f7d" body="An instance of the &lt;code>Type&lt;/code> class represents one of the&#xA;standard types of audio file.  Static instances are provided for the&#xA;common types.&#xA;" annotatedElement="9b2919ab-c2d5-4302-a00d-13f799cb30bd"/>
              </nestedClassifier>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="028dfd35-ea4a-4cde-9531-300f38aeea50" name="LineEvent">
              <ownedComment xmi:id="22170b0e-3bed-4e8b-814d-d4547882cd59" body="The &lt;code>LineEvent&lt;/code> class encapsulates information that a line&#xA;sends its listeners whenever the line opens, closes, starts, or stops.&#xA;Each of these four state changes is represented by a corresponding&#xA;type of event.  A listener receives the event as a parameter to its&#xA;{@link LineListener#update update} method.  By querying the event,&#xA;the listener can learn the type of event, the line responsible for&#xA;the event, and how much data the line had processed when the event occurred.&#xA;&#xA;&lt;p>Although this class implements Serializable, attempts to&#xA;serialize a &lt;code>LineEvent&lt;/code> object will fail.&#xA;&#xA;@author Kara Kytle&#xA;@version 1.26, 03/12/19&#xA;&#xA;@see Line&#xA;@see LineListener#update&#xA;@since 1.3&#xA;&#xA;@serial exclude&#xA;" annotatedElement="028dfd35-ea4a-4cde-9531-300f38aeea50"/>
              <generalization xmi:id="4c3b7617-9936-429a-98b8-91fc8c1a8cde" isSubstitutable="true" general="6e231686-13c1-4b2d-a3d6-991269f1c950"/>
              <nestedClassifier xmi:type="uml:Class" xmi:id="4d7166fe-ac15-4e3c-8779-d35d3ee610df" name="Type">
                <ownedComment xmi:id="6d043745-f167-4a09-9afa-ab0ac7da2107" body="The LineEvent.Type inner class identifies what kind of event occurred on a line.&#xA;Static instances are provided for the common types (OPEN, CLOSE, START, and STOP).&#xA;&#xA;@see LineEvent#getType()&#xA;" annotatedElement="4d7166fe-ac15-4e3c-8779-d35d3ee610df"/>
              </nestedClassifier>
            </packagedElement>
          </packagedElement>
        </packagedElement>
        <packagedElement xmi:type="uml:Package" xmi:id="b2f088ab-194e-4d84-bc98-85408a2fe744" name="rmi">
          <packagedElement xmi:type="uml:Package" xmi:id="aba915c2-ec2d-45c1-9e57-138f76f8cf74" name="CORBA">
            <packagedElement xmi:type="uml:Interface" xmi:id="dffcecf3-07fe-4304-82d4-60669dc826a0" name="StubDelegate" isAbstract="true">
              <ownedComment xmi:id="e0c3d14d-d3e0-4ec0-b25c-fc2e2e95dd83" body="Supports delegation for method implementations in {@link Stub}.&#xA;A delegate is an instance of a class that implements this&#xA;interface and provides a replacement implementation for all the&#xA;methods of &lt;code>javax.rmi.CORBA.Stub&lt;/code>.  If delegation is&#xA;enabled, each stub has an associated delegate.&#xA;&#xA;Delegates are enabled by providing the delegate's class name as the&#xA;value of the&#xA;&lt;code>javax.rmi.CORBA.StubClass&lt;/code>&#xA;system property.&#xA;&#xA;@see Stub&#xA;" annotatedElement="dffcecf3-07fe-4304-82d4-60669dc826a0"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="71799c04-e8b4-4228-a0ac-ea66fc1dda3b" name="Stub" clientDependency="e5f18bd6-9703-4a98-9ad6-382607a87072" isAbstract="true">
              <ownedComment xmi:id="179b7f92-67a0-46d5-8aff-527751015628" body="Base class from which all RMI-IIOP stubs must inherit.&#xA;" annotatedElement="71799c04-e8b4-4228-a0ac-ea66fc1dda3b"/>
              <interfaceRealization xmi:id="e5f18bd6-9703-4a98-9ad6-382607a87072" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="71799c04-e8b4-4228-a0ac-ea66fc1dda3b" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="13ced278-a620-4ab3-8bc2-3224726a9e6c" name="Util">
              <ownedComment xmi:id="a959fa55-27b2-439c-841a-10acd12c9f15" body="Provides utility methods that can be used by stubs and ties to&#xA;perform common operations.&#xA;" annotatedElement="13ced278-a620-4ab3-8bc2-3224726a9e6c"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="acca8e4a-4892-44b5-bbde-efff3accacef" name="ValueHandlerMultiFormat" isAbstract="true">
              <ownedComment xmi:id="9b14f628-a238-4771-ab31-f1e11c43c081" body="Java to IDL ptc 02-01-12 1.5.1.5&#xA;" annotatedElement="acca8e4a-4892-44b5-bbde-efff3accacef"/>
              <generalization xmi:id="c28b92d9-bdc8-463b-b88f-e7cfadb42c93" isSubstitutable="true" general="40970f95-3ab2-4f9a-a662-c20eb7e94545"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="40970f95-3ab2-4f9a-a662-c20eb7e94545" name="ValueHandler" isAbstract="true">
              <ownedComment xmi:id="be19644a-aefb-4034-a0bd-9a4354248f98" body="Defines methods which allow serialization of Java objects&#xA;to and from GIOP streams.&#xA;" annotatedElement="40970f95-3ab2-4f9a-a662-c20eb7e94545"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="bff9128e-bc35-4d98-ab62-84616162af17" name="Tie" isAbstract="true">
              <ownedComment xmi:id="c1861ee2-4026-41f5-b209-1428fd4c78f7" body="Defines methods which all RMI-IIOP server side ties must implement.&#xA;" annotatedElement="bff9128e-bc35-4d98-ab62-84616162af17"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="08c5b768-3936-4541-af77-d805afc99ad1" name="GetORBPropertiesFileAction" visibility="package" clientDependency="37de4668-7cc6-41e3-9e0c-2e13f6ae0288">
              <interfaceRealization xmi:id="37de4668-7cc6-41e3-9e0c-2e13f6ae0288" name="" supplier="5646b95f-c8d5-4f70-8c2b-9996e66b63ce" client="08c5b768-3936-4541-af77-d805afc99ad1" contract="5646b95f-c8d5-4f70-8c2b-9996e66b63ce"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="96cf9ca9-fe93-462d-a047-4f19f8546689" name="ClassDesc" clientDependency="7866b142-2a34-474a-bd43-1468dd6a225e">
              <ownedComment xmi:id="9cca5c29-a403-4d64-8b66-16c6137b0047" body="This class is used to marshal java.lang.Class objects over IIOP.&#xA;" annotatedElement="96cf9ca9-fe93-462d-a047-4f19f8546689"/>
              <interfaceRealization xmi:id="7866b142-2a34-474a-bd43-1468dd6a225e" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="96cf9ca9-fe93-462d-a047-4f19f8546689" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="df1a3692-01ad-4a3a-9add-cea25e732e81" name="PortableRemoteObjectDelegate" isAbstract="true">
              <ownedComment xmi:id="00302bb1-1c1c-453d-b384-53a7fdbc9249" body="Supports delegation for method implementations in {@link javax.rmi.PortableRemoteObject}.&#xA;The delegate is a singleton instance of a class that implements this&#xA;interface and provides a replacement implementation for all the&#xA;methods of &lt;code>javax.rmi.PortableRemoteObject&lt;/code>.&#xA;&#xA;Delegates are enabled by providing the delegate's class name as the&#xA;value of the&#xA;&lt;code>javax.rmi.CORBA.PortableRemoteObjectClass&lt;/code>&#xA;system property.&#xA;&#xA;@see javax.rmi.PortableRemoteObject&#xA;" annotatedElement="df1a3692-01ad-4a3a-9add-cea25e732e81"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Interface" xmi:id="d4993f1a-b9bb-4156-b038-9b1ff09ee934" name="UtilDelegate" isAbstract="true">
              <ownedComment xmi:id="25c7b2a0-76eb-437d-b0cc-6aa1f67af35c" body="Supports delegation for method implementations in {@link Util}.  The&#xA;delegate is a singleton instance of a class that implements this&#xA;interface and provides a replacement implementation for all the&#xA;methods of &lt;code>javax.rmi.CORBA.Util&lt;/code>.&#xA;&#xA;Delegation is enabled by providing the delegate's class name as the&#xA;value of the&#xA;&lt;code>javax.rmi.CORBA.UtilClass&lt;/code>&#xA;system property.&#xA;&#xA;@see Util&#xA;" annotatedElement="d4993f1a-b9bb-4156-b038-9b1ff09ee934"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="ada77e68-78bc-4ccc-8eef-283cb666cb2b" name="GetORBPropertiesFileAction" visibility="package" clientDependency="a511087a-1e55-45b1-b559-09c1c2b75c9d">
            <interfaceRealization xmi:id="a511087a-1e55-45b1-b559-09c1c2b75c9d" name="" supplier="5646b95f-c8d5-4f70-8c2b-9996e66b63ce" client="ada77e68-78bc-4ccc-8eef-283cb666cb2b" contract="5646b95f-c8d5-4f70-8c2b-9996e66b63ce"/>
          </packagedElement>
          <packagedElement xmi:type="uml:Package" xmi:id="09b27545-37fa-4837-b80a-a403cec035c2" name="ssl">
            <packagedElement xmi:type="uml:Class" xmi:id="b2a9c2fc-5a4f-44b7-87d7-7987d53f2685" name="SslRMIClientSocketFactory" clientDependency="880fea8c-eb5c-47a1-b4cd-04c40cbbe5b6 728a6e87-94dd-4b2a-946b-07cc73e880f9">
              <ownedComment xmi:id="8d0183c5-d493-46b6-935d-3f928ad534f5" body="&lt;p>An &lt;code>SslRMIClientSocketFactory&lt;/code> instance is used by the RMI&#xA;runtime in order to obtain client sockets for RMI calls via SSL.&lt;/p>&#xA;&#xA;&lt;p>This class implements &lt;code>RMIClientSocketFactory&lt;/code> over&#xA;the Secure Sockets Layer (SSL) or Transport Layer Security (TLS)&#xA;protocols.&lt;/p>&#xA;&#xA;&lt;p>This class creates SSL sockets using the default&#xA;&lt;code>SSLSocketFactory&lt;/code> (see {@link&#xA;SSLSocketFactory#getDefault}).  All instances of this class are&#xA;functionally equivalent.  In particular, they all share the same&#xA;truststore, and the same keystore when client authentication is&#xA;required by the server.  This behavior can be modified in&#xA;subclasses by overriding the {@link #createSocket(String,int)}&#xA;method; in that case, {@link #equals(Object) equals} and {@link&#xA;#hashCode() hashCode} may also need to be overridden.&lt;/p>&#xA;&#xA;&lt;p>If the system property&#xA;&lt;code>javax.rmi.ssl.client.enabledCipherSuites&lt;/code> is specified,&#xA;the {@link #createSocket(String,int)} method will call {@link&#xA;SSLSocket#setEnabledCipherSuites(String[])} before returning the&#xA;socket.  The value of this system property is a string that is a&#xA;comma-separated list of SSL/TLS cipher suites to enable.&lt;/p>&#xA;&#xA;&lt;p>If the system property&#xA;&lt;code>javax.rmi.ssl.client.enabledProtocols&lt;/code> is specified,&#xA;the {@link #createSocket(String,int)} method will call {@link&#xA;SSLSocket#setEnabledProtocols(String[])} before returning the&#xA;socket.  The value of this system property is a string that is a&#xA;comma-separated list of SSL/TLS protocol versions to enable.&lt;/p>&#xA;&#xA;@see javax.net.ssl.SSLSocketFactory&#xA;@see javax.rmi.ssl.SslRMIServerSocketFactory&#xA;@since 1.5&#xA;" annotatedElement="b2a9c2fc-5a4f-44b7-87d7-7987d53f2685"/>
              <interfaceRealization xmi:id="880fea8c-eb5c-47a1-b4cd-04c40cbbe5b6" name="" supplier="e0b5ee8e-0fbf-498f-936f-6167ebf9c310" client="b2a9c2fc-5a4f-44b7-87d7-7987d53f2685" contract="e0b5ee8e-0fbf-498f-936f-6167ebf9c310"/>
              <interfaceRealization xmi:id="728a6e87-94dd-4b2a-946b-07cc73e880f9" name="" supplier="56bf6aa5-263a-4a52-8bf0-175f4238b77e" client="b2a9c2fc-5a4f-44b7-87d7-7987d53f2685" contract="56bf6aa5-263a-4a52-8bf0-175f4238b77e"/>
            </packagedElement>
            <packagedElement xmi:type="uml:Class" xmi:id="08d1bc51-5208-4c59-a714-8da4f1a11b62" name="SslRMIServerSocketFactory" clientDependency="6d1f5677-43e3-4122-adf2-958292a84385">
              <ownedComment xmi:id="9634e27f-64b6-40b7-855e-0a70026cf6d4" body="&lt;p>An &lt;code>SslRMIServerSocketFactory&lt;/code> instance is used by the RMI&#xA;runtime in order to obtain server sockets for RMI calls via SSL.&lt;/p>&#xA;&#xA;&lt;p>This class implements &lt;code>RMIServerSocketFactory&lt;/code> over&#xA;the Secure Sockets Layer (SSL) or Transport Layer Security (TLS)&#xA;protocols.&lt;/p>&#xA;&#xA;&lt;p>This class creates SSL sockets using the default&#xA;&lt;code>SSLSocketFactory&lt;/code> (see {@link&#xA;SSLSocketFactory#getDefault}) or the default&#xA;&lt;code>SSLServerSocketFactory&lt;/code> (see {@link&#xA;SSLServerSocketFactory#getDefault}).  Therefore, all instances of&#xA;this class share the same keystore, and the same truststore, when&#xA;client authentication is required by the server.  This behavior&#xA;can be modified in subclasses by overriding the {@link&#xA;#createServerSocket(int)} method; in that case, {@link&#xA;#equals(Object) equals} and {@link #hashCode() hashCode} may also&#xA;need to be overridden.&lt;/p>&#xA;&#xA;@see javax.net.ssl.SSLSocketFactory&#xA;@see javax.net.ssl.SSLServerSocketFactory&#xA;@see javax.rmi.ssl.SslRMIClientSocketFactory&#xA;@since 1.5&#xA;" annotatedElement="08d1bc51-5208-4c59-a714-8da4f1a11b62"/>
              <interfaceRealization xmi:id="6d1f5677-43e3-4122-adf2-958292a84385" name="" supplier="e6f9ec7f-db69-407a-abf6-9da83d54a3e5" client="08d1bc51-5208-4c59-a714-8da4f1a11b62" contract="e6f9ec7f-db69-407a-abf6-9da83d54a3e5"/>
            </packagedElement>
          </packagedElement>
          <packagedElement xmi:type="uml:Class" xmi:id="8fdbaf90-81c5-4725-ab39-a25d84d8f0d8" name="PortableRemoteObject">
            <ownedComment xmi:id="642bfcda-431d-4d72-863c-cebe33e090af" body="Server implementation objects may either inherit from&#xA;javax.rmi.PortableRemoteObject or they may implement a remote interface&#xA;and then use the exportObject method to register themselves as a server object.&#xA;The toStub method takes a server implementation and returns a stub that&#xA;can be used to access that server object.&#xA;The connect method makes a Remote object ready for remote communication.&#xA;The unexportObject method is used to deregister a server object, allowing it to become&#xA;available for garbage collection.&#xA;The narrow method takes an object reference or abstract interface type and&#xA;attempts to narrow it to conform to&#xA;the given interface. If the operation is successful the result will be an&#xA;object of the specified type, otherwise an exception will be thrown.&#xA;" annotatedElement="8fdbaf90-81c5-4725-ab39-a25d84d8f0d8"/>
          </packagedElement>
        </packagedElement>
      </packagedElement>
    </packagedElement>
    <profileApplication xmi:id="_0profileApplicationModel">
      <eAnnotations xmi:id="_DmWPNfrcEe6m_YnRIJtNqg" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Standard.profile.uml#_yzU58YinEdqtvbnfB2L_5w"/>
      </eAnnotations>
      <appliedProfile href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
    </profileApplication>
    <profileApplication xmi:id="260e7aed-b398-45c1-851a-2a54415cd2fbprofileApplicationModel">
      <eAnnotations xmi:id="_Dmh1Z_rcEe6m_YnRIJtNqg" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="UML_Standard_Profile.MagicDraw_Profile.profile.uml#_DlOUSfrcEe6m_YnRIJtNqg"/>
      </eAnnotations>
      <appliedProfile href="UML_Standard_Profile.MagicDraw_Profile.profile.uml#260e7aed-b398-45c1-851a-2a54415cd2fb"/>
    </profileApplication>
    <profileApplication xmi:id="4587b047-4e67-43bf-912f-58de5d8a3482profileApplicationModel">
      <eAnnotations xmi:id="_DnKuuPrcEe6m_YnRIJtNqg" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="UML_Profile_for_Java.profile.uml#_DlOTNfrcEe6m_YnRIJtNqg"/>
      </eAnnotations>
      <appliedProfile href="UML_Profile_for_Java.profile.uml#4587b047-4e67-43bf-912f-58de5d8a3482"/>
    </profileApplication>
  </uml:Model>
  <Standard:ModelLibrary xmi:id="_DmhOUPrcEe6m_YnRIJtNqg" base_Package="fa980396-cf42-4140-bcea-5eb8d44764f9"/>
  <MagicDrawProfile:auxiliaryResource xmi:id="_DmsNcPrcEe6m_YnRIJtNqg" base_Element="6a194078-f661-433a-a6cc-6fbcb742d26f"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQz_rcEe6m_YnRIJtNqg" base_Element="b5ada7f2-b121-4b3f-a8ca-a8ade029a2f0" base_NamedElement="b5ada7f2-b121-4b3f-a8ca-a8ade029a2f0"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ0PrcEe6m_YnRIJtNqg" base_Element="dfc0ec96-648b-4512-a492-50e4f61c84a3" base_NamedElement="dfc0ec96-648b-4512-a492-50e4f61c84a3"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ0frcEe6m_YnRIJtNqg" base_Element="d7a7199b-13a9-461b-bc78-943026c48367" base_NamedElement="d7a7199b-13a9-461b-bc78-943026c48367"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ0vrcEe6m_YnRIJtNqg" base_Element="951eb688-5a4f-4173-a23d-bac534f5c95b" base_NamedElement="951eb688-5a4f-4173-a23d-bac534f5c95b"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ0_rcEe6m_YnRIJtNqg" base_Element="6ed6f6dc-2360-4b08-a5ac-e3f768e44bc7" base_NamedElement="6ed6f6dc-2360-4b08-a5ac-e3f768e44bc7"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ1PrcEe6m_YnRIJtNqg" base_Element="7e5f2d56-6a1c-46a6-b031-ec59ea4c719f" base_NamedElement="7e5f2d56-6a1c-46a6-b031-ec59ea4c719f"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ1frcEe6m_YnRIJtNqg" base_Element="51f2d34f-8b0f-4040-baff-09658ddf3346" base_NamedElement="51f2d34f-8b0f-4040-baff-09658ddf3346"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ1vrcEe6m_YnRIJtNqg" base_Element="5e2be17e-04ac-469a-b07b-393cf70d822a" base_NamedElement="5e2be17e-04ac-469a-b07b-393cf70d822a"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ1_rcEe6m_YnRIJtNqg" base_Element="b8e13453-7768-4dd7-8acc-cc72beb706e7" base_NamedElement="b8e13453-7768-4dd7-8acc-cc72beb706e7"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ2PrcEe6m_YnRIJtNqg" base_Element="608858f3-4ee3-4700-9573-aa17d44781cd" base_NamedElement="608858f3-4ee3-4700-9573-aa17d44781cd"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ2frcEe6m_YnRIJtNqg" base_Element="e118f426-a5a9-4150-8969-e9a80d67a153" base_NamedElement="e118f426-a5a9-4150-8969-e9a80d67a153"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ2vrcEe6m_YnRIJtNqg" base_Element="ae48c0db-9bd1-4cc3-a19c-b4aacc62eb41" base_NamedElement="ae48c0db-9bd1-4cc3-a19c-b4aacc62eb41"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ2_rcEe6m_YnRIJtNqg" base_Element="afe51c31-bb81-4bc0-bef2-70b0adab40db" base_NamedElement="afe51c31-bb81-4bc0-bef2-70b0adab40db"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ3PrcEe6m_YnRIJtNqg" base_Element="be44abbb-db62-43c6-9f76-682e3433ddef" base_NamedElement="be44abbb-db62-43c6-9f76-682e3433ddef"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ3frcEe6m_YnRIJtNqg" base_Element="32039b30-5f37-4895-b302-b6075d436dab" base_NamedElement="32039b30-5f37-4895-b302-b6075d436dab"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ3vrcEe6m_YnRIJtNqg" base_Element="79c13599-0880-4e2b-957f-c08f90f04993" base_NamedElement="79c13599-0880-4e2b-957f-c08f90f04993"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ3_rcEe6m_YnRIJtNqg" base_Element="631b8805-2210-45c5-a6fe-f0b25ba4c750" base_NamedElement="631b8805-2210-45c5-a6fe-f0b25ba4c750"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ4PrcEe6m_YnRIJtNqg" base_Element="3d95a3eb-99bf-48fe-90e5-14c3a41975d8" base_NamedElement="3d95a3eb-99bf-48fe-90e5-14c3a41975d8"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ4frcEe6m_YnRIJtNqg" base_Element="c269f8de-99eb-4278-a5f7-97ff69356e65" base_NamedElement="c269f8de-99eb-4278-a5f7-97ff69356e65"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ4vrcEe6m_YnRIJtNqg" base_Element="8b46a51b-03a5-4619-b205-f35664263634" base_NamedElement="8b46a51b-03a5-4619-b205-f35664263634"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ4_rcEe6m_YnRIJtNqg" base_Element="3ee30361-a9cb-4c3e-a8f6-3b75f53d3714" base_NamedElement="3ee30361-a9cb-4c3e-a8f6-3b75f53d3714"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ5PrcEe6m_YnRIJtNqg" base_Element="2133b8bd-b2af-4a7a-accb-e371068aaf2b" base_NamedElement="2133b8bd-b2af-4a7a-accb-e371068aaf2b"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ5frcEe6m_YnRIJtNqg" base_Element="b129e16d-0d3c-4043-a43b-a5f99de52331" base_NamedElement="b129e16d-0d3c-4043-a43b-a5f99de52331"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ5vrcEe6m_YnRIJtNqg" base_Element="d47ed060-e1d6-4597-9add-8a4b5af7b152" base_NamedElement="d47ed060-e1d6-4597-9add-8a4b5af7b152"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ5_rcEe6m_YnRIJtNqg" base_Element="361bda5b-3a43-42fb-9855-7bd70110c0e3" base_NamedElement="361bda5b-3a43-42fb-9855-7bd70110c0e3"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ6PrcEe6m_YnRIJtNqg" base_Element="f2eff0aa-4782-4945-bb4a-e4f7c4ce97c3" base_NamedElement="f2eff0aa-4782-4945-bb4a-e4f7c4ce97c3"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ6frcEe6m_YnRIJtNqg" base_Element="f463b677-2e80-4c1d-bf48-9ef10a4baa5b" base_NamedElement="f463b677-2e80-4c1d-bf48-9ef10a4baa5b"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ6vrcEe6m_YnRIJtNqg" base_Element="f7346c90-fee3-443d-92c0-6e4a5b8a5ba8" base_NamedElement="f7346c90-fee3-443d-92c0-6e4a5b8a5ba8"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ6_rcEe6m_YnRIJtNqg" base_Element="cb8957a3-88ce-424a-874e-fe550df6a59e" base_NamedElement="cb8957a3-88ce-424a-874e-fe550df6a59e"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ7PrcEe6m_YnRIJtNqg" base_Element="98411b27-4371-4ec2-bc44-d88236f06e02" base_NamedElement="98411b27-4371-4ec2-bc44-d88236f06e02"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ7frcEe6m_YnRIJtNqg" base_Element="7e9d3e75-5f65-4023-864a-40b1867da1e6" base_NamedElement="7e9d3e75-5f65-4023-864a-40b1867da1e6"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ7vrcEe6m_YnRIJtNqg" base_Element="ec29d9fd-f66a-4a01-a246-04b974e8c332" base_NamedElement="ec29d9fd-f66a-4a01-a246-04b974e8c332"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ7_rcEe6m_YnRIJtNqg" base_Element="401062e2-18c7-4e0e-91d0-8111f17f526b" base_NamedElement="401062e2-18c7-4e0e-91d0-8111f17f526b"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_DmvQ8PrcEe6m_YnRIJtNqg" base_Element="e2439af1-573c-4d28-b5b3-5b73b5c9e64b" base_NamedElement="e2439af1-573c-4d28-b5b3-5b73b5c9e64b"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv30PrcEe6m_YnRIJtNqg" base_Element="de16684e-69fa-4465-bde4-82eea2873220" base_NamedElement="de16684e-69fa-4465-bde4-82eea2873220"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv30frcEe6m_YnRIJtNqg" base_Element="88389119-17f9-48a7-b04b-69612d2f3e5c" base_NamedElement="88389119-17f9-48a7-b04b-69612d2f3e5c"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv30vrcEe6m_YnRIJtNqg" base_Element="329872e3-8fdd-4f5a-9229-28884b051e42" base_NamedElement="329872e3-8fdd-4f5a-9229-28884b051e42"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv30_rcEe6m_YnRIJtNqg" base_Element="1be2b815-6950-45ad-b5fb-5be8eb844c60" base_NamedElement="1be2b815-6950-45ad-b5fb-5be8eb844c60"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv31PrcEe6m_YnRIJtNqg" base_Element="828973fc-496f-4657-b9bf-49e1a59ea1d5" base_NamedElement="828973fc-496f-4657-b9bf-49e1a59ea1d5"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv31frcEe6m_YnRIJtNqg" base_Element="8d12879d-774f-443c-bf65-2e16510aee65" base_NamedElement="8d12879d-774f-443c-bf65-2e16510aee65"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv31vrcEe6m_YnRIJtNqg" base_Element="42641463-6c49-4d1d-9887-7dd9028506e2" base_NamedElement="42641463-6c49-4d1d-9887-7dd9028506e2"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv31_rcEe6m_YnRIJtNqg" base_Element="2333b373-056e-41a1-8382-9789ac6f6d46" base_NamedElement="2333b373-056e-41a1-8382-9789ac6f6d46"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv32PrcEe6m_YnRIJtNqg" base_Element="ae783eda-caa8-4071-b131-df92d1225782" base_NamedElement="ae783eda-caa8-4071-b131-df92d1225782"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv32frcEe6m_YnRIJtNqg" base_Element="6624b707-c6e5-4fa4-999b-5663ae09b542" base_NamedElement="6624b707-c6e5-4fa4-999b-5663ae09b542"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv32vrcEe6m_YnRIJtNqg" base_Element="8f0b159d-1699-480f-949b-5de4e0916ac2" base_NamedElement="8f0b159d-1699-480f-949b-5de4e0916ac2"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv32_rcEe6m_YnRIJtNqg" base_Element="15d4b817-77f0-4e89-91e0-21503bd76abe" base_NamedElement="15d4b817-77f0-4e89-91e0-21503bd76abe"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv33PrcEe6m_YnRIJtNqg" base_Element="f76a7162-3c3f-4523-974b-3a692b2908c5" base_NamedElement="f76a7162-3c3f-4523-974b-3a692b2908c5"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv33frcEe6m_YnRIJtNqg" base_Element="821822d6-26f9-42d9-b968-5777759c14d8" base_NamedElement="821822d6-26f9-42d9-b968-5777759c14d8"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv33vrcEe6m_YnRIJtNqg" base_Element="b858419f-93d0-45dd-8a32-02e73d64d0e8" base_NamedElement="b858419f-93d0-45dd-8a32-02e73d64d0e8"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv33_rcEe6m_YnRIJtNqg" base_Element="a785d4b8-5e5b-4095-ac03-7c1c8ed7e8b3" base_NamedElement="a785d4b8-5e5b-4095-ac03-7c1c8ed7e8b3"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv34PrcEe6m_YnRIJtNqg" base_Element="b1bbe143-d34a-4dce-ac16-c56d65f7f9e6" base_NamedElement="b1bbe143-d34a-4dce-ac16-c56d65f7f9e6"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv34frcEe6m_YnRIJtNqg" base_Element="62eedb88-3f85-49f1-87a0-dc45d81efd9e" base_NamedElement="62eedb88-3f85-49f1-87a0-dc45d81efd9e"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv34vrcEe6m_YnRIJtNqg" base_Element="53c0e7ae-f262-41d7-bd5e-42f186f703f3" base_NamedElement="53c0e7ae-f262-41d7-bd5e-42f186f703f3"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv34_rcEe6m_YnRIJtNqg" base_Element="ccccb4f4-615a-4880-9e4c-0021ac5929bb" base_NamedElement="ccccb4f4-615a-4880-9e4c-0021ac5929bb"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv35PrcEe6m_YnRIJtNqg" base_Element="baa392ca-bff3-4d7d-b407-489a8610c855" base_NamedElement="baa392ca-bff3-4d7d-b407-489a8610c855"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv35frcEe6m_YnRIJtNqg" base_Element="9ad8d964-4efc-4340-b37c-fe6533573abe" base_NamedElement="9ad8d964-4efc-4340-b37c-fe6533573abe"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv35vrcEe6m_YnRIJtNqg" base_Element="8ab392e3-9e74-4d89-b2f5-b170c02d13e6" base_NamedElement="8ab392e3-9e74-4d89-b2f5-b170c02d13e6"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv35_rcEe6m_YnRIJtNqg" base_Element="5cfc5135-5649-495f-8f1e-26de7fb7bc4d" base_NamedElement="5cfc5135-5649-495f-8f1e-26de7fb7bc4d"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv36PrcEe6m_YnRIJtNqg" base_Element="4a88c391-5956-4a97-b4c5-c778f75f157e" base_NamedElement="4a88c391-5956-4a97-b4c5-c778f75f157e"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv36frcEe6m_YnRIJtNqg" base_Element="c566d0d5-9da7-4d88-8612-c4e25f1ef62b" base_NamedElement="c566d0d5-9da7-4d88-8612-c4e25f1ef62b"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv36vrcEe6m_YnRIJtNqg" base_Element="f2ecd2a3-8039-41dd-a004-e978e2a488aa" base_NamedElement="f2ecd2a3-8039-41dd-a004-e978e2a488aa"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv36_rcEe6m_YnRIJtNqg" base_Element="d3ec4a2d-28e5-4594-9186-e05140c35ea5" base_NamedElement="d3ec4a2d-28e5-4594-9186-e05140c35ea5"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv37PrcEe6m_YnRIJtNqg" base_Element="a48c5458-c7b2-4e75-a2df-1f6b3497ce89" base_NamedElement="a48c5458-c7b2-4e75-a2df-1f6b3497ce89"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv37frcEe6m_YnRIJtNqg" base_Element="15581cb3-f33d-4deb-9456-fe83f0817c37" base_NamedElement="15581cb3-f33d-4deb-9456-fe83f0817c37"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv37vrcEe6m_YnRIJtNqg" base_Element="ee758153-f931-43ca-bcea-40b9d95c713b" base_NamedElement="ee758153-f931-43ca-bcea-40b9d95c713b"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv37_rcEe6m_YnRIJtNqg" base_Element="7aeba934-44c6-42f4-9082-79695a7c74c4" base_NamedElement="7aeba934-44c6-42f4-9082-79695a7c74c4"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv38PrcEe6m_YnRIJtNqg" base_Element="366a6b71-c7a9-4b22-95d5-74091ce96f5b" base_NamedElement="366a6b71-c7a9-4b22-95d5-74091ce96f5b"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv38frcEe6m_YnRIJtNqg" base_Element="6e35fd2a-e450-4a45-894b-c2d88ab08234" base_NamedElement="6e35fd2a-e450-4a45-894b-c2d88ab08234"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv38vrcEe6m_YnRIJtNqg" base_Element="b9722b17-296e-4891-893c-daddd8d91c74" base_NamedElement="b9722b17-296e-4891-893c-daddd8d91c74"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv38_rcEe6m_YnRIJtNqg" base_Element="831cb79b-21c0-4203-9962-b2cebddd4105" base_NamedElement="831cb79b-21c0-4203-9962-b2cebddd4105"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv39PrcEe6m_YnRIJtNqg" base_Element="e6261464-9995-420b-8b7e-2d2aa94c4a89" base_NamedElement="e6261464-9995-420b-8b7e-2d2aa94c4a89"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv39frcEe6m_YnRIJtNqg" base_Element="b5eaa913-ac40-4b35-bf06-e3638ddc059a" base_NamedElement="b5eaa913-ac40-4b35-bf06-e3638ddc059a"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv39vrcEe6m_YnRIJtNqg" base_Element="01481a34-3b75-4493-84ca-4519f1a2e4fa" base_NamedElement="01481a34-3b75-4493-84ca-4519f1a2e4fa"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv39_rcEe6m_YnRIJtNqg" base_Element="57267948-5b20-4000-a393-c9fc60c633c3" base_NamedElement="57267948-5b20-4000-a393-c9fc60c633c3"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv3-PrcEe6m_YnRIJtNqg" base_Element="13957531-5fa4-4bf4-bfb2-6c0e6572a4fa" base_NamedElement="13957531-5fa4-4bf4-bfb2-6c0e6572a4fa"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv3-frcEe6m_YnRIJtNqg" base_Element="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f" base_NamedElement="d1e63ecf-6944-4b2b-bb25-31ddeaff2a6f"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv3-vrcEe6m_YnRIJtNqg" base_Element="845866fd-7ff1-4261-aafb-b3d5b00b0cf5" base_NamedElement="845866fd-7ff1-4261-aafb-b3d5b00b0cf5"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv3-_rcEe6m_YnRIJtNqg" base_Element="18dc6102-a040-4ae1-aefe-698abc18de28" base_NamedElement="18dc6102-a040-4ae1-aefe-698abc18de28"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv3_PrcEe6m_YnRIJtNqg" base_Element="fab524f7-59eb-4ace-bf91-fd1feeef80a3" base_NamedElement="fab524f7-59eb-4ace-bf91-fd1feeef80a3"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv3_frcEe6m_YnRIJtNqg" base_Element="d8e4bb4a-fea6-4600-8da2-311416fd86f2" base_NamedElement="d8e4bb4a-fea6-4600-8da2-311416fd86f2"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv3_vrcEe6m_YnRIJtNqg" base_Element="ce61998e-5d59-4352-93a0-49d1c47bde38" base_NamedElement="ce61998e-5d59-4352-93a0-49d1c47bde38"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv3__rcEe6m_YnRIJtNqg" base_Element="eafa2c5e-a797-4021-a24b-a65d79338254" base_NamedElement="eafa2c5e-a797-4021-a24b-a65d79338254"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv4APrcEe6m_YnRIJtNqg" base_Element="a2cdda80-53a0-4729-afe1-d6a5b85b6ecc" base_NamedElement="a2cdda80-53a0-4729-afe1-d6a5b85b6ecc"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv4AfrcEe6m_YnRIJtNqg" base_Element="72bfd9c7-a791-4de2-9a0b-97ca39b72dc0" base_NamedElement="72bfd9c7-a791-4de2-9a0b-97ca39b72dc0"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv4AvrcEe6m_YnRIJtNqg" base_Element="a5f3b498-3bea-4e43-ab3c-2affbc3dd30a" base_NamedElement="a5f3b498-3bea-4e43-ab3c-2affbc3dd30a"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv4A_rcEe6m_YnRIJtNqg" base_Element="f1ebf24d-c225-453e-a4d2-91ecbf854075" base_NamedElement="f1ebf24d-c225-453e-a4d2-91ecbf854075"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv4BPrcEe6m_YnRIJtNqg" base_Element="125391a5-cf0a-4304-bc13-9acf146357ed" base_NamedElement="125391a5-cf0a-4304-bc13-9acf146357ed"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv4BfrcEe6m_YnRIJtNqg" base_Element="a7c0cc27-923c-4411-b843-fadea63b8787" base_NamedElement="a7c0cc27-923c-4411-b843-fadea63b8787"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv4BvrcEe6m_YnRIJtNqg" base_Element="4e52fe80-110b-4651-b623-ba5879c96543" base_NamedElement="4e52fe80-110b-4651-b623-ba5879c96543"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmv4B_rcEe6m_YnRIJtNqg" base_Element="f13859ab-f5c7-4e32-aec4-d277f0b50022" base_NamedElement="f13859ab-f5c7-4e32-aec4-d277f0b50022"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmwe4PrcEe6m_YnRIJtNqg" base_Element="f414d2e6-a3ec-4feb-995a-611c89549a1a" base_NamedElement="f414d2e6-a3ec-4feb-995a-611c89549a1a"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmwe4frcEe6m_YnRIJtNqg" base_Element="b2c4f843-2a70-44a1-b698-de4bd3875bb0" base_NamedElement="b2c4f843-2a70-44a1-b698-de4bd3875bb0"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dmwe4vrcEe6m_YnRIJtNqg" base_Element="8279aec4-cbd9-4efb-84f2-3e0124438161" base_NamedElement="8279aec4-cbd9-4efb-84f2-3e0124438161"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eAPrcEe6m_YnRIJtNqg" base_Element="5bebc1fb-871c-4596-8648-6ad46faeacab" base_NamedElement="5bebc1fb-871c-4596-8648-6ad46faeacab"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eAfrcEe6m_YnRIJtNqg" base_Element="ef711ebe-700b-4987-995c-0ea4d57bbe46" base_NamedElement="ef711ebe-700b-4987-995c-0ea4d57bbe46"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eAvrcEe6m_YnRIJtNqg" base_Element="922732fe-99bc-48a9-9219-9f67e222e2a4" base_NamedElement="922732fe-99bc-48a9-9219-9f67e222e2a4"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eA_rcEe6m_YnRIJtNqg" base_Element="5d9881d0-5acd-48a3-aaf9-2bc18719b242" base_NamedElement="5d9881d0-5acd-48a3-aaf9-2bc18719b242"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eBPrcEe6m_YnRIJtNqg" base_Element="2213c8d9-feed-4d9a-bb48-b0498fb0c0c3" base_NamedElement="2213c8d9-feed-4d9a-bb48-b0498fb0c0c3"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eBfrcEe6m_YnRIJtNqg" base_Element="6ec2f206-019f-4b84-b3ec-c730b497c45d" base_NamedElement="6ec2f206-019f-4b84-b3ec-c730b497c45d"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eBvrcEe6m_YnRIJtNqg" base_Element="293b2529-d730-4c11-9509-024820048ce3" base_NamedElement="293b2529-d730-4c11-9509-024820048ce3"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eB_rcEe6m_YnRIJtNqg" base_Element="d8be5686-fab6-423c-9030-a6e37ad23490" base_NamedElement="d8be5686-fab6-423c-9030-a6e37ad23490"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eCPrcEe6m_YnRIJtNqg" base_Element="2d6e88c8-cb4b-4962-b7bd-da43ade86d13" base_NamedElement="2d6e88c8-cb4b-4962-b7bd-da43ade86d13"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eCfrcEe6m_YnRIJtNqg" base_Element="f60b2757-c2ef-46b3-94ca-bf0fc089dccb" base_NamedElement="f60b2757-c2ef-46b3-94ca-bf0fc089dccb"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eCvrcEe6m_YnRIJtNqg" base_Element="edebdcb7-7364-44ba-942e-f5457e8b6987" base_NamedElement="edebdcb7-7364-44ba-942e-f5457e8b6987"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eC_rcEe6m_YnRIJtNqg" base_Element="cd06d5da-937c-422b-91f1-1169a2124be5" base_NamedElement="cd06d5da-937c-422b-91f1-1169a2124be5"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eDPrcEe6m_YnRIJtNqg" base_Element="727dcdb4-6dff-44f4-b232-f2e838f83d56" base_NamedElement="727dcdb4-6dff-44f4-b232-f2e838f83d56"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eDfrcEe6m_YnRIJtNqg" base_Element="be25d82f-42e1-449d-8dac-5eb053710e0b" base_NamedElement="be25d82f-42e1-449d-8dac-5eb053710e0b"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eDvrcEe6m_YnRIJtNqg" base_Element="83980325-f97b-436c-9d86-e7e7e6939a60" base_NamedElement="83980325-f97b-436c-9d86-e7e7e6939a60"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eD_rcEe6m_YnRIJtNqg" base_Element="7515f8ad-109f-499a-a4a5-5eeba6170ad2" base_NamedElement="7515f8ad-109f-499a-a4a5-5eeba6170ad2"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eEPrcEe6m_YnRIJtNqg" base_Element="edb22b7e-a568-4493-ae96-6d5b46a3d70b" base_NamedElement="edb22b7e-a568-4493-ae96-6d5b46a3d70b"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eEfrcEe6m_YnRIJtNqg" base_Element="60eda21c-20d2-4528-9510-2202adff7695" base_NamedElement="60eda21c-20d2-4528-9510-2202adff7695"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eEvrcEe6m_YnRIJtNqg" base_Element="cbaa9553-5102-4b04-93f8-3c6f01c44bab" base_NamedElement="cbaa9553-5102-4b04-93f8-3c6f01c44bab"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eE_rcEe6m_YnRIJtNqg" base_Element="77df1efb-625d-4349-9634-718bf2cd7485" base_NamedElement="77df1efb-625d-4349-9634-718bf2cd7485"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm7eFPrcEe6m_YnRIJtNqg" base_Element="18cfed24-cea3-4bff-9072-891060836bef" base_NamedElement="18cfed24-cea3-4bff-9072-891060836bef"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FEPrcEe6m_YnRIJtNqg" base_Element="e9d668ca-e738-4265-b47f-31710f333912" base_NamedElement="e9d668ca-e738-4265-b47f-31710f333912"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FEfrcEe6m_YnRIJtNqg" base_Element="248f580f-fc64-48af-939f-df4f44cd7cfd" base_NamedElement="248f580f-fc64-48af-939f-df4f44cd7cfd"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FEvrcEe6m_YnRIJtNqg" base_Element="3c6eb85a-f497-43a9-bf00-e88685d637c9" base_NamedElement="3c6eb85a-f497-43a9-bf00-e88685d637c9"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FE_rcEe6m_YnRIJtNqg" base_Element="094103fb-ca30-411e-a891-12d616d4ed4a" base_NamedElement="094103fb-ca30-411e-a891-12d616d4ed4a"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FFPrcEe6m_YnRIJtNqg" base_Element="0e189fe2-9acc-4005-b79b-b21ecbdd0734" base_NamedElement="0e189fe2-9acc-4005-b79b-b21ecbdd0734"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FFfrcEe6m_YnRIJtNqg" base_Element="2a895999-2897-4661-9adc-c08be565c09a" base_NamedElement="2a895999-2897-4661-9adc-c08be565c09a"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FFvrcEe6m_YnRIJtNqg" base_Element="6aa46dbe-7251-4b26-90ad-852964584f94" base_NamedElement="6aa46dbe-7251-4b26-90ad-852964584f94"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FF_rcEe6m_YnRIJtNqg" base_Element="208e2498-0927-4984-9ef5-3521a6277592" base_NamedElement="208e2498-0927-4984-9ef5-3521a6277592"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FGPrcEe6m_YnRIJtNqg" base_Element="ba9e4ac2-89dc-4882-8022-ab1644f61e4e" base_NamedElement="ba9e4ac2-89dc-4882-8022-ab1644f61e4e"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FGfrcEe6m_YnRIJtNqg" base_Element="9844b98b-cf19-4183-9cc1-ab9d47f92e18" base_NamedElement="9844b98b-cf19-4183-9cc1-ab9d47f92e18"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FGvrcEe6m_YnRIJtNqg" base_Element="4cccc5db-a8b5-42ff-9c38-719555e42fad" base_NamedElement="4cccc5db-a8b5-42ff-9c38-719555e42fad"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FG_rcEe6m_YnRIJtNqg" base_Element="42fa6fd4-a856-40d6-a5d2-0fede5fc0368" base_NamedElement="42fa6fd4-a856-40d6-a5d2-0fede5fc0368"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FHPrcEe6m_YnRIJtNqg" base_Element="c1c7cc2e-cf38-48a9-8cea-5c98c23841ff" base_NamedElement="c1c7cc2e-cf38-48a9-8cea-5c98c23841ff"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FHfrcEe6m_YnRIJtNqg" base_Element="d45a4eeb-6bb1-4dd6-838c-567de1f6839b" base_NamedElement="d45a4eeb-6bb1-4dd6-838c-567de1f6839b"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FHvrcEe6m_YnRIJtNqg" base_Element="8d507840-0689-43a1-af5d-92da8e7ac7e4" base_NamedElement="8d507840-0689-43a1-af5d-92da8e7ac7e4"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FH_rcEe6m_YnRIJtNqg" base_Element="cac5ac53-16ed-4e3b-8f14-5174e728e81f" base_NamedElement="cac5ac53-16ed-4e3b-8f14-5174e728e81f"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FIPrcEe6m_YnRIJtNqg" base_Element="da6936b4-ecde-4432-9077-6992cd1e029c" base_NamedElement="da6936b4-ecde-4432-9077-6992cd1e029c"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FIfrcEe6m_YnRIJtNqg" base_Element="752780c3-ed52-4379-826b-17bc1470f821" base_NamedElement="752780c3-ed52-4379-826b-17bc1470f821"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FIvrcEe6m_YnRIJtNqg" base_Element="68041507-27a5-4741-b72c-ff3bddd2cf53" base_NamedElement="68041507-27a5-4741-b72c-ff3bddd2cf53"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FI_rcEe6m_YnRIJtNqg" base_Element="4fbdae1d-3da1-4f04-a70b-9abd085f3176" base_NamedElement="4fbdae1d-3da1-4f04-a70b-9abd085f3176"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FJPrcEe6m_YnRIJtNqg" base_Element="c174dcda-0920-4e54-ad16-1a989d07c883" base_NamedElement="c174dcda-0920-4e54-ad16-1a989d07c883"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FJfrcEe6m_YnRIJtNqg" base_Element="2122753e-57b6-43e8-b757-92410e3eab42" base_NamedElement="2122753e-57b6-43e8-b757-92410e3eab42"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FJvrcEe6m_YnRIJtNqg" base_Element="e4a43475-3cf3-4a9e-8eab-03d00b54c989" base_NamedElement="e4a43475-3cf3-4a9e-8eab-03d00b54c989"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FJ_rcEe6m_YnRIJtNqg" base_Element="45244236-a78b-4c2d-afb7-347d73d52db5" base_NamedElement="45244236-a78b-4c2d-afb7-347d73d52db5"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FKPrcEe6m_YnRIJtNqg" base_Element="3acda3b0-da17-47fb-b48b-40d8e33c39a8" base_NamedElement="3acda3b0-da17-47fb-b48b-40d8e33c39a8"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FKfrcEe6m_YnRIJtNqg" base_Element="e19f688e-e409-439c-9fc4-2e2752ed890c" base_NamedElement="e19f688e-e409-439c-9fc4-2e2752ed890c"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FKvrcEe6m_YnRIJtNqg" base_Element="7539b7c7-259d-4049-a7a0-6e6d532c6abb" base_NamedElement="7539b7c7-259d-4049-a7a0-6e6d532c6abb"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FK_rcEe6m_YnRIJtNqg" base_Element="b71fe5f8-70c8-4716-bc96-1e23d0d281ab" base_NamedElement="b71fe5f8-70c8-4716-bc96-1e23d0d281ab"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FLPrcEe6m_YnRIJtNqg" base_Element="ceffe59c-3a40-48a9-bef8-aa4ad7d7a8d5" base_NamedElement="ceffe59c-3a40-48a9-bef8-aa4ad7d7a8d5"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FLfrcEe6m_YnRIJtNqg" base_Element="372f570b-ed26-4a7b-8874-853a8457ea5e" base_NamedElement="372f570b-ed26-4a7b-8874-853a8457ea5e"/>
  <MagicDrawProfile:autoGeneratedName xmi:id="_Dm8FLvrcEe6m_YnRIJtNqg" base_Element="d801c4d4-7d34-427a-9676-4e888c337c35" base_NamedElement="d801c4d4-7d34-427a-9676-4e888c337c35"/>
  <UMLProfileforJava:JavaEnumeration xmi:id="_DnVGoPrcEe6m_YnRIJtNqg" base_Element="b70a0bde-4163-4741-81f4-7993449fba8b" base_Classifier="b70a0bde-4163-4741-81f4-7993449fba8b" base_Class="b70a0bde-4163-4741-81f4-7993449fba8b"/>
  <UMLProfileforJava:JavaEnumeration xmi:id="_DnVGofrcEe6m_YnRIJtNqg" base_Element="be07986c-16cd-4bb1-921a-36c8811eab7d" base_Classifier="be07986c-16cd-4bb1-921a-36c8811eab7d" base_Class="be07986c-16cd-4bb1-921a-36c8811eab7d"/>
  <UMLProfileforJava:JavaEnumeration xmi:id="_DnVGovrcEe6m_YnRIJtNqg" base_Element="497c29ef-dc35-4a50-a1e5-25573da57482" base_Classifier="497c29ef-dc35-4a50-a1e5-25573da57482" base_Class="497c29ef-dc35-4a50-a1e5-25573da57482"/>
  <UMLProfileforJava:JavaEnumeration xmi:id="_DnVGo_rcEe6m_YnRIJtNqg" base_Element="3e588ea9-7f7c-49fe-abca-41b23650269b" base_Classifier="3e588ea9-7f7c-49fe-abca-41b23650269b" base_Class="3e588ea9-7f7c-49fe-abca-41b23650269b"/>
  <UMLProfileforJava:JavaEnumeration xmi:id="_DnVGpPrcEe6m_YnRIJtNqg" base_Element="e12ea5d8-1864-4918-acdf-3b1fd460aff3" base_Classifier="e12ea5d8-1864-4918-acdf-3b1fd460aff3" base_Class="e12ea5d8-1864-4918-acdf-3b1fd460aff3"/>
  <UMLProfileforJava:JavaEnumeration xmi:id="_DnVGpfrcEe6m_YnRIJtNqg" base_Element="1c4d9428-8463-45ae-a1e4-f5f0e085be1e" base_Classifier="1c4d9428-8463-45ae-a1e4-f5f0e085be1e" base_Class="1c4d9428-8463-45ae-a1e4-f5f0e085be1e"/>
  <UMLProfileforJava:JavaEnumeration xmi:id="_DnVGpvrcEe6m_YnRIJtNqg" base_Element="385c98ba-ea31-4565-b48f-57e13689537d" base_Classifier="385c98ba-ea31-4565-b48f-57e13689537d" base_Class="385c98ba-ea31-4565-b48f-57e13689537d"/>
  <UMLProfileforJava:JavaEnumeration xmi:id="_DnVGp_rcEe6m_YnRIJtNqg" base_Element="38b56cbd-02d8-4815-951f-f2661f450b61" base_Classifier="38b56cbd-02d8-4815-951f-f2661f450b61" base_Class="38b56cbd-02d8-4815-951f-f2661f450b61"/>
  <UMLProfileforJava:JavaEnumeration xmi:id="_DnVGqPrcEe6m_YnRIJtNqg" base_Element="09c57ac0-83a3-4e3a-9d74-847a7f6e1ccd" base_Classifier="09c57ac0-83a3-4e3a-9d74-847a7f6e1ccd" base_Class="09c57ac0-83a3-4e3a-9d74-847a7f6e1ccd"/>
  <UMLProfileforJava:JavaEnumeration xmi:id="_DnVGqfrcEe6m_YnRIJtNqg" base_Element="fc7d3a0c-2ed7-4811-8777-e21c67f36944" base_Classifier="fc7d3a0c-2ed7-4811-8777-e21c67f36944" base_Class="fc7d3a0c-2ed7-4811-8777-e21c67f36944"/>
  <UMLProfileforJava:JavaEnumeration xmi:id="_DnVGqvrcEe6m_YnRIJtNqg" base_Element="67040b55-6793-494f-b59f-b53e5f5bd8d7" base_Classifier="67040b55-6793-494f-b59f-b53e5f5bd8d7" base_Class="67040b55-6793-494f-b59f-b53e5f5bd8d7"/>
  <UMLProfileforJava:JavaEnumeration xmi:id="_DnVGq_rcEe6m_YnRIJtNqg" base_Element="1e1c657c-2c4c-4385-93ef-e600ab737f1c" base_Classifier="1e1c657c-2c4c-4385-93ef-e600ab737f1c" base_Class="1e1c657c-2c4c-4385-93ef-e600ab737f1c"/>
  <UMLProfileforJava:JavaElement xmi:id="_DnVGrPrcEe6m_YnRIJtNqg" base_Element="e3cdefce-7688-45c9-b320-d5c98922a15a">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVGrfrcEe6m_YnRIJtNqg" base_Element="3d79bb12-5ff6-42db-beda-3eb72b121f78">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVGrvrcEe6m_YnRIJtNqg" base_Element="b56835b1-3f6c-445e-9b6d-df581bb40fa3">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVGr_rcEe6m_YnRIJtNqg" base_Element="033d5623-cc88-4659-a7bf-cee72841d8a5">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVGsPrcEe6m_YnRIJtNqg" base_Element="69ca3d66-4550-446b-9cf9-9130376e8628">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVGsfrcEe6m_YnRIJtNqg" base_Element="b6e65424-220e-485a-a3fb-066f1bb8ee3c">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVGsvrcEe6m_YnRIJtNqg" base_Element="016baa07-77f3-47c0-964a-f39991e85b1e">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVGs_rcEe6m_YnRIJtNqg" base_Element="336c9dcd-62ea-4560-b617-ae2c2f89f2d8">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVGtPrcEe6m_YnRIJtNqg" base_Element="3837bffb-74b7-437b-8872-d4c81180bf24">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVtsPrcEe6m_YnRIJtNqg" base_Element="78cd3532-585e-4118-b15f-795d00d40b1c">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVtsfrcEe6m_YnRIJtNqg" base_Element="e5514bc6-28f6-4f86-aad5-98a74f0c0d67">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVtsvrcEe6m_YnRIJtNqg" base_Element="f91fd311-9378-4bbe-9e6a-67130f641221">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVts_rcEe6m_YnRIJtNqg" base_Element="b19c01c2-b33d-4143-885a-ebe602fc9bc3">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVttPrcEe6m_YnRIJtNqg" base_Element="7a3b40be-faf1-459b-bf30-2f5b9eac8845">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVttfrcEe6m_YnRIJtNqg" base_Element="16f6a26b-da51-4d6c-b413-d9bf7f415b56">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVttvrcEe6m_YnRIJtNqg" base_Element="f131c1ee-a525-4294-9d0d-404439b3ba19">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVtt_rcEe6m_YnRIJtNqg" base_Element="f768953f-4251-4b00-9ba3-f7e99f3acfc0">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVtuPrcEe6m_YnRIJtNqg" base_Element="45f00117-f27f-4208-b626-e7c2bc55485e">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVtufrcEe6m_YnRIJtNqg" base_Element="61ea2ea6-90df-4466-90b1-324d7a56da52">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVtuvrcEe6m_YnRIJtNqg" base_Element="fbf93df8-f573-4c36-8ffc-6a3ecefe21e8">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVtu_rcEe6m_YnRIJtNqg" base_Element="7902076f-9f68-439e-98a5-9035ed9c990b">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVtvPrcEe6m_YnRIJtNqg" base_Element="05d81a41-22af-4c53-bf70-f2e48e839903">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVtvfrcEe6m_YnRIJtNqg" base_Element="e53d7d05-7b08-46a7-97e9-7311f039f877">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaElement xmi:id="_DnVtvvrcEe6m_YnRIJtNqg" base_Element="c61af840-8b4e-4f1d-b18c-b62a7de53c73">
    <JavaAnnotations>@Deprecated</JavaAnnotations>
  </UMLProfileforJava:JavaElement>
  <UMLProfileforJava:JavaAnnotation xmi:id="_DnVtv_rcEe6m_YnRIJtNqg" base_Element="79fb3b55-0e31-4910-8103-15a9a4e2c668" base_Classifier="79fb3b55-0e31-4910-8103-15a9a4e2c668" base_Interface="79fb3b55-0e31-4910-8103-15a9a4e2c668">
    <JavaAnnotations>@Documented</JavaAnnotations>
    <JavaAnnotations>@Retention(RetentionPolicy.RUNTIME)</JavaAnnotations>
    <JavaAnnotations>@Target(ElementType.ANNOTATION_TYPE)</JavaAnnotations>
  </UMLProfileforJava:JavaAnnotation>
  <UMLProfileforJava:JavaAnnotation xmi:id="_DnVtwPrcEe6m_YnRIJtNqg" base_Element="afdf2a74-23ac-4c1d-93b4-b9c0eb1be5d4" base_Classifier="afdf2a74-23ac-4c1d-93b4-b9c0eb1be5d4" base_Interface="afdf2a74-23ac-4c1d-93b4-b9c0eb1be5d4">
    <JavaAnnotations>@Documented</JavaAnnotations>
    <JavaAnnotations>@Retention(RetentionPolicy.RUNTIME)</JavaAnnotations>
    <JavaAnnotations>@Target(ElementType.ANNOTATION_TYPE)</JavaAnnotations>
  </UMLProfileforJava:JavaAnnotation>
  <UMLProfileforJava:JavaAnnotation xmi:id="_DnVtwfrcEe6m_YnRIJtNqg" base_Element="cfcbc345-e73d-4e48-bf5d-6e4e56e09c12" base_Classifier="cfcbc345-e73d-4e48-bf5d-6e4e56e09c12" base_Interface="cfcbc345-e73d-4e48-bf5d-6e4e56e09c12">
    <JavaAnnotations>@Documented</JavaAnnotations>
    <JavaAnnotations>@Retention(RetentionPolicy.RUNTIME)</JavaAnnotations>
    <JavaAnnotations>@Target(ElementType.ANNOTATION_TYPE)</JavaAnnotations>
  </UMLProfileforJava:JavaAnnotation>
  <UMLProfileforJava:JavaAnnotation xmi:id="_DnVtwvrcEe6m_YnRIJtNqg" base_Element="55a7e7ab-2652-469e-845b-1f977d7aa6d6" base_Classifier="55a7e7ab-2652-469e-845b-1f977d7aa6d6" base_Interface="55a7e7ab-2652-469e-845b-1f977d7aa6d6">
    <JavaAnnotations>@Documented</JavaAnnotations>
    <JavaAnnotations>@Retention(RetentionPolicy.RUNTIME)</JavaAnnotations>
    <JavaAnnotations>@Target(ElementType.ANNOTATION_TYPE)</JavaAnnotations>
  </UMLProfileforJava:JavaAnnotation>
  <UMLProfileforJava:JavaAnnotation xmi:id="_DnVtw_rcEe6m_YnRIJtNqg" base_Element="64cc420e-7573-43a3-a0cf-fcd69043dccf" base_Classifier="64cc420e-7573-43a3-a0cf-fcd69043dccf" base_Interface="64cc420e-7573-43a3-a0cf-fcd69043dccf">
    <JavaAnnotations>@Target(ElementType.METHOD)</JavaAnnotations>
    <JavaAnnotations>@Retention(RetentionPolicy.SOURCE)</JavaAnnotations>
  </UMLProfileforJava:JavaAnnotation>
  <UMLProfileforJava:JavaAnnotation xmi:id="_DnVtxPrcEe6m_YnRIJtNqg" base_Element="8a6dd21e-238a-4bec-9a62-6e6772819e35" base_Classifier="8a6dd21e-238a-4bec-9a62-6e6772819e35" base_Interface="8a6dd21e-238a-4bec-9a62-6e6772819e35">
    <JavaAnnotations>@Target({TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE})</JavaAnnotations>
    <JavaAnnotations>@Retention(RetentionPolicy.SOURCE)</JavaAnnotations>
  </UMLProfileforJava:JavaAnnotation>
  <UMLProfileforJava:JavaAnnotation xmi:id="_DnVtxfrcEe6m_YnRIJtNqg" base_Element="73ed3736-eaaf-4918-ae6e-b535e2517920" base_Classifier="73ed3736-eaaf-4918-ae6e-b535e2517920" base_Interface="73ed3736-eaaf-4918-ae6e-b535e2517920">
    <JavaAnnotations>@Documented</JavaAnnotations>
    <JavaAnnotations>@Retention(RetentionPolicy.RUNTIME)</JavaAnnotations>
  </UMLProfileforJava:JavaAnnotation>
</xmi:XMI>
